在linux中的應用程序結構形式分爲三種:
1)源代碼形式
2)二進制形式
3)程序包形式
其中源代碼是最權威的,二進制形式通過了一系列的編譯、彙編、鏈接等等其餘操做獲得能夠執行的程序及其餘相關的文件,而程序包形式則是二進制形式進一步進行操做,使之能夠自動安裝程序包中的全部文件,固然在卸載的時候,也能夠一併刪除;
通常來講,咱們對於程序包形式的程序的操做比較經常使用。比較方便。node
有了程序包以後,咱們就須要程序包管理器來管理程序包,藉此來方便終端用戶的安裝、卸載、升級、安裝信息查詢及校驗等工做;linux
咱們在這隻說Redhat系列的linux的使用的管理器;用.rpm後綴名的軟件包;數據庫
rpm的命名規則
源代碼包:
name-VERSION.tar.gz(純源碼包)
name-VERSION.src.rpm(rpm封包的源代碼包)
VERSION: Major.Minor.Release
Major: 主版本號,一般只有程序進行了重大的功能改進纔會修改;
Minor:次版本號,一般在在某個主版本中的對某個特定的功能進行改進或添加新功能纔會修改
Release:發行版本號,通常修復bug或進行代碼優化都會更改;apache
如:apache-tomcat-7.0.63.tar.gz 二進制包: name-VERSION-[release].[os].arch.rpm VERSION: Major.Minor.Release [Release]:rpm封包的發行版本號 [os]:此程序包所可以支持的操做系統的版本;如:el7(RHEL7,CENTOS7),suse11,fedora21... arch:此程序包所依賴的硬件平臺類型; i386,x64(amd64),ppc,sparc,noarch,... 如:hping3-0.0.20051105-24.el7.x86_64.rpm 在製做rpm程序包時,一般其製做者會根據本身的理解將程序編譯後的結果分別放置於不一樣的rpm包中,用以實現對於該程序的不一樣需求;將此種封包方式,稱爲分包技術;一旦程序被分包,則程序包就被分爲兩類: 主程序包: name-VERSION-[release].[os].arch.rpm 子程序包(分支程序包): name-function-VERSION-[release].[os].arch.rpm function: devel:開發包; utils:工具包; libs:共享庫包; manual:離線幫助文檔包; ...
rpm命令行工具:
功能:
1.將編譯好的應用程序的各個文件打包成一個或多個程序包
2.支持rpm程序包的安裝、卸載、升級、降級、查詢、校驗及程序包信息數據庫管理功能;tomcat
rpm程序包文件的組成: 1.被封包的程序文件; 2.文件清單 3.程序在安裝或卸載是所須要運行的腳本,共有四種: preinstall:在正式安裝操做開始以前所須要運行的腳本,標識爲"%pre" postinstall:在安裝完成以後所須要運行的腳本,標識爲"%post" preuninstall:在正式的卸載操做開始以前所須要運行的腳本,標識爲"%prsun" postuninstall:在卸載完成以後所須要運行的腳本,標識爲"%postun" 注意:在一個rpm程序包中,並不必定同時有哦這四類腳本,也能夠沒有這些腳本; rpm數據信息的數據庫(公共): 目錄:/var/lib/rpm rpm程序包的獲取途徑: 1.系統的發行版光盤; 2.官方的文件服務器或者鏡像站點; 阿里雲鏡像 網易鏡像 搜狐鏡像 mirror.souhu.com ... 3.某個應用程序項目的官方站點; 4.第三方自組織製做的rpm程序包站點; Fedora EPEL:Extra Package for Enterprise Linux; 紅帽官方的社區組織,一般來講,在上述的鏡像站點中也會包括EPEL鏡像 5.某些專用你的搜索引擎: http://pkgs.org http://rpmfind.net http://rpm.pbone.net 6.本身動手製做rpm程序包
rpm命令行工具:
rpm - Red Hat 包管理器服務器
OPSIS
QUERYING AND VERIFYING PACKAGES:
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
rpm --import PUBKEY ...
rpm {-K|--checksig} [--nosignature] [--nodigest]
PACKAGE_FILE ...ide
INSTALLING, UPGRADING, AND REMOVING PACKAGES:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...工具
安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ...
install-options:
-h,--hash:用「#」表示安裝進度條;
--force:強制安裝進行,不管是否有錯誤發生;
--test:並不是真正安裝軟件包,僅僅是測試安裝過程是否可以正常進行;dry run
--nodeps:忽略由於依賴關係致使的安裝錯誤;不建議使用;
--replacefiles:在安裝程序包時,程序包中的文件會直接替換已經存在的文件;若不使用該選項,在安裝程序包中的文件以前,先將原有的同名文件名更名爲filename.rpmsave
--replacepkgs:無需卸載已安裝程序包而從新安裝之;
--noscripts:在安裝前及安裝後均不容許安裝相關腳本;
--nopre:不運行安裝前腳本
--nopost:不運行安裝後腳本
--nosignature:跳過校驗程序包來源的合法性;
--nodigest:跳過校驗程序包完整性;
--oldpackage:降級安裝,指定的安裝的程序包的版本低於當前已經安裝的程序包的版本;
升級:
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...post
相比較而言:兩個選項有下列特色: -U:既能夠對已經安裝的程序包進行升級或降級安裝,又能夠在未安裝該程序包時進行全新安裝;能夠包括部分-i安裝模式的功能; -F:僅可以對已經安裝的程序進行升級或降級; -h,--hash:用「#」表示安裝進度條; --force:強制安裝進行,不管是否有錯誤發生; --test:並不是真正安裝軟件包,僅僅是測試安裝過程是否可以正常進行;dry run --nodeps:忽略由於依賴關係致使的安裝錯誤;不建議使用; --replacefiles:在安裝程序包時,程序包中的文件會直接替換已經存在的文件;若不使用該選項,在安裝程序包中的文件以前,先將原有的同名文件名更名爲filename.rpmsave --replacepkgs:無需卸載已安裝程序包而從新安裝之; --noscripts:在安裝前及安裝後均不容許安裝相關腳本; --nopre:不運行安裝前腳本 --nopost:不運行安裝後腳本 --nosignature:跳過校驗程序包來源的合法性; --nodigest:跳過校驗程序包完整性; --oldpackage:降級安裝,指定的安裝的程序包的版本低於當前已經安裝的程序包的版本; 注意: 1.強烈建議,不要使用此方法對內核進行升級操做; 2.升級安裝程序包可能會帶來文件的變化,或引入爲指導bug或漏洞,所以,在實施升級操做以前,必需要進行可行性分析; 卸載: rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ... 注意:卸載程序包時,rpm命令的參數是程序名稱而非程序包名稱; --allmatches:卸載全部可以匹配指定名稱的程序包的各個版本; --nodeps:卸載時忽略依賴關係; --test:並不是真正卸載,而是卸載過程是否可以正常完成;dry run 查詢: rpm {-q|--query} [select-options] [query-options] select-options: PACKAGE_NAME:指定查詢的程序名稱,不是程序包名稱; -a,--all:查詢全部已安裝的程序包名稱; -f,--file FILE:查詢指定的文件是由那個程序包提供的; -p,--package PACKAGE_FILE:查詢還沒有安裝的程序包文件中的文件清單; --whatprovides CAPABILITY:查詢指定的CAPABILITY是由那個程序包提供的; --whatrequires CAPABILITY:查詢指定的CAPABILITY被那個程序包所依賴; query-options: --changelog:查詢程序包的歷次的版本變動記錄; -c,--configfiles:查詢指定的程序包中包含哪些配置文件; -d,--docfiles:查詢指定的程序包中有哪些文本文件; -i,--info:查詢指定程序包的相關屬性信息; -l,--list:列表顯示查詢結果; --provides:列出指定程序包所提供的全部的CAPABILITY; -R,--requires:列出指定程序包的依賴關係; --scripts:查詢程序包所攜帶的腳本的內容; 經常使用的選項組 -qa -qf | -qc | -qd | -ql PACKAGE_NAME -qpl | -qpc | -qpd | -qpl PACKAGE_FILE 校驗: rpm {-V|--verify} [select-options] [verify-options] 校驗狀態: S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTime differs P caPabilities differ
認證:
rpm --import /PATH/TO/SOMEFILE
導入指定的認證密鑰的路徑:測試
rpmkeys {-K | --checksig } PACKAGE_NAME.. 檢查指定的程序包的數字簽名信息;
數據庫管理:/var/lib/rpm--initdb 初始化數據庫--rebuilddb 從已安裝軟件包包頭重建數據庫反向列表