軟件包管理

軟件運(yùn)行和編譯

  • 鏈接主要作用是把各個(gè)模塊之間相互引用的部分處理好,使得各個(gè)模塊之間能夠正確地銜接,分為靜態(tài)鏈接和動(dòng)態(tài)鏈接
1.png

靜態(tài) 鏈接

  • 把程序?qū)?yīng)的依賴(lài)庫(kù)復(fù)制一份到包
  • libxxx.a
  • 嵌入程序包
  • 升級(jí)難,需重新編譯
  • 占用較多空間,遷移容易

動(dòng)態(tài)

  • 只把依賴(lài)加做一個(gè)動(dòng)態(tài)鏈接
  • libxxx.so
  • 占用較 少 空間 ,升級(jí)方便

靜態(tài)和動(dòng)態(tài)鏈接(圖片)

包管理器

  • 二進(jìn)制應(yīng)用程序的組成部分:
  • 二進(jìn)制文件、庫(kù)文件、配置文件、幫助文件

程序包管理器

  • debian :deb 文件, dpkg 包管理器
  • redhat: rpm 文件, rpm
  • rpm: Redhat Package Manager
  • RPM Package Manager

包命名方式

  • 源代碼:name-VERSION.tar.gz|bz2|xz
  • VERSION: major.minor.release

rpm 包命名方式:

  • name-VERSION-release.arch.rpm
  • 例: :bash-4.2.46-19.el7.x86_64.rpm
  • VERSION: major.minor.release
  • release :release.OS

常見(jiàn)的arch:

  • x86: i386, i486, i586, i686
  • x86_64: x64, x86_64, amd64
  • powerpc: ppc
  • 跟平臺(tái)無(wú)關(guān):noarch

包:分類(lèi)和拆包

  • Application-VERSION-ARCH.rpm: 主包
  • Application-devel-VERSION-ARCH.rpm :開(kāi)發(fā)子包
  • Application-utils-VERSION-ARHC.rpm 其它子包
  • Application-libs-VERSION-ARHC.rpm 其它包

包之間:可能存在依賴(lài)關(guān)系,甚至循環(huán)依賴(lài)

解決依賴(lài)包管理工具:

  • yum :rpm 包管理器的前端工具
  • apt-get :deb 包管理器前端工具
  • zypper: suse 上的rpm
  • dnf: Fedora 18+ rpm 包管理器前端管理工具

查看二進(jìn)制程序所依賴(lài)的庫(kù)文件

  • ldd /PATH/TO/BINARY_FILE

管理及查看本機(jī)裝載的庫(kù)文件

  • ldconfig
  • /sbin/ldconfig -p: 顯示本機(jī)已經(jīng)緩存的所有可用庫(kù)文件名及文件路徑映射關(guān)系
  • 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
  • 緩存文件:/etc/ld.so.cache

包管理器

程序包管理器

  • 功能:將編譯好的應(yīng)用程序的各組成文件打包一個(gè)或幾個(gè)
    程序包文件,從而方便快捷地實(shí)現(xiàn)程序包的安裝、卸載、查詢、
    升級(jí)和校驗(yàn)等管理操作

1成 、包文件組成 ( 每個(gè)包獨(dú)有)

  • RPM 包內(nèi)的文件
  • RPM 的元數(shù)據(jù),如名稱(chēng),版本,依賴(lài)性,描述等
  • 安裝或卸載時(shí)運(yùn)行的腳本

2 、數(shù)據(jù)庫(kù)( 公共) :/var/lib/rpm

  • 程序包名稱(chēng)及版本
  • 依賴(lài)關(guān)系
  • 功能說(shuō)明
  • 包安裝后生成的各文件路徑及校驗(yàn)碼信息

程序包的來(lái)源

管理程序包的方式:

  • 使用包管理器:rpm
  • 使用前端工具:yum, dnf

獲取程序包的途徑:

rpm 包管理

  • CentOS 系統(tǒng)上使用rpm 命令管理程序包:

  • 安裝、卸載、升級(jí)、查詢、校驗(yàn)、數(shù)據(jù)庫(kù)維護(hù)

  • 安裝:

  • rpm {-i|--install} [install-options] PACKAGE_FILE…(包名) 安裝rpm包后面可以跟多個(gè)包

  • -v: verbose 顯示詳細(xì)信息

  •  [root@centos6 ~]# rpm -iv /media/Packages/ftp-0.17-54.el6.x86_64.rpm
     warning: /media/Packages/ftp-0.17-54.el6.x86_64.rpm: Header 
    V3 RSA/SHA1 Signature, key ID c105b9de: NOKEYPreparing packages for installation...
    ftp-0.17-54.el6
    
  • -vv:

  • -h: 以#顯示程序包管理執(zhí)行進(jìn)度

  • rpm -ivh PACKAGE_FILE ...

[install-options]

  • --test: 測(cè)試安裝,但不真正 執(zhí)行安裝,即dry run
  • --nodeps :忽略依賴(lài)關(guān)系
  • --replacepkgs 安裝時(shí)全部覆蓋
  • --replacefiles 安裝時(shí)如果有沖突的文件強(qiáng)制覆蓋
  • --nosignature: 不檢查來(lái)源合法性
  • --nodigest :不檢查包完整性
  • --noscripts :不執(zhí)行 程序包腳本
  • %pre: ; 安裝前腳本; --nopre
  • %post: ; 安裝后腳本; --nopost
  • %preun: ; 卸載前腳本; --nopreun
  • %postun: 卸載后腳本; --nopostun

rpm包升級(jí)

  • rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
  • upgrade 安裝有舊版程序包,則“升級(jí)”如果不存在舊版程序包,則“安裝”
  • rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
  • freshen :安裝有舊版程序包,則“升級(jí)”如果不存在舊版程序包,則不執(zhí)行升級(jí)操作
  • rpm -Uvh PACKAGE_FILE ...
  • rpm -Fvh PACKAGE_FILE ...
  • --oldpackage :
  • --force:

rpm查詢

rpm {-q|--query} [select-options] [query-options]

[select-options]

  • -a: 所有包
  • -f:查看指定的文件由哪個(gè)程序包安裝生成
  • -p rpmfile :針對(duì)尚未安裝的程序包文件做查詢操作
  • --whatprovides CAPABILITY :查詢指定的 CAPABILITY(功能)由哪個(gè)包所提供
  • --whatrequires CAPABILITY :查詢指定的 CAPABILITY (功能)被哪個(gè)包所依賴(lài)

- rpm2cpio 包文件|cpio –itv 預(yù)覽包內(nèi)文件

rpm2cpio 包文件|cpio –id “*.conf” ” 釋放包內(nèi)文件

[query-options]

  • --changelog :查詢r(jià)pm 包的changelog
  • -c: 查詢程序的配置文件
  • -d: 查詢程序的文檔
  • -i: information(詳細(xì)信息)
  • -l: 查看指定的程序包安裝后生成的所有文件
  • --scripts:程序包自帶的腳本
  • --provides: 列出指定程序包所提供的CAPABILITY(功能)
  • -R: 查詢指定的程序包所依賴(lài)的CAPABILITY(功能)

常用查詢用法:

  • -qi PACKAGE, 查看詳細(xì)
  • -qf FILE, 查詢依賴(lài)此文件的軟件包
  • -qc PACKAGE, 查詢軟件的配置文件
  • -ql PACKAGE, 查詢程序安裝后生成的文件
  • -qd PACKAGE,查詢程序的幫助文檔

卸載

  • rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

包校驗(yàn)

rpm {-V|--verify} [select-options] [verify-options]

  • S file Size differs 文件大小
  • M Mode differs (includes permissions and file type)權(quán)限類(lèi)型
  • 5 digest (formerly MD5 sum) differs md5 哈希值發(fā)生變化
  • D Device major/minor number mismatch 版本號(hào)發(fā)生變化
  • L readLink(2) path mismatch 路徑不匹配
  • U User ownership differs 所有者不同
  • G Group ownership differs 屬主不同
  • T mTime differs 時(shí)間發(fā)生變化
  • P capabilities differ 功能不同

包來(lái)源合法性驗(yàn)正及完整性驗(yàn)正

  • 來(lái)源合法性驗(yàn)正:RSA
  • 完整性驗(yàn)正:SHA256

公鑰加密

  • 對(duì)稱(chēng)加密:加密、解密使用同一密鑰
  • 非對(duì)稱(chēng)加密:密鑰是成對(duì)兒的
  • public key: 公鑰,公開(kāi)所有人
  • secret key: 私鑰, 不能公開(kāi)

導(dǎo)入所需要公鑰

  • rpm -K|checksig rpmfile 檢查包的完整性和簽名
  • rpm --import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  • CentOS 7 發(fā)行版光盤(pán)提供: RPM-GPG-KEY-CentOS-7
  • rpm -qa “gpg-pubkey*”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 各大Linux發(fā)行版軟件包管理參考(http://www.freeoa.net/osuport/botinstal...
    IRONYT閱讀 7,337評(píng)論 0 12
  • 1、軟件包基礎(chǔ):2、rpm包管理:3、移動(dòng)lib64庫(kù)文件修復(fù)過(guò)程:4、卸載內(nèi)核修復(fù)過(guò)程 1、軟件包基礎(chǔ) 軟件運(yùn)行...
    ALuckyLive閱讀 1,711評(píng)論 0 0
  • RPM/DPKG 兩大陣營(yíng)簡(jiǎn)介在 GNU/Linux( 以下簡(jiǎn)稱(chēng) Linux) 操作系統(tǒng)中,RPM 和 DPKG ...
    空語(yǔ)閱讀 1,461評(píng)論 0 4
  • 在 Linux(GNU/Linux)操作系統(tǒng)中,RPM 和 DPKG 為最常見(jiàn)的兩類(lèi)軟件包管理工具,他們分別應(yīng)用于...
    geekdeedy閱讀 657評(píng)論 0 0
  • 目錄:軟件運(yùn)行環(huán)境介紹包管理器rpm 包管理器的使用yum rpm包管理器前端工具的使用編譯安裝 一、軟件運(yùn)行環(huán)境...
    哈嘍別樣閱讀 601評(píng)論 0 0