日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pacman 查询_pacman (简体中文)

發(fā)布時間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pacman 查询_pacman (简体中文) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

翻譯狀態(tài):本文是 pacman 的翻譯。上次翻譯日期:2020-10-20。如果英文版本有所更改,則您可以幫助同步翻譯。

pacman軟件包管理器是 Arch Linux 的一大亮點。它將一個簡單的二進制包格式和易用的構(gòu)建系統(tǒng)結(jié)合了起來。pacman的目標(biāo)是簡化對軟件包的管理,無論軟件包是來自官方軟件倉庫還是來自用戶自己的創(chuàng)建。

pacman 通過和主服務(wù)器同步軟件包列表來進行系統(tǒng)更新。這種服務(wù)器/客戶端模式可在使用一條命令就下載或安裝軟件包的同時,也安裝其必需的依賴包。

pacman 用 C 語言編寫,使用tar作為打包格式。

提示: makepkg和pactree、checkupdates等可在曾是 pacman 的內(nèi)置工具)中找到。你可以通過 pacman -Ql pacman | grep -E 'bin/.+' 獲取全部的工具列表。

用法

下面pacman可以執(zhí)行的操作的一小部分,pacman 的其他示例請閱讀

提示: 使用過其它發(fā)行版的用戶,可以參考 Pacman Rosetta 中的對比.

安裝軟件包

一個軟件包是一個歸檔,它包含:

一個應(yīng)用的所有(編譯好的)文件

有關(guān)該應(yīng)用的元數(shù)據(jù),例如應(yīng)用名稱,版本,依賴……

供 pacman 使用的安裝文件和指令

(可選)使軟件更易操作的額外文件,例如啟動/終止腳本

Arch 的軟件包管理器 pacman 可以安裝,更新,和刪除這些軟件包。使用軟件包而不是自己編譯安裝有如下優(yōu)勢:

輕松升級:pacman 會在更新可用時立即更新已安裝的軟件包

依賴檢查:pacman 負(fù)責(zé)為你處理依賴問題,你只需要指明程序,pacman 就會把它和它所需的所有其他程序都一起安裝。

干凈卸載:pacman 有著一個軟件包所有文件的列表。這樣,當(dāng)你決定移除軟件包時,不會無意留下文件。

注意: 軟件包通常有很多可選依賴, 它們?yōu)檐浖峁╊~外功能, 并不強制要求安裝它們。 安裝軟件時, pacman 將會輸出它的可選依賴, 但是這個輸出不會在 pacman.log中;當(dāng)你想瀏覽已安裝軟件的可選依賴時可以使用pacman -Si ,得到關(guān)于可選依賴的簡短描述。

警告: 在Arch下安裝軟件包時,未更新系統(tǒng)前,不要更新軟件包數(shù)據(jù)庫(例如,可能出現(xiàn)某軟件包不再出現(xiàn)在官方庫)。操作時,應(yīng)使用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}

當(dāng)然,可以多層擴展,并不作限制:

# pacman -S plasma-{workspace{,-wallpapers},pa}

虛包

虛擬軟件包是一個特殊的軟件包,它本身并不存在,但由一或多個其它軟件包提供。虛擬軟件包允許其它軟件包不以某一個特定的包為依賴,以應(yīng)對有多個候選的情況。虛包不能用它們的名稱安裝,相反它們會在你安裝提供虛包的軟件包時被安裝到你的系統(tǒng)中。

安裝包組

一些包屬于一個可以同時安裝的軟件包組。例如,運行下面的命令

# pacman -S gnome

會提醒用戶選擇 gnome 內(nèi)需要安裝的包。

有的包組包含大量的軟件包,有時用戶只需其中幾個。除了逐一鍵入序號外,pacman 還支持選擇或排除某個區(qū)間內(nèi)的的軟件包:

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

注意: 如果列表中的包已經(jīng)安裝在系統(tǒng)中,它會被重新安裝,即使它已經(jīng)是最新的。可以用 --needed 選項覆蓋這種行為。

刪除軟件包

刪除單個軟件包,保留其全部已經(jīng)安裝的依賴關(guān)系

# pacman -R package_name

刪除指定軟件包,及其所有沒有被其他已安裝軟件包使用的依賴關(guān)系:

# pacman -Rs package_name

上面這條命令在移除包含其他所需包的組時有時候會拒絕運行。這種情況下可以嘗試

# pacman -Rsu package_name

要刪除軟件包和所有依賴這個軟件包的程序:

警告: 此操作是遞歸的,請小心檢查,可能會一次刪除大量的軟件包。

# pacman -Rsc package_name

要刪除一個被其他軟件包依賴的軟件包,但是不刪除依賴這個軟件包的其他軟件包:

警告: 此操作有破壞系統(tǒng)的能力,應(yīng)該盡量避免使用。詳情請看 避免某些 Pacman 命令。

# pacman -Rdd package_name

pacman 刪除某些程序時會備份重要配置文件,在其后面加上*.pacsave擴展名。-n 選項可以避免備份這些文件:

pacman -Rn package_name

注意: pacman 不會刪除軟件自己創(chuàng)建的文件(例如主目錄中的“點文件”不會被刪除。)

升級軟件包

一個 pacman 命令就可以升級整個系統(tǒng)。花費的時間取決于系統(tǒng)有多老。這個命令會同步非本地(local)軟件倉庫并升級系統(tǒng)的軟件包:

# pacman -Syu

查詢包數(shù)據(jù)庫

pacman 可以在包數(shù)據(jù)庫中查詢軟件包,查詢位置包含了軟件包的名字和描述:

$ pacman -Ss string1 string2 ...

有時,-s的內(nèi)置正則會匹配很多不需要的結(jié)果,所以應(yīng)當(dāng)指定僅搜索包名,而非描述或其他子段:

$ pacman -Ss '^vim-'

要查詢已安裝的軟件包:

$ pacman -Qs string1 string2 ...

按文件名查找軟件庫:

$ pacman -F string1 string2 ...

顯示軟件包的詳盡的信息:

$ pacman -Si package_name

查詢本地安裝包的詳細(xì)信息:

$ pacman -Qi package_name

使用兩個 -i 將同時顯示備份文件和修改狀態(tài):

$ pacman -Qii package_name

要獲取已安裝軟件包所包含文件的列表:

$ pacman -Ql package_name

查詢遠(yuǎn)程庫中軟件包包含的文件:

$ pacman -Fl package_name

檢查軟件包安裝的文件是否都存在:

$ pacman -Qk package_name

兩個參數(shù)k將會執(zhí)行一次更徹底的檢查。

查詢數(shù)據(jù)庫獲取某個文件屬于哪個軟件包:

$ pacman -Qo /path/to/file_name

查詢文件屬于遠(yuǎn)程數(shù)據(jù)庫中的哪個軟件包:

$ pacman -F /path/to/file_name

要羅列所有不再作為依賴的軟件包(孤立orphans):

$ pacman -Qdt

提示: 將上述命令添加到 pacman 的一個處理后 hook用于在如果有處理產(chǎn)生孤立包后獲得提示。這在當(dāng)有軟件包被倉庫放棄時是有用的,因為任何被拋棄的包都會成為本地的一個孤立包(除非它是被顯式安裝的)。要避免在沒有找到孤立包時"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

檢查一個安裝的軟件包被那些包依賴,將遞歸標(biāo)識-r傳遞給 pactree,或者使用 AUR中的whoneeds

數(shù)據(jù)庫結(jié)構(gòu)

pacman數(shù)據(jù)庫通常位于 /var/lib/pacman/sync. 對于每一個在/etc/pacman.conf中指定的軟件倉庫, 這里都有一個一致的數(shù)據(jù)庫。數(shù)據(jù)庫文件夾里每個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來每周刪除不使用的包。

也可以自己設(shè)置保留最近幾個版本:

# paccache -rk1

添加-u/--uninstalled開關(guān)來限制paccache的行為只作用于卸載的包。例如清理所有卸載的包的緩存版本,可以用以下命令:

# paccache -ruk0

或者你可以將安裝其結(jié)合,同時作用于安裝的和卸載的包,例如想要保留最近兩個安裝的包但是移除所有卸載的包的緩存版本,使用以下命令:

# paccache -rk2 -ruk0

更多參數(shù)參見paccache -h。

pacman也有一些內(nèi)建參數(shù)用于清除緩存和那些不再在/etc/pacman.conf配置文件中列出的軟件倉庫殘留數(shù)據(jù)庫文件。然而pacman并不提供保留一定數(shù)量的過去版本的功能,因此它比paccache的默認(rèn)選項更加激進。

要刪除目前沒有安裝的所有緩存的包,和沒有被使用的同步數(shù)據(jù)庫,執(zhí)行:

# pacman -Sc

要刪除緩存中的全部文件,使用兩次-c開關(guān)。這是最為激進的方式,將會清空緩存文件夾:

# pacman -Scc

警告: 應(yīng)當(dāng)避免從緩存中刪除所有過去版本和卸載的包,除非需要更多磁盤空間。這樣會導(dǎo)致無法降級或重新安裝包而不再次下載他們

AUR以及AUR是兩個進一步清理緩存的替代工具

其它命令

升級系統(tǒng)時安裝其他軟件包:

# pacman -Syu package_name1 package_name2 ...

下載包而不安裝它:

# pacman -Sw package_name

安裝一個本地包(不從源里下載):

# pacman -U /path/to/package/package_name-version.pkg.tar.xz

要將本地包保存至緩存,可執(zhí)行:

# pacman -U file:///path/to/package/package_name-version.pkg.tar.xz

安裝一個遠(yuǎn)程包(不在 pacman 配置的源里面):

# pacman -U http://www.example.com/repo/example.pkg.tar.xz

要禁用 -S, -U 和 -R 動作,可以使用 -p 選項.

pacman 會列出需要安裝和刪除的軟件,并在執(zhí)行動作前要求需要的權(quán)限。

安裝原因

pacman數(shù)據(jù)庫按照軟件包被安裝的原因,將其分為兩類:

顯式安裝:那些真正地被傳遞給通用pacman-S和-U命令的包;

依賴:那些雖然(一般)從未被傳遞給pacman安裝命令,但由于被其它顯式安裝的包需要從而被隱式安裝的包

當(dāng)安裝軟件包時,可以把安裝原因強制設(shè)為依賴:

# pacman -S --asdeps package_name

提示: 用--asdeps安裝可選依賴將導(dǎo)致如果你移除孤立包,pacman將會一同移除剩下的可選依賴。

但是當(dāng)重新安裝該軟件包時,安裝原因?qū)辉O(shè)為軟件包所默認(rèn)的。

顯式安裝的軟件包列表可用pacman -Qe獲取, 與之互補的已安裝的依賴包可用pacman -Qd獲取。

改變某個已安裝軟件包的安裝原因,可以執(zhí)行:

# pacman -D --asdeps package_name

注意: 在升級時使用--asdeps和--asexplicit選項,例如pacman -Syu package_name --asdeps,是不被推薦的。這會導(dǎo)致不僅改變要被安裝的軟件包的安裝原因,也會改變被升級的軟件包的安裝原因。

查詢一個包含具體文件的包名

同步文件數(shù)據(jù)庫:

# 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

提示: 可以設(shè)置一個 crontab 或者 systemd timer 來定期同步文件信息數(shù)據(jù)庫。

如果需要高級功能請安裝 pkgfile,它使用一個單獨的數(shù)據(jù)庫來保存文件和它們所關(guān)聯(lián)的軟件包的信息。

配置

pacman 的配置文件位于/etc/pacman.conf。 man pacman.conf 可以查看配置文件的進一步信息。

通用選項

通用選項都在[options]段。閱讀 man 手冊或者查看默認(rèn)的 pacman.conf 可以獲得有關(guān)信息和用法。

升級前對比版本

要查看舊版和新版的有效安裝包,請取消/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

在升級時跳過軟件包

警告: 在跳過軟件包時要小心,因為部分升級不受支持

要想在升級系統(tǒng)時跳過特定的軟件包,用像如下的命令指明:

IgnorePkg=linux

多軟件包可以用空格隔開,或者用另外的IgnorePkg行。也可使用 glob 模式。如果只打算忽略一次升級,可以使用 --ignore 選項,這時使用逗號隔開的列表。

