linux的程序包管理

隨便寫寫,大佬勿噴

linux的程序包管理

 

? ? ? ? ??? ? ? ? ??API: 兼容,意味開發庫兼容,因此,源代碼可跨平臺
? ? ? ? ??? ? ? ? ??ABI: 兼容,編譯后的程序可以跨平臺;
? ? ? ? ??? ? ? ? ??? ? ? ? ??庫:可執行程序,本身不能作為程序執行入口,但可以被調用編譯好的二進制格式

程序源代碼:預編譯,編譯,匯編,鏈接
? ? ? ? ??靜態.a
? ? ? ? ??動態:.so(shared object)

注意: 1OS平臺:應用程序必須為特定平臺所支持的版本

—————————————————————————————————————————–
軟件包的組成部分

二進制應用程序的組成部分
? ? ? ? ??二進制程序: /bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
? ? ? ? ??庫文件: /lib,/usr/lib,/lib64,/usr/lib64,/usr/local/lib,/usr/local/lib64,
? ? ? ? ??配置文件 /etc
? ? ? ? ??幫助文件 man文件,info文件,README,INSTALL,Changelog

 

總結
? ? ? ? ??二進制程序:bin,sbin
? ? ? ? ??庫:lib
? ? ? ? ??頭文件:include
? ? ? ? ??幫助文件:man
? ? ? ? ??配置文件:etc/conf

—————————————————————————————————————————–程序包管理器:
? ? ? ? ??debian: deb文件,dpkg包管理器
? ? ? ? ??redhat: rpm文件,rpm包管理器
? ? ? ? ??rpm:Redhat Package Manager
? ? ? ? ??RPM Package Manager

應用程序管理器:
? ? ? ? ??1數據庫
? ? ? ? ??軟件名和版本
? ? ? ? ??安裝生成的各文件路徑及校驗碼
? ? ? ? ??依賴關系
? ? ? ? ??提供功能性說明
? ? ? ? ??2提供程序組成格式
? ? ? ? ??文件清單
? ? ? ? ??安裝卸載時運行的腳本

依賴關系:x –> y
? ? ? ? ??? ? ? ? ??循環依賴
? ? ? ? ??? ? ? ? ??版本依賴

包管理器的基本功能
? ? ? ? ??打包
? ? ? ? ??安裝
? ? ? ? ??查詢
? ? ? ? ??升級
? ? ? ? ??卸載
? ? ? ? ??校驗
? ? ? ? ??數據庫管理
? ? ? ? ??依賴關系 X,Y,M,N,L,I,K

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

