pacman 查询_pacman (简体中文)
翻譯狀態:本文是 pacman 的翻譯。上次翻譯日期:2020-10-20。如果英文版本有所更改,則您可以幫助同步翻譯。
pacman軟件包管理器是 Arch Linux 的一大亮點。它將一個簡單的二進制包格式和易用的構建系統結合了起來。pacman的目標是簡化對軟件包的管理,無論軟件包是來自官方軟件倉庫還是來自用戶自己的創建。
pacman 通過和主服務器同步軟件包列表來進行系統更新。這種服務器/客戶端模式可在使用一條命令就下載或安裝軟件包的同時,也安裝其必需的依賴包。
pacman 用 C 語言編寫,使用tar作為打包格式。
提示: makepkg和pactree、checkupdates等可在曾是 pacman 的內置工具)中找到。你可以通過 pacman -Ql pacman | grep -E 'bin/.+' 獲取全部的工具列表。
用法
下面pacman可以執行的操作的一小部分,pacman 的其他示例請閱讀
提示: 使用過其它發行版的用戶,可以參考 Pacman Rosetta 中的對比.
安裝軟件包
一個軟件包是一個歸檔,它包含:
一個應用的所有(編譯好的)文件
有關該應用的元數據,例如應用名稱,版本,依賴……
供 pacman 使用的安裝文件和指令
(可選)使軟件更易操作的額外文件,例如啟動/終止腳本
Arch 的軟件包管理器 pacman 可以安裝,更新,和刪除這些軟件包。使用軟件包而不是自己編譯安裝有如下優勢:
輕松升級:pacman 會在更新可用時立即更新已安裝的軟件包
依賴檢查:pacman 負責為你處理依賴問題,你只需要指明程序,pacman 就會把它和它所需的所有其他程序都一起安裝。
干凈卸載:pacman 有著一個軟件包所有文件的列表。這樣,當你決定移除軟件包時,不會無意留下文件。
注意: 軟件包通常有很多可選依賴, 它們為軟件提供額外功能, 并不強制要求安裝它們。 安裝軟件時, pacman 將會輸出它的可選依賴, 但是這個輸出不會在 pacman.log中;當你想瀏覽已安裝軟件的可選依賴時可以使用pacman -Si ,得到關于可選依賴的簡短描述。
警告: 在Arch下安裝軟件包時,未更新系統前,不要更新軟件包數據庫(例如,可能出現某軟件包不再出現在官方庫)。操作時,應使用pacman -Syu package_name, 而不要使用(pacman -Sy package_name),否則可能會有依賴問題。參見 System maintenance (簡體中文)#不支持部分升級 和 BBS#89328.
安裝指定的包
安裝或者升級單個軟件包,或者一列軟件包(包含依賴包),使用如下命令:
# pacman -S package_name1 package_name2 ...
用正則表達式安裝多個軟件包(參見 這個帖子):
# pacman -S $(pacman -Ssq package_regex)
有時候在不同的軟件倉庫中,一個軟件包有多個版本(比如[extra]和[testing])。可以選擇一個來安裝:
# pacman -S extra/package_name
安裝多個含有相似名稱的軟件包,而并非整個包組或全部匹配的軟件包; 例如,
# pacman -S plasma-{desktop,mediacenter,nm}
當然,可以多層擴展,并不作限制:
# pacman -S plasma-{workspace{,-wallpapers},pa}
虛包
虛擬軟件包是一個特殊的軟件包,它本身并不存在,但由一或多個其它軟件包提供。虛擬軟件包允許其它軟件包不以某一個特定的包為依賴,以應對有多個候選的情況。虛包不能用它們的名稱安裝,相反它們會在你安裝提供虛包的軟件包時被安裝到你的系統中。
安裝包組
一些包屬于一個可以同時安裝的軟件包組。例如,運行下面的命令
# pacman -S gnome
會提醒用戶選擇 gnome 內需要安裝的包。
有的包組包含大量的軟件包,有時用戶只需其中幾個。除了逐一鍵入序號外,pacman 還支持選擇或排除某個區間內的的軟件包:
Enter a selection (default=all): 1-10 15
這將選中序號 1 至 10 和 15 的軟件包。而
Enter a selection (default=all): ^5-8 ^2
將會選中除了序號 5 至 8 和 2 之外的所有軟件包。
想要查看哪些包屬于 gnome 組,運行:
# pacman -Sg gnome
注意: 如果列表中的包已經安裝在系統中,它會被重新安裝,即使它已經是最新的。可以用 --needed 選項覆蓋這種行為。
刪除軟件包
刪除單個軟件包,保留其全部已經安裝的依賴關系
# pacman -R package_name
刪除指定軟件包,及其所有沒有被其他已安裝軟件包使用的依賴關系:
# pacman -Rs package_name
上面這條命令在移除包含其他所需包的組時有時候會拒絕運行。這種情況下可以嘗試
# pacman -Rsu package_name
要刪除軟件包和所有依賴這個軟件包的程序:
警告: 此操作是遞歸的,請小心檢查,可能會一次刪除大量的軟件包。
# pacman -Rsc package_name
要刪除一個被其他軟件包依賴的軟件包,但是不刪除依賴這個軟件包的其他軟件包:
警告: 此操作有破壞系統的能力,應該盡量避免使用。詳情請看 避免某些 Pacman 命令。
# pacman -Rdd package_name
pacman 刪除某些程序時會備份重要配置文件,在其后面加上*.pacsave擴展名。-n 選項可以避免備份這些文件:
pacman -Rn package_name
注意: pacman 不會刪除軟件自己創建的文件(例如主目錄中的“點文件”不會被刪除。)
升級軟件包
一個 pacman 命令就可以升級整個系統。花費的時間取決于系統有多老。這個命令會同步非本地(local)軟件倉庫并升級系統的軟件包:
# pacman -Syu
查詢包數據庫
pacman 可以在包數據庫中查詢軟件包,查詢位置包含了軟件包的名字和描述:
$ pacman -Ss string1 string2 ...
有時,-s的內置正則會匹配很多不需要的結果,所以應當指定僅搜索包名,而非描述或其他子段:
$ pacman -Ss '^vim-'
要查詢已安裝的軟件包:
$ pacman -Qs string1 string2 ...
按文件名查找軟件庫:
$ pacman -F string1 string2 ...
顯示軟件包的詳盡的信息:
$ pacman -Si package_name
查詢本地安裝包的詳細信息:
$ pacman -Qi package_name
使用兩個 -i 將同時顯示備份文件和修改狀態:
$ pacman -Qii package_name
要獲取已安裝軟件包所包含文件的列表:
$ pacman -Ql package_name
查詢遠程庫中軟件包包含的文件:
$ pacman -Fl package_name
檢查軟件包安裝的文件是否都存在:
$ pacman -Qk package_name
兩個參數k將會執行一次更徹底的檢查。
查詢數據庫獲取某個文件屬于哪個軟件包:
$ pacman -Qo /path/to/file_name
查詢文件屬于遠程數據庫中的哪個軟件包:
$ pacman -F /path/to/file_name
要羅列所有不再作為依賴的軟件包(孤立orphans):
$ pacman -Qdt
提示: 將上述命令添加到 pacman 的一個處理后 hook用于在如果有處理產生孤立包后獲得提示。這在當有軟件包被倉庫放棄時是有用的,因為任何被拋棄的包都會成為本地的一個孤立包(除非它是被顯式安裝的)。要避免在沒有找到孤立包時"failed to execute command”的錯誤,在你的 hook 中為Exec使用如下的指令: /usr/bin/bash -c "/usr/bin/pacman -Qtd || /usr/bin/echo '=> None found.'"
要羅列所有明確安裝而且不被其它包依賴的軟件包:
$ pacman -Qet
Pactree
要顯示軟件包的依賴樹:
$ pactree package_name
檢查一個安裝的軟件包被那些包依賴,將遞歸標識-r傳遞給 pactree,或者使用 AUR中的whoneeds
數據庫結構
pacman數據庫通常位于 /var/lib/pacman/sync. 對于每一個在/etc/pacman.conf中指定的軟件倉庫, 這里都有一個一致的數據庫。數據庫文件夾里每個tar.gz文件都包含著一個倉庫的軟件包信息。例如
$ tree which-2.21-5
which-2.21-5
|-- desc
這個 depends 項列出了該軟件的依賴包, 而desc有該包的介紹,例如文件大小和MD5值 。
清理軟件包緩存
pacman 將下載的軟件包保存在 /var/cache/pacman/pkg/ 并且不會自動移除舊的和未安裝版本的軟件包。這樣做有一些好處:
這樣允許降級軟件包而不需要通過其他方式提取舊版本,例如 Arch Linux Archive.
被卸載的軟件包可以輕易地直接從緩存文件夾重新安裝,不需要重新從軟件倉庫下載。
然而,需要定期手動清理緩存來避免該文件夾無限制增大。
# paccache -r
啟用 和 啟動 paccache.timer來每周刪除不使用的包。
也可以自己設置保留最近幾個版本:
# paccache -rk1
添加-u/--uninstalled開關來限制paccache的行為只作用于卸載的包。例如清理所有卸載的包的緩存版本,可以用以下命令:
# paccache -ruk0
或者你可以將安裝其結合,同時作用于安裝的和卸載的包,例如想要保留最近兩個安裝的包但是移除所有卸載的包的緩存版本,使用以下命令:
# paccache -rk2 -ruk0
更多參數參見paccache -h。
pacman也有一些內建參數用于清除緩存和那些不再在/etc/pacman.conf配置文件中列出的軟件倉庫殘留數據庫文件。然而pacman并不提供保留一定數量的過去版本的功能,因此它比paccache的默認選項更加激進。
要刪除目前沒有安裝的所有緩存的包,和沒有被使用的同步數據庫,執行:
# pacman -Sc
要刪除緩存中的全部文件,使用兩次-c開關。這是最為激進的方式,將會清空緩存文件夾:
# pacman -Scc
警告: 應當避免從緩存中刪除所有過去版本和卸載的包,除非需要更多磁盤空間。這樣會導致無法降級或重新安裝包而不再次下載他們
AUR以及AUR是兩個進一步清理緩存的替代工具
其它命令
升級系統時安裝其他軟件包:
# pacman -Syu package_name1 package_name2 ...
下載包而不安裝它:
# pacman -Sw package_name
安裝一個本地包(不從源里下載):
# pacman -U /path/to/package/package_name-version.pkg.tar.xz
要將本地包保存至緩存,可執行:
# pacman -U file:///path/to/package/package_name-version.pkg.tar.xz
安裝一個遠程包(不在 pacman 配置的源里面):
# pacman -U http://www.example.com/repo/example.pkg.tar.xz
要禁用 -S, -U 和 -R 動作,可以使用 -p 選項.
pacman 會列出需要安裝和刪除的軟件,并在執行動作前要求需要的權限。
安裝原因
pacman數據庫按照軟件包被安裝的原因,將其分為兩類:
顯式安裝:那些真正地被傳遞給通用pacman-S和-U命令的包;
依賴:那些雖然(一般)從未被傳遞給pacman安裝命令,但由于被其它顯式安裝的包需要從而被隱式安裝的包
當安裝軟件包時,可以把安裝原因強制設為依賴:
# pacman -S --asdeps package_name
提示: 用--asdeps安裝可選依賴將導致如果你移除孤立包,pacman將會一同移除剩下的可選依賴。
但是當重新安裝該軟件包時,安裝原因將會被設為軟件包所默認的。
顯式安裝的軟件包列表可用pacman -Qe獲取, 與之互補的已安裝的依賴包可用pacman -Qd獲取。
改變某個已安裝軟件包的安裝原因,可以執行:
# pacman -D --asdeps package_name
注意: 在升級時使用--asdeps和--asexplicit選項,例如pacman -Syu package_name --asdeps,是不被推薦的。這會導致不僅改變要被安裝的軟件包的安裝原因,也會改變被升級的軟件包的安裝原因。
查詢一個包含具體文件的包名
同步文件數據庫:
# pacman -Fy
查詢包含某個文件的包名,比如:
# pacman -F pacman
core/pacman 5.0.1-4
usr/bin/pacman
usr/share/bash-completion/completions/pacman
extra/xscreensaver 5.36-1
usr/lib/xscreensaver/pacman
提示: 可以設置一個 crontab 或者 systemd timer 來定期同步文件信息數據庫。
如果需要高級功能請安裝 pkgfile,它使用一個單獨的數據庫來保存文件和它們所關聯的軟件包的信息。
配置
pacman 的配置文件位于/etc/pacman.conf。 man pacman.conf 可以查看配置文件的進一步信息。
通用選項
通用選項都在[options]段。閱讀 man 手冊或者查看默認的 pacman.conf 可以獲得有關信息和用法。
升級前對比版本
要查看舊版和新版的有效安裝包,請取消/etc/pacman.conf中"VerbosePkgLists"的注釋。修改后的pacman -Syu輸出如下:
Package (6) Old Version New Version Net Change Download Size
extra/libmariadbclient 10.1.9-4 10.1.10-1 0.03 MiB 4.35 MiB
extra/libpng 1.6.19-1 1.6.20-1 0.00 MiB 0.23 MiB
extra/mariadb 10.1.9-4 10.1.10-1 0.26 MiB 13.80 MiB
在升級時跳過軟件包
警告: 在跳過軟件包時要小心,因為部分升級不受支持
要想在升級系統時跳過特定的軟件包,用像如下的命令指明:
IgnorePkg=linux
多軟件包可以用空格隔開,或者用另外的IgnorePkg行。也可使用 glob 模式。如果只打算忽略一次升級,可以使用 --ignore 選項,這時使用逗號隔開的列表。
忽略了的軟件包依然可通過 pacman -S 升級。這種情況下pacman會提醒你這些軟件包已經被包含在IgnorePkg聲明中。
在升級時跳過軟件包組
警告: 在跳過軟件包時要小心,因為部分升級不受支持
和軟件包一樣,也可以不升級某個軟件包組:
IgnoreGroup = gnome
在升級時跳過文件
所有在NoUpgrade指令中列出的文件都會在軟件包被安裝/升級時不會被更改,并且新文件會以帶有.pacnew后綴名的形式安裝
NoUpgrade=path/to/file
注意: 這個路徑指軟件包中的文件,所以不要包括開頭的斜線。
在安裝時跳過文件
要總是跳過某些文件夾的安裝,可以將它們放到 NoExtract 中,例如不想安裝 systemd 模塊:
NoExtract=usr/lib/systemd/system/*
后面的規則覆蓋前面的規則,加上 ! 可以取消跳過效果。
提示: pacman會在更新locales已經被localepurge或者bleachbit清除的包時發出警告。將CheckSpace參數加入pacman.conf能夠抑制這種警告,但是要意識到space-check功能將會對所有軟件包禁用。
保留多個配置文件
如果你有多個配置文件(比如,主配置和啟用了測試倉庫的配置文件),需要共享一些設置,你可以在配置文件中使用Include選項,例如:
Include = /path/to/common/settings
/path/to/common/settings文件中是兩個配置文件共享的相同配置。
Hooks
pacman可以在處理前后,運行/usr/share/libalpm/hooks/文件夾下的hooks,更多的hooks文件夾可以通過HooDir選項在pacman.conf中指明,默認/etc/pacman.d/hooks。Hook文件必須以.hook為后綴。Pacman hooks不是交互式的。
pacman hooks用于,比如說,和systemd-sysusers和systemd-tmpfiles結合來在安裝包時自動創建系統用戶和文件。例如,tomcat8的系統用戶和一些屬于該用戶的文件。當pacman確定pacman hooks systemd-sysusers.hook和systemd-tmpfiles.hook喚起systemd-sysusers和systemd-tmpfiles。
有關 alpm hooks 的更多信息,參見
軟件倉庫
除了特殊的通用選項節, 每個pacman.conf中的[section]都定義了一個使用的軟件包倉庫,倉庫是多個軟件包的邏輯上的集合,他們物理上存儲在一個或多個服務器:這也是為什么每一個服務器都叫做這個倉庫的鏡像。
倉庫區分為官方倉庫與非官方倉庫。配置文件中倉庫的順序十分重要;當幾個倉庫出現同名安裝包,不管版本號如何,pacman將使用配置文件中排前的倉庫。要在添加后使用某個倉庫,你需要先升級整個系統
每個倉庫節都可以直接指定鏡像列表或者Include引用其他的文件:例如,官方鏡像引用了/etc/pacman.d/mirrorlist/。具體查看Mirrors (簡體中文)。
軟件包的安全性
pacman 支持軟件包簽名,會為軟件包提供額外的安全性。默認配置,SigLevel = Required DatabaseOptional 將啟用全局簽名驗證,但會被每個軟件倉庫的 SigLevel 行所覆蓋。有關軟件包簽名和簽名驗證的更多細節,參見 pacman-key。
疑難解答
"Failed to commit transaction (conflicting files)" 錯誤
如果碰到如下錯誤:[2]
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 不會覆蓋文件。這是設計功能,不是缺陷。
這個問題通常很容易解決。一個安全的方式是,首先檢查是否有另一個軟件包提供了這個文件 (pacman -Qo /path/to/file)。如果文件被另一個軟件包所有,請報告問題。如果不是其它軟件包提供,將 'exists in filesystem' 的文件重命名并重新運行update命令。如果一切順利,可以刪掉這個文件。
如果你手動安裝了一個軟件,沒有通過pacman,例如用make install,你必須將軟件連同它的全部文件一起移除/卸載。參見Pacman/Tips and tricks#Identify files not owned by any package。
每一個安裝的軟件包都會提供一個 /var/lib/pacman/local/$package-$version/files 文件,包含此軟件包的元數據。如果文件損壞或者丟失,將會導致升級時出現file exists in filesystem 錯誤。此錯誤通常只會影響一個軟件包,除了手動刪除或移動所有的問題文件,你也可以顯式地使用pacman -S --overwrite glob package讓 pacman 強制覆蓋匹配glob的文件。
"Failed to commit transaction (invalid or corrupted package)" 錯誤
看看/var/cache/pacman/pkg中是否有*.part結尾的文件,它們是沒有完全下載的文件,刪除它們并重新執行更新。這些程序一般是自定義的XferCommand 下載命令造成的。
# find /var/cache/pacman/pkg/ -iname "*.part" -delete
"Failed to init transaction (unable to lock database)" 錯誤
pacman 在改變軟件包數據庫前,比如安裝軟件包時,會創建一個文件鎖 /var/lib/pacman/db.lck。這會阻止其他 pacman 實例在同一時間修改軟件包數據庫。
如果 pacman 在更新數據庫時被打斷,舊鎖可能保留下來。如果確認沒有 pacman 實例在運行,那么刪掉文件鎖:
# rm /var/lib/pacman/db.lck
安裝時無法獲取軟件包
錯誤內容包含:Not found in sync db, Target not found 或 Failed retrieving file.
首先確認軟件包確實存在(并注意錯別字)。如果確認軟件包存在,可能本地數據庫過時了或者軟件倉庫沒有配置好,試試 pacman -Syyu 強制數據庫更新和升級。
也有可能包含該軟件包的軟件倉庫沒有啟動。例如,該軟件包可能在 multilib 倉庫里,但該倉庫沒有在 pacman.conf 中啟用。
pacman 更新時崩潰
如果 pacman 在刪除、重新安裝或更新軟件包時 "數據庫寫入" 出錯:
從 Arch 安裝媒體啟動,最好用最新的安裝媒體
掛載根文件系統,例如以 root 身份mount /dev/sdaX /mnt,通過 df -h 確認根文件目錄包含足夠的空間
同樣掛載 proc, sys 和 dev 文件系統:mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev
如果系統使用默認的數據庫目錄位置,可以通過 root 用戶執行下面命令pacman --sysroot /mnt -Syu來更新系統的 pacman 數據庫。
更新之后,可以通過下面命令確認是否還存在損壞的包:find /mnt/usr/lib -size 0
通過pacman --sysroot /mnt -S package重新安裝依然損壞的軟件包
手動重新安裝 pacman
警告: 這種方式極其容易破壞你的系統,把它變得更糟。這個方式只是作為最后的措施,以防萬一#pacman 更新時崩潰不起作用
即使 pacman 嚴重損壞,你仍可以手動修復它,這需要下載最新的包并把它們解壓到正確的目錄。大致步驟如下:
確定要安裝的
從你選擇的mirror下載每個包
把每個包解壓到 root
使用pacman -S --overwrite重新安裝這些包來更新相應的軟件包數據庫
進行完整系統更新
如果你擁有一個健康的 Arch 系統,你可以這樣查看依賴項的完整列表:
$ pacman -Q $(pactree -u pacman)
但是依據你遇到的問題,你可能只需要更新其中的幾個。解壓一個包的示例是:
# tar -xvpwf package.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO
注意w參數表示交互模式。以非交互方式運行是非常冒險的,因為你可能就此覆蓋了一個重要文件。你也要注意以正確的順序解壓軟件包(例如先解壓依賴)。
這個帖子包含了一些這個過程的例子,這些例子中只有少量pacman依賴項損壞。
升級系統重啟后,出現"unable to find root device"錯誤,無法登陸
很有可能 initramfs 在內核升級時損壞(例如由錯誤地使用 pacman 的 --overwrite 選項導致)。有兩個選擇;首先嘗試 Fallback啟動項。
提示: 萬一你刪除了 Fallback 啟動項,你總可以在啟動加載器菜單顯示出來的時候按Tab鍵(對于 Syslinux)或者按e鍵(對于 GRUB 或者 systemd-boot),將它重命名為initramfs-linux-fallback.img然后按Enter或者b(取決于你的啟動加載器以新參數啟動的方式)
一旦系統啟動,從控制臺或終端(為備用
# mkinitcpio -p linux
如果上面方法不行,從一個當前的 Arch 發行(CD/DVD 或者 U盤),掛載你的根目錄和啟動分區,然后用 arch-chroot chroot
# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
注意:
如果你沒有一個當前的發行或者你只有某些其他的 "live" Linux 發行版,你可以用老式的方法chroot。顯然,這種方式比簡單地運行arch-chroot腳本需要更多的輸入
如果 pacman 伴隨Could not resolve host運行失敗,請檢查你的網絡連接
如果無法進入 arch-chroot 或 chroot 環境,但是需要重新安裝軟件包,可以使用 pacman --sysroot /mnt -Syu foo bar 從而在你的根分區下使用 pacman
重新安裝內核(mkinitcpio -p linux 重新生成 initramfs 鏡像,不需要單獨生成。
之后建議執行 exit, umount /mnt/{boot,} 然后 reboot.
Signature from "User " is unknown trust, installation failed
試試以下途徑:
更新已知密鑰:pacman-key --refresh-keys;
手動升級archlinux-keyring軟件包:pacman -Sy archlinux-keyring && pacman -Su.
請求導入 PGP keys
如果用過時的 ISO 安裝 Arch,你很有可能被提示要導入 PGP keys。同意下載密鑰來繼續。如果你無法成功添加 PGP keys,更新或升級 keyring above).
Error: key "0123456789ABCDEF" could not be looked up remotely
如果軟件包使用了新的密鑰,且該密鑰最近才被添加到 #Signature from "User " is unknown trust, installation failed 所述更新
不停看到錯誤 "PackageName: signature from "User " is invalid"
當系統時間錯誤時,簽名密鑰將會被認為過期(或無效)并且簽名檢查將會失敗,提示以下錯誤信息:
error: PackageName: signature from "User " is invalid
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occured, no packages were upgraded.
確保矯正系統時間,例如在安裝或升級前從 root 執行 ntpd -qg ,和 hwclock -w。
'warning: current locale is invalid; using default "C" locale' 錯誤
錯誤信息已經很明確了,locale 設置不正確,請閱讀Locale進行設置。
Pacman 不使用我的代理設置
正確設置環境變量($http_proxy, $ftp_proxy 等)如果使用 sudo,需要讓 sudo 將這些變量傳遞給 pacman.
如何重裝所有包并保留安裝和依賴信息?
重裝所有軟件包:pacman -S $(pacman -Qnq)(-S 選項會保留安裝緣由)。
接著需要重裝外來包(不在官方倉庫里的軟件包)。外來包可通過pacman -Qmq查看。
"Cannot open shared object file" 錯誤
有可能是前一次 pacman 事務中刪除或者損壞了 pacman 自身需要的一些共享庫。
要修復這種情況,你需要手動解壓那些共享庫文件到文件系統中合適的地方。首先請查明哪個包中包含有所需的庫文件,然后在 pacman 緩存中 (/var/cache/pacman/pkg/) 找到對應的包。解壓出需要的庫文件到文件系統的對應位置,如此可以繼續使用 pacman 。
之后需要重新安裝損壞的軟件包。注意你可能需要使用 --overwrite 選項覆蓋掉你剛剛解壓出的系統文件,因為 pacman 可能沒有跟蹤到對應的文件信息。 pacman 隨后會使用包中的文件正確替換掉共享庫文件。如此能修好您的 pacman ,然后請繼續更新系統中剩下的軟件包。
軟件包下載停滯
Some issues have been reported regarding network problems that prevent pacman from updating/synchronizing repositories. [3] [4] When installing Arch Linux natively, these issues have been resolved by replacing the default pacman file downloader with an alternative (see Improve pacman performance for more details). When installing Arch Linux as a guest OS in VirtualBox, this issue has also been addressed by using Host interface instead of NAT in the machine properties.
無法從鏡像服務器獲取 'core.db'
如果從正確的鏡像服務器收到此錯誤,請換一個域名解析服務器。
error: 'local-package.pkg.tar': permission denied
如果你想要在一個 sshfs 上使用pacman -U安裝軟件包并遇到了這個錯誤,將包移動到本地目錄,再試一次。
另請參見
總結
以上是生活随笔為你收集整理的pacman 查询_pacman (简体中文)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骑车望山
- 下一篇: Metro Studio——轻松创建Me