程序包管理
Linux系統下有一系列系統管理程序包的工具。這些工具可以對程序包進行安裝,升級,卸載,校驗,查詢等等操作;來更方便我們在Linux下對程序包的管理,常用的就屬rpm和yum了,下面就詳細介紹下者兩種工具。當然,除了這兩種,還有deb也是使用廣泛的一種工具。現在,就先說說rpm吧。
一、rpm
rpm是redhat公司牽頭開發的一款包管理工具,全稱redhat package manager。rpm包是將程序源碼用rpmbuild命令加工打包成的,rpmbuild可以根據自己的需要只將自己需要的功能打包成rpm包。節省用源碼安裝方式每次都要編譯的過程,rpm包裏包含可執行的二進制文件。然後,利用rpm命令就可以安裝,卸載管理這個打好的rpm包了。
1、rpm功用
打包,安裝,卸載,升級,查詢,校驗
2、rpm分包機制
打包: rpmbuild specs文件
分包機制:上面說到rpmbuild可以根據自己需要只將自己需要的功能打包成rpm包,這就是rpm的分包機制。
例如:一個APP源碼包爲testapp-VERSION.tar.gz,這個源碼包中包含有這個APP提供的所有功能,但是我只需要他的主功能或者只需要這個app的開發模塊功能就OK。那就可以指定主功能打包成核心包testapp-VERSION.rpm和開發模塊功能打包成支包testapp-devel-VERSION.rpm這樣兩個包。這樣的例子有很多。
3、rpm包的命名規則
name-VERSION-RELEASE.ARCH.rpm
name:包名
VERSION:版本號,指對應的源代碼版本號
1.0.0 主版本號,次版本號,發佈版本號
RELEASE:rpm的修訂次數,發佈版本。與VERSION對應的源代碼版本號無關
ARCH:rpm包所支持的硬件平臺。有x86_64,i386等
4、rpm包的獲取方式
a、系統光盤或鏡像中提供的程序包
b、Fedora-EPEL
c、程序項目的官方站點
d、搜索引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org
5、rpm命令
a、安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ...
常用命令選項:rpm -ivh package
-i or --install:安裝選項
-v:顯示安裝過程;-vv,-vvv 更詳細的安裝細節
-h:顯示安裝進度
--nodeps:忽略依賴關係安裝
--replacepkgs:重裝程序包
b、升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
兩個選項的區別:
-U:如果有舊版程序包,則升級;如果沒有,則安裝。
-F:如果有舊版程序包,則升級;如果沒有,不安裝。
*其他一起使用的選項還有-v,-h,--nodeps 與安裝時代表的意義相同
--oldpackage:降級,恢復舊版本
--force:會對其他程序產生影響時,強制升級
c、卸載
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts][--notriggers] [--test] PACKAGE_NAME ...
d、查詢
rpm {-q|--query} [select-options] [query-options]
查詢選擇:
-qa:查詢本機已經安裝的所有程序包
-qf filename:查詢文件由那個程序包安裝生成
-qc:查詢指定程序包安裝生成的配置文件
-qd:查詢指定程序包安裝生成的文檔
-qi:查詢指定程序的相關信息
-ql:查詢指定程序安裝生成的所有文件列表
-q --scripts:查詢程序相關的腳本
preinstall:安裝前腳本
postinstall:安裝後腳本
preuninstall:卸載前腳本
postuninstall:卸載後腳本
e、校驗
rpm {-V|--verify} [select-options] [verify-options]
導入祕鑰:
rpm --import /path/to/key_file
校驗:rpm -K /path/to/rpm_file
二、yum
yum全稱Yellow dog updater,yum用python開發寫成,是爲了提高rpm軟件包安裝性而開發的一種軟件包管理器。yum的宗旨是自動化的升級,安裝,移除rpm包收集rpm包的相關信息,檢測並幫助用戶自動解決rpm包依賴性。yum的理念是使用一箇中心倉庫管理程序包之間的關係,並根據計算的軟件依賴關係進行相關的升級,安裝,刪除等操作,減少用戶頭痛的依賴問題。
yum的軟件倉庫,可以是http或ftp站點,也可以是本地軟件池。但必須包含rpm的header信息,header包含了rpm的各種信息,包括描述,功能,提供的文件,依賴性等。正是因此,yum才能自動的完成許多工作。
軟件倉庫分類
ftp://hostname/path/to/repo
http://hostname/path/to/repo
file:///path/to/repo
yum配置文件
/etc/yum.conf
定義全局配置:對所有倉庫都適用
/etc/yum.repos.d/*.repo
一個文件通常用於一個或一組功能相近或相關的倉庫
yum命令
yum [options] [command] [package ...]
command:
安裝:install
卸載:remove,erase
升級:update
查詢:info
list all/installed/availiable
provides /path/to/file 查詢文件由那個包安裝生成
重新安裝:reinstall
降級:downgrade
清理緩存:clean packages/metadata/expire-cache/rpmdb/plugins/all
生成緩存:makecache
包組:
查詢列表:grouplist
查詢信息:groupinfo "grp_name"
安裝包組:groupinstall "grp_name"
卸載包組:groupmove "grp_name"
倉庫
查詢列表:repolist all/enabled/disabled
查詢信息:repoinfo all/enabled/disabled