【轉】linux之自建yum倉庫


原鏈接: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

 

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM