搭建本地YUM倉庫


YUM介紹

  yum(yellow dog updater modified)為多個Linux發行版的軟件包管理工具,Redhat RHEL CentOS Fedora YUM主要用於自動安裝,升級rpm軟件包,它能夠自動查找解決rpm包之間的依賴關系。
YUM自動下載rpm包並安裝,類某軟件的一鍵安裝。


YUM源是什么?
  要成功的使用YUM工具安裝更新軟件或系統,就需要有給一個包含各種rpm軟件包的repository(軟件倉庫)這個軟件倉庫我們習慣成為yum源。網絡上有大量的yum源,但是由於受到網絡環境的限制,導致軟件安裝耗時過長甚至失敗。特別是當有大量服務器大量軟件包需要更新安裝時,因此優化系統時候我們都更換國內的源。相比較而言,本地yum源服務器最大的優點是局域網的快速網絡連接和穩定性。有了局域網中的YUM源服務器,即便在internet中斷的情況下,也不會影響其他YUM客戶端的軟件安裝和升級。

 

YUM源工作原理

1.yum -y install httpd
2.查找yum配置文件CentOS-Base.repo這個里面有下載地址
3.CentOS系統默認到國外的軟件倉庫下載rpm軟件包
4.但國外的源比較慢因此系統優化時換成阿里雲的源
5.但是還是覺得阿里雲的源不快,因此搭建內網的yum源,公網的和自己做的rpm都可以放進去

說明:更換yum源實質就是更換下載地址

配置本地YUM倉庫

安裝createrepo軟件
yum -y install createrepo
echo '192.168.1.100 mirrors.liuliya.com' >>/etc/host #提前驗證內網YUM源
創建yum倉庫的目錄

mkdir -p /application/yum/centos6/x86_64/
cd /application/yum/centos6/x86_64/

rz #上傳包到此目錄,此目錄下還可以包括文件夾
獲取rpm軟件包的方法

1.自己制作的rpm包
2. yumdownloader pcre-devel openssl-devel  #只下載不安裝
3.平時yum安裝軟件時不刪除安裝包

#cat /etc/yum.conf
keepalived=1

#安裝包存儲目錄
cachedir=/var/cache/yum/$basearch/$releasever
#/var/cache/yum/x86_64/base/packages

初始化repodata索引文件
#初始化
createrepo -pdo /application/yum/centos6/x86_64/ /application/yum/centos6/x86_64/
#每加入一個rpm包就要更新一下
createrepo --update /application/yum/centos6/x86_64/
提供yum服務
#可以用apache或者nginx提供web服務,但用Python的http模塊更簡單,適用於內網環境
注意:先把Nginx關閉防止80端口沖突

cd /application/yum/centos6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &

可以通過游覽器輸入本機IP查看
客戶端的配置

cd /etc/yum.repos.d
mkdir yum_bak && mv *repo yum_bak
vim liuliya.repo
[liuliya]
name=server
baseurl=http://192.168.1.100
enable=1
gpgcheck=0

yum clean all #清空本機已有yum緩存
yum list   #列表顯示yum倉庫
小技巧:
上面展示的需要新建一個文件,也許工作中有更多的配置,如果手動配置比較麻煩,因此有一種更簡單的方法,將這些操作做成rpm包
fpm -s dir -t rpm -n liuliya_repo -v 1.0 --post-install /server/scripts/liuliya_rpm.sh -f /etc/yum.repos.d/liuliya.repo
liuliya_rpm.sh腳本主要是剛才我們的一些操作。

yum 本地安裝nginx

接前面文章定制的nginx rpm包
yum install nginx
安裝完成后我們來驗證下:
cd /application/
ll -h

顯示
nign -> /application/nginx-1.6.3/
nginx-1.6.3

#查看下id nginx
id nginx
uid=500(nginx) gid=500(nginx) group=500(nginx)

說明本地yum安裝nginx成功
#卸載軟件使用rpm -e 軟件名
yum配置文件簡介說明及命令介紹
cat /etc/yum.conf

[main]
cachedir=/var/cache/yum/$basearch/$releasever   #yum緩存的目錄,存儲下載的rpm包和數據庫
keepcache=0  #安裝完成后是否保留軟件包,0為不保留(默認為0)1為 保留
debuglevel=2  #Debug信息輸出等級,范圍為0-10缺省為2
logfile=/var/log/yum.log  #日志文件位置
exactarch=1  #有1和0兩個選項,設置為1則yum只會安裝和系統架構匹配的軟件包
obsoletes=1  #update的參數相當於upgrade允許更新陳舊的RPM包;有2個選項1和0分別表示首是否進行gpg校驗以確定每個rpm的來源是有效和安全的。這個選項如果設置在[main]部分則對每個repository都有效,默認為0
gpgcheck=1
plugins=1  #是否啟動插件,默認1為允許,0表示不允許
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release  #指定一個軟件包,yum會根據這個包判斷發行版本

yum命令用法
#安裝軟件包
yum install httpd
yum -y install httpd

#列出軟件包,使用list函數,可以搜索帶名稱的指定軟件包
yun list httpd
#搜索軟件包
yum search http
#查找某個特定文件屬於哪個軟件包
yum provides /etc/my.cnf
#列出所有可用的群組
yum grouplist
#安裝群組軟件包
yum groupinstall 'MySQL Database'
#列出啟動的軟件庫
yum repolist
#安裝來自特定軟件的軟件包
yum --enablerepo=local --disablerepo=base,extras,updates install LNMP
#清理yum緩存內容
yum clean all
#查看yum歷史記錄
yum history
鏡像同步公網yum源
上游yum源必須要支持rsync協議,否則不能使用rsync進行同步
http://mirrors.ustc.edu.cn/status/
#CentOS官方標准源:
rsync://mirrors.ustc.edu.cn/centos/
#epel源
rsync://mirrors.ustc.edu.cn/epel/
#使用rsync同步yum源,為了節省帶寬,磁盤和下載時間,這里列舉僅同步CentOS6的rpm包,這樣所有的rpm包,只占用了21G,全部同步需要300G左右
#同步base源,小技巧我們安裝系統的關盤含有部分rpm包,大概3G,這些不用重新下載

/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x_86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extra/x86_64/ /data/yum_data/centos/6/extra/x_86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/update/x86_64/ /data/yum_data/centos/6/update/x_86_64/

#epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/centos/epel/6/x_86_64/
下載命令
有些鏡像源不支持Rsync協議,比如阿里雲、Zabbix官方源
解決辦法:
wget -r -p -np -k http://repo.zabbix.com/non-supported/rhel/6/x86_64/


免責聲明!

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



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