原鏈接:http://www.live-in.org/archives/1410.html
平時使用yum方式安裝更新軟件,可以自建一個yum源,同步官方更新源,這樣如果本地有機器要升級的話就可以直接使用本地的更新源了。這里系統為CentOS 6.2。
一、服務端
1、安裝需要的環境
自建yum本地更新源可以使用http服務或ftp服務,由於ftp服務器要考慮防火牆配置,主動、被動連接模式,這里使用http服務。
安裝apache:
yum install httpd
配置apache過程略過。
2、安裝createrepo軟件包
yum install createrepo
3、建立存放軟件包目錄
mkdir -p /home/yum/centos/6/
chown -R apache:apache /home/yum/
4、apache創建虛擬目錄
vim /etc/httpd/conf/httpd.conf
在最后加入:
NameVirtualHost *:80
< VirtualHost *:80>
DocumentRoot /home/yum
ServerName XXX.XXX.XXX #填寫綁定的域名
<Directory "/home/yum">
Options Indexes FollowSymlinks
< /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=yum test
baseurl=http://XXX.XXX.XXX/centos/6
enabled=1
gpgcheck=1
gpgkey=http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO
說明:
[test]:是repo id。
name:倉庫的描述。
baseurl:倉庫的位置。
enabled:是否啟用這個倉庫,1為起用,0為禁用。
gpgcheck:是否檢查gpg簽名,1為檢查,0為不檢查。
(XXX.XXX.XXX是綁定的域名)
PS:如果是內部使用,gpgcheck可以設置為0(同時gpgkey也不用設置),如果更新源放在公網上的話還是需要檢查gpg簽名,保證客戶端得到來源的可靠性。
2、查看yum更新源列表
yum repolist
是否有名為yum test的源出現。
三、(可選)服務端使用gpg key對rpm軟件包進行簽名
1、創建gpg key
gpg key也是基於非對稱加密算法,產生公鑰和私鑰。
執行:
cd ~
gpg --gen-key
創建過程:
選擇加密算法、加密強度、是否設置有效期
設置名稱和郵箱
輸入保護密碼
在/root/.gnupg目錄下生成公鑰和私鑰文件。據觀察pubring.gpg是公鑰,secring.gpg是私鑰。
2、查看公鑰
gpg --list-key
顯示如下:
/root/.gnupg/pubring.gpg------------------------pub 2048R/EF9632F2 2012-07-21uid test repo <testrepo@example.com>sub 2048R/C17A35BC 2012-07-21
3、在家目錄建立.rpmmacros文件
cd ~
vim .rpmmacros
添加:
%_signature gpg
%_gpg_name test repo <testrepo@example.com>
%_gpg_name后面要填寫gpg --list-key命令顯示的uid,指定這一組key進行簽名。
4、對rpm軟件包簽名
以mtree-2.7-1.el6.rf.i686.rpm軟件包為例。
cd /home/yum/centos/6
rpm --resign mtree-2.7-1.el6.rf.i686.rpm
隨后需要輸入保護密碼。
5、導出公鑰到文本文件
cd ~
gpg --export -a "test repo <testrepo@example.com>" >RPM-GPG-KEY-TESTREPO
6、驗證是否簽名成功
查看rpm數據庫中的公鑰:
rpm -q gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
導入公鑰:
rpm --import RPM-GPG-KEY-TESTREPO
rpm -q gpg-pubkey
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-ef9632f2-500a6e55
已經添加了一組公鑰。
檢驗rpm軟件包:
cd /home/yum/centos/6
rpm -K mtree-2.7-1.el6.rf.i686.rpm
mtree-2.7-1.el6.rf.i686.rpm: rsa sha1 (md5) pgp md5 OK
7、將公鑰放到web服務器上
cp ~/RPM-GPG-KEY-TESTREPO /home/yum/centos/
8、服務端更新倉庫信息
createrepo --update /home/yum/centos/6
主要是更新repodata目錄中的數據。
四、(可選)客戶端導入公鑰
rpm --import http://XXX.XXX.XXX/centos/RPM-GPG-KEY-TESTREPO
(XXX.XXX.XXX是綁定的域名)
測試安裝:
yum install mtree