CentOS的軟件包的管理之rpm和yum

在linux上,一個軟件包通常由二進制程序,庫文件,配置文件和幫助文件組成。 其中:

二進制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin這幾個目錄下邊;
庫文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/local/lib64這些目錄下;
配置文件一般都是放在/etc這個目錄下;
而最基本的man幫助文件則是放在/usr/share/man這個目錄下的。

CentOS上,軟件的安裝方式一般有四種:

通用二進制編譯:由志愿者把開發完成的源代碼編譯成二進制文件,打包后發布在網絡上,大家都可以通過網絡進行下載,到本地之后,經過解壓配置就可以使用。
軟件包管理器:使用包管理工具安裝,有時候必須要解決軟件包之間的依賴問題,例如rpm和deb等。
軟件包前端管理工具:可以自動解決軟件包依賴關系,例如yum和apt-get等。
源碼包安裝:從網絡上下載軟件的源碼包到本地計算機,用gcc等編譯工具編譯成二進制文件后才能使用,有時必須要解決庫文件的缺失問題。

我們這里只說CentOS上常用的rpmyum等的用法。

CentOS上默認使用的軟件包格式是rpm包。

RPM最初是由RedHat公司開發的一種軟件包管理工具,最初它的全稱是Redhat Package Manager,現在包括SUSE在內的很多linux發行版都使用這種軟件管理工具,使得rpm成為linux的軟件包管理標準,所以現在它的全稱為Rpm Package Manager.

rpm包的管理器包括軟件的打包,查詢,校驗,安裝,升級,卸載,數據庫管理等功能。

CentOS上,一個rpm的命令格式為:

name-version.release.arch.rpm,其中version由主版本號,次版本號構成。

拿一個很常用的軟件包主例: httpd-2.2.15-59.el6.centos.x86_64.rpm 在這里,httpd是軟件包的包名,2.2.15-59依次是軟件包的主發行版本號,次發行版本號和修正號等,el6.centos是軟件包適用的操作系統的版本號,x86_64是軟件包的架構。

rpm的命令一般都是組合使用的,常用的組合選項有:

rpm -q          查詢某個軟件包,一般與別的選項組合使用
rpm -qa         查詢系統上已安裝的所有的軟件包
rpm -qf         查詢系統中的某個文件是由哪個軟件包所生成
rpm -qd         查詢一個軟件包安裝后在系統生成的幫助文件
rpm -ql         查詢一個軟件包安裝后在系統生成文件的列表
rpm -qc         查詢一個軟件包的配置文件
rpm -qpl        查詢一個未安裝軟件包安裝后會在系統生成的文件列表
rpm -qi         查詢一個軟件包的發行信息
rpm -v          顯示一個軟件包安裝,升級,卸載的過程            
rpm -K          校驗一個軟件包的私鑰是否正確
rpm -U          升級軟件包
rpm -f          強制安裝,升級或卸載某軟件
rpm -e          卸載軟件包

rpm管理器一些其它的用法:

rpm --replacepkgs       重新安裝某個軟件包
rpm --initdb            初始化系統的rpm數據庫
rpm --rebuilddb         重建系統的rpm數據庫
rpm --import            向系統導入軟件包的公鑰
rpm --test              測試一個軟件包是否能夠安裝在系統上,不真正安裝
rpm --nodeps            安裝軟件包,不解決依賴關系
rpm --force             強制安裝,升級或卸載,等同于rpm -f
rpm --scripts           查看一個軟件包內的腳本
rpm --nodigest          不檢查軟件包的完整性
rpm --nosignature       不檢查軟件包來源的合法性

校驗軟件包的文件:

S            文件大小發生改變
M            文件權限發生改變
5            文件的md5值發生改變
D            設備的主次設備號發生改變
L            文件的鏈接發生改變
U            文件的屬主發生改變
G            文件的屬組發生改變
T            文件的最后修改時間發生改變
P            文件的能力發生改變

rpm包管理器的通用配置文件:

公鑰文件位置:/etc/pki/rpm-gpg/
[root@localhost ~]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6        RPM-GPG-KEY-CentOS-Security-6
RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Testing-6

數據庫文件位置:/var/lib/rpm/
[root@localhost ~]# ls /var/lib/rpm
Basenames     __db.003     Group         Packages        Requirename     Triggername
Conflictname  __db.004     Installtid    Providename     Requireversion
__db.001      Dirnames     Name          Provideversion  Sha1header
__db.002      Filedigests  Obsoletename  Pubkeys         Sigmd5

