程序rpm包管理的示例分析-創(chuàng)新互聯(lián)

程序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)資源?,F(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://www.muchs.cn/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)

小程序開(kāi)發(fā)