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!