Linux系統軟件包管理介紹

Linux發行版中附帶有成千上萬的可用包,其中包括了Internet工具、開發工具、辦公工具、游戲等,如果你沒有選擇完整安裝,則只會安裝這些包的“子集”,如何刪除不想要的包,如何安裝遺漏的包,學習LInux系統的軟件包管理將解決你的這些問題

本節索引

一、軟件包基礎

二、RPM包管理

三、YUM使用介紹

四、源代碼安裝

 

Linux發行版中附帶有成千上萬的可用包,其中包括了Internet工具、開發工具、辦公工具、游戲等,如果

你沒有選擇完整安裝,則只會安裝這些包的“子集”,如何安裝包,如何刪除不想要的包,如何安裝遺漏的

包,學習Linux系統的軟件包管理將解決你的這些問題。

timgVJH733NH

 

一、軟件包基礎

軟件運行環境:

程序員代碼–>預處理–>編譯–>匯編–>鏈接

靜態編譯:.a

動態編譯:.so

包管理器:

二進制應用程序的組成部分

二進制文件、庫文件、配置文件、幫助文件

包命名:

源代碼:name-VERSION.tar.gz|bz2|xz

包之間:可能存在依賴性關系,甚至循環依賴

 

解決依賴包管理工具:

yum:rpm包管理器的前端工具

apt-get:deb包管理器前端工具

zypper:suse上的rpm前端管理工具

dnf:Fedora 18+ rpm包管理器前端管理工具

 

程序包管理器:

debian:deb文件,dpkg包管理器

redhat:rpm文件,rpm包管理器

rpm:Redhat Package Manager

RPM Package Manager

 

二、RPM包管理

RPM代表Redhat Packge Manager(Redhat包管理器)

RPM現在已成為管理Redhat和UnitedLinux以及其他許多發行版本上的軟件的標準。

RPM本質上就是一個包,包含可以立即在特定機器體系結構上安裝和運行的Linux

軟件。最初加載到發行版本中的所有軟件都是通過一個RPM來安裝的。

RPM剖析:

RPM是文件包,它包括關于包及其功能和依賴關系(即在該包能夠運行之前必須安裝

其他哪些包)的信息。還包含包中的文件清單,指定這些文件必須加載到系統中的何

處,以及它們的初始權限如何。RPM還包含安裝前腳本,這是由包開發人員編寫的。

RPM其次還包含已編譯的二進制文件。最后,RPM包含了安裝后的腳本。

RPM數據庫:

/var/lib/rpm

包含了關于系統上已安裝的每個RPM信息。這個數據庫知道包之間的依賴關系,還知道每個包的

文檔和配置文件的位置。在加載和卸載包時,RPM使用這個數據庫來檢查依賴關系。用戶還可以

在這個數據庫查詢關于包的信息。

rpm

常用選項:

-i 安裝包

-h 輸出哈希(#)符號提供安裝進度更新

-v 顯示詳細過程

-ihv是常用配合選項;

-e 刪除已安裝的包

-V 驗證開關

-U 升級

-q 查詢

-qc 顯示包的配置文件

-qd 顯示包的文檔文件

-qi 顯示包描述

-ql 顯示包的文件列表

-qR 顯示包的依賴關系

 

安裝:

rpm{-i|–install}[install-option]PACKAGE_FILE

-h 輸出哈希(#)符號提供安裝進度更新

-v 顯示詳細過程

-ihv是常用配合選項;

[install-option]

–test 測試安裝,但不真正執行安裝

–nodeps 忽略依賴關系

–replacepkgs|replacefiles 覆蓋包安裝(可用來修復已安裝的安裝包)|覆蓋文件安裝

–nosignature 不檢查來源的合法性(不安全)

RPM-GPG-KEY-CentOS-6

–nodigest 不檢查包完整性 (不安全)

–noscripts 只裝包不執行程序包腳本

–nopre 不執行安裝前腳本

–nopost 不執行安裝后腳本

–nopreun 不執行卸載前腳本

–nopostun 不執行卸載后腳本

升級:

rpm{-U|–upgrade}[install-option]PACKAGE_FILE

rpm{-F|–freshen}[install-option]PACKAGE_FILE

upfrade 如果安裝有舊版程序包,則升級

如果不存在舊版程序包,則安裝

freshen 如果安裝有舊版程序包,則升級

如果不存在舊版程序包,則不執行升級操作

rpm -Uvh PACKAGE_FILE…

rpm -Fvh PACKAGE_FILE…

注:內核升級不建議使用以上兩種升級命令,建議使用-ivh重新安裝另一個內核,Linux

支持多內核版本共存。

–oldpackage 降級

–force 強制安裝(可用來修復已安裝的安裝包)

查詢:

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

注:包的名稱必須精確匹配,不允許使用通配符。然而,如果記不住包的完整名稱,您可以

使用 grep 工具來幫助找到它。可以使用 -qa 開關來查詢所有已安裝的包,并用 grep 來管道

輸出您能記住的信息。例如:rpm -qa | grep name

[select-option]

-a 查看所有已安裝的包

-f 查看指定的文件由哪個程序包安裝產生

-p rpmfile 針對尚未安裝的程序包文件做查詢操作(配合文件名而不是包名)

–whatprovides CAPABILITY 查詢指定的關鍵字由哪個包所提供

–whatrequires CAPABILITY 查詢指定的關鍵字被哪個包所依賴

[query-options]

–changelog 查詢rpm包的changelog

-c 查詢程序的配置文件

-d 查詢程序的文檔

-i 查看包描述information

-l 查看指定的程序包安裝后生成的文件

–scripts 查看程序包自帶的腳本

–provides 列出指定程序包所提供的關鍵字

-R 查詢指定程序包所依賴的關鍵字CAPABILITY

rpm2cpio 包文件|cpio -itv 預覽包內文件

rpm2cpio 包文件|cpio -id “*.conf” 釋放包內文件

包校驗:

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

驗證-V
注:只能查看已安裝的包

導入所需要公鑰

rpm -K|checksig rpmfile 檢查包的完整性和簽名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7

rpm -qa “gpg-pubkey*”

 

三、YUM使用介紹

Yellowdog Update Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在

多個庫之間定位軟件包,up2date的替代工具。

使用yum安裝文件包出錯一般都是下面2種情況:

1.配置文件的格式錯誤

2.緩存問題
注:yum不支持多個終端同時執行

yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據

文件(放置于特定目錄repodata下)

文件服務器:

http://

https://

ftp://

file://

倉庫位置:

/etc/yum.repos.d/*.repo

倉庫默認設置:

/etc/yum.conf

repo關鍵行

[base] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 倉庫名,不可以加空格

name=centos cdrom ? ? ? ? ? ? ? ? ? ? ? ?描述信息

baseurl= file:///mnt/cdrom

注:倉庫路徑為repodata目錄的父目錄

gpgcheck=0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 默認為1,0表示不進行數字簽名完整性檢查

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7 ? ? ? ? ? ? 自動導入秘鑰

enabled=0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?默認為1,0表示倉庫禁用

yum日志:

/var/log/yum.log 包含了使用yum安裝與卸載的日志

yum的repo配置文件中可用的變量:

$releasever: 當前OS的發行版的主版本號

$basearch:基礎平臺;i386, x86_64

例如:

http://server/centos/$releasever/$basearch/

http://server/centos/7/x86_64

http://server/centos/6/i384

yum

格式:yum[option][command][package…]PACKAGE_FILE

 

顯示倉庫列表:

yum repolist[all|enabled|disabled]

顯示程序包:

yum list

yum list[all|glob_exp1][glob_exp2][…]

yum list{available|installed|updates}[glob_exp1][…]

安裝程序包:

yum install package1 [package2] […]

yum reinstall package1 [package2] […] (重新安裝)

升級程序包:

yum update [package1] [package2] […](升級)

yum downgrade package1 [package2] […] (降級)

檢查可用升級:

yum check-update

卸載程序包:

yum remove | erase package1 [package2] […]

查看程序包information:

yum info […] ?

查看指定的特性(可以是某文件)是由哪個程序包所提供:

yum provides | whatprovides feature1 [feature2] […] ?

清理本地緩存:

清除/var/cache/yum/$basearch/$releasever緩存

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

構建緩存:

yum makecache

搜索:

yum search string1 [string2] […]

以指定的關鍵字搜索程序包名及summary信息

查看指定包所依賴的capabilities:

yum deplist package1 [package2] […]

查看yum執行歷史:

yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

yum history

yum history info 6yum history undo 6 ?

日志:/var/log/yum.log

安裝及升級本地程序包:

yum install rpmfile1 [rpmfile2] […]

yum update rpmfile1 [rpmfile2] […]

包組管理的相關命令:

yum groupinstall group1 [group2] […]

yum groupupdate group1 [group2] […]

yum grouplist [hidden] [groupwildcard] […]

yum groupremove group1 [group2] […]

yum groupinfo group1 […]

 

四、源代碼安裝

C、C++:make項目管理器

configure腳本–>Makefile.in–>Makefile

C語言源代碼編譯安裝三步驟:

1、./configure

–prefix= ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指定目錄安裝

–sysconfidir= ? ? ? ? ? ? ? ? ? ? ?指定/etc目錄獨立安裝

(1)通過選項傳遞參數,指定啟用特性,安裝路徑;執行會參考用戶的指定已經Makefile.in
文件生成Makefile

(2)檢查依賴到的外部環境,如依賴的軟件包

2、make

編譯過程,根據Makefile文件,構建應用程序

3、make install

復制文件到相應路徑

 

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

(1)
wangxczwangxcz
上一篇 2018-04-20
下一篇 2018-04-20

相關推薦

欧美性久久久久