程序rpm包管理的示例分析,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
濠江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),濠江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為濠江1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的濠江做網(wǎng)站的公司定做!程序是什么?指令+數(shù)據(jù)也好,算法+數(shù)據(jù)結(jié)構(gòu)也罷。它的存在形式有兩種:
1.源代碼:包含了整個(gè)應(yīng)用程序的編程語(yǔ)言的所有代碼的文本文件
2.二進(jìn)制:將源代碼經(jīng)過(guò)一系列轉(zhuǎn)換之后得到的直接執(zhí)行的文件
其中,使用源代碼安裝的過(guò)程如下:
預(yù)處理(用到預(yù)處理器) --> 編譯(編譯器) --> 字節(jié)碼Bitcode 進(jìn)行匯編(匯編器) --> systemcall直接運(yùn)行;libcall需要鏈接(鏈接器);最終得到可執(zhí)行的二進(jìn)制程序文件。
匯編時(shí),不一樣的硬件往往不能兼容互通。因此誕生了一個(gè)國(guó)際化標(biāo)準(zhǔn):
POSIX:Portable Operating System 可移植操作系統(tǒng)。至于IX是向unix致敬一下下
最終二進(jìn)制文件到底能不能執(zhí)行,取決于計(jì)算機(jī)的ABI接口。在不同OS上有著明顯的差異,類(lèi)unix系統(tǒng)上,ABI往往是ELF格式,如果是Windows系列 ;一般是exe或者msi格式.
我們?cè)賮?lái)回顧一下編程語(yǔ)言的分類(lèi)
應(yīng)用級(jí)編程語(yǔ)言:
Java(做應(yīng)用程序很強(qiáng),做系統(tǒng)菜雞)
hadoop2-大數(shù)據(jù)處理平臺(tái),hbase-數(shù)據(jù)庫(kù),ELK-日志查詢(xún)和分析檢索系統(tǒng)
這些軟件運(yùn)行環(huán)境需要專(zhuān)有的一個(gè)環(huán)境叫:JVM
Python(離底層硬件距離太遠(yuǎn),剛開(kāi)始太消耗系統(tǒng)資源。現(xiàn)在來(lái)說(shuō),消耗已經(jīng)可以忽略了 )
Openstack--云棧,saltstack--自動(dòng)化運(yùn)維管理工具 運(yùn)行環(huán)境:PVM
perl、ruby(日本流行,開(kāi)發(fā)很多曾經(jīng)的經(jīng)典游戲。)
PHP、go
而JVM PVM 和其他應(yīng)用級(jí)語(yǔ)言所需要的解釋器,都是由C語(yǔ)言開(kāi)發(fā)的;
系統(tǒng)級(jí)編程語(yǔ)言:
C/C++
Linux、Unix的內(nèi)核編程語(yǔ)言
編譯開(kāi)發(fā)環(huán)境:預(yù)處理器、編譯器、頭文件、開(kāi)發(fā)庫(kù)文件(能夠讓編譯庫(kù)運(yùn)行的庫(kù))
(而像Java或者Python等應(yīng)用級(jí)語(yǔ)言的開(kāi)發(fā)環(huán)境:預(yù)處理器、編譯器、開(kāi)發(fā)庫(kù)文件;)
通常情況下,源代碼文件有多個(gè),這些文件之間存在著一定的關(guān)聯(lián)關(guān)系;我們稱(chēng)之為依賴(lài)關(guān)系;
軟件項(xiàng)目構(gòu)建工具:
C/C++:make
Java:maven
Python:buildout
盡管有了這些構(gòu)建工具,編譯源代碼還是十分困難,因此有一些人把常用的代碼打包封裝成程序包,發(fā)布開(kāi)源社區(qū),方便使用
程序包的管理器:
不同的linux發(fā)行版本,有著不同的程序包管理器
Debian:dpt-Debian Package Toolkits。所有軟件包封裝成.deb后綴名的包文件,命令行工具 dpkg
Redhat:rpm-Redhat Package Manager ,rpm工具,.rpm后綴名
rpm稱(chēng)為linux的程序包管理器的行業(yè)標(biāo)準(zhǔn)
開(kāi)始使用的是perl語(yǔ)言編寫(xiě),后來(lái)用C語(yǔ)言重寫(xiě)了rpm,公布后改名為rpm is package manager。
Slackware(S.u.S.e):用的是rpm,但是對(duì)rpm進(jìn)行了修改,以至于得到Redhat認(rèn)可
Gentoo:從內(nèi)核開(kāi)始,可以供用戶(hù)任意選擇挑選軟件;
采用的包管理器 : FreeBSD 的 portage的程序包管理機(jī)制,emerge工具
Archlinux:pacman
以CentOS為例,介紹下rpm程序包管理器的相關(guān)內(nèi)容:
1.程序包的命名規(guī)則:
源代碼包:software_name-VERSION.tar.gz
VERSION:major.minor.release
major:主版本號(hào),通常代表重大功能改進(jìn)的版本分支;
minor:次版本號(hào),代表在某個(gè)版本的分支中的某個(gè)功能發(fā)生變化;
release:發(fā)行版本號(hào),修復(fù)了某些BUG或者對(duì)某段代碼進(jìn)行了優(yōu)化;
rpm程序包:
源代碼包:software_name-VERSION.src.rpm
二進(jìn)制文件包:
software_name-VERSION-[release].[os].arch.rpm
VERSION:major.minor.release
[release]:rpm包的發(fā)行版本號(hào)
[os]:軟件所支持的操作系統(tǒng)版本信息,el6、el7、suse11、fedora22...
arch:硬件架構(gòu)類(lèi)型:i386 i686 x64(amd64) ppc sparc noarch...
例如 gcc-4.8.5-4.el7.x86_64.rpm
在制作rpm程序包的時(shí)候,通常其制作者會(huì)采用分包技術(shù)來(lái)構(gòu)建rpm程序包:根據(jù)程序的不同功能,構(gòu)建多個(gè)程序包;被分包的一般分為兩類(lèi)
1.主程序包:
software_name-VERSION-[release].[os].arch.rpm
2.附屬功能包:
software_name-function-VERSION-[release].[os].arch.rpm
一般來(lái)講,主程序包和附屬功能包具有相同版本號(hào) 發(fā)行版本號(hào) 操作系統(tǒng)要求和硬件架構(gòu)類(lèi)型
所以 主程序包往往被所有的附屬程序包所依賴(lài);依賴(lài)關(guān)系:A --> B -->C D --> A 構(gòu)成一個(gè)依賴(lài)黑洞 因此rpm存在著諸多'不與人為善'的弊端
獲取程序包的途徑:
1.系統(tǒng)發(fā)行版的光盤(pán),或鏡像
2.官方的文件服務(wù)器或者鏡像站點(diǎn):
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
http://mirrors.tuna.tsinghua.edu.cn
http://mirrors.hust.edu.cn
...
3.某項(xiàng)目的官方站點(diǎn) 例如apache
4.第三方組織制作的rpm程序包站點(diǎn)
Fedora EPEL:紅帽官方的社區(qū)組織,在鏡像站點(diǎn)中也包含EPEL鏡像
搜索引擎:
http://pkgs.org 基本可以搜索到所有
http://rpmfind.net 法國(guó)的一個(gè)站點(diǎn)
http://rpm.pbone.net
5.自己制作 咯
建議:在獲得程序包之后實(shí)施校驗(yàn),完整性檢查:
1.來(lái)源合法性
通過(guò)程序提供者的數(shù)字簽名加密的數(shù)據(jù),我們可以通過(guò)其公鑰進(jìn)行解密驗(yàn)證;
2.程序包完整性
sha-1校驗(yàn)碼
rpm命令行工具:
安裝 卸載 升級(jí)(降級(jí)) 查詢(xún) 文件校驗(yàn)
【通用選項(xiàng)】:
-v --verbose:顯示安裝歷程詳情,僅僅顯示安裝軟件名
-vv 顯示非常詳細(xì)的操作信息
安裝:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
[install-options]
-h --hash 用50個(gè)“#”來(lái)表示安裝進(jìn)度
--test: 并不是真正的安軟件包,僅僅是測(cè)試是否在安裝時(shí)能夠正常完成,dry run
--nodeps : 忽略因?yàn)橐蕾?lài)關(guān)系導(dǎo)致的安裝錯(cuò)誤,不建議使用
--replacefiles 安裝軟件包時(shí),軟件包中的文件會(huì)直接將原來(lái)安裝的文件替換
--replacepkgs 不卸載軟件包 而是重新裝一遍
--noscripts 不運(yùn)行任何腳本
--nopre
--nopost
--nosignature 不考慮軟件包的來(lái)源是否合法
--nodigest 不考慮軟件包是否完整
升級(jí):
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
可以升級(jí)也可以全新安裝
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
僅僅是對(duì)已經(jīng)安裝的低版本的程序包進(jìn)行升級(jí)安裝
常用選項(xiàng)與安裝相同
特殊的選項(xiàng):
--oldpackage 降級(jí)安裝
--force 強(qiáng)制升級(jí)
注意:
1.強(qiáng)烈建議:不要對(duì)內(nèi)核進(jìn)行升級(jí)操作;linux支持多內(nèi)核
2.升級(jí)后帶來(lái)文件的變化,系統(tǒng)默認(rèn)不會(huì)直接更改之前的配置文件,新程序包的配置文件會(huì)被重命名,通常是:FILENAME.rpmnew
卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
--allmatches:卸載所有匹配指定名稱(chēng)的程序包的各個(gè)版本
--nodeps:忽略依賴(lài)關(guān)系
--test:測(cè)試卸載
--nopreun
--nopostun
查詢(xún):
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a,--all:查詢(xún)所有已安裝的程序包名
-f,--file FILE 查找指定的文件是由哪個(gè)程序包提供的
-p,--package PACKAGE_FILE : 對(duì)還沒(méi)安裝的程序包文件中執(zhí)行查詢(xún)操作
--whatprovided CAPABILITY 查詢(xún)指定的 CAPABILITY是由哪個(gè)程序包提供的
--whatrequires CAPABILITY
[query-options]
-c,--configfiles: 查看相關(guān)配置文件
-i,--info 查詢(xún)程序包相關(guān)信息,包括版本號(hào),發(fā)行號(hào),等等
-l,--list 列表顯示安裝程序包會(huì)生成哪些文件
--providers: 列出指定程序包提供的所有的 CAPABILITY;
-R,--requires 查詢(xún)指定的程序包的依賴(lài)關(guān)系
--scripts: 查詢(xún)程序包的腳本
校驗(yàn):
rpm {-V|--verify} [select-options] [verify-options]
[select-options] 與查詢(xún)的[select-options]相同
認(rèn)證:
--import PUBKEY ...導(dǎo)入相應(yīng)的/PATH/TO/KEY_FILE
{-K|--checksig} [--nosignature] [--nodigest] PACKAGE_FILE ...
手動(dòng)測(cè)試 驗(yàn)證軟件包的合法性
數(shù)據(jù)庫(kù)管理:
數(shù)據(jù)庫(kù)的初始化和重建:/var/lib/rpm
rpm {--initdb|--rebuilddb}
[--dbpath DIRECTORY]
看完上述內(nèi)容,你們掌握程序rpm包管理的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前題目:程序rpm包管理的示例分析-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://bm7419.com/article12/dssedc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、自適應(yīng)網(wǎng)站、云服務(wù)器、App開(kāi)發(fā)、品牌網(wǎng)站制作、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容