Arch Linux 的 pacman 命令入門
pacman 包管理器是 Arch Linux 和其他主要發行版如 Red Hat 和 Ubuntu/Debian 之間的主要區別之一。它結合了簡單的二進位包格式和易於使用的 構建系統。pacman
的目標是方便地管理軟體包,無論它是來自 官方庫 還是用戶自己構建的軟體庫。
如果你曾經使用過 Ubuntu 或基於 debian 的發行版,那麼你可能使用過 apt-get
或 apt
命令。pacman
在 Arch Linux 中是同樣的命令。如果你 剛剛安裝了 Arch Linux,在安裝 Arch Linux 後,首先要做的 幾件事 之一就是學習使用 pacman
命令。
在這個初學者指南中,我將解釋一些基本的 pacman
命令的用法,你應該知道如何用這些命令來管理你的基於 Archlinux 的系統。
Arch Linux 用戶應該知道的幾個重要的 pacman 命令
與其他包管理器一樣,pacman
可以將包列表與軟體庫同步,它能夠自動解決所有所需的依賴項,以使得用戶可以通過一個簡單的命令下載和安裝軟體。
通過 pacman 安裝軟體
你可以用以下形式的代碼來安裝一個或者多個軟體包:
pacman -S 軟體包名1 軟體包名2 ...
-S
選項的意思是 同步 ,它的意思是 pacman
在安裝之前先與軟體庫進行同步。
pacman
資料庫根據安裝的原因將安裝的包分為兩組:
- 顯式安裝:由
pacman -S
或-U
命令直接安裝的包 - 依賴安裝:由於被其他顯式安裝的包所 依賴,而被自動安裝的包。
卸載已安裝的軟體包
卸載一個包,並且刪除它的所有依賴。
pacman -R 軟體包名
刪除一個包,以及其不被其他包所需要的依賴項:
pacman -Rs 軟體包名
如果需要這個依賴的包已經被刪除了,這條命令可以刪除所有不再需要的依賴項:
pacman -Qdtq | pacman -Rs -
升級軟體包
pacman
提供了一個簡單的辦法來 升級 Arch Linux。你只需要一條命令就可以升級所有已安裝的軟體包。這可能需要一段時間,這取決於系統的新舊程度。
以下命令可以同步存儲庫資料庫,並且 更新系統的所有軟體包,但不包括不在軟體庫中的「本地安裝的」包:
pacman -Syu
S
代表同步y
代表更新本地存儲庫u
代表系統更新
也就是說,同步到中央軟體庫(主程序包資料庫),刷新主程序包資料庫的本地副本,然後執行系統更新(通過更新所有有更新版本可用的程序包)。
注意!
對於 Arch Linux 用戶,在系統升級前,建議你訪問 Arch-Linux 主頁 查看最新消息,以了解異常更新的情況。如果系統更新需要人工干預,主頁上將發布相關的新聞。你也可以訂閱 RSS 源 或 Arch 的聲明郵件。
在升級基礎軟體(如 kernel、xorg、systemd 或 glibc) 之前,請注意查看相應的 論壇,以了解大家報告的各種問題。
在 Arch 和 Manjaro 等滾動發行版中不支持部分升級。這意味著,當新的庫版本被推送到軟體庫時,軟體庫中的所有包都需要根據庫版本進行升級。例如,如果兩個包依賴於同一個庫,則僅升級一個包可能會破壞依賴於該庫的舊版本的另一個包。
用 Pacman 查找包
pacman
使用 -Q
選項查詢本地包資料庫,使用 -S
選項查詢同步資料庫,使用 -F
選項查詢文件資料庫。
pacman
可以在資料庫中搜索包,包括包的名稱和描述:
pacman -Ss 字元串1 字元串2 ...
查找已經被安裝的包:
pacman -Qs 字元串1 字元串2 ...
根據文件名在遠程軟包中查找它所屬的包:
pacman -F 字元串1 字元串2 ...
查看一個包的依賴樹:
pactree 軟體包名
清除包緩存
pacman
將其下載的包存儲在 /var/cache/Pacman/pkg/
中,並且不會自動刪除舊版本或卸載的版本。這有一些優點:
- 它允許 降級 一個包,而不需要通過其他來源檢索以前的版本。
- 已卸載的軟體包可以輕鬆地直接從緩存文件夾重新安裝。
但是,有必要定期清理緩存以防止文件夾增大。
pacman contrib 包中提供的 paccache(8) 腳本默認情況下會刪除已安裝和未安裝包的所有緩存版本,但最近 3 個版本除外:
paccache -r
要刪除當前未安裝的所有緩存包和未使用的同步資料庫,請執行:
pacman -Sc
要從緩存中刪除所有文件,請使用清除選項兩次,這是最激進的方法,不會在緩存文件夾中留下任何內容:
pacman -Scc
安裝本地或者第三方的包
安裝不是來自遠程存儲庫的「本地」包:
pacman -U 本地軟體包路徑.pkg.tar.xz
安裝官方存儲庫中未包含的「遠程」軟體包:
pacman -U http://www.example.com/repo/example.pkg.tar.xz
額外內容:用 pacman 排除常見錯誤
下面是使用 pacman
管理包時可能遇到的一些常見錯誤。
提交事務失敗(文件衝突)
如果你看到以下報錯:
error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /path/to/file exists in filesystem
Errors occurred, no packages were upgraded.
這是因為 pacman
檢測到文件衝突,不會為你覆蓋文件。
解決這個問題的一個安全方法是首先檢查另一個包是否擁有這個文件(pacman-Qo 文件路徑
)。如果該文件屬於另一個包,請提交錯誤報告。如果文件不屬於另一個包,請重命名「存在於文件系統中」的文件,然後重新發出更新命令。如果一切順利,文件可能會被刪除。
你可以顯式地運行 pacman -S –overwrite 要覆蓋的文件模式**,強制
pacman` 覆蓋與 給模式匹配的文件,而不是手動重命名並在以後刪除屬於該包的所有文件。
提交事務失敗(包無效或損壞)
在 /var/cache/pacman/pkg/
中查找 .part
文件(部分下載的包),並將其刪除。這通常是由在 pacman.conf
文件中使用自定義 XferCommand
引起的。
初始化事務失敗(無法鎖定資料庫)
當 pacman
要修改包資料庫時,例如安裝包時,它會在 /var/lib/pacman/db.lck
處創建一個鎖文件。這可以防止 pacman
的另一個實例同時嘗試更改包資料庫。
如果 pacman
在更改資料庫時被中斷,這個過時的鎖文件可能仍然保留。如果你確定沒有 pacman
實例正在運行,那麼請刪除鎖文件。
檢查進程是否持有鎖定文件:
lsof /var/lib/pacman/db.lck
如果上述命令未返回任何內容,則可以刪除鎖文件:
rm /var/lib/pacman/db.lck
如果你發現 lsof
命令輸出了使用鎖文件的進程的 PID,請先殺死這個進程,然後刪除鎖文件。
我希望你喜歡我對 pacman
基礎命令的介紹。
via: https://itsfoss.com/pacman-command/
作者:Dimitrios Savvopoulos 選題:lujun9972 譯者:Chao-zhi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive