Linux基礎教程之Linux包管理:rpm/yum/編譯安裝
rpm:安裝,查詢,升級,校驗,卸載
Topic:
程序包
rpm管理
yum管理
程序包:
什么是程序包管理器:
將編譯好的應用程序的各個組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查詢等管理操作
程序包的組成清單:
文件清單
安裝或卸載時運行的腳本
數據庫(公共)
程序包的名稱和版本
依賴關系
功能說明
安裝生成的個文件的文件路徑及校驗信息
…
獲取程序包的途徑
(1) 系統發行版的光盤或官方的文件服務器(或鏡像站點)
(2) 項目的官方站點
(3) 第三方組織
a. EPEL
b. rpm包搜索引擎
(4) 自動動手制作rpm包
RPM管理:包括rpm包的安裝、查詢、升級、校驗、卸載
rpm包命名格式
name-version-release.arch.rpm
version: major.minor.release
release: rpm包的發行號
release os: 2.el7.i386.rpm
arch: 平臺。例如:i386, x86_64等
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安裝:-i, –install,在當前系統安裝一個新的rpm軟件包
升級:-U, –update, 檢查并升級指定的軟件包,如果系統沒有此軟件包則執行安裝命令
-F, –freshen,檢查并升級指定的軟件包,如果系統沒有此軟件包不執行安裝命令
卸載:-e, –erase,刪除指定的軟件包
查詢:-q, –query,查詢軟件包的相關信息
校驗:-V, –verify,安裝后校驗指定的軟件包
數據庫維護:–builddb, –initdb
安裝功能:
rpm {-i|–install} [install-options] PACKAGE_FILE…
常用選項:
rpm -ivh PACKAGE_FILE
-v:verbose,詳細信息
-vv:更詳細的輸出
[install-options]:
-h:hash marks,輸出進度條,每個#表示2%的進度
–test:測試安裝,并不是真正的安裝,檢查并報告依賴關系及沖突消息等。
–nodeps:忽略依賴關系,不建議使用
–replacepkgs:替代原來的包重新安裝
–nosigature:不檢查包簽名信息,不檢查包來源合法性
–nodigest:不檢查包完整性
升級功能:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE
rpm {-F|–freshen} [install-options] PACKAGE_FILE
注意:
(1) 不要對內核做升級操作,Linux支持多內核版本并存,因此,直接安裝新版本內核
(2) 如果某源程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的覆蓋文件,而是把新版本的配置文件重命名后提供
卸載命令:
rpm {-e|–erase} ] [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME….
–allmatch:卸載所有匹配指定名稱的程序包的各版本
–nodeps:卸載時忽略依賴關系
–test:測試卸載,并不執行真正的卸載命令
查詢功能:
rpm {-q|–query} [selection-options] [query-options] PACKAGE_NAME
[selection-options]
PACKAGE_NAME:查詢指定的程序包是否已經安裝
-a, –all:查詢所有已經安裝過的包
-f FILE:查詢指定文件由那個程序包安裝生成
-p, –package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作
–whatprovides CAPABILITY:查詢指定的CAPABILITY由那個程序包提供
–whatrequires CAPABILITY:查詢指定的CAPABILITY被那個包以來
[query-options]
–changelog:查詢rpm包的changelog
-l,–list PACKAGE_NAME:查詢安裝生成文件列表
-i,–info PACKAGE_NAME:程序包相關信息,版本號、大小、所屬的包組等
-c,–configfiles:查詢指定的程序包提供的配置文件
-d,–docfiles:查詢指定的程序包提供的文檔
–provides PACKAGE_NAME:列出指定的程序包提供的所有的CAPABILITY
-R,–requires PACKAGE_NAME:查詢指定的程序包的依賴關系
–scripts PACKAGE_NAME:查詢程序包自帶的scripts都有哪些信息
常用語法格式:
rpm -qi PACKAGE_NAME
rpm -qf PACKAGE_FILE
rpm -qc PACKAGE_NAME
rpm -ql PACKAGE_NAME
rpm -qd PACKAGE_NAME
rpm -qpl PACKAGE_FILE
rpm -qpi PACKAGE_FILE
rpm -qpc PACKAGE_FILE
校驗功能:
rpm {-V|–verify} [select-options] [verify-optoins]
S file Size differ
M Mode differs (including permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包來源合法性驗證和完整性驗證:
來源合法性驗證:
數字簽名:制作者提取加密程序包的特征碼,然后將自己的私鑰加到特征碼后面
完整性驗證:獲取并導入新人的包制作者的秘鑰
對于CentOS 7來說:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
驗證:
(1) 安裝此組織簽名的程序時,會自動執行驗證;
(2) 手動驗證:rpm -K PACKAGE_FILE
數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm
查詢操作:通過此處的數據庫進行
獲取幫助:
CentOS 6:man rmp
CentOS 7:man rpmdb
rpm {–initdb | –rebuilddb}
–initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作
–rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建
YUM管理:
什么是yum
yum的全稱是(Yellow Dog Modifier),是RHEL系列Linux發行版的包管理工具。主要幫助我們解決了安裝時包之間的依賴關系
yum repository:yum rempo
存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repodata)
文件服務器的類型:
nfs://
yum客戶端
配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repo.d/*.repo:為倉庫的指向提供配置
倉庫指向的定義:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository
enabled={1|0}
gpgcheck
gpgkey=url
enablegroup={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為碎金挑選
const=
默認為1000
yum命令的用法:
yum [options] [command] [package]
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* update-minimal [package1] [package2] […]
* check-update
upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* autoremove [package1] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
(maintained for legacy reasons only – use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* ?repository-packages ?<enabled-repoid> ?<install|remove|remove-or-reinstall|remove-or-distribu‐
tion-synchronization> [package2] […]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* ? ? ?history ? ? [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐
back|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-run‐
ning-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包
list
yum list [all | glob_exp1] [glob_ex2] […]
yum list availabel {available | installedupate} [glob_exp1] […]
安裝程序包:
yum install package1 [package2] […]
reinstall package1 [package2] […] 重新安裝
rpm的安裝包在安裝時可能會和其他程序要有依賴關系。
前端工具能自動解決:
yum:RHEL系列系統上rpm包管理器的前端工具
apt-get(apt-cache):Debian系統deb包管理器的前端工具
zypper:SUSE系統rpm包管理器的前端工具
-ivh:rpm包安裝
-Uvh:更新或安裝
-Fvh:
yum:
編譯:將程序源碼編譯后安裝