zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux CreateRepo创建Repomd (xml-rpm-metadata)存储库

Linux存储XML 创建 RPM metadata
2023-09-14 09:09:03 时间

Createrepo是linux下的创建仓库的软件包。create是创建的意思,repo是repository的缩写,是仓库的意思。
yum(Yellow dog Updater,Modified)主要的功能是方便添加、删除和更新rpm软件包。可以解决软件包依存问题,更便于管理大量的系统更新问题。它可以同时配置多个仓库或叫资源库(repository),就是存放更新和依存的软件包的地方。
repodata作为软件的仓库,其目录下有四个必要文件:filelists.xml.[gz],other.xml.[gz],primary.xml.[gz]和repomd.xml(md 意思是 metadata),其中最主要的是repomd.xml文件。一般出现的找不到repodata目录或文件的错误的原因通常有三个:一是路径问题;二是没有生成repodate目录;三是*.repo配置文件冲突(这个需要特意注意)

语法

createrepo [option] <directory>

安装

wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/deltarpm-3.6-3.el7.x86_64.rpm?spm=a2c6h.25603864.0.0.2ac12137faCILJ -O deltarpm-3.6-3.el7.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/libxml2-python-2.9.1-6.el7.5.x86_64.rpm?spm=a2c6h.25603864.0.0.2ac12137faCILJ -O libxml2-python-2.9.1-6.el7.5.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/libxml2-2.9.1-6.el7.5.x86_64.rpm -O libxml2-2.9.1-6.el7.5.x86_64.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/createrepo-0.9.9-28.el7.noarch.rpm?spm=a2c6h.25603864.0.0.2ac12137faCILJ -O createrepo-0.9.9-28.el7.noarch.rpm
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-deltarpm-3.6-3.el7.x86_64.rpm?spm=a2c6h.25603864.0.0.2ac12137faCILJ  -O python-deltarpm-3.6-3.el7.x86_64.rpm

参数选项说明

-u  --baseurl <url>				指定Base URL的地址
-o --outputdir <url>			指定元数据的输出位置
-x --excludes <packages>		指定在形成元数据时需要排除的包
-i --pkglist <filename>
    指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
-n --includepkg					通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
-q --quiet						安静模式执行操作,不输出任何信息。
-g --groupfile <groupfile>      指定本地软件仓库的组划分,范例如下:
         createrepo -g comps.xml /path/to/rpms	注意:组文件需要和rpm包放置于同一路径下。
-v --verbose					输出详细信息。
-c --cachedir <path>			指定一个目录,用作存放软件仓库中软件包的校验和信息。
    当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
--update						如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多(常用)       createrepo --update 目标地址
-p --pretty						以整洁的格式输出xml文件。
-d --database					该选项指定使用SQLite来存储生成的元数据,默认项。

举例

使用父目录中的 repo-group.xml 作为 groupfile,在当前目录/或子目录中查找 rpm 包,在当前目录下生成 repodata 目录和数据

createrepo -g ../repo-group.xml .

初始化源目录,产生repodata:

[root@master ~]# createrepo -pd  -o ./目标地址/ ./源地址/
Sqlite DBs complete

What you have to do is that others can’t change, then you can’t do who to blame, is your own useless!