Linux程序包的管理需要依賴程序包管理工具,程序包管理工具可以實(shí)現(xiàn)程序的安裝赠堵、升級小渊、卸載、查詢和校驗(yàn)茫叭,等等相關(guān)操作酬屉。本文主要介紹使用rpm和yum實(shí)現(xiàn)程序包的管理。
- rpm程序包管理基礎(chǔ)
(1) rpm程序包的命名格式
(2) 如何獲取rpm程序包揍愁?- rpm命令
(1) 安裝
(2) 升級
(3) 卸載
(4) 查詢
(5) 校驗(yàn)
(6) rpm數(shù)據(jù)庫管理
(7) rpm命令的相關(guān)示例- yum命令
(1) yum倉庫
(2) yum的配置文件
(3) 通過yum命令管理程序
(4) yum倉庫配置示例
(5) yum命令的相關(guān)示例
1呐萨、rpm程序包管理基礎(chǔ)
(1) rpm程序包的命名格式
rpm程序包通常分為主程序包和程序包分支,命名格式分別如下:
- 主程序包命名格式
NAME-VERSION-RELEASE.ARCH.rpm - 程序包分支命名格式
NAME-FUNCTION-VERSION-RELEASE.ARCH.rpm
命名中各字段的含義:
NAME:程序包名吗垮,與源代碼的名稱一致
VERSION: major.minor.release垛吗,版本信息凹髓,與源代碼的版本信息一致烁登,如4.3.2(主版本號.次版本號.發(fā)行號)
RELEASE:rpm程序包自身的發(fā)行號,與源代碼的發(fā)行號無關(guān),是制作rpm包的不同修訂版本饵沧,RELEASE還包括此rpm包適用的系統(tǒng)锨络,如4.3.2-2.centos7
ARCH:支持的cpu架構(gòu),如:i386狼牺、x86_64
FUNCTION:用于描述程序包分支的功能
這里貼一張圖來加深理解羡儿,出處不詳:
(2) 如何獲取rpm程序包?
系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或其他鏡像站點(diǎn))是钥。
系統(tǒng)自帶的程序包可以光盤或光盤鏡像文件獲取掠归。
如:http://mirrors.aliyun.com | http://mirrors.sohu.com | http://mirrors.163.com程序項(xiàng)目的官方站點(diǎn)。
如:http://www.zabbix.comEPEL
EPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group維護(hù)的Enterprise Linux(RHEL悄泥、CentOS)中經(jīng)常用到的包虏冻。rpm搜索引擎
如:http://pkgs.org | http://rpmfind.net | http://rpm.pbone.net自己制作rpm包
建議在網(wǎng)上獲取rpm包后,檢查其合法性(來源合法性和程序包完整性)
2弹囚、rpm命令
Linux發(fā)行版如RedHat厨相、SuSE系列目前都是用rpm來實(shí)現(xiàn)程序包管理。
rpm的全稱是Redhat Package Manager鸥鹉,由RedHat研發(fā)蛮穿,后形成標(biāo)準(zhǔn)后,成為Rpm is Package Manager毁渗,這是rpm的新定義践磅。
程序包管理器的功能是將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件,從而更方面地實(shí)現(xiàn)程序包的安裝灸异、升級音诈、卸載和查詢等管理操作,它由兩部分組成:
- 程序包的組成清單
這是基于個(gè)體的绎狭,每個(gè)程序包都有一個(gè)自己的清單细溅,其中有程序包中的文件清單、安裝或卸載時(shí)運(yùn)行的腳本儡嘶,等等喇聊。 - 程序包管理器的數(shù)據(jù)庫
這是公共的,數(shù)據(jù)庫中記錄各程序包的名稱和版本蹦狂、依賴關(guān)系誓篱、程序包的功能說明、安裝生成的各文件路徑及校驗(yàn)碼信息凯楔,等等窜骄。
在CentOS中,各數(shù)據(jù)庫文件存放在/var/lib/rpm/下摆屯。
接下來詳細(xì)描述如何通過rpm命令實(shí)現(xiàn)rpm程序包的安裝邻遏、升級、卸載、查詢和校驗(yàn)准验,以及rpm數(shù)據(jù)庫維護(hù)赎线。
rpm命令的用法總結(jié)簡化后如下:
rpm [OPTIONS] [GENERAL_OPTIONS] [PACKAGE_FILE | PACKAGE_NAME]
- 通過OPTIONS來指定要進(jìn)行的操作:
安裝:-i,--install
升級:-u糊饱,--update垂寥,或-F,--freshen
卸載:-e另锋,--erase
查詢:-q滞项,--query
校驗(yàn):-V,--verify
數(shù)據(jù)庫管理:--builddb夭坪,--initdb
- 通過GENERAL_OPTIONS來自定義操作過程
-v: verbose, 詳細(xì)信息
-vv:更詳細(xì)的輸出-_-||
- 通過程序包文件名和程序包名來指定作用對象
PACKAGE_FILE是文件名蓖扑,需要程序包文件的完整名稱;
PACKAGE_NAME是程序名台舱,只需指定程序包名中的NAME律杠。
(1) 安裝
- 語法格式
rpm {-i|--install} [install-options] PACKAGE_FILE...
安裝需要指定程序包的文件名。
安裝rpm包的常用固定格式為:
rpm -ivh PACKAGE_FILE...
表示安裝過程中顯示進(jìn)度條和詳細(xì)信息竞惋。
install-options包括:
- -h:hash marks柜去,輸出進(jìn)度條,用#表示拆宛,每個(gè)#表示2%的進(jìn)度嗓奢;
- --test:測試安裝,檢查并報(bào)告依賴關(guān)系及沖突消息等浑厚;
- --nodeps:忽略依賴關(guān)系股耽,不建議;
- --replacepkgs:重新安裝钳幅,(不會替代配置文件)物蝙;
- --noscripts:不執(zhí)行rpm自帶的所有腳本(共四種,可分別單獨(dú)禁用)敢艰;
- --nosignature: 不檢查包簽名信息诬乞,即不檢查來源合法性;
- --nodigest:不檢查包完整性信息钠导。
這里強(qiáng)調(diào)一下震嫉,rpm的自帶腳本分為四種,分別為:
- %pre:preinstall牡属,安裝過程開始之前運(yùn)行的腳本票堵,單獨(dú)禁用使用install options中的--nopre;
- %post:postinstall逮栅,安裝過程完成之后運(yùn)行的腳本悴势,單獨(dú)禁用使用install options中的--nopost窗宇;
- %preun:preuninstall,卸載過程真正開始執(zhí)行之前運(yùn)行的腳本瞳浦,單獨(dú)禁用使用install options中的--nopreun;
- %postun:postuninstall废士,卸載過程完成之后運(yùn)行的腳本叫潦,單獨(dú)禁用使用install options中的--nopostun
(2) 升級
- 語法格式
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
這里需要注意一下-U和-F的區(qū)別:
-U表示升級或安裝
指定的程序已安裝時(shí),則執(zhí)行升級官硝;若未安裝矗蕊,則安裝。-F表示僅升級氢架,不安裝
即程序未安裝時(shí)傻咖,則不進(jìn)行任何操作。
升級需要指定的也是程序包的文件名岖研。
升級rpm包的常用固定格式為:
rpm -Uvh PACKAGE_FILE...
rpm -Fvh PACKAGE_FILE...
在升級過程中顯示進(jìn)度條和詳細(xì)信息卿操。
rpm安裝的install-options同樣適用于此,下面是兩個(gè)額外的選項(xiàng):
- --oldpackage:降級
- --force:強(qiáng)制升級
關(guān)于程序升級有兩點(diǎn)需要注意:
- 不要對內(nèi)核做升級操作孙援,Linux支持多內(nèi)核版本并存害淤,因此直接安裝新版本內(nèi)核即可;
- 升級時(shí)拓售,如果某程序包的配置文件安裝后曾被修改過窥摄,新版本的程序提供的同一個(gè)配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名后提供础淤。
(3) 卸載
- 語法格式
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME...
卸載需要指定的是程序名崭放。
常用的選項(xiàng):
- --allmatches: 卸載所有匹配指定名稱的程序包的各版本;
- --nodeps: 忽略依賴關(guān)系鸽凶;
- --test:測試卸載币砂,dry run模式。
(4) 查詢
- 語法格式
rpm {-q|--query} [--select options] [--query options] [PACKAGE_NAME]
select options用于指定要查詢的對象或范圍玻侥,包括:
- PACKAGE_NAME: 查詢指定的程序包是否已經(jīng)安裝道伟,及其版本
- -a,--all:查詢所有已安裝的包使碾;可以配合grep查詢記不清包名的程序蜜徽;
- -f FILE,--file FILE:查詢指定的文件由哪個(gè)程序包安裝生成
- -p票摇,--package:用于實(shí)現(xiàn)對未安裝的程序包執(zhí)行查詢操作拘鞋;
- --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個(gè)程序包提供;
- --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個(gè)包所依賴矢门;
query options用來指定要查詢什么內(nèi)容盆色,包括:
- -changelog:查詢r(jià)pm包的changelog灰蛙;
- -l,--list:程序安裝生成的所有文件列表隔躲;
- -i摩梧,--info:程序包相關(guān)的信息,版本號宣旱、大小仅父、所屬的包組,等浑吟;
- -c笙纤,--configfiles:查詢指定的程序包提供的配置文件;
- -d组力,--docfiles:查詢指定的程序包提供的文檔省容;
- --provides:列出指定的程序包提供的所有CAPABILITY;
- -R燎字,--requires:查詢指定程序包的依賴關(guān)系腥椒;
- --scripts:查詢指定的程序包自帶的腳本片段;
rpm查詢的常用固定組合:
查詢已安裝的程序(指定程序名):
- rpm -qf FILE
- rpm -qi PACKAGE_NAME
- rpm -qc PACKAGE_NAME
- rpm -ql PACKAGE_NAME
- rpm -qd PACKAGE_NAME
查詢未安裝的程序(指定程序包的文件名)
- rpm -qpi PACKAGE_FILE
- rpm -qpc PACKAGE_FILE
- rpm -qpl PACKAGE_FILE
- rpm -qpd PACKAGE_FILE
- ...
(5) 校驗(yàn)
- 語法格式
rpm {-V|--verify} [select-options] [verify-options]
校驗(yàn)錯誤的結(jié)果顯示包括:
- S file Size differs 文件大小不匹配候衍;
- M Mode differs (includes permissions and file type) 文件權(quán)限和文件類型不匹配寞酿;
- 5 digest (formerly MD5 sum) differs,md5校驗(yàn)結(jié)果不匹配脱柱;
- D Device major/minor number mismatch 主/次設(shè)備號不匹配伐弹;
- L readLink(2) path mismatch
- U User ownership differs,屬主不匹配榨为;
- G Group ownership differs惨好,屬組不匹配;
- T mTime differs随闺,修改時(shí)間不匹配日川;
- P caPabilities differ,程序包所提供的功能不匹配矩乐。
(6) rpm數(shù)據(jù)庫管理
rpm程序包管理器的數(shù)據(jù)庫路徑為:/var/lib/rpm/龄句,rpm管理操作就是基于此目錄下的數(shù)據(jù)庫文件進(jìn)行的。
- 語法格式
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
選項(xiàng)含義:
- --initdb:初始化數(shù)據(jù)庫-當(dāng)前無任何數(shù)據(jù)庫時(shí)散罕,可初始化創(chuàng)建一個(gè)新的分歇;當(dāng)時(shí)有數(shù)據(jù)庫,則不執(zhí)行任何操作欧漱;
- --rebuild:重新構(gòu)建职抡,通過讀取系統(tǒng)上所有已經(jīng)安裝過的程序包進(jìn)行重新創(chuàng)建。
(7) rpm命令的相關(guān)示例
rpm安裝示例:
安裝光盤上的gnome-desktop3
[root@localhost Packages]# rpm -ivh /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm
warning: /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
error: Failed dependencies:
gnome-themes-standard is needed by gnome-desktop3-3.14.2-2.el7.x86_64
提示依賴的程序包沒有安裝误甚,忽略依賴關(guān)系直接安裝:
[root@localhost Packages]# rpm -ivh --nodeps /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm
warning: /mnt/cdrom/Packages/gnome-desktop3-3.14.2-2.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:gnome-desktop3-3.14.2-2.el7 ################################# [100%]
安裝完成缚甩。使用rpm直接安裝需要手動解決很多依賴關(guān)系谱净,有時(shí)會繞的找不到北,后面用yum安裝會方便快捷很多擅威。
也可以一次安裝多個(gè)rpm包壕探,后面的程序包文件名用“,”逗號隔開。-
rpm查詢示例:
查看系統(tǒng)上是否安裝了unzip程序
[root@localhost Packages]# rpm -q unzip \\這里只需給出程序名即可
unzip-6.0-15.el7.x86_64
列出unzip程序所提供的目錄和文件:
[root@localhost Packages]# rpm -ql unzip
/usr/bin/funzip
/usr/bin/unzip
/usr/bin/unzipsfx
/usr/bin/zipgrep
/usr/bin/zipinfo
/usr/share/doc/unzip-6.0
/usr/share/doc/unzip-6.0/BUGS
/usr/share/doc/unzip-6.0/LICENSE
/usr/share/doc/unzip-6.0/README
/usr/share/man/man1/funzip.1.gz
/usr/share/man/man1/unzip.1.gz
/usr/share/man/man1/unzipsfx.1.gz
/usr/share/man/man1/zipgrep.1.gz
/usr/share/man/man1/zipinfo.1.gz
可以看到安裝unzip后都在系統(tǒng)上創(chuàng)建了哪些目錄和文件郊丛。
查看unzip程序的詳細(xì)說明:
[root@localhost Packages]# rpm -qi unzip
Name : unzip \\程序名
Version : 6.0 \\程序版本
Release : 15.el7 \\程序發(fā)行號
Architecture: x86_64 \\支持的硬件平臺
Install Date: Tue 13 Feb 2018 05:06:57 PM CST \\安裝時(shí)間
Group : Applications/Archiving \\所屬的包組
Size : 365506 \\程序大小
License : BSD \\授權(quán)方式
Signature : RSA/SHA256, Thu 19 Mar 2015 04:52:16 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM : unzip-6.0-15.el7.src.rpm \\程序包的文件名
Build Date : Thu 19 Mar 2015 04:25:08 AM CST \\打包的時(shí)間
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.info-zip.org/UnZip.html
Summary : A utility for unpacking zip files
Description : \\以下是更詳細(xì)的程序描述
The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects.
Install the unzip package if you need to list, test or extract files from a zip archive.
找出unzip程序的說明文檔和手冊:
[root@localhost Packages]# rpm -qd unzip
/usr/share/doc/unzip-6.0/BUGS
/usr/share/doc/unzip-6.0/LICENSE
/usr/share/doc/unzip-6.0/README
/usr/share/man/man1/funzip.1.gz
/usr/share/man/man1/unzip.1.gz
/usr/share/man/man1/unzipsfx.1.gz
/usr/share/man/man1/zipgrep.1.gz
/usr/share/man/man1/zipinfo.1.gz
可以看到在/usr/share/man/man1/目錄下有一些關(guān)于unzip的man手冊李请,使用man 1 unzip可以查看這些手冊中的相關(guān)說明。
還可以查詢已安裝程序包的依賴關(guān)系宾袜,比如查詢之前安裝的gnome-desktop3的依賴關(guān)系:
[root@localhost Packages]# rpm -qR gnome-desktop3
/sbin/ldconfig
/sbin/ldconfig
gnome-themes-standard
gsettings-desktop-schemas >= 3.5.91
libX11.so.6()(64bit)
libXext.so.6()(64bit)
libXrandr.so.2()(64bit)
以下省略...
可以看到gnome桌面依賴很多東西捻艳,所以手動使用rpm解決依賴關(guān)系非常費(fèi)力驾窟。
查詢是/bin/bash由哪個(gè)程序所提供:
[root@localhost Packages]# rpm -qf /bin/bash
bash-4.2.46-19.el7.x86_64
如果誤刪了某個(gè)文件庆猫,又不知道這個(gè)文件由哪個(gè)程序所提供,還是可以使用-qf選項(xiàng)來查詢的绅络,因?yàn)橄嚓P(guān)信息都存在rpm數(shù)據(jù)庫中月培。
獲取一個(gè)rpm包,在安裝前恩急,查詢它的依賴關(guān)系杉畜,可以加上-p選項(xiàng),比如查詢tree工具的依賴關(guān)系:
[root@localhost Packages]# rpm -qpR tree-1.6.0-10.el7.x86_64.rpm
warning: tree-1.6.0-10.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
注意這里需要給出程序包的文件路徑衷恭。
查詢系統(tǒng)上以c開頭的程序有幾個(gè):
[root@localhost ~]# rpm -qa | grep ^c | wc -l
48
3此叠、yum命令
百科中的定義:
Yum(全稱為 Yellow dog Updater, Modified)是一個(gè)在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器∷嬷椋基于RPM包管理灭袁,能夠從指定的服務(wù)器自動下載RPM包并且安裝,可以自動處理依賴性關(guān)系窗看,并且一次安裝所有依賴的軟件包茸歧,無須繁瑣地一次次下載、安裝显沈。
可以將Yum當(dāng)作一個(gè)C/S架構(gòu)的服務(wù)软瞎,客戶端是yum命令,服務(wù)器端就是yum的倉庫指向拉讯。所以要使用yum涤浇,首先得有yum倉庫,并且在本地的yum配置文件中指明倉庫的位置魔慷。
(1) yum倉庫
yum倉庫(yum repository芙代,又稱yum repo),其中存儲了:
- 眾多rpm程序包盖彭;
所以yum倉庫首先是一個(gè)文件服務(wù)器纹烹。 - 程序包的相關(guān)元數(shù)據(jù)文件页滚。
元數(shù)據(jù)文件存放在repodata這個(gè)特定的目錄下,而yum配置文件中倉庫的位置就是指定repodata目錄所在的位置铺呵。
可以自己創(chuàng)建yum倉庫裹驰,創(chuàng)建命令:
createrepo [options] <directory>
(2) yum的配置文件
yum的配置文件主要有兩類:
- /etc/yum.conf
這是yum命令的配置文件,為所有yum倉庫提供公共配置片挂。
# man 5 yum.conf \\查看yum.conf配置文件的詳細(xì)說明
- /etc/yum.repos.d/*.repo
/etc/yum.repos.d/目錄下所有以.repo結(jié)尾的文件幻林,用于指定yum倉庫指向的配置文件,每個(gè)文件中可以指定多個(gè)yum倉庫音念。
*.repo配置文件中沪饺,倉庫指向的定義:
- [repositoryID]
yum倉庫的標(biāo)識- name=Name for this repository
yum倉庫的名字- baseurl=url://path/to/repository/ (等號左右沒有空格)
yum倉庫的url,即repodata目錄所在的位置
在指定url時(shí)闷愤,某個(gè)站點(diǎn)會包含多個(gè)適用于不同系統(tǒng)的yum倉庫整葡,它們的路徑會按系統(tǒng)版本和支持的平臺等來命名,如果通過手動指定會因系統(tǒng)的不同而比較繁瑣讥脐,且容易出錯遭居,所以yum的repo配置文件中定義了一些可用的變量:
- $releasever:當(dāng)前OS的發(fā)行版的主版本號;
- $arch:平臺
- $basearch:基礎(chǔ)平臺
- YUM9:自定義
這些變量會獲取系統(tǒng)版本和平臺旬渠,自動補(bǔ)全到url路徑中去俱萍。
- enabled={1|0}
是否啟動(未指定的話,默認(rèn)啟動)- gpgcheck={1|0}
是否檢查來源合法性和完整性- repo_gpgcheck={1|0}
是否檢查repo元數(shù)據(jù)- gpgkey=URL
指明密鑰文件- enablegroups={1|0}
是否支持在此倉庫上執(zhí)行組告丢,來批量管理程序包- failovermethod={roundrobin|priority}
baseurl指向多個(gè)時(shí)枪蘑,如何挑選(默認(rèn)為roundrobin,隨機(jī)挑選)岖免;- cost=1000
默認(rèn)都為1000
(3) 通過yum命令管理程序
語法格式
yum [options] [command] [package ...]
常用的command
- repolist - 顯示倉庫列表
yum repolist [all|enabled|disabled]
可以顯示全部岳颇、已啟用和未啟用的(默認(rèn)顯示已啟用的)
- list - 顯示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
可以根據(jù)通配符進(jìn)行匹配顯示。
- install - 安裝程序包
yum install package1 [package2] [...]
默認(rèn)安裝最新版本
yum reinstall package1 [package2] [...]
重新安裝
- update - 升級程序包(如果不指定程序包觅捆,會升級所有已安裝的程序)
yum update [package1] [package2] [...]
- downgrade - 降級程序包
yum downgrade [package1] [package2] [...]
- check-update - 檢查可用升級
- remove | erase - 卸載程序包
yum remove | erase package1 [package2] [...]
- info - 查看程序包信息
- provides | whatprovides - 查看指定的特性(或文件)是由哪個(gè)程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
- clean - 清理本地緩存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all]
- makecache - 構(gòu)建緩存
yum makecache [fast]
- search - 以指定的關(guān)鍵字搜索程序包名及summary信息
yum search string1 [string2] [...]
- deplist - 查看指定包所依賴的capabilities
yum deplist package1 [package2] [...]
- history - 查看yum事務(wù)歷史
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
- 包組管理的相關(guān)命令
yum grouplist [hidden] [groupwildcard] [...]
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
常用的options
- --nogpgcheck:禁止進(jìn)行g(shù)pg check(即使配置文件中指定gpgcheck=1赦役,也可以禁止);
- -y:自動回答為“yes”栅炒;
- -q:--quiet:靜默模式掂摔;
- --enablerepo=repoidglob:臨時(shí)啟用此處指定的repo;
- --disablerepo=repoidglob:臨時(shí)禁用此處指定的repo赢赊;
- --noplugins:禁用所有插件乙漓;
(4) yum倉庫配置示例
-
如何使用光盤或鏡像文件當(dāng)作本地yum倉庫
- 首先掛載光盤或鏡像文件至某目錄
[root@localhost ~]# mount -rt iso9660 /dev/cdrom /mnt/cdrom/
- 在/etc/yum.repos.d/下創(chuàng)建.repo結(jié)尾的配置文件,并按格式配置
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim Local.repo
[local]
name=CentOS7 local reposity
baseurl=file:///mnt/cdrom/
enable=1
gpgcheck=0
- 首先掛載光盤或鏡像文件至某目錄
-
配置網(wǎng)絡(luò)上的yum倉庫為yum源
以配置mirrors.aliyun.com為例:
[root@localhost ~]# cd /etc/yum.repos.d/
根據(jù)系統(tǒng)版本下載repo文件
[root@localhost yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo
--2018-05-21 14:07:53-- http://mirrors.aliyun.com/repo/Centos-7.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 124.238.245.105, 124.238.245.101, 124.238.245.104, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|124.238.245.105|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2573 (2.5K) [application/octet-stream]
Saving to: ‘Centos-7.repo’
100%[============================================================================================>] 2,573 --.-K/s in 0s
2018-05-21 14:07:53 (79.0 MB/s) - ‘Centos-7.repo’ saved [2573/2573]
查看yum倉庫释移,aliyun的yum倉庫已添加成功
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 9,911
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 291
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 539
repolist: 10,741
(5) yum命令的相關(guān)示例
- 搜索mysql相關(guān)程序包:
[root@localhost yum.repos.d]# yum search mysql
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
========================================================= N/S matched: mysql ``=========================================================
MySQL-python.x86_64 : An interface to MySQL
akonadi-mysql.x86_64 : Akonadi MySQL backend support
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
以下省略
- 查看mdadm程序的相關(guān)信息:
[root@localhost yum.repos.d]# yum info mdadm
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Installed Packages
Name : mdadm
Arch : x86_64
Version : 3.3.2
Release : 7.el7
Size : 928 k
Repo : installed
以下省略
- 列出yum倉庫中可提供升級的本機(jī)程序:
[root@localhost ~]# yum list updates | less
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Updated Packages
ImageMagick.x86_64 6.7.8.9-15.el7_2 base
ImageMagick-perl.x86_64 6.7.8.9-15.el7_2 base
MySQL-python.x86_64 1.2.5-1.el7 base
以下省略
- 列出哪個(gè)程序提供了/bin/zsh這個(gè)文件
[root@localhost bin]# yum provides /bin/zsh
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
zsh-5.0.2-14.el7.x86_64 : Powerful interactive shell \\程序包名和程序簡介
Repo : local \\在哪個(gè)yum倉庫
Matched from:
Filename : /bin/zsh
以下省略
yum下載rpm包
只下載不安裝
yum命令本身就可以用來下載一個(gè)RPM包叭披,標(biāo)準(zhǔn)的yum命令提供了--downloadonly(只下載)
的選項(xiàng)來達(dá)到這個(gè)目的。
$ sudo yum install --downloadonly <package-name>
默認(rèn)情況下玩讳,一個(gè)下載的RPM包會保存在下面的目錄中:
/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages
以上的[repository]表示下載包的來源倉庫的名稱(例如:base涩蜘、fedora嚼贡、updates)
如果你想要將一個(gè)包下載到一個(gè)指定的目錄(如/tmp):
$ sudo yum install --downloadonly --downloaddir=/tmp <package-name>
注意,如果下載的包包含了任何沒有滿足的依賴關(guān)系同诫,yum將會把所有的依賴關(guān)系包下載粤策,但是都不會被安裝。
另外一個(gè)重要的事情是误窖,在CentOS/RHEL 6或更早期的版本中叮盘,你需要安裝一個(gè)單獨(dú)yum插件(名稱為 yum-plugin-downloadonly)才能使用--downloadonly
命令選項(xiàng):
$ sudo yum install yum-plugin-downloadonly
如果沒有該插件,你會在使用yum時(shí)得到以下錯誤:
Command line error:no such option:--downloadonly