Linux軟件安裝與管理(Debian/Ubuntu&RHEL/CentOS)

Linux軟件安裝與管理(Debian/Ubuntu&RHEL/CentOS)

一、deb包管理
作爲 Debian 系統管理員,你經常地要處理 .deb 包,因爲它們包含一致的功能單元(應用程序、文檔等),使得安裝和維護更容易。.deb 文件,可以用 dpkg 命令直接處理;
1、工具 dpkg、APT 和 ar
dpkg 應視爲系統工具 (背景) 之一,而 apt 則是較傾向用戶的工具,可克服前者的限制。這些工具各有其限制,共同解決特定的作業。dpkg 是處理 .deb 文件的命令,尤其是解壓、分析和解包它們。
APT 是一組允許對系統進行高級的修改的程序:安裝或者刪除一個軟件包(並且保持依賴關係滿足),更新系統,列出可用的軟件包等。
對於 ar 程序,ar t archive會顯示包含在這樣一個歸檔中的文件列表;ar x archive 將文件從歸檔中提取至當前工作目錄, ar d archive file 從歸檔中刪除一個文件等。它的手冊頁 (ar(1)) 記錄了它的其他全部特性。ar 是一個非常初步的工具,Unix 管理員僅在極少數情況下使用它,而是通常使用tar,一個更先進的歸檔和文件管理程序。這是在誤刪情況下容易恢復 dpkg 的原因。您僅需要下載 Debian 包,並在系統 root (/)下從 data.tar.gz 歸檔中提取內容:
#ar x dpkg1.17.23amd64.deb
#tar -C / -p -xzf data.tar.gz


2.1、dpkg(deb包安裝命令)
dpkg 是系統層面處理 Debian 軟件包的基礎指令。若您有 .deb 軟件包,可以用 dpkg 安裝及分析其內容。但此指令只能看到 Debian 世界的部分內容:它知道系統安裝那些軟件包、指令列給了那些參數,但不知道還有那些可用的軟件包。因此,沒有相依性就完了。apt 之類的工具,則可產生相依性清單,儘量自動安裝軟件包。
軟件包安裝:
dpkg -i man-db2.7.0.2-5amd64.deb //安裝一個軟件包
安裝時出現錯誤提示,dpkg去忽略這個錯誤,這裏有非常多的--force-選項,只是--force-overwrite使用的非常頻繁。這些選項僅存在特殊的情況下,所以最好是不去使用它們以便遵守軟件包的管理機制。不要忘了,這些管理規則可以確保你的系統的穩定性和一致性。
注意 使用--force-的影響
若不小心使用 --force- 的選項,可能造成 APT 命令家族拒絕運作的困境。在相依性不足或衝突的情況下,使用部分選項後,仍可安裝該等軟件包。結果就是相依性不足的不一致系統,APT 命令將拒絕運行任何工作,直到系統恢復一致 (通常包括安裝遺失的相依軟件包或移除問題軟件包)。通常出現以下的消息,安裝新版 rdesktop 時忽略其對新版 libc6 的相依性:
#apt full-upgrade
[...]
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
rdesktop: Depends: libc6 (>= 2.5) but 2.3.6.ds1-13etch7 is installed
E: Unmet dependencies. Try using -f.

確信其分析結果的勇敢管理者,可能選擇忽略使用 --force- 選項時發生的相依性問題與衝突。結果是,想要繼續使用 apt 或 aptitude 的話,他們必須先編輯 /var/lib/dpkg/status 以刪除/修改相依性問題或衝突。


