一、服务端
1、安装需要的环境
自建yum本地更新源可以使用http服务或ftp服务,由于ftp服务器要考虑防火墙配置,主动、被动连接模式,这里使用http服务。
安装apache:
yuminstallhttpd
配置apache过程略过。
2、安装createrepo软件包
yuminstallcreaterepo
3、建立存放软件包目录
mkdir-p/home/yum/centos/6/
chown-Rapache:apache/home/yum/
4、apache创建虚拟目录
vim/etc/httpd/conf/httpd.conf
在最后加入:
NameVirtualHost*:80
<VirtualHost*:80>
DocumentRoot/home/yum
ServerNameXXX.XXX.XXX#填写绑定的域名
<Directory"/home/yum">
OptionsIndexesFollowSymlinks
</Directory>
</VirtualHost>
5、将rpm软件包放入/home/yum/centos/6/目录
6、执行createrepo
createrepo/home/yum/centos/6
在/home/yum/centos/6目录下会自动生成repodata目录,repodata目录里是一个数据库,其中的文件主要是XML格式,描述了一个rpm包的详细信息,如依赖关系,包含文件,校验码信息。
二、客户端
1、创建yum客户端repo文件
vim/etc/yum.repos.d/test.repo
以.repo为后缀,这里名字为test。
添加:
[test]
name=yumtest
baseurl=http://XXX.XXX.XXX/centos/6
enabled=1
gpgcheck=1
gpgkey=http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO
说明:
[test]:是repoid。
name:仓库的描述。
baseurl:仓库的位置。
enabled:是否启用这个仓库,1为起用,0为禁用。
gpgcheck:是否检查gpg签名,1为检查,0为不检查。
(XXX.XXX.XXX是绑定的域名)
PS:如果是内部使用,gpgcheck可以设置为0(同时gpgkey也不用设置),如果更新源放在公网上的话还是需要检查gpg签名,保证客户端得到来源的可靠性。
2、查看yum更新源列表
yumrepolist
是否有名为yumtest的源出现。
三、(可选)服务端使用gpgkey对rpm软件包进行签名
1、创建gpgkey
gpgkey也是基于非对称加密算法,产生公钥和私钥。
执行:
cd~
gpg--gen-key
创建过程:
选择加密算法、加密强度、是否设置有效期
设置名称和邮箱
输入保护密码
在/root/.gnupg目录下生成公钥和私钥文件。据观察pubring.gpg是公钥,secring.gpg是私钥。
2、查看公钥
gpg--list-key
显示如下:
/root/.gnupg/pubring.gpg------------------------pub2048R/EF9632F22012-07-21uidtestrepo<[email protected]>sub2048R/C17A35BC2012-07-21
3、在家目录建立.rpmmacros文件
cd~
vim.rpmmacros
添加:
%_signaturegpg
%_gpg_nametestrepo<[email protected]>
%_gpg_name后面要填写gpg--list-key命令显示的uid,指定这一组key进行签名。
4、对rpm软件包签名
以mtree-2.7-1.el6.rf.i686.rpm软件包为例。
cd/home/yum/centos/6
rpm--resignmtree-2.7-1.el6.rf.i686.rpm
随后需要输入保护密码。
5、导出公钥到文本文件
cd~
gpg--export-a"testrepo<[email protected]>">RPM-GPG-KEY-TESTREPO
6、验证是否签名成功
查看rpm数据库中的公钥:
rpm-qgpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
导入公钥:
rpm--importRPM-GPG-KEY-TESTREPO
rpm-qgpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-ef9632f2-500a6e55
已经添加了一组公钥。
检验rpm软件包:
cd/home/yum/centos/6
rpm-Kmtree-2.7-1.el6.rf.i686.rpm
mtree-2.7-1.el6.rf.i686.rpm:rsasha1(md5)pgpmd5OK
7、将公钥放到web服务器上
cp~/RPM-GPG-KEY-TESTREPO/home/yum/centos/
8、服务端更新仓库信息
createrepo--update/home/yum/centos/6
主要是更新repodata目录中的数据。
四、(可选)客户端导入公钥
rpm--importhttp://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO
(XXX.XXX.XXX是绑定的域名)
测试安装:
yuminstallmtree
参考资料:
http://jianlee.ylinux.org/Computer/Linux发行版开发/createrepo.html
http://zhumeng8337797.blog.163.com/blog/static/100768914201231852812921/
http://ramblings.narrabilis.com/creating-a-yum-repository-repo-and-creating-a-yum-group-to-install-kickstart