生活随笔
收集整理的這篇文章主要介紹了
linux yum及yum仓库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
source:?http://www.mamicode.com/info-detail-564351.html
標簽:yum yum倉庫配置
1. yum的由來
????為了解決程序間的依賴關系,RedHat曾推出了一款名為update的工具。這款工具雖然達到了目的,但用戶體驗并不是很好。后來一個基于RedHat的二次發行版yellowdog,由此也推出了一個工具:yellowdog update modifier,簡寫為yum. 由于比update好用,于是便流行開來。后來導致RedHat也棄update不用而使用yum
2. yum的特性
????yum相對于rpm來說:rpm為基礎包管理器,yum則是rpm的前端工具。yum無法獨立存在
????系統不允許有兩個yum命令同時運行,如果有兩個,第二次運行時會報錯。這是為了防止yum之間的沖突
3. yum的工作方式
????yum工作需要依賴C/S架構工作模式的文件服務器,服務器中存放了yum工作時所需的程序包。yum接收到需要安裝的程序包的名稱之后,通過文件共享協議(或者文件傳輸協議),在配置文件中指向的yum倉庫(可以是多個)中查詢需要的程序包。找到之后,通過文件下載協議,將程序包下載至本地yum的緩存目錄中,當安裝完成后,緩存目錄便會被刪除
????但如果yum每次到yum倉庫都需要遍歷,就會導致速度很慢。而yum倉庫中有兩類數據:程序和程序的元數據。yum倉庫在創建時,會將所有程序的名字、大小、版本以及依賴關系這類的屬性信息提取出來并保存至repodata目錄中。所以在yum第一次訪問yum倉庫時,會獲取倉庫中元數據(repodata),并下載至本地。因此,下次需要安裝程序包時,只需從本地緩存中獲得信息,直接到倉庫下載即可
??? 如何保持本地緩存repodata和服務器端的repodata實時同步呢?yum每次訪問倉庫都會先獲取repodata目錄中每個文件的特征碼,并與本地的進行比較,如果不相同,就重新下載并覆蓋
4. yum的配置文件
????指向倉庫的位置以及相關的各種配置信息。每個yum命令行可以同時指向多個倉庫,倉庫間可以進行優先級等相關配置,優先級是由開銷決定的
??? 配置文件有兩部分組成:主配置文件以及各倉庫的配置文件。因為如果所有的配置信息都放在一個文件中就顯得太臃腫、不方便。其中主配置文件所在路徑為/etc/yum.conf,它為各倉庫指向提供公共配置文件;而各倉庫的配置文件所在路徑為:/etc/yum.repos.d/*.repo,里面都是以賦值的格式存在
[root?~]#?cat?/etc/yum.conf????#?查看主配置文件
[main]???#?所有倉庫公共的配置
cachedir=/var/cache/yum/$basearch[p1]?/$releasever????#?緩存目錄
keepcache=0????#?程序包在安裝完成后不再保存至緩存中
debuglevel=2????#?程序安裝時的輸出信息,數字越大輸出信息越多。生產環境中關閉最好,但是開啟可以讓我們快速定位安裝中出現問題的所在
logfile=/var/log/yum.log????#?日志文件
exactarch=1????#?安裝程序的版本和當前平臺保持一致
obsoletes=1????#?檢查包已被廢棄
gpgcheck=1????#?檢查來源合法性和包完整性,還應該有個gpgkey,用于指明倉庫的公鑰文件從哪獲取,但這是公共配置,而配置倉庫都不相同,所以不放在這里
plugins=1???#?支持插件
installonly_limit=5????#?一次安裝的程序包限制5個
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php???category=yum????#?bug追蹤的路徑
distroverpkg=centos-release????#?判定當前系統的信息#?This?is?the?default,?if?you?make?this?bigger?yum?won‘t?see?if?themetadata
#?is?newer?on?the?remote?and?so?you‘ll"gain"?the?bandwidth?of?not?having?to
#?download?the?new?metadata?and"pay"?for?it?by?yum?not?having?correct
#?information.
#??Itis?esp.?important,?to?have?correct?metadata,?for?distributions?like
#?Fedora?which?don‘t?keep?old?packagesaround.?If?you?don‘t?like?this?checking
#?interupting?your?command?line?usage,?it‘smuch?better?to?have?something
#?manually?check?the?metadata?once?an?hour(yum-updatesd?will?do?this).
#?metadata_expire=90m#?PUT?YOUR?REPOS?HERE?OR?IN?separate?filesnamed?file.repo
#?in?/etc/yum.repos.d????#?可以往下附加配置信息,也可以放在各配置文件中
#?可通過man?yum.conf進行詳細查看
[root?~]#?cat/etc/yum.repos.d/CentOS-Media.repo????#?隨便打開一個倉庫的配置文件
[c6-media]????#?id,最好能夠見名知意,并且必須唯一
name=CentOS-$releasever?-?Media????#?當前倉庫的描述信息
#mirrorlist=????#?可以將所有的鏡像站點url寫入一個文件,然后指向這個文件,然后會挑一個速度最快的來使用。一般不和baseurl一起使用
baseurl=ftp://????#?指向倉庫的路徑,指向多個備用http://????#?備用的路徑不能頂格寫,至少需要有1個空格file:///media/cdrecorder/
gpgcheck=1????#?此處定義的優先級更高,需要和gpgkey配合
enabled=0???#?此倉庫不被使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6???
cost=????#?優先級,數字越小表示開銷小,優先級越高。默認1000
[media]????#?第二個倉庫
5. yum命令
-
-y:自動回答為yes
-
list:列出所有倉庫中的程序包,支持通配符
-
all:所有程序包
-
available:可用的,倉庫中有尚未安裝的
-
installed:已經安裝的
-
clean:清理緩存。yum緩存路徑:/var/cache/yum/
-
repolist:顯示倉庫列表及其簡要信息
-
all:所有的倉庫
-
enabled:已經啟用的倉庫
-
disabled:未啟用的倉庫
-
install:安裝
-
remove|erase:卸載。和此程序包有依賴性的其他包也會被一并卸載
-
infoPACKAGE ...?:查詢程序的相關簡要信息。這個包裝不裝都沒有關系,只要倉庫中有就行
-
grouplist:列出所有包組
-
groupinstall:安裝包組
6. 配置基于centos發行光盤rpm包的yum倉庫
[root?Packages]#?yum?install?-y?createrepo
[root?Packages]#?mount?-r?/dev/cdrom?/mnt/
[root?Packages]#?mkdir?/var/repo
#?新建目錄進行rpm包存放
[root?Packages]#?cd?/var/repo??
[root?repo]#?cp?/mnt/Packages/*?.
#?文件很多,需要等會
[root?repo]#?createrepo?/var/repo/
Spawning?worker?0?with?4184?pkgs
Workers?Finished
Gathering?worker?results
Saving?Primary?metadata
Saving?file?lists?metadata
Saving?other?metadata
Generating?sqlite?DBs
Sqlite?DBs?complete
#?恩,總算創建好了,等的時間夠長
[root?repo]#?cd?repodata/
[root?repodata]#?ls
318f1b79bc13b0daf243cdf4fad87af1e49fef06920b74f135e3d6d9af3a3abf-primary.sqlite.bz2
5015d87cfb7d1484fc9949b398c5d2d4916cb5c257939be34d0b9595e3bd734d-filelists.xml.gz
62d8a6fade0ecb892b8a58601665a77c95f5c278d57927274f9d3afef8378119-filelists.sqlite.bz2
75d262ab21744dd239762ac72543a4ebe74c7b7bd333dd7a96ff0a4636814144-primary.xml.gz
81cdd7de2b2e08780255e5c7e711f0499fc0f2e01e322e4f05b03f61434ea2f7-other.sqlite.bz2
fad987423b71003dbf3661f6bc4f51f50584c4fb0881b6506ccf7baf99c7aa1d-other.xml.gz
repomd.xml
#?這些就是元數據信息了
[root?repodata]#?cd?/etc/yum.repos.d/
[root?yum.repos.d]#?vim?centos6.6.repo
#?新建配置文件,必須以repo結尾!或者就用里面現成的也行
[test2]
name=fuck?me
baseurl=file:///var/repo
enabled=1
gpgcheck=0
#?上面講到了,這里就不重復了,保存退出!
[root?yum.repos.d]#?yum?repolist
Loaded?plugins:?fastestmirror,?refresh-packagekit,?security
Loading?mirror?speeds?from?cached?hostfile
test2?????????????????????????????????????????????????????????????????????????????????|?2.9?kB?????00:00?...?
repo?id????????????????????????????????????????????repo?name???????????????????????????????????????????status
test???????????????????????????????????????????????epel????????????????????????????????????????????????4,184
test1??????????????????????????????????????????????epel???????????????????????????????????????????????????41
test2??????????????????????????????????????????????fuck?me?????????????????????????????????????????????4,184
repolist:?8,409
#?成功顯示
[root?yum.repos.d]#?yum?install?-y?vsftpd
#?下載FTP服務
[root?yum.repos.d]#?service?vsftpd?start
#?啟動服務
[root?yum.repos.d]#?cd?/var/ftp/pub/
#?這是FTP默認目錄,啟動服務后自動創建
[root?pub]#?mv?/var/repo?.
[root?pub]#?ls
repo
[root?pub]#?vim?/etc/yum.repos.d/centos6.6.repo
baseurl=ftp://172.16.249.135/pub/repo/?
#?就改這一項,必須指向repodata所在的路徑
[root?pub]#?service?iptables?stop
#?關閉防火墻
#?可以在瀏覽器下ftp://172.16.249.135/pub/repo/查看了
????END
總結
以上是生活随笔為你收集整理的linux yum及yum仓库的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。