在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上常用的rpm和yum等的用法。
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
文章詳細的介紹了rpm包管理和使用及yum源的配置和使用,內容總結的很詳細,排版也很不錯,厲害