一、rpm包管理器
1、介紹rpm
在linux系統中,服務是要通過程序來提供的,通過調用API接口編寫好之后的源碼包文件對于普通用戶來說,安裝起來較為繁瑣。于是人們將源碼在編譯安裝的環境下制作了更加高級的rpm包,它的最大特點是避免了對原軟件包的編譯安裝,以更加簡便的安裝方式提供給用戶??梢允褂胷pm(RedhatPackage Manager)管理器來進行安裝.
rpm包格式
2、rpm包管理器
<1>安裝
rpm {-i|–install} [install-options] PACKAGE_FILE …
rpm -i FILE..
-i:表示安裝 -v:輸出詳細過程 -h:以進度條的方式顯示安裝過程
常用選項
--test:測試安裝,不進行實際安裝 --nodeps:忽略依賴關系安裝 --replacepkgs:重新安裝 --force:強制安裝
<2>升級
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
rpm -U FILE..
-U:安裝或者升級 -F:僅升級 -v:輸出詳細過程 -h:以進度條的方式顯示安裝過程
常用選項
--oldpackage:降級成舊版本 --force:強制升級到新版本
<3>卸載
rpm {-e|–erase} [–allmatches] [–nodeps] [–test] PACKAGE_NAME …
rpm -e FILE..
常用選項
-allmatches:卸載所有匹配指定程序包名稱的程序包的各版本 --nodeps:忽略依賴關系卸載程序包 --test:測試卸載程序包
<4>查詢
rpm {-q|–query} [select-options] [query-options] [FILE..]
-q file.rpm:查詢指定的rpm包是否安裝
[select-options]
-p:查詢未安裝的包的信息 -a,--all:查詢已安裝的所有程序包 -f FILE:查詢指定的文件由哪個程序包安裝生成 --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供 --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
[query-options]
-c: 查詢程序的配置文件 -d: 查詢程序的文檔 -i: 查詢程序的詳細信息 -l: 查看指定的程序包安裝后生成的所有文件; --scripts:程序包自帶的腳本片斷 -R: 查詢指定的程序包所依賴的CAPABILITY; --provides: 列出指定程序包所提供的CAPABILITY;
*這里注釋一下cpio的特殊用法
示例:如果刪除了一個rpm包的程序文件,而又不想重新安裝時還原原有的配置文件,可以選擇只安裝rpm包中的程序文件。
步驟1、查看rpm安裝包的文件列表
[root@centos6 Packages]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -t ./usr/bin/tree ./usr/share/doc/tree-1.5.3 ./usr/share/doc/tree-1.5.3/LICENSE ./usr/share/doc/tree-1.5.3/README ./usr/share/man/man1/tree.1.gz 132 blocks
步驟2、解壓包內文件
[root@centos6 ~]# rpm2cpio tree-1.5.3-3.el6.x86_64.rpm | cpio -id 132 blocks
步驟3、移動程序文件
[root@centos6 ~]# cp usr/bin/tree /usr/bin
<5>包校驗
rpm {-V|–verify} [select-options] FILE..
注:[select-options]與上不同,不予列出
下面介紹倆個常用的檢查機制
▲合法性校驗:rpm –import Public key
[root@localhost ~]#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 [root@localhost ~]#rpm -ivh zsh-5.0.2-14.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:zsh-5.0.2-14.el7 ################################# [100%]
安裝過程不提示警告
▲完整性校驗rpm -K file.rpm
[root@localhost ~]#echo ' ' > zsh-5.0.2-14.el7.x86_64.rpm [root@localhost ~]#rpm -K zsh-5.0.2-14.el7.x86_64.rpm error: zsh-5.0.2-14.el7.x86_64.rpm: not an rpm package
檢查出現錯誤
<6>數據庫維護
系統上的rpm包依靠一個數據庫(var/lib/rpm/)來維護,一旦rpm數據庫刪除,系統上關于包的任何操作都將無法進行,因為程序包的操作都是由數據庫來維護的。
rpm –initdb: 創建數據庫
rpm –rebuilddb:創建數據庫索引
[root@localhost /var/lib/rpm]#rm -rf * [root@localhost /var/lib/rpm]#rpm -q bash package bash is not installed [root@localhost /var/lib/rpm]#rpm --initdb [root@localhost /var/lib/rpm]#ls Basenames __db.001 __db.003 Group Name Packages Requirename Sigmd5 Conflictname __db.002 Dirnames Installtid Obsoletename Providename Sha1header Triggername [root@localhost /var/lib/rpm]#rpm -q bash package bash is not installed
上面例子證明:即使使用rpm –initdb恢復數據庫,也是無濟于事,因為其中并沒有rpm包的數據信息。友情提示:危險操作,切勿模仿
3、yum機制及其使用
二、yum包管理器
1、介紹yum
前面提到rpm的安裝,但是因為庫調用的原因,各個軟件包之間會存在依賴條件,為了解決這個問題,出現了yum(Yellow dog Updter, Modified),作為rpm的前端程序,可自動處理依賴性關系(即當一個包依賴到另一個包時,自動安裝對應的包)
2、yum工作原理
yum的工作模式分為倆部分:yum服務器端,client的yum工具。
◆yum服務器端存放著全部rpm包,以及特定的數據庫文件來索引rpm包和記錄rpm包之間的依賴關系。
◆client端每次調用yum命令的時候,通過解析/etc/yum.repos.d配置文件中的URL找到yum服務器。并且yum會定期去更新yum服務器上的rpm包的元數據和依賴關系信息到本地(/var/cache/yum/),每次使用yum操作rpm包時,根據數據庫里信息確定安裝包的名字,版本號,所需要的依賴包等,然后再去yum服務器實現操作。
工作原理示例圖
3、配置yum源
yum源配置格式
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
URL書寫格式
ftp://
http://
file:///
<1>本地
###新建cdrom目錄 [root@localhost ~]#mkdir /media/cdrom ####掛載光盤文件到目錄下 [root@localhost ~]#mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 is write-protected, mounting read-only ####包文件就在Packages中,repodata父目錄即為yum源目錄 [root@localhost ~]#cd /media/cdrom/ [root@localhost /media/cdrom]#ls CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL ####新建yum配置文件 [root@localhost /media/cdrom]#cd /etc/yum.repos.d/ [root@localhost /etc/yum.repos.d]#ls CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-Base.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@localhost /etc/yum.repos.d]#vim base.repo ###注意:要先移除原來的repo文件 [base] name=Local yum repository baseurl=file:///media/cdrom gpgcheck=1 ####此處如果gpgcheck=0的話,可以不寫gpgkey enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
<2>遠端Server
如果虛擬機支持聯網的話,可以直接使用網絡上的yum源
####直接在/etc/yum.repo下建立配置文件即可 [root@localhost /etc/yum.repos.d]#vim base2.repo ####此處給出示例 [base2] name=Server yum repository baseurl=http://10.1.0.1/cobbler/ks_mirror/7/ gpgcheck=1 enabled=1 gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/RPM-GPG-KEY-CentOS-7
4、yum命令
yum [options] [command] [package …]
<1>顯示倉庫列表
yum repolist
<2>顯示程序包
yum list {available|installed|updates}
-
<3>安裝升級
-
yum install package…
-
yum apdate package…
-
yum downgrade package..
-
<4>查看包的詳細信息
-
yum info package…
-
<5>刪除程序包
-
yum remove package…
-
<6>構建緩存
-
yum makecache
-
<7>清理緩存
-
yum clean [ metadata | all ]
-
<8>搜索
-
yum search Key_word
-
<9>查看yum事務歷史
-
yum history
-
yum history undo # :可以撤銷某個事物歷史的所有安裝包,類同卸載
-
<10>包組的查看
-
yum gruplist
-
<11>包組的安裝
-
yum groupinstall group…
-
<12>包組的升級
-
yum groupupdate group..
-
<13>包組的卸載
-
yum groupremove group…
原創文章,作者:mfwing,如若轉載,請注明出處:http://www.www58058.com/38767