RPM 軟件包管理
1、rpm軟件包管理:
本章內容:
軟件運行環境
軟件包基礎
rpm包管理
yum管理
定制yum倉庫
編譯安裝
Linux程序包管理:
API:Application program interface (應用編程接口)
ABI:Application binary interface (應用二進制接口)
API:Application program interface
程序源代碼—->預處理—->編譯——->匯編——–>鏈接
靜態編譯 和 共享編譯
ABI:Application binary interface
windows 和 Linux 不兼容
Windows PE
Linux ELF
庫級別的虛擬化:
Linux:wine
Windows:cywin
2、包管理器:
二進制應用程序的組成部分:
二進制文件;
庫文件;
配置文件;
幫助文件;
程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
S.U.S.E:rpm文件,rpm包管理器
gentoo:ports文件
3、包命名:
使用rpm機制封裝的軟件包文件一般使用“軟件名-軟件版本-發布次數.硬件平臺類型.rpm”的文件名形式:
例如:bash-4.2.46-12.el7.x86_64.rpm
basesystem-10.0-7.el7.centos.noarch.rpm
其中硬件平臺通常為“i386 i586 i686 X86_64 或 noarch(不區分硬件平臺)”
4、包命名和工具:
主包:libasyncns-0.8-7.el7.x86_64.rpm
支包:libasyncns-devel-0.8-7.el7.i686.rpm
支包命名:function devel utils libs
rpm包之間可能存在依賴關系,甚至循環依賴;
解決依賴包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器的前端工具
zypper:suse上的rpm前端管理工具
dnf:Fedora 22+ rpm包管理器前端管理工具
5、庫文件:
查看二進制程序所依賴的庫文件:
ldd /PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件:
ldconfig
/sbin/ldconfig -p 顯示本機已經緩存的所有可用庫文件;
6、程序包管理器:
功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序文件,從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操作;
(1)程序包的組成清單(每個程序包都單獨實現);
文件清單
安裝或卸載時運行的腳本
(2)數據庫(公共)
程序包的名稱和版本
依賴關系
功能說明
安裝生成的各文件路徑及校驗碼信息
/var/lib/rpm:rpm包的數據庫文件存放路徑;
示例:
rpm包的數據庫文件
[root@centos7 rpm]# ll
total 70248
-rw-r–r–. 1 root root 4120576 ago 19 05:55 Basenames
-rw-r–r–. 1 root root 16384 ago 19 05:43 Conflictname
-rw-r–r–. 1 root root 311296 ago 23 06:59 __db.001
-rw-r–r–. 1 root root 90112 ago 23 06:59 __db.002
-rw-r–r–. 1 root root 1318912 ago 23 06:59 __db.003
-rw-r–r–. 1 root root 1130496 ago 19 05:55 Dirnames
-rw-r–r–. 1 root root 32768 ago 19 05:55 Group
-rw-r–r–. 1 root root 24576 ago 19 05:55 Installtid
-rw-r–r–. 1 root root 81920 ago 19 05:55 Name
-rw-r–r–. 1 root root 40960 ago 19 05:55 Obsoletename
-rw-r–r–. 1 root root 61956096 ago 19 05:55 Packages
-rw-r–r–. 1 root root 2154496 ago 19 05:55 Providename
-rw-r–r–. 1 root root 536576 ago 19 05:55 Requirename
-rw-r–r–. 1 root root 135168 ago 19 05:55 Sha1header
-rw-r–r–. 1 root root 81920 ago 19 05:55 Sigmd5
-rw-r–r–. 1 root root 8192 ago 19 05:55 Triggername
[root@centos7 rpm
7、獲取rpm程序包的途徑:
(1)系統發行版的光盤或官方的文件服務器(或鏡像站點):
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2)項目的官方站點
(3)第三方組織:
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
(4)自己制作rpm包:
8、rpm包管理:
centos系統上使用rpm命令管理程序包:
安裝、卸載、升級、查詢、校驗、數據庫維護等;
rpm [options] PACKAGE_FILE …
安裝: -i 在當前系統中安裝(install)一個新的rpm軟件包;
rpm -ivh PACKAGE_FILE……
-U:檢查并升級系統中的某個軟件包,若該軟件包原來未安裝,則等同于-i選項;
-e:卸載指定名稱的軟件包;
-F:檢查并更新系統中的某個軟件包,若該軟件包原來并未安裝,則放棄安裝;
–force 強制安裝某個軟件包,當需要替換現在已安裝的軟件包及文件、或者安裝一個比當前使用的軟件版本更舊的軟件時,可以使用此選項;
–nodeps在安裝、升級或卸載一個軟件包時,不檢查與其他軟件包的依賴關系;
-h:在安裝或升級軟件包的過程中,以“#”號顯示安裝進度;
-v:顯示軟件安裝過程中的詳細信息;
-vv:顯示軟件安裝過程中更詳細的信息;
-V:校驗安裝后的文件有沒有被篡改;
–test:測試安裝,但不真正執行安裝;
–nosignature:不檢查來源合法性;
–nodigest:不檢查包完整性;
–nosciptis:不執行程序包腳本片段;
%pre:安裝前腳本:–nopre
%post:安裝后腳本:–nopost
%preun:卸載前腳本:–nopreun
%postun:卸載后腳本:–nopostun
–oldpackage:降級程序包;
升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
-U:升級或安裝;
-F:升級;
rpm -Uvh PACKAGE_FILE
rpm -Fvh PACKAGE_FILE
注意:(1)不要對內核做升級操作;Linux支持多內核版本并存,因此直接安裝新版本內核;
(2)如果某源程序包的配置文件安裝后曾被修改,升級時,新版的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版的配置文件重命名(FILENAME.rpmnew)后提供;
卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
–allmatches:卸載所有匹配指定名稱的程序包的各版本;
–nodeps:忽略依賴關系;
–test:測試卸載,dry run模式;
rpm查詢:
rpm命令的查詢功能主要通過“-p”選項實現,主要針對當前系統中的已經安裝的軟件包;
rpm {-q|–query} [select-options] [query-options]
[select-options]
PACKAGE-NAME:查詢指定的程序包是否已經安裝,及其版本;
-qa:–all 查詢所有已經安裝過的rpm包;
-qf:file 查詢指定的文件是由哪個程序包安裝的;
-qi:info 查詢指定軟件包的名稱、版本、許可協議、用途描述等詳細信息;
-ql:list 顯示指定的軟件包在當前系統中安裝的所有目錄、文件列表;
-qc:configfile 顯示指定軟件包在當前系統中安裝的配置文件列表;
-qd:docfiles 顯示指定軟件包在當前系統中安裝的文檔文件列表;
使用“-qp”選項時,需要使用rpm包文件作為參數,主要查詢系統中未安裝的軟件包信息;
-qpi:查詢指定軟件包的名稱、版本、許可協議、用途描述等詳細信息;
-qpl:查詢指定的軟件包在當前系統中準備安裝的所有目錄、文件列表;
-qpc:查詢定軟件包在當前系統中準備安裝的配置文件列表;
-qpd:查詢指定軟件包在當前系統中準備安裝的文檔文件列表;
校驗rpm包:
包來源合法性驗證和完整性驗證:
來源合法性驗證:
完整性驗證:
獲取并導入信任的包制作者的秘鑰:
對于centos發行版來說導入公鑰的方法:
[root@centos7 ~]# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
驗證:
安裝此組織簽名的程序時,會自動執行驗證;
手動驗證:rpm -k PACKAGE_FILE
[root@centos7 Packages]# rpm -K zsh-5.0.2-7.el7.x86_64.rpm
zsh-5.0.2-7.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
rpm數據庫重建:
rpm 管理器數據庫路徑:/var/lib/rpm
獲取幫助:
centos6:man rpm
centos7:man rpmdb
rpm {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY] [–root DIRECTORY]
–initdb :初始化數據庫,當前無任何數據庫可初始創建一個新的,當前有時不執行任何操作;
–rebuilddb :重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;
rpm –initdb
rpm –rebuilddb
yum創建:
centos : yum dnf
yum repository : yum repo
存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定的目錄下:repodata):
文件服務器:
ftp://
http://
nfs://
file:///
yum客戶端:
配置文件:
/etc/yum.conf :yum主配置文件為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo :為倉庫的指向提供配置
yum倉庫指向的定義:
[repositoryID]
name=some name for this repository
baseurl=url://path/to/repository
enabled={1|0}
gpgcheck={1|0}
enabedgroups={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為隨機挑選;
cost=
默認為:1000
示例:
1 [base]
2 name=base
3 baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
4 file:///mnt
5 enabled=1
6 gpgcheck=1
7 gpgkey=http://10.1.0.1/cobbler/ks_mirror/7/
8
9
10 [fedora]
11 name=fedora
12 baseurl=http://10.1.0.1/fedora-epel/7/x86_64/
13 enabled=1
14 gpgcheak=0
15
yum命令的用法:
yum [options] [command][package…..]
yum-config-manager –disable “倉庫名” 禁用指定的倉庫
yum-config-manager –enable “倉庫名” 啟用指定的倉庫
示例:
[root@centos7 yum.repos.d]# yum-config-manager –disable base
[root@centos7 yum.repos.d]# yum-config-manager –enable base
顯示倉庫列表:
repolist [all|enable|disable]
[root@centos7 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror, langpacks
repo repo name status
base base 9.007
fedora fedora 0
repolist: 9.007
[root@centos7 yum.repos.d]#
顯示所有程序包:
list
示例:
[root@centos7 yum.repos.d]# yum list
yum安裝程序包:
install
reinstall 重新安裝;
示例:
升級程序包:
update
檢查可用升級:
check-update
卸載程序包:
remove
查看程序包information
info
查看指定的特性(可以是某文件)是由哪個程序包所提供;
provides
清理本地緩存:
clean
構建緩存:
makecache
搜索:
search string1 string2
以指定的關鍵字搜索程序包名及summary信息;
查看指定包所依賴的capabilities
deplist package1
查看yum事物歷史
history
安裝及升級本地程序包:
localinstall
localupdate
包租管理的相關命令:
groupinstall
groupupdate
grouplist
groupremove
groupinfo
編譯安裝:
解包、配置、編譯、安裝
第一步:configure腳本
選項:指定安裝位置、指定啟用的特性
–help:獲取其支持使用的選項
選項的分類:
安裝路徑設定:
–prefix=/path:指定默認安裝位置,默認為/usr/local
–sysconfdir=/path:配置文件的安裝路徑
system types :支持交叉編譯;
optional features :可選特性
–disable-feature
–enable-feature[=arg]
optional packages:可選包
–with-packsge[=arg]依賴包
–without-package禁用依賴關系
第二部:make
第三部:make install
安裝后的配置:
(1)二進制程序目錄導入至path環境變量中
編輯文件/etc/profile.d/NAME.sh
export PATH=/path/to/bin:$PATH
(2)導入庫文件路徑
編輯/etc/ld.so.conf.d/name.conf
添加新的庫文件所在目錄至此文件中
讓系統重新生成緩存
ldconfig -v
(3)導入頭文件
基于鏈接的方式實現:
in -sv
(4)導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH
原創文章,作者:zhengyibo,如若轉載,請注明出處:http://www.www58058.com/42404