忽略了的軟件包依然可通過 pacman -S 升級。這種情況下pacman會提醒你這些軟件包已經(jīng)被包含在IgnorePkg聲明中。

在升級時跳過軟件包組

警告: 在跳過軟件包時要小心,因為部分升級不受支持

和軟件包一樣,也可以不升級某個軟件包組:

IgnoreGroup = gnome

在升級時跳過文件

所有在NoUpgrade指令中列出的文件都會在軟件包被安裝/升級時不會被更改,并且新文件會以帶有.pacnew后綴名的形式安裝

NoUpgrade=path/to/file

注意: 這個路徑指軟件包中的文件,所以不要包括開頭的斜線。

在安裝時跳過文件

要總是跳過某些文件夾的安裝,可以將它們放到 NoExtract 中,例如不想安裝 systemd 模塊:

NoExtract=usr/lib/systemd/system/*

后面的規(guī)則覆蓋前面的規(guī)則,加上 ! 可以取消跳過效果。

提示: pacman會在更新locales已經(jīng)被localepurge或者bleachbit清除的包時發(fā)出警告。將CheckSpace參數(shù)加入pacman.conf能夠抑制這種警告,但是要意識到space-check功能將會對所有軟件包禁用。

保留多個配置文件

如果你有多個配置文件(比如,主配置和啟用了測試倉庫的配置文件),需要共享一些設(shè)置,你可以在配置文件中使用Include選項,例如:

Include = /path/to/common/settings

/path/to/common/settings文件中是兩個配置文件共享的相同配置。

Hooks

pacman可以在處理前后,運行/usr/share/libalpm/hooks/文件夾下的hooks,更多的hooks文件夾可以通過HooDir選項在pacman.conf中指明,默認(rèn)/etc/pacman.d/hooks。Hook文件必須以.hook為后綴。Pacman hooks不是交互式的。

pacman hooks用于,比如說,和systemd-sysusers和systemd-tmpfiles結(jié)合來在安裝包時自動創(chuàng)建系統(tǒng)用戶和文件。例如,tomcat8的系統(tǒng)用戶和一些屬于該用戶的文件。當(dāng)pacman確定pacman hooks systemd-sysusers.hook和systemd-tmpfiles.hook喚起systemd-sysusers和systemd-tmpfiles。

有關(guān) alpm hooks 的更多信息,參見

軟件倉庫

除了特殊的通用選項節(jié), 每個pacman.conf中的[section]都定義了一個使用的軟件包倉庫,倉庫是多個軟件包的邏輯上的集合,他們物理上存儲在一個或多個服務(wù)器:這也是為什么每一個服務(wù)器都叫做這個倉庫的鏡像。

倉庫區(qū)分為官方倉庫與非官方倉庫。配置文件中倉庫的順序十分重要;當(dāng)幾個倉庫出現(xiàn)同名安裝包,不管版本號如何,pacman將使用配置文件中排前的倉庫。要在添加后使用某個倉庫,你需要先升級整個系統(tǒng)

每個倉庫節(jié)都可以直接指定鏡像列表或者Include引用其他的文件:例如,官方鏡像引用了/etc/pacman.d/mirrorlist/。具體查看Mirrors (簡體中文)。

軟件包的安全性

pacman 支持軟件包簽名,會為軟件包提供額外的安全性。默認(rèn)配置,SigLevel = Required DatabaseOptional 將啟用全局簽名驗證,但會被每個軟件倉庫的 SigLevel 行所覆蓋。有關(guān)軟件包簽名和簽名驗證的更多細(xì)節(jié),參見 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 檢測到文件沖突,而且按照設(shè)計,pacman 不會覆蓋文件。這是設(shè)計功能,不是缺陷。

這個問題通常很容易解決。一個安全的方式是,首先檢查是否有另一個軟件包提供了這個文件 (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 文件,包含此軟件包的元數(shù)據(jù)。如果文件損壞或者丟失,將會導(dǎo)致升級時出現(xiàn)file exists in filesystem 錯誤。此錯誤通常只會影響一個軟件包,除了手動刪除或移動所有的問題文件,你也可以顯式地使用pacman -S --overwrite glob package讓 pacman 強制覆蓋匹配glob的文件。

"Failed to commit transaction (invalid or corrupted package)" 錯誤

看看/var/cache/pacman/pkg中是否有*.part結(jié)尾的文件,它們是沒有完全下載的文件,刪除它們并重新執(zhí)行更新。這些程序一般是自定義的XferCommand 下載命令造成的。

# find /var/cache/pacman/pkg/ -iname "*.part" -delete

"Failed to init transaction (unable to lock database)" 錯誤

pacman 在改變軟件包數(shù)據(jù)庫前,比如安裝軟件包時,會創(chuàng)建一個文件鎖 /var/lib/pacman/db.lck。這會阻止其他 pacman 實例在同一時間修改軟件包數(shù)據(jù)庫。

如果 pacman 在更新數(shù)據(jù)庫時被打斷,舊鎖可能保留下來。如果確認(rèn)沒有 pacman 實例在運行,那么刪掉文件鎖:

# rm /var/lib/pacman/db.lck

安裝時無法獲取軟件包

錯誤內(nèi)容包含:Not found in sync db, Target not found 或 Failed retrieving file.

首先確認(rèn)軟件包確實存在(并注意錯別字)。如果確認(rèn)軟件包存在,可能本地數(shù)據(jù)庫過時了或者軟件倉庫沒有配置好,試試 pacman -Syyu 強制數(shù)據(jù)庫更新和升級。

也有可能包含該軟件包的軟件倉庫沒有啟動。例如,該軟件包可能在 multilib 倉庫里,但該倉庫沒有在 pacman.conf 中啟用。

pacman 更新時崩潰

如果 pacman 在刪除、重新安裝或更新軟件包時 "數(shù)據(jù)庫寫入" 出錯:

從 Arch 安裝媒體啟動,最好用最新的安裝媒體

掛載根文件系統(tǒng),例如以 root 身份mount /dev/sdaX /mnt,通過 df -h 確認(rèn)根文件目錄包含足夠的空間

同樣掛載 proc, sys 和 dev 文件系統(tǒng):mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev

如果系統(tǒng)使用默認(rèn)的數(shù)據(jù)庫目錄位置,可以通過 root 用戶執(zhí)行下面命令pacman --sysroot /mnt -Syu來更新系統(tǒng)的 pacman 數(shù)據(jù)庫。

更新之后,可以通過下面命令確認(rèn)是否還存在損壞的包:find /mnt/usr/lib -size 0

通過pacman --sysroot /mnt -S package重新安裝依然損壞的軟件包

手動重新安裝 pacman

警告: 這種方式極其容易破壞你的系統(tǒng),把它變得更糟。這個方式只是作為最后的措施,以防萬一#pacman 更新時崩潰不起作用

即使 pacman 嚴(yán)重?fù)p壞,你仍可以手動修復(fù)它,這需要下載最新的包并把它們解壓到正確的目錄。大致步驟如下:

確定要安裝的

從你選擇的mirror下載每個包

把每個包解壓到 root

使用pacman -S --overwrite重新安裝這些包來更新相應(yīng)的軟件包數(shù)據(jù)庫

進行完整系統(tǒng)更新

如果你擁有一個健康的 Arch 系統(tǒng),你可以這樣查看依賴項的完整列表:

$ pacman -Q $(pactree -u pacman)

但是依據(jù)你遇到的問題,你可能只需要更新其中的幾個。解壓一個包的示例是:

# tar -xvpwf package.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO

注意w參數(shù)表示交互模式。以非交互方式運行是非常冒險的,因為你可能就此覆蓋了一個重要文件。你也要注意以正確的順序解壓軟件包(例如先解壓依賴)。

這個帖子包含了一些這個過程的例子,這些例子中只有少量pacman依賴項損壞。

升級系統(tǒng)重啟后,出現(xiàn)"unable to find root device"錯誤,無法登陸

很有可能 initramfs 在內(nèi)核升級時損壞(例如由錯誤地使用 pacman 的 --overwrite 選項導(dǎo)致)。有兩個選擇;首先嘗試 Fallback啟動項。

提示: 萬一你刪除了 Fallback 啟動項,你總可以在啟動加載器菜單顯示出來的時候按Tab鍵(對于 Syslinux)或者按e鍵(對于 GRUB 或者 systemd-boot),將它重命名為initramfs-linux-fallback.img然后按Enter或者b(取決于你的啟動加載器以新參數(shù)啟動的方式)

一旦系統(tǒng)啟動,從控制臺或終端(為備用

# mkinitcpio -p linux

如果上面方法不行,從一個當(dāng)前的 Arch 發(fā)行(CD/DVD 或者 U盤),掛載你的根目錄和啟動分區(qū),然后用 arch-chroot chroot

# arch-chroot /mnt

# pacman -Syu mkinitcpio systemd linux

注意:

如果你沒有一個當(dāng)前的發(fā)行或者你只有某些其他的 "live" Linux 發(fā)行版,你可以用老式的方法chroot。顯然,這種方式比簡單地運行arch-chroot腳本需要更多的輸入

如果 pacman 伴隨Could not resolve host運行失敗,請檢查你的網(wǎng)絡(luò)連接

如果無法進入 arch-chroot 或 chroot 環(huán)境,但是需要重新安裝軟件包,可以使用 pacman --sysroot /mnt -Syu foo bar 從而在你的根分區(qū)下使用 pacman

重新安裝內(nèi)核(mkinitcpio -p linux 重新生成 initramfs 鏡像,不需要單獨生成。

之后建議執(zhí)行 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.

請求導(dǎo)入 PGP keys

如果用過時的 ISO 安裝 Arch,你很有可能被提示要導(dǎo)入 PGP keys。同意下載密鑰來繼續(xù)。如果你無法成功添加 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"

當(dāng)系統(tǒng)時間錯誤時,簽名密鑰將會被認(rèn)為過期(或無效)并且簽名檢查將會失敗,提示以下錯誤信息:

error: PackageName: signature from "User " is invalid

error: failed to commit transaction (invalid or corrupted package (PGP signature))

Errors occured, no packages were upgraded.

確保矯正系統(tǒng)時間,例如在安裝或升級前從 root 執(zhí)行 ntpd -qg ,和 hwclock -w。

'warning: current locale is invalid; using default "C" locale' 錯誤

錯誤信息已經(jīng)很明確了,locale 設(shè)置不正確,請閱讀Locale進行設(shè)置。

Pacman 不使用我的代理設(shè)置

正確設(shè)置環(huán)境變量($http_proxy, $ftp_proxy 等)如果使用 sudo,需要讓 sudo 將這些變量傳遞給 pacman.

如何重裝所有包并保留安裝和依賴信息?

重裝所有軟件包:pacman -S $(pacman -Qnq)(-S 選項會保留安裝緣由)。

接著需要重裝外來包(不在官方倉庫里的軟件包)。外來包可通過pacman -Qmq查看。

"Cannot open shared object file" 錯誤

有可能是前一次 pacman 事務(wù)中刪除或者損壞了 pacman 自身需要的一些共享庫。

要修復(fù)這種情況,你需要手動解壓那些共享庫文件到文件系統(tǒng)中合適的地方。首先請查明哪個包中包含有所需的庫文件,然后在 pacman 緩存中 (/var/cache/pacman/pkg/) 找到對應(yīng)的包。解壓出需要的庫文件到文件系統(tǒng)的對應(yīng)位置,如此可以繼續(xù)使用 pacman 。

之后需要重新安裝損壞的軟件包。注意你可能需要使用 --overwrite 選項覆蓋掉你剛剛解壓出的系統(tǒng)文件,因為 pacman 可能沒有跟蹤到對應(yīng)的文件信息。 pacman 隨后會使用包中的文件正確替換掉共享庫文件。如此能修好您的 pacman ,然后請繼續(xù)更新系統(tǒng)中剩下的軟件包。

軟件包下載停滯

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.

無法從鏡像服務(wù)器獲取 'core.db'

如果從正確的鏡像服務(wù)器收到此錯誤,請換一個域名解析服務(wù)器。

error: 'local-package.pkg.tar': permission denied

如果你想要在一個 sshfs 上使用pacman -U安裝軟件包并遇到了這個錯誤,將包移動到本地目錄,再試一次。

另請參見

總結(jié)

以上是生活随笔為你收集整理的pacman 查询_pacman (简体中文)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。