由于定制化项目涉及到内网环境,而且提供的系统环境中缺少必要的依赖包,需要下载rpm包并打包到现场服务器下,但是由于rpm安装需要人为摸索各个rpm包的依赖顺序,因此想到使用createrepo工具建立rpm包之间的索引顺序。
1、使用yum下载包及所有依赖的包
例如:
mkdir /install_rpm/ #创建存放rpm包的路径
yum install --downloaddir=/install_rpm/ --downloadonly perl-DBI #下载安装perl-DBI所有依赖的包
cd /install_rpm/ && ll
total 1324
-rw-r--r--. 1 root root 33172 Jul 4 2014 perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm
-rw-r--r--. 1 root root 58788 Jul 4 2014 perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 48296 Jul 4 2014 perl-Data-Dumper-2.145-3.el7.x86_64.rpm
-rw-r--r--. 1 root root 821112 Jul 4 2014 perl-DBI-1.627-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 266004 Jul 4 2014 perl-IO-Compress-2.061-2.el7.noarch.rpm
-rw-r--r--. 1 root root 52064 Jul 4 2014 perl-Net-Daemon-0.48-5.el7.noarch.rpm
-rw-r--r--. 1 root root 36592 Jul 4 2014 perl-PlRPC-0.2020-14.el7.noarch.rpm
2、编辑yum.repo文件
创建/etc/yum.repo.d/local.repo文件并添加如下内容:
vim /etc/yum.repo.d/local.repo
[local]
name=local
baseurl=file:///install_rpm/
enabled=1
gpgcheck=0
并将原来的repo文件enabled设置为0
3、createrepo用以创建yum源(软件仓库),
即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
基本语法:createrepo [option] <directory>
常用参数详解
-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包依赖并生成新的元数据要高很多。
-p --pretty
以整洁的格式输出xml文件。
-d --database
该选项指定使用SQLite来存储生成的元数据,默认项。
createrepo /install_rpm/
yum clean all
yum update
yum makecache
至此就建立了本地yum源;