做為一個標準的軟件包管理系統,rpm確實很強大,但是rpm軟件包的依賴問題卻又讓所有的SA又愛又恨,因此rpm包的前端管理工具就應運而生了。

Yum ,全稱為:Yellow dog Updater, Modified,是一個基于RPM 包管理的字符前端軟件包管理器,它基于C/S架構,能夠從配置好的yum倉庫自動下載 RPM 包并且安裝,可以處理依賴性關系,并且一次安裝所有依賴的軟件包,無須繁瑣地一次次下載、安裝。

yum的倉庫由各共享的rpm包及由包之間的依賴關系的文件列表等元數據文件組成。 yum的客戶端由yum配置文件,緩存元數據組成。 yum客戶端的工作原理分析:

1.yum源配置完成后,yum會到各可用的yum倉庫下載元數據到本地,并緩存在/var/cache/yum這個目錄下。
2.當管理員想要安裝某個軟件時,yum會根據具體的操作請求分析緩存在系統本地的元數據,結合系統已經安裝的軟件包,分析出要安裝或升級的軟件包的列表。
3.向yum倉庫請求分析出的軟件包列表中的軟件,下載到本地客戶端完成安裝。
4.本次安裝完成后,清除本次安裝過程中下載到本地的軟件包,以節省硬盤空間。

yum主配置文件為/etc/yum.conf:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0        
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
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

文件格式解說:

cachedir        指的是下載軟件包緩存目錄
$basearch       對應為程序的版本,對yum而言指的是redhat-release版本,在使用時會替換成系統的主版本號。
$releasever     對應為系統的硬件架構,如i686,x86-64,noarch等
keepcache       軟件包安裝后是否保留軟件包,0為不保留
logfile         為yum的系統日志文件
gpgcheck        為是否校驗要安裝的軟件包,1為校驗

yum客戶端的配置文件通常位于/etc/yum.repos.d/這個目錄下,以repo結尾的文件都是yum源的配置文件,yum源的配置文件可以有多個。