總結:應用的安裝方式
? ? ? ? ??使用包管理器:便捷,易用
? ? ? ? ??包管理器的前端工具
? ? ? ? ??源代碼編譯:
? ? ? ? ??簡單打包的二進制格式:
—————————————————————————————————————————–
庫文件
查看二進制程序所依賴的庫文件
? ? ? ? ??idd/PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件
? ? ? ? ? ?ldconfig 加載庫文件
? ? ? ? ??/sbin/ldconfig -p 顯示本機已經緩存的所有可用庫文件名及文件路徑
映射關系
? ? ? ? ??配置文件 /etc/ld.so.conf /etc/ld/so/conf.d/*.conf
? ? ? ? ??緩存文件 /etc/ld.so.cache


rpm包命名格式:
? ? ? ? ??源程序:name-version.tar.{gz|bz2|xz}
? ? ? ? ??version: major,minor,release
? ? ? ? ??rpm包: name-varsion-release.arch.rpm
? ? ? ? ??release:通常包含rpm的制作發行號,還包含適用的OS
OS平臺
? ? ? ? ??bash-4.3.2-2.e16.x86_64.rpm
? ? ? ? ??e16: redhat enterprise linux 6
? ? ? ? ??e15:CentOS5
? ? ? ? ??CentOS6
? ? ? ? ??suse11

arch:
? ? ? ? ??x86_64
? ? ? ? ??i386,i586,i686
? ? ? ? ??ppc
? ? ? ? ??noarch

比如:一個源碼,有10個功能
大多數用戶只用其6個功能,余下的4個呢
分包:把一個大的程序打包制作成多個包
主包: bash-4.3.2-2.e16.x86_64.rpm
子包 bash-4.3.2-2.e16.x86_64.rpm1
bash-hello-4.3.0-2.e16.x86_64.rpm

DNS: bind,bind-devel,bind-libs,bind-utils

來源合法性驗證:
源程序;通過md5或sha1校驗碼驗證
rpm包,發行商提供的合法性是可信的
驗證包完整性:校驗碼
驗證來源合法:公鑰

 

注意:
1,發行商,發行光盤中的包,需要升級時,官方釋放出升級包;

—————————————————————————————————————————–
rpm包管理:安裝
語法
#rpm -i /run/media/root/CentOS 7 x86_64
參數
? ? ? ? ??-v:
? ? ? ? ??-vv:
? ? ? ? ??-vvv:
? ? ? ? ??-h:hash 以#的個數顯示安裝進度.一個#表示2%的進度
? ? ? ? ??-test: 僅測試;不真正執行安裝過程
? ? ? ? ??–nodeps 如果存在依賴,解決依賴關系,忽略依賴關系:
? ? ? ? ??–noscripts 不執行程序包腳本
? ? ? ? ??-ivh –replacepkgs 重新安裝:
原來的配置文件不會被覆蓋,新安裝的配置文件將會重命名為以.rpmnew為后綴的文件

rpm包管理:檢查來源合法性和軟件包完整性
? ? ? ? ??包完整性;通過單向加密機制(md5|sha1)
? ? ? ? ??來源合法性:通過公鑰加密機制(RSA)
? ? ? ? ??命令:gpg,pgp
? ? ? ? ??導入制作者的公鑰,ContOS發行版的公鑰在iso文件中
? ? ? ? ??導入命令 rpm –import /path/to/gpg-key-file
? ? ? ? ??檢查 ? ? ? ? ??rpm -K /path/to/package_file
? ? ? ? ?? ? ? ? ??? ? ? ? ???–nosignature:不檢查來源合法性
? ? ? ? ??? ? ? ? ??? ? ? ? ??–nodigest: 不檢查包完整性

查詢包相關的腳本
? ? ? ? ??rpm -q –scripts package_name
腳本有四類:
? ? ? ? ??–nopre %pre(preinstall):安裝前腳t6
? ? ? ? ??–nopost %post(postinstall)安裝后腳本
? ? ? ? ??–nopreun %preun(preuninstall):卸載前腳本
? ? ? ? ??–nopostun %postun(postuninstall):卸載后腳本

rpm包管理:卸載
? ? ? ? ??語法
? ? ? ? ??rpm -e , –erase
? ? ? ? ??rpm -e , package_name
注:如果卸載被其他程序所依賴的包
? ? ? ? ??? ? ? ? ??1把依賴著一同卸載
? ? ? ? ??? ? ? ? ??2忽略依賴關系
? ? ? ? ??? ? ? ? ??–nodeps
? ? ? ? ??? ? ? ? ??3不再卸載
rpm包管理:查詢
? ? ??語法
? ? ? ? ??rpm -q
參數
? ? ? ? ??rpm -q package_name 查詢某單個包是否安裝
? ? ? ? ??rpm -qa 查詢所有已經安裝的包
? ? ? ? ??? ? ? ? ??例如:常用rpm -qa |grep “httpd”
? ? ? ? ??rpm -qi package_name 查詢包的描述信息
? ? ? ? ??rpm -ql package_name 查詢包安裝之后在當前系統生成的文件列表
? ? ? ? ??rpm -qf package_name 查詢某文件是哪個包安裝生成的
? ? ? ? ??rpm -qd package_name 查詢包安裝后生成的幫助文檔
? ? ? ? ??rpm -qc package_name 查詢包安裝后生成的配置文件
? ? ? ? ??rpm -q –whatrequires 查詢由哪個包所提供
? ? ? ? ??rpm -q –whatprovides 查詢由哪個包所依賴
? ? ? ? ??? ? ? ? ??–scripts 程序包自帶的腳本
? ? ? ? ??? ? ? ? ??–provides 列出指定程序包所提供的CAPABILITY
? ? ? ? ??-R 查詢指定的程序包所依賴的CAPABILITY

查詢尚未安裝的rpm包文件的相關信息:
? ? ? ? ??查詢安裝后會生成的文件列表:
? ? ? ? ??rpm -qpl /path/to/package_file
? ? ? ? ??查詢其簡單描述信息
? ? ? ? ??rpm -qpi /path/to/package_file

rpm包之升級:
? ? ? ? ??rpm -U: 安裝有舊版程序包,則升級,如果不存在舊版程序包,則安裝
? ? ? ? ??rpm -F:安裝有舊版程序包,則升級,如果不存在舊版程序包,不執行升級操作
? ? ? ? ??rpm {-Uvh| -Fvh} /path/to/package_file
? ? ? ? ??? ? ? ? ??–oldpackage 降級
? ? ? ? ??? ? ? ? ??–nodeps 忽略依賴關系
? ? ? ? ??? ? ? ? ??–force 強行安裝
①注意:不要對內核執行升級操作
多版本內核可并存,因此,建議執行安裝操作;
②如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件
并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名
(filename.rpmnew)后保留
rpm包管理:校驗
? ? ? ? ??檢查包安裝后生成的文件是否被修改過:
? ? ? ? ??rpm -V package_name

rpm包管理:數據庫重建
? ? ? ? ??數據庫: /var/lib/rpm/

重建:
rpm –initdb:初始化
如果事先不存在一個數據庫,則新建之;
rpm –rebuilddb;重建
直接重建數據庫,會覆蓋原有的庫

常用組合
-ivh,-e.-qi,qf,qp,ql,q –scripts

 

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96635

(0)
簡單不簡單簡單不簡單
上一篇 2018-04-20
下一篇 2018-04-20

相關推薦

  • DNS服務及相關實驗

    DNS(Domain Name Server,域名服務器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的服務器。

    2018-06-02
  • 使用until和while分別實現

    使用until和while分別實現192.168.0.0/24
    網段內,地址是否能夠ping通,弱ping通則輸出”success!”,若ping不通則輸出”fail!”

    Linux筆記 2018-06-15
  • sed數據流編輯器

    sed(Stream Editor)行編輯器 基礎用法

    2018-04-12
  • Linux系統原理淺談

    CPU   CPU和各個存儲器   寄存器:接近于CPU的工作頻率,是CPU的本地存儲器,位于運算器和控制器中,在進程的切換時,寄存器會被清空 一級緩存:比寄存器稍慢,頻率同樣接近于CPU,只能用于緩存數據,不能像寄存器一樣修改數據,各個核心都有自己的私有一級緩存,進程切換時不被清空 二級緩存:比一級緩存慢,多個核心都有自己私有的二級緩存…

    Linux筆記 2018-04-01
  • 權限和正則表達式

    實操為主
    week4

    Linux筆記 2018-07-15
  • Docker容器技術之Docker Image

    鏡像是Docker容器的基石,容器是鏡像的運行實例,有了鏡像才能啟動容器。

    2018-08-02
欧美性久久久久