Linux程序包的管理需要依賴程序包管理工具,程序包管理工具可以實現(xiàn)程序的安裝、升級、卸載、查詢和校驗,等等相關(guān)操作。本文主要介紹使用rpm和yum實現(xiàn)程序包的管理。
- rpm程序包管理基礎(chǔ)
(1) rpm程序包的命名格式
(2) 如何獲取rpm程序包?- rpm命令
(1) 安裝
(2) 升級
(3) 卸載
(4) 查詢
(5) 校驗
(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ù)器(或其他鏡像站點)。
系統(tǒng)自帶的程序包可以光盤或光盤鏡像文件獲取。
如:http://mirrors.aliyun.com | http://mirrors.sohu.com | http://mirrors.163.com程序項目的官方站點。
如:http://www.zabbix.comEPEL
EPEL(Extra Packages for Enterprise Linux)是由Fedora Special Interest Group維護的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來實現(xiàn)程序包管理。
rpm的全稱是Redhat Package Manager,由RedHat研發(fā),后形成標準后,成為Rpm is Package Manager,這是rpm的新定義。
程序包管理器的功能是將編譯好的應(yīng)用程序的各組成文件打包成一個或幾個程序包文件,從而更方面地實現(xiàn)程序包的安裝、升級、卸載和查詢等管理操作,它由兩部分組成:
- 程序包的組成清單
這是基于個體的,每個程序包都有一個自己的清單,其中有程序包中的文件清單、安裝或卸載時運行的腳本,等等。 - 程序包管理器的數(shù)據(jù)庫
這是公共的,數(shù)據(jù)庫中記錄各程序包的名稱和版本、依賴關(guān)系、程序包的功能說明、安裝生成的各文件路徑及校驗碼信息,等等。
在CentOS中,各數(shù)據(jù)庫文件存放在/var/lib/rpm/下。
接下來詳細描述如何通過rpm命令實現(xiàn)rpm程序包的安裝、升級、卸載、查詢和校驗,以及rpm數(shù)據(jù)庫維護。
rpm命令的用法總結(jié)簡化后如下:
rpm [OPTIONS] [GENERAL_OPTIONS] [PACKAGE_FILE | PACKAGE_NAME]
通過OPTIONS來指定要進行的操作:
安裝:-i,--install
升級:-u,--update,或-F,--freshen
卸載:-e,--erase
查詢:-q,--query
校驗:-V,--verify
數(shù)據(jù)庫管理:--builddb,--initdb
通過GENERAL_OPTIONS來自定義操作過程
-v: verbose, 詳細信息
-vv:更詳細的輸出-_-||
通過程序包文件名和程序包名來指定作用對象
PACKAGE_FILE是文件名,需要程序包文件的完整名稱;
PACKAGE_NAME是程序名,只需指定程序包名中的NAME。
(1) 安裝
語法格式
rpm {-i|--install} [install-options] PACKAGE_FILE...
安裝需要指定程序包的文件名。
安裝rpm包的常用固定格式為:
rpm -ivh PACKAGE_FILE...
表示安裝過程中顯示進度條和詳細信息。
install-options包括:
-h:hash marks,輸出進度條,用#表示,每個#表示2%的進度;
--test:測試安裝,檢查并報告依賴關(guān)系及沖突消息等;
--nodeps:忽略依賴關(guān)系,不建議;
--replacepkgs:重新安裝,(不會替代配置文件);
--noscripts:不執(zhí)行rpm自帶的所有腳本(共四種,可分別單獨禁用);
--nosignature: 不檢查包簽名信息,即不檢查來源合法性;
--nodigest:不檢查包完整性信息。
這里強調(diào)一下,rpm的自帶腳本分為四種,分別為:
%pre:preinstall,安裝過程開始之前運行的腳本,單獨禁用使用install options中的--nopre;
%post:postinstall,安裝過程完成之后運行的腳本,單獨禁用使用install options中的--nopost;
%preun:preuninstall,卸載過程真正開始執(zhí)行之前運行的腳本,單獨禁用使用install options中的--nopreun;
%postun:postuninstall,卸載過程完成之后運行的腳本,單獨禁用使用install options中的--nopostun
(2) 升級
語法格式
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
這里需要注意一下-U和-F的區(qū)別:
-U表示升級或安裝
指定的程序已安裝時,則執(zhí)行升級;若未安裝,則安裝。
-F表示僅升級,不安裝
即程序未安裝時,則不進行任何操作。
升級需要指定的也是程序包的文件名。
升級rpm包的常用固定格式為:
rpm -Uvh PACKAGE_FILE...
rpm -Fvh PACKAGE_FILE...
在升級過程中顯示進度條和詳細信息。
rpm安裝的install-options同樣適用于此,下面是兩個額外的選項:
--oldpackage:降級
--force:強制升級
關(guān)于程序升級有兩點需要注意:
不要對內(nèi)核做升級操作,Linux支持多內(nèi)核版本并存,因此直接安裝新版本內(nèi)核即可;
升級時,如果某程序包的配置文件安裝后曾被修改過,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名后提供。
(3) 卸載
語法格式
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME...
卸載需要指定的是程序名。
常用的選項:
--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:查詢指定的文件由哪個程序包安裝生成
-p,--package:用于實現(xiàn)對未安裝的程序包執(zhí)行查詢操作;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
query options用來指定要查詢什么內(nèi)容,包括:
-changelog:查詢rpm包的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) 校驗
語法格式
rpm {-V|--verify} [select-options] [verify-options]
校驗錯誤的結(jié)果顯示包括:
S file Size differs 文件大小不匹配;
M Mode differs (includes permissions and file type) 文件權(quán)限和文件類型不匹配;
5 digest (formerly MD5 sum) differs,md5校驗結(jié)果不匹配;
D Device major/minor number mismatch 主/次設(shè)備號不匹配;
L readLink(2) path mismatch
U User ownership differs,屬主不匹配;
G Group ownership differs,屬組不匹配;
T mTime differs,修改時間不匹配;
P caPabilities differ,程序包所提供的功能不匹配。
(6) rpm數(shù)據(jù)庫管理
rpm程序包管理器的數(shù)據(jù)庫路徑為:/var/lib/rpm/,rpm管理操作就是基于此目錄下的數(shù)據(jù)庫文件進行的。
語法格式
rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY] [--root DIRECTORY]
選項含義:
--initdb:初始化數(shù)據(jù)庫-當前無任何數(shù)據(jù)庫時,可初始化創(chuàng)建一個新的;當時有數(shù)據(jù)庫,則不執(zhí)行任何操作;
--rebuild:重新構(gòu)建,通過讀取系統(tǒng)上所有已經(jīng)安裝過的程序包進行重新創(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)系,有時會繞的找不到北,后面用yum安裝會方便快捷很多。
也可以一次安裝多個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程序的詳細說明:
[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 \安裝時間
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 \打包的時間
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 : \以下是更詳細的程序描述
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)系非常費力。
查詢是/bin/bash由哪個程序所提供:
[root@localhost Packages]# rpm -qf /bin/bash
bash-4.2.46-19.el7.x86_64
如果誤刪了某個文件,又不知道這個文件由哪個程序所提供,還是可以使用-qf選項來查詢的,因為相關(guān)信息都存在rpm數(shù)據(jù)庫中。
獲取一個rpm包,在安裝前,查詢它的依賴關(guān)系,可以加上-p選項,比如查詢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開頭的程序有幾個:
[root@localhost ~]# rpm -qa | grep ^c | wc -l
48
3、yum命令
百科中的定義:
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器?;赗PM包管理,能夠從指定的服務(wù)器自動下載RPM包并且安裝,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。
可以將Yum當作一個C/S架構(gòu)的服務(wù),客戶端是yum命令,服務(wù)器端就是yum的倉庫指向。所以要使用yum,首先得有yum倉庫,并且在本地的yum配置文件中指明倉庫的位置。
(1) yum倉庫
yum倉庫(yum repository,又稱yum repo),其中存儲了:
- 眾多rpm程序包;
所以yum倉庫首先是一個文件服務(wù)器。 - 程序包的相關(guān)元數(shù)據(jù)文件。
元數(shù)據(jù)文件存放在repodata這個特定的目錄下,而yum配置文件中倉庫的位置就是指定repodata目錄所在的位置。
可以自己創(chuàng)建yum倉庫,創(chuàng)建命令:
createrepo [options] <directory>
(2) yum的配置文件
yum的配置文件主要有兩類:
- /etc/yum.conf
這是yum命令的配置文件,為所有yum倉庫提供公共配置。
'#' man 5 yum.conf \查看yum.conf配置文件的詳細說明 - /etc/yum.repos.d/*.repo
/etc/yum.repos.d/目錄下所有以.repo結(jié)尾的文件,用于指定yum倉庫指向的配置文件,每個文件中可以指定多個yum倉庫。
*.repo配置文件中,倉庫指向的定義:
- [repositoryID]
yum倉庫的標識- name=Name for this repository
yum倉庫的名字- baseurl=url://path/to/repository/ (等號左右沒有空格)
yum倉庫的url,即repodata目錄所在的位置
在指定url時,某個站點會包含多個適用于不同系統(tǒng)的yum倉庫,它們的路徑會按系統(tǒng)版本和支持的平臺等來命名,如果通過手動指定會因系統(tǒng)的不同而比較繁瑣,且容易出錯,所以yum的repo配置文件中定義了一些可用的變量:1.$releasever:當前OS的發(fā)行版的主版本號;
- $arch:平臺
- $basearch:基礎(chǔ)平臺
4.YUM0-YUM9:自定義
這些變量會獲取系統(tǒng)版本和平臺,自動補全到url路徑中去。
enabled={1|0}
是否啟動(未指定的話,默認啟動)
gpgcheck={1|0}
是否檢查來源合法性和完整性
repo_gpgcheck={1|0}
是否檢查repo元數(shù)據(jù)
gpgkey=URL
指明密鑰文件
enablegroups={1|0}
是否支持在此倉庫上執(zhí)行組,來批量管理程序包
failovermethod={roundrobin|priority}
baseurl指向多個時,如何挑選(默認為roundrobin,隨機挑選);
cost=1000
默認都為1000
(3) 通過yum命令管理程序
語法格式
yum [options] [command] [package ...]
常用的command
- repolist - 顯示倉庫列表
yum repolist [all|enabled|disabled]
可以顯示全部、已啟用和未啟用的(默認顯示已啟用的) - list - 顯示程序包
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]
可以根據(jù)通配符進行匹配顯示。 - install - 安裝程序包
yum install package1 [package2] [...]
默認安裝最新版本
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 - 查看指定的特性(或文件)是由哪個程序包所提供:
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:禁止進行g(shù)pg check(即使配置文件中指定gpgcheck=1,也可以禁止);
- -y:自動回答為“yes”;
- -q:--quiet:靜默模式;
- --enablerepo=repoidglob:臨時啟用此處指定的repo;
- --disablerepo=repoidglob:臨時禁用此處指定的repo;
- --noplugins:禁用所有插件;
(4) yum倉庫配置示例
如何使用光盤或鏡像文件當作本地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倉庫中可提供升級的本機程序:
[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
以下省略
- 列出哪個程序提供了/bin/zsh這個文件
[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 \在哪個yum倉庫
Matched from:
Filename : /bin/zsh
以下省略
yum下載rpm包
只下載不安裝
yum命令本身就可以用來下載一個RPM包,標準的yum命令提供了--downloadonly(只下載)的選項來達到這個目的。
$ sudo yum install --downloadonly <package-name>
默認情況下,一個下載的RPM包會保存在下面的目錄中:
/var/cache/yum/x86_64/[centos/fedora-version]/[repository]/packages
以上的[repository]表示下載包的來源倉庫的名稱(例如:base、fedora、updates)
如果你想要將一個包下載到一個指定的目錄(如/tmp):
$ sudo yum install --downloadonly --downloaddir=/tmp <package-name>
注意,如果下載的包包含了任何沒有滿足的依賴關(guān)系,yum將會把所有的依賴關(guān)系包下載,但是都不會被安裝。
另外一個重要的事情是,在CentOS/RHEL 6或更早期的版本中,你需要安裝一個單獨yum插件(名稱為 yum-plugin-downloadonly)才能使用--downloadonly命令選項:
$ sudo yum install yum-plugin-downloadonly
如果沒有該插件,你會在使用yum時得到以下錯誤:
Command line error:no such option:--downloadonly