[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

這個是系統自帶的yum源文件。yum源的配置通常由五部分組成,其中,

[base]是這個yum源的名字
name=....                相當于是這個yum源的注釋信息
baseurl=.....            指定對應yum倉庫的訪問方式,可以使用以下四種方式:
    ftp                    ftp://server/path/to/repo
    http                http://server/path/to/repo
    nfs                    nfs://server/path/to/repo
    本地光盤yum源        file:///path/to/repo
gpgckeck=1              校驗軟件包
gpgkey=...              指定公鑰的位置

yum的用法:

yum [option] command

yum常用的命令有:

yum repolist {all|enabed|disabled}          列出所有/已啟用/已禁用的yum源
yum list {all|installed|avaliable}          列出所有/已安裝/可安裝的軟件包
yum info package                            顯示某一個軟件包的信息
yum install package                         安裝軟件包
yum reinstall package                       重新安裝軟件包
yum remove|earse package                    卸載軟件包
yum whatprovides|provides files             查詢某個文件是哪個軟件包生成的
yum grouplist {all|installed|avaliable}     列出所有/已安裝/可安裝的軟件包組
yum groupinfo                               顯示某個軟件包組的信息
yum groupinstall                            安裝某個軟件包組
yum groupremove                             刪除某個軟件包組
yum history                                 查看yum使用的歷史
yum clean {all|packages|metadata}           清除所有/軟件包/元數據
yum makecache                               生成yum元數據 
yum --nogpgcheck                            不校驗公鑰文件
yum -y                                      自動進行操作

例子:

1.安裝wget下載工具:

[root@localhost ~]# yum install -y wget
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: 
base                                                                                                                                            | 4.0 kB     00:00 ... 
epel                                                                                                                                            | 4.3 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.12-10.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================
 Package                              Arch                                   Version                                        Repository                            Size
=======================================================================================================================================================================
Installing:
 wget                                 x86_64                                 1.12-10.el6                                    base                                 484 k

Transaction Summary
=======================================================================================================================================================================
Install       1 Package(s)

Total download size: 484 k





Installed size: 1.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : wget-1.12-10.el6.x86_64                                                                                                                             1/1 
  Verifying  : wget-1.12-10.el6.x86_64                                                                                                                             1/1 

Installed:
  wget.x86_64 0:1.12-10.el6                                                                                                                                            

Complete!

2.安裝開發工具包組:

[root@localhost ~]# yum grouplist | grep "Development tools"
   Development tools
[root@localhost ~]# yum groupinstall -y "Development tools"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * base: 
Package 1:make-3.81-23.el6.x86_64 already installed and latest version
Package 1:pkgconfig-0.23-9.1.el6.x86_64 already installed and latest version
Package binutils-2.20.51.0.2-5.46.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package autoconf.noarch 0:2.63-5.1.el6 will be installed
--> Processing Dependency: perl >= 5.005_03 for package: autoconf-2.63-5.1.el6.noarch
--> Processing Dependency: perl >= 5.005 for package: autoconf-2.63-5.1.el6.noarch
...         中間省略
Verifying  : elfutils-0.164-2.el6.x86_64                               106/113 
  Verifying  : 1:perl-Module-Pluggable-3.90-144.el6.x86_64               107/113 
  Verifying  : byacc-1.9.20070509-7.el6.x86_64                           108/113 
  Verifying  : libXft-2.3.2-1.el6.x86_64                                 109/113 
  Verifying  : libedit-2.11-4.20080712cvs.1.el6.x86_64                   110/113 
  Verifying  : libICE-1.0.6-1.el6.x86_64                                 111/113 
  Verifying  : perl-XML-Parser-2.36-7.el6.x86_64                         112/113 
  Verifying  : libxcb-1.12-4.el6.x86_64                                  113/113 
...         中間省略
Installed:
  autoconf.noarch 0:2.63-5.1.el6                                                 
...         中間省略
  perl-libwww-perl.noarch 0:5.833-5.el6                                          
  perl-version.x86_64 3:0.77-144.el6                                             
  pixman.x86_64 0:0.32.8-1.el6                                                   
  ppl.x86_64 0:0.10.2-11.el6                                                     
  rsync.x86_64 0:3.0.6-12.el6                                                   
  systemtap-client.x86_64 0:2.9-7.el6                                            
  systemtap-devel.x86_64 0:2.9-7.el6                                             
  systemtap-runtime.x86_64 0:2.9-7.el6                                           
  unzip.x86_64 0:6.0-5.el6                                                       
  xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6                                   
  xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6                       
  zip.x86_64 0:3.0-1.el6_7.1                                                     

Complete!

3.查看內核文件的信息

[root@localhost Packages]# yum info kernel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: 
Installed Packages
Name        : kernel
Arch        : x86_64
Version     : 2.6.32
Release     : 573.el6
Size        : 126 M
Repo        : installed
From repo   : anaconda-CentOS-201508042137.x86_64
Summary     : The Linux kernel
URL         : http://www.kernel.org/
License     : GPLv2
Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
            : Linux operating system.  The kernel handles the basic functions
            : of the operating system: memory allocation, process allocation, device
            : input and output, etc.

Available Packages
Name        : kernel
Arch        : x86_64
Version     : 2.6.32
Release     : 696.el6
Size        : 32 M
Repo        : base
Summary     : The Linux kernel
URL         : http://www.kernel.org/
License     : GPLv2
Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
            : Linux operating system.  The kernel handles the basic functions
            : of the operating system: memory allocation, process allocation, device
            : input and output, etc.

4.在CentOS7上創建本地光盤yum源

#查看系統版本
[root@localhost home]# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core) 
#創建光盤掛載點
[root@localhost home]# mkdir /mnt/cdrom
#掛載系統光盤到/mnt/cdrom目錄下
[root@localhost home]# mount /dev/cdrom /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
#列出/mnt/cdrom目錄的內容
[root@localhost home]# ls /mnt/cdrom
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
#進入/etc/yum.repos.d目錄
[root@localhost home]# cd /etc/yum.repos.d/
#創建repo的備份目錄
[root@localhost yum.repos.d]# mkdir repo.bak
#把系統原有的repo文件移動到剛創建的備份目錄下
[root@localhost yum.repos.d]# mv ./*.repo repo.bak/
#編輯光盤yum的repo文件,加入以下內容,保存退出
[root@localhost yum.repos.d]# vi CentOS-Media.repo

[CentOS-Media]
name=CentOS-Media
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=0

#清除系統上yum源的元數據
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: CentOS-Media
Cleaning up everything
Cleaning up list of fastest mirrors
#生成新的yum元數據
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
CentOS-Media                                                                                                                                    | 3.6 kB  00:00:00     
(1/4): CentOS-Media/group_gz                                                                                                                    | 155 kB  00:00:00     
(2/4): CentOS-Media/filelists_db                                                                                                                | 3.0 MB  00:00:02     
(3/4): CentOS-Media/primary_db                                                                                                                  | 3.0 MB  00:00:01     
(4/4): CentOS-Media/other_db                                                                                                                    | 1.3 MB  00:00:00     
Determining fastest mirrors
Metadata Cache Created
#安裝軟件進行測試
[root@localhost yum.repos.d]# yum install -y httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================================================
 Package                                Arch                              Version                                        Repository                               Size
=======================================================================================================================================================================
Installing:
 httpd                                  x86_64                            2.4.6-45.el7.centos                            CentOS-Media                            2.7 M
Installing for dependencies:
 httpd-tools                            x86_64                            2.4.6-45.el7.centos                            CentOS-Media                             84 k
 mailcap                                noarch                            2.1.41-2.el7                                   CentOS-Media                             31 k

Transaction Summary
=======================================================================================================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 2.8 M
Installed size: 9.6 M
Downloading packages:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                   10 MB/s | 2.8 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : mailcap-2.1.41-2.el7.noarch                                                                                                                         1/3 
  Installing : httpd-tools-2.4.6-45.el7.centos.x86_64                                                                                                              2/3 
  Installing : httpd-2.4.6-45.el7.centos.x86_64                                                                                                                    3/3 
  Verifying  : httpd-tools-2.4.6-45.el7.centos.x86_64                                                                                                              1/3 
  Verifying  : mailcap-2.1.41-2.el7.noarch                                                                                                                         2/3 
  Verifying  : httpd-2.4.6-45.el7.centos.x86_64                                                                                                                    3/3 

Installed:
  httpd.x86_64 0:2.4.6-45.el7.centos                                                                                                                                   

Dependency Installed:
  httpd-tools.x86_64 0:2.4.6-45.el7.centos                                                mailcap.noarch 0:2.1.41-2.el7                                               

Complete!

祝大家學習工作愉快?。?/p>

原創文章,作者:renpingsheng,如若轉載,請注明出處:http://www.www58058.com/74027

(0)
renpingshengrenpingsheng
上一篇 2017-04-23
下一篇 2017-04-24

相關推薦

  • 馬哥教育網絡班21期-第五周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep ^[[:space:]] /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; egrep "^#[[:space:]]{1,}[[:alnum:]]…

    Linux干貨 2016-08-08
  • CentOS 5,6 系統啟動流程詳解

        一、linux 組成介紹          1.linux 組成:             ? Lin…

    Linux干貨 2016-09-11
  • keepalived+nginx部署(單主模型)

    環境準備Centos7系統,后端服務器提供web服務。地址規劃: VS1: 172.18.51.7 VS2:172.17.51.77 RS1:172.18.51.74 RS2:172.18.51.75 VirtualIP:172.18.51.82 拓撲圖: 原理:nginx是高度模塊化的應用程序,其中nginx_proxy模塊即可實現負載均衡,將前端的用戶請…

    Linux干貨 2017-05-17
  • 馬哥教育網絡班21期-第七周課程練習

    第七周作業 1、創建一個10G分區,并格式為ext4文件系統; [root@qq ~]# fdisk /dev/sdb         #使用fdisk命令進行分區; Device contains neither&nb…

    Linux干貨 2016-08-08
  • shell編程基礎一(多種方法求值1+2+..+100)

    #SHELL編程基礎一(多種方法求值1+2+..+100)##為什么要學好shell shell腳本語言是實現linux系統管理及自動化運維所必備的重要工具,linux系統的底層及基礎應用軟件的核心大都涉及shell腳本的內容。 每一個合格的linux系統管理員或運維工程師,都需要能夠熟練地編寫shell腳本語言,并能夠閱讀系統及各類軟件…

    Linux干貨 2017-08-26
  • linux cluster—-lvs

    一. Linux Cluster:           Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統;      Linux Cluster類型:      &nbs…

    Linux干貨 2016-10-29

評論列表(1條)

  • renjin
    renjin 2017-04-28 14:10

    文章詳細的介紹了rpm包管理和使用及yum源的配置和使用,內容總結的很詳細,排版也很不錯,厲害

欧美性久久久久