程序包管理node
Linux系統下有一系列系統管理程序包的工具。這些工具能夠對程序包進行安裝,升級,卸載,校驗,查詢等等操做;來更方便咱們在Linux下對程序包的管理,經常使用的就屬rpm和yum了,下面就詳細介紹下者兩種工具。固然,除了這兩種,還有deb也是使用普遍的一種工具。如今,就先說說rpm吧。python
1、rpm緩存
rpm是redhat公司牽頭開發的一款包管理工具,全稱redhat package manager。rpm包是將程序源碼用rpmbuild命令加工打包成的,rpmbuild能夠根據本身的須要只將本身須要的功能打包成rpm包。節省用源碼安裝方式每次都要編譯的過程,rpm包裏包含可執行的二進制文件。而後,利用rpm命令就能夠安裝,卸載管理這個打好的rpm包了。app
1、rpm功用ide
打包,安裝,卸載,升級,查詢,校驗工具
2、rpm分包機制post
打包: rpmbuild specs文件ui
分包機制:上面說到rpmbuild能夠根據本身須要只將本身須要的功能打包成rpm包,這就是rpm的分包機制。搜索引擎
例如:一個APP源碼包爲testapp-VERSION.tar.gz,這個源碼包中包含有這個APP提供的全部功能,可是我只須要他的主功能或者只須要這個app的開發模塊功能就OK。那就能夠指定主功能打包成核心包testapp-VERSION.rpm和開發模塊功能打包成支包testapp-devel-VERSION.rpm這樣兩個包。這樣的例子有不少。spa
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
2、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