2.2軟件包移除
使用 dpkg 加上 -r 或 --remove 選項,再加上軟件包名稱,就可移除該軟件包。然而,這種方式的移除並不完整:仍保留所有的配置文件、維護腳本、記錄文件 (系統記錄檔) 及該軟件包的其他用戶數據。這種方式是停用程序,仍可以相同的配置快速地再安裝回來。完全移除該軟件包的所有相關文件,應使用 -P 或 --purge 選項,再加上軟件包名稱。
#dpkg -r debian-cd //移除軟件包
#dpkg -P debian-cd //清除軟件包及文件
查詢 dpkg 的數據庫,並檢查 .deb 文件
查找內部數據庫以獲取信息的 dpkg 選項。先給長版的選項再給對應的短版選項 (其參數是一樣的) 以 --listfiles 軟件包 (或 -L) 爲例,列出該軟件包安裝的文件清單;--search 文件 (或 -S),尋找包括該文件的套性;--status 軟件包 (或 -s),顯示該軟件包的標頭;--list (或 -l),顯示該系統內軟件包清單與安裝狀態;--contents file.deb (或 -c),列出 Debian 指定軟件包清單;--info file.deb (或 -I),列出該軟件包的標頭。


2.3示例dpkg的各種查詢:
$dpkg -L base-passwd 列出該軟件包安裝的文件清單
/.
/usr
/usr/sbin
/usr/sbin/update-passwd
/usr/share
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/base-passwd
/usr/share/doc-base
/usr/share/doc-base/users-and-groups
………………省略部分輸出內容

$ dpkg -S /bin/date //顯示文件所屬軟件包
coreutils: /bin/date
$ dpkg -s coreutils //顯示該軟件包的標頭
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 13855
Maintainer: Michael Stone <[email protected]>
Architecture: amd64
Multi-Arch: foreign
Version: 8.23-3
Replaces: mktemp, realpath, timeout
Pre-Depends: libacl1 (>= 2.2.51-8), libattr1 (>= 1:2.4.46-8), libc6 (>= 2.17), libselinux1 (>= 2.1.13)
Conflicts: timeout
Description: GNU core utilities
This package contains the basic file, shell and text manipulation
utilities which are expected to exist on every operating system.
.……省略部分內容

$dpkg -l 'b' //顯示該系統內軟件包清單與安裝狀態
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=======================-================-================-====================================================
un backupninja <none> <none> (no description available)
ii backuppc 3.3.0-2 amd64 high-performance, enterprise-grade system for backin
un base <none> <none> (no description available)
un base-config <none> <none> (no description available)
ii base-files 8 amd64 Debian base system miscellaneous files
ii base-passwd 3.5.37 amd64 Debian base system master password and group files
[...]
$ dpkg -c /var/cache/apt/archives/gnupg1.4.18-6amd64.deb //列出 Debian 指定軟件包清單
drwxr-xr-x root/root 0 2014-12-04 23:03 ./
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/udev/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./lib/udev/rules.d/
-rw-r--r-- root/root 2711 2014-12-04 23:03 ./lib/udev/rules.d/60-gnupg.rules
drwxr-xr-x root/root 0 2014-12-04 23:03 ./usr/
drwxr-xr-x root/root 0 2014-12-04 23:03 ./usr/lib/
[...]………………省略部分輸出內容

$ dpkg -I /var/cache/apt/archives/gnupg1.4.18-6amd64.deb //列出該軟件包的標頭
new debian package, version 2.0.
size 1148362 bytes: control archive=3422 bytes.
1264 bytes, 26 lines control
4521 bytes, 65 lines md5sums
479 bytes, 13 lines postinst #!/bin/sh
473 bytes, 13 lines preinst #!/bin/sh
Package: gnupg
Version: 1.4.18-6
Architecture: amd64
Maintainer: Debian GnuPG-Maintainers <[email protected]>
Installed-Size: 4888
Depends: gpgv, libbz2-1.0, libc6 (>= 2.15), libreadline6 (>= 6.0), libusb-0.1-4 (>= 2:0.1.12), zlib1g (>= 1:1.1.4)
Recommends: gnupg-curl, libldap-2.4-2 (>= 2.4.7)
Suggests: gnupg-doc, libpcsclite1, parcimonie, xloadimage | imagemagick | eog
Section: utils
Priority: important
Multi-Arch: foreign
Homepage: http://www.gnupg.org
Description: GNU privacy guard - a free PGP replacement
GnuPG is GNU's tool for secure communication and data storage.
It can be used to encrypt data and to create digital signatures.
It includes an advanced key management facility and is compliant
with the proposed OpenPGP Internet standard as described in RFC 4880.
[...]


2.4 dpkg的日誌文件
dpkg 把所有的交易記錄存在名爲 /var/log/dpkg.log 的日誌檔。這個日誌檔的內容頗爲詳盡且囉唆,記錄軟件包被 dpkg 處理的每個進程。追蹤 dpkg 的每個作爲之外,日誌檔還保留系統發展的記錄:可以覆查每個軟件包的安裝與移除步驟,對於瞭解最近的變動極有幫助。此外,還記錄所有的版本,可以交互檢查 changelog.Debian.gz 的內容,查看有問題的軟件包或在線的錯誤報告。
2.5多架構支持特性:
所有的 Debian 包在它們的管控信息中都有一個架構 字段。該字段可包含:“全部“(對與架構無關的包),或者它的目標架構名稱(如“amd64”, “armhf”,…)。對於後者,默認情況下,dpkg將只能接受安裝與主機架構匹配的軟件包,主機架構可通過dpkg --print-architecture來獲得。
dpkg的多架構支持允許用戶定義可安裝於當前系統的“異質架構” 。這可以方便的通過 dpkg --add-architecture完成,如下例。有一相應的 dpkg --remove-architecture 以放棄對異質架構的支持,但僅可用於未餘留該架構軟件包的情況。
#dpkg --print-architecture //查詢當前架構
amd64
#dpkg --print-foreign-architectures //查詢兼容架構
#dpkg -i gcc-4.9-base4.9.1-19armhf.deb
dpkg: error processing archive gcc-4.9-base4.9.1-19armhf.deb (--install):
package architecture (armhf) does not match system (amd64)
Errors were encountered while processing:
gcc-4.9-base4.9.1-19armhf.deb
#dpkg --add-architecture armhf //添加架構兼容
#dpkg --add-architecture armel //添加架構兼容
#dpkg --print-foreign-architectures //查詢兼容架構
armhf
armel
#dpkg -i gcc-4.9-base4.9.1-19armhf.deb
Selecting previously unselected package gcc-4.9-base:armhf.
(Reading database ... 86425 files and directories currently installed.)
Preparing to unpack gcc-4.9-base4.9.1-19armhf.deb ...
Unpacking gcc-4.9-base:armhf (4.9.1-19) ...
Setting up gcc-4.9-base:armhf (4.9.1-19) ...
#dpkg --remove-architecture armhf
dpkg: error: cannot remove architecture 'armhf' currently in use by the database
#dpkg --remove-architecture armel //移除兼容架構
#dpkg --print-foreign-architectures
armhf


3.1deb資源庫
APT需要一個”軟件源列表“:文件/etc/apt/sources.list會列出發佈 Debian 軟件包不同的倉庫(或軟件源)。接下來APT會從每一個軟件源導入所發佈的軟件包列表。這個過程是通過下載 Packages.xz或使用不同壓縮方法的變體(比如Packages.gz或者.bz2) )文件(若是二進制包的倉庫)和Sources.xz文件(若是軟件包源的倉庫),並分析這兩個文件內容。如果文件的舊版本已經存在,APT僅下載更新的部分。
cat /etc/apt/sources.list //資源庫列表文件
deb cdrom:[Debian GNU/Linux 10.2.0 Buster - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main //光(驅)盤資源庫
deb file:///debian/ buster contrib main //本地資源庫


3.2寫入sources.list文件句法:
/etc/apt/sources.list 文件中每個有效的代碼行包括對源的描述,由三個被空格分開的部分組成。
第一個區域指示源的類型:
“deb” 表示二進制軟件包,
“deb-src”表示源代碼包。
第二個區域表示源的基本 URL (結合文件 Packages.gz 中給出的文件名,必須是有效URL的全稱):此區域存在於一個 Debian 鏡像或其他任何由第三方所建的軟件源文檔中。這個 URL 可以用 file:// 起始來表示系統裏安裝了本地倉庫,或以 http:// 表示倉庫可通過網絡服務器來獲取,或用 ftp:// 表示軟件源在一個 FTP 服務器上。URL 還可以用 起始表示從 cdrom: 開始安裝。因基於網絡的安裝愈來愈流行,這個方法已不那麼常用了。
最後這一區域的句法取決於倉庫的結構。從最簡單的例子開始,你可以很簡單地描述一個軟件源的子目錄 (必須用到結尾處的斜線)(通常用 “./” 表示子目錄不存在 - 這個軟件源就位於給定的 URL上)。 不過一般來講,倉庫的結構類似於一個 Debian 的鏡像, 包括很多分支,每一分支有很多組成部分。通常命名選定的分支(由 “codename” 來命名或是由對應的 “suites” — stable, testing, unstable ),然後命名下面的組成部分(或分區)(從main, contrib 和non-free中選擇) 來激活一個典型的 Debian 鏡像。
關鍵詞 main, contrib 和 non-free 存檔
Debian 根據開發者所選定的許可聲明,使用這三部分來區分不同的軟件包。Main 收集了完全遵守Debian 免費軟件指南的所有軟件包。
non-free 文檔有所不同,它包括沒有( 完全)遵循上述原則,未受約束但仍然被髮布的軟件。這種文檔爲使用者提供服務,但不是 Debian 的官方組成部分- 不過 Debian 從來都提倡優先使用自由軟件。這類文檔的存在代表了一個來自 Richard M. Stallman 的重要問題,也阻礙了自由軟件基金會向用戶推薦 Debian.
Contrib (貢獻)是一類沒有一些非自由元件就不能正常運作的開源軟件。這類元件會是來自非自由 non-free 部分的軟件, 或非自由文件如遊戲 ROMs, 控制檯BIOS等。Contrib 也包括需要專利元件來編譯的自由軟件。早先的例子是OpenOffice.org 辦公軟件套裝,曾經需要帶專利的 Java 環境來運行。
/etc/apt/sources.list.d/.list 文件 //如果很多個軟件包的源庫在被引用,將它們分成多個文件會很實用。每一部分存在/etc/apt/sources.list.d/文件名.list
cdrom 條目描述了你所有的CD/DVD光盤。 與其他條目不同,因爲一個CD光盤需要插入光驅中,並且每次只能讀一張,所以並不總是可用。因此這種倉庫管理起來稍有不同,需要加在apt-cdrom 程序中,經常與add 參數一起執行。後者會要求驅動中插入光盤,並會瀏覽內容,尋找Packages 文件。這些文件會用於更新可用軟件包的數據庫(此過程由apt update 命令執行)。 自此, 如果某軟件包需要光盤,APT 可發出要求插入光驅。


3.3給Stable (穩定版)使用者的倉庫(示例)
/etc/apt/sources.list 給 Debian Stable 使用者的文件(其中buster代表Debian10)
#Security updates
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates main contrib non-free

#Debian mirror

#Base repository
deb http://ftp.debian.org/debian buster main contrib non-free
deb-src http://ftp.debian.org/debian buster main contrib non-free

#Stable updates
deb http://ftp.debian.org/debian buster-updates main contrib non-free
deb-src http://ftp.debian.org/debian buster-updates main contrib non-free

#Stable backports
deb http://ftp.debian.org/debian buster-backports main contrib non-free
deb-src http://ftp.debian.org/debian buster-backports main contrib non-free
註釋:此文件列出了 與Debian Buster 版本相關軟件包的所有來源(此手冊寫作當前穩定版本)。我們不希望當下一個穩定版本發佈時,所有基於它的分支在我們控制範圍外被改變,因此決定用“Buster” 而不是用相對應的 “stable““ 穩定” 的別名(stable, stable-updates, stable-backports)來命名。
請注意,當你所需要的軟件包版本存在於幾個倉庫中時,在文件sources.list中所列出的第一個會被使用。因此,非官方來源的包一般在此文件末尾處。


4、aptitude、apt-get和 apt 命令

4.1apt 命令行管理

4.1.1常用子命令:
list - 根據名稱列出軟件包
search - 搜索軟件包描述
show - 顯示軟件包細節
install - 安裝軟件包
reinstall - reinstall packages
remove - 移除軟件包
autoremove - 卸載所有自動安裝且不再使用的軟件包
update - 更新可用軟件包列表
upgrade - 通過 安裝/升級 軟件來更新系統
full-upgrade - 通過 卸載/安裝/升級 來更新系統
edit-sources - 編輯軟件源信息文件
其它命令包括:
apt-get,用於從已驗證的源獲取軟件包和相關信息,並對軟件包及其依賴進行安裝、升級和刪除
apt-cache,用於查詢已安裝和可安裝軟件包的可用信息
apt-cdrom,用於將可移除式介質作爲軟件包的源
apt-config,作爲設置配置的一個界面
apt-key,作爲管理驗證密鑰的一個界面
備註 APT 的多架構支持:當 dpkg 已配置爲支持異質架構時,APT將會自動檢測,並在更新過程中開始下載相應的軟件包文件。異質軟件包可通過 apt install 軟件包: 架構安裝。
同時進行卸載和安裝
在命令 apt (或 apt-get、或 aptitude) 加入後綴就可以同時安裝指定的軟件包與移除其他軟件包。在 apt install 命令加入 “-” 及希望移除的軟件包名稱。在 apt remove 命令加入 “+” 及希望安裝的軟件包名稱。
下面的例子展示兩種不同方法來安裝package1 和卸載package2。
#apt install package1 package2-↵
[...]↵
#apt remove package1+ package2↵
[...]↵
4.1.2技巧 apt --reinstall 和 aptitude reinstall
在軟件包中的文件發生移除或更改時,系統有時候可能會受損。恢復這些文件最簡單的方法是重裝受影響的軟件包。不幸的是,包系統會認爲後者已安裝而拒絕重新安裝;爲了避免此情況,使用apt和apt-get命令的 --reinstall選項。如下命令會重新安裝postfix,即使它已存在:
#apt --reinstall install postfix
aptitude命令行略微不同,但可通過aptitude reinstall postfix獲得同樣的結果。
該問題不與dpkg同時出現,但管理員極少直接使用它。
如果文件 sources.list 提及了數個發佈版本,可以指定要安裝軟件包的版本。要求特定版本號可以通過 apt install package=version,但以標明其初始發行版本 (Stable, Testing 或者 Unstable)的方式— 通過 apt install package/distribution — 更爲推薦。
示例:安裝 spamassassin(垃圾郵件過濾) 的 unstable 版本
#apt install spamassassin/unstable
4.1.3 deb 文件的緩存
APT 在 /var/cache/apt/archives/ 目錄中保存每個下載的 .deb文件的副本。在頻繁更新的情況下,該目錄下每個軟件包的數個版本可能會佔用大量磁盤空間;您應當經常整理它們。可以使用如下兩個命令:apt-get clean完全清空整個目錄;apt-get autoclean僅移除不會再下載的軟件包(因爲它們已從 Debian 鏡像中消失)和明顯無用的軟件包(配置參數APT::Clean-Installed可以阻止移除安裝中的.deb文件)。注意apt不支持上述命令。
apt-cache 命令
在 APT 的環境,參照 軟件包名稱 文件是他們在 Debian 鏡射站的位置。也就是說,近用數據庫軟件包時,每次都通過網絡讀取,極無劾率。所以,APT 在其文件內保存一個複本 (在 /var/lib/apt/lists/) 每次搜索本地的文件即可。同樣的,/var/cache/apt/archives/ 保存已經下載的軟件包避免在移除後又需要時的重複下載行爲。
apt-cache 命令可以做鍵詞軟件包搜索 apt-cache search 鍵詞。也能顯示軟件包標頭的可用版本 apt-cache show 軟件包名稱。這個命令提供軟件包說明、其相依性、維護者名稱等。apt search、apt show、aptitude search、aptitude show 都以同樣方式運作。


4.2 aptitude (是交互程序,可用於終端機的半圖形模式)
開始的時候,aptitude 依狀態顯示所有的軟件包 (已安裝、未安裝、或已安裝在不在鏡射站 — 其他的區塊顯示工作、虛擬軟件包、與最近纔出現在鏡射站的添加軟件包)。還有其他的查看方法,提供主題式瀏覽。所有的情況下,aptitude 在屏幕顯示各主題與軟件包的清單。以樹狀組織主題,可以用 Enter、[ 與 ] 按鍵展開與收起枝葉。+ 應用於標示可安裝的軟件包,- 標示可移除的軟件包與 標示可清除的軟件包 (這些按鍵也可用遟主題,對應的行動適用於主題的所有軟件包)。u 用於更新可用軟件包清單與 Shift+u 準備全系統的更新。g 切換摘要查看要求的改變 (並再次鍵入 g 納入此等改變),與 q 離開現在的查看。若您在初始的查看,將關閉 aptitude。
q 退出;退回

  • 安裝或升級
  • 卸載
    = 保持當前版本,阻止升級
    : 保持當前版本,不阻止日後升級
    卸載並刪除配置文件
    L 請求重新安裝軟件包
    u 更新可用的軟件包列表
    / 執行搜索任務(包名)
    d 顯示包依賴關係

說明 aptitude 的記錄檔
如同 dpkg,aptitude 追蹤運行動作存在其記錄檔內 (/var/log/aptitude)。然而,兩個命令分別在不同層次工作,各自的記錄檔有不同的信息。當 dpkg 記錄對各別軟件包的一步步運作,aptitude 則記錄系統更新之類的高端運作。
小心,記錄檔只包括 aptitude 工作的摘要。若另個前端 (或即使是 dpkg 自身) 只是偶而用到,則 aptitude 的記錄檔將只包括工作的部分,所以不能依賴它創建系統的過去。


4.3synaptic(默認Debian10未安裝)
synaptic 是 Debian 的軟件包圖形管理器,在 GTK+/GNOME 的基礎上提供清楚有效的圖形接口。它以很多的立即可用篩選器提供快速近用添加的軟件包、安裝軟件包、可升級軟件包、過時軟件包等。經由這些清單瀏覽,選定對軟件包的工作 (安裝、升級、移除、清除);不會立即運行此等工作,但把它們放入工作清單。單鍵按下可運行的工作,接着就可運行。

默認Debian10未安裝,按如下方式安裝該工具:
apt install synaptic //安裝synaptic圖形管理器


二、RPM包管理
1、rpm命令管理包
查詢/驗證軟件包選項:
-a, --all 查詢/驗證所有軟件包
-f, --file 查詢/驗證文件屬於的軟件包
-g, --group 查詢/驗證組中的軟件包
-p, --package 查詢/驗證一個軟件包
--pkgid query/verify package(s) with package identifier
--hdrid query/verify package(s) with header identifier
--triggeredby query the package(s) triggered by the package
--whatrequires query/verify the package(s) which require a dependency
--whatprovides 查詢/驗證提供相關依賴的軟件包
--nomanifest 不把非軟件包文件作爲清單處理

查詢選項(用 -q 或 --query):
-c, --configfiles 列出所有配置文件
-d, --docfiles 列出所有程序文檔
-L, --licensefiles list all license files
--dump 轉儲基本文件信息
-l, --list 列出軟件包中的文件
--queryformat=QUERYFORMAT 使用這種格式打印信息
-s, --state 顯示列出文件的狀態

驗證選項(用 -V 或 --verify):
--nofiledigest 不驗證文件摘要
--nofiles 不驗證軟件包中文件
--nodeps 不驗證包依賴
--noscript 不執行驗證腳本

安裝/升級/擦除選項:
--allfiles 安裝全部文件,包含配置文件,否則配置文件會被跳過。
--allmatches 移除所有符合 <package> 的軟件包(如果 <package>
被指定未多個軟件包,常常會導致錯誤出現)
--badreloc 對不可重定位的軟件包重新分配文件位置
-e, --erase=<package>+ 清除 (卸載) 軟件包
--excludedocs 不安裝程序文檔
--excludepath=<path> 略過以 <path> 開頭的文件
--force --replacepkgs --replacefiles 的縮寫
-F, --freshen=<packagefile>+ 如果軟件包已經安裝,升級軟件包
-h, --hash 軟件包安裝的時候列出哈希標記 (和 -v
一起使用效果更好)
--ignorearch 不驗證軟件包架構
--ignoreos 不驗證軟件包操作系統
--ignoresize 在安裝前不檢查磁盤空間
-i, --install 安裝軟件包
--justdb 更新數據庫,但不修改文件系統
--nodeps 不驗證軟件包依賴
--nofiledigest 不驗證文件摘要
--nocontexts 不安裝文件的安全上下文
--noorder 不對軟件包安裝重新排序以滿足依賴關係
--noscripts 不執行軟件包腳本
--notriggers 不執行本軟件包觸發的任何腳本
--nocollections 請不要執行任何動作集
--oldpackage 更新到軟件包的舊版本(帶 --force 自動完成這一功能)
--percent 安裝軟件包時打印百分比
--prefix=<dir> 如果可重定位,便把軟件包重定位到 <dir>
--relocate=<old>=<new> 將文件從 <old> 重定位到 <new>
--replacefiles 忽略軟件包之間的衝突的文件
--replacepkgs 如果軟件包已經有了,重新安裝軟件包
--test 不真正安裝,只是判斷下是否能安裝
-U, --upgrade=<packagefile>+ 升級軟件包
--reinstall=<packagefile>+ reinstall package(s)

所有 rpm 模式和可執行文件的通用選項:
-D, --define=“MACRO EXPR” 定義值爲 EXPR 的 MACRO
--undefine=MACRO undefine MACRO
-E, --eval=“EXPR” 打印 EXPR 的宏展開
--macros=<FILE:…> 從文件 <FILE:...> 讀取宏,不使用默認文件
--noplugins don't enable any plugins
--nodigest 不校驗軟件包的摘要
--nosignature 不驗證軟件包簽名
--rcfile=<FILE:…> 從文件 <FILE:...> 讀取宏,不使用默認文件
-r, --root=ROOT 使用 ROOT 作爲頂級目錄 (default: "/")
--dbpath=DIRECTORY 使用 DIRECTORY 目錄中的數據庫
--querytags 顯示已知的查詢標籤
--showrc 顯示最終的 rpmrc 和宏配置
--quiet 提供更少的詳細信息輸出
-v, --verbose 提供更多的詳細信息輸出
--version 打印使用的 rpm 版本號

常用示例:
#rpm -qa //查詢所有已安裝rpm包
#rpm -qa |grep http //已安裝包中過濾目標關鍵字http包信息
#rpm -ql httpd //列出包httpd安裝文件列表
#rpm -qc httpd //列出httpd安裝包的配置文件列表
#rpm -qf /etc/ssh/sshdconfig 查詢文件來自於於哪個安裝包
#rpm -qpl /cos7/Packages/httpd-2.4.6-90.el7.centos.x8664.rpm //查詢rpm文件包中文件列表信息
warning: /cos7/Packages/httpd-2.4.6-90.el7.centos.x8664.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
/etc/httpd/conf.modules.d
/etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-dav.conf
/etc/httpd/conf.modules.d/00-lua.conf
/etc/httpd/conf.modules.d/00-mpm.conf
/etc/httpd/conf.modules.d/00-proxy.conf
/etc/httpd/conf.modules.d/00-systemd.conf
/etc/httpd/conf.modules.d/01-cgi.conf
………………省略部分輸出內容


2、yum管理軟件包
2.1yum命令使用指南
check 檢查 RPM 數據庫問題
check-update 檢查是否有可用的軟件包更新
clean 刪除緩存數據
deplist 列出軟件包的依賴關係
distribution-synchronization 已同步軟件包到最新可用版本
downgrade 降級軟件包
erase 從系統中移除一個或多個軟件包
fs Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot Creates filesystem snapshots, or lists/deletes current snapshots.
groups 顯示或使用、組信息
help 顯示用法提示
history 顯示或使用事務歷史
info 顯示關於軟件包或組的詳細信息
install 向系統中安裝一個或多個軟件包
langavailable Check available languages
langinfo List languages information
langinstall Install appropriate language packs for a language
langlist List installed languages
langremove Remove installed language packs for a language
list 列出一個或一組軟件包
load-transaction 從文件名中加載一個已存事務
makecache 創建元數據緩存
provides 查找提供指定內容的軟件包
reinstall 覆蓋安裝軟件包
repo-pkgs 將一個源當作一個軟件包組,這樣我們就可以一次性安裝/移除全部軟件包。
repolist 顯示已配置的源
search 在軟件包詳細信息中搜索指定字符串
shell 運行交互式的 yum shell
swap Simple way to swap packages, instead of using shell
update 更新系統中的一個或多個軟件包
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo Acts on repository update information
upgrade 更新軟件包同時考慮軟件包取代關係
version 顯示機器和/或可用的源版本。

Options:
-h, --help 顯示此幫助消息並退出
-t, --tolerant 忽略錯誤
-C, --cacheonly 完全從系統緩存運行,不升級緩存
-c [config file], --config=[config file]
配置文件路徑
-R [minutes], --randomwait=[minutes]
命令最長等待時間
-d [debug level], --debuglevel=[debug level]
調試輸出級別
--showduplicates 在 list/search 命令下,顯示源裏重複的條目
-e [error level], --errorlevel=[error level]
錯誤輸出級別
--rpmverbosity=[debug level name]
RPM 調試輸出級別
-q, --quiet 靜默執行
-v, --verbose 詳盡的操作過程
-y, --assumeyes 回答全部問題爲是
--assumeno 回答全部問題爲否
--version 顯示 Yum 版本然後退出
--installroot=[path] 設置安裝根目錄
--enablerepo=[repo] 啓用一個或多個軟件源(支持通配符)
--disablerepo=[repo] 禁用一個或多個軟件源(支持通配符)
-x [package], --exclude=[package]
採用全名或通配符排除軟件包
--disableexcludes=[repo]
禁止從主配置,從源或者從任何位置排除
--disableincludes=[repo]
disable includepkgs for a repo or for everything
--obsoletes 更新時處理軟件包取代關係
--noplugins 禁用 Yum 插件
--nogpgcheck 禁用 GPG 簽名檢查
--disableplugin=[plugin]
禁用指定名稱的插件
--enableplugin=[plugin]
啓用指定名稱的插件
--skip-broken 忽略存在依賴關係問題的軟件包
--color=COLOR 配置是否使用顏色
--releasever=RELEASEVER
在 yum 配置和 repo 文件裏設置 $releasever 的值
--downloadonly 僅下載而不更新
--downloaddir=DLDIR 指定一個其他文件夾用於保存軟件包
--setopt=SETOPTS 設置任意配置和源選項
--bugfix Include bugfix relevant packages, in updates
--security Include security relevant packages, in updates
--advisory=ADVS, --advisories=ADVS
Include packages needed to fix the given advisory, in
updates
--bzs=BZS Include packages needed to fix the given BZ, in
updates
--cves=CVES Include packages needed to fix the given CVE, in
updates
--sec-severity=SEVS, --secseverity=SEVS
Include security relevant packages matching the
severity, in updates


2.2yum資源庫編輯
2.2.1 外部資源網(Internet):
cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

2.2.2 本地資源庫:
需要將/etc/yum.repos.d/CentOS-Base.repo 刪除或重命名未備份文件
/etc/yum.repos.d/CentOS-Base.repo.bak,避免影響本地庫文件列表讀取。

cat /etc/yum.repos.d/CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///cos7/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
2.2.3 驗證
#yum clean all //清楚庫緩存記錄
#yum repolist //查詢資源庫列表
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
repo id repo name status
!c7-media CentOS-7 - Media 10,097
repolist: 10,097

2.2.4 yum常用操作示例
#yum list |grep http //查詢http關鍵字對應包列表(包含已安裝和資源庫未安裝的包信息)
#yum install httpd //安裝httpd包及依賴包
#yum groups list //查詢分組列表(已安裝、未安裝組信息)
#yum groups install DNS\ Name\ Server //安裝DNS服務組(操作過程可以tab鍵查詢和補全選項)

注:部分內容參考了Debian官網《Debian管理員手冊》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章