修復(fù) Arch Linux 中的 “target not found” 錯誤
有一天,我嘗試在 Arch Linux 上安裝 Hyprland。當(dāng)我使用 Pacman 命令安裝 它時,它拋出 “target not found”(目標(biāo)未發(fā)現(xiàn))錯誤。
$ sudo pacman -S hyprland
[sudo] password for abhishek:
error: target not found: hyprland
這是一個意外,因為我知道 Hyprland 是可用的。
我的修復(fù)方法是更新系統(tǒng),在大多數(shù)情況下,它可以解決此問題。
sudo pacman -Syu
這里,本地包數(shù)據(jù)庫不同步。我需要更新緩存。這里還建議更新系統(tǒng)。
在大多數(shù)情況下,這就是修復(fù)此錯誤的方法。但是,你看到此錯誤的原因可能還有其他一些。讓我在這里詳細(xì)討論它們。
修復(fù):更新系統(tǒng)
Arch Linux 是一個 滾動發(fā)布發(fā)行版,并且它提供的更新非常頻繁。如果你不每隔幾天更新一次系統(tǒng),你的本地包數(shù)據(jù)庫將與遠(yuǎn)程鏡像不同步,并且你將在安裝軟件包時遇到問題。
本地包數(shù)據(jù)庫僅保留包的元數(shù)據(jù),例如版本號、用于獲取包的倉庫 URL 等。
當(dāng)你搜索軟件包時,pacman
會提供搜索結(jié)果,表明該軟件包可用。但是,該包在你的本地數(shù)據(jù)庫中具有較舊的版本號。當(dāng) pacman
在遠(yuǎn)程倉庫中搜索包(以獲取實際的包)時,它不再找到舊版本的 URL。
這就是導(dǎo)致 “target not found” 錯誤的原因。
修復(fù)方法是更新本地數(shù)據(jù)庫。這可以與 pacman -Sy
一起使用,但是,建議 更新整個 Arch Linux 系統(tǒng) 以避免依賴沖突等。
sudo pacman -Syu
?? 如果你已有幾周沒有更新系統(tǒng),請做好更新超過 1 GB 的準(zhǔn)備。這可能需要一些時間,具體取決于你的互聯(lián)網(wǎng)速度和你使用的鏡像。
就我而言,Arch 安裝在我的輔助系統(tǒng)上。由于我一周左右無法使用它,該系統(tǒng)已經(jīng)過時了。更新后,我就可以安裝 Hyprland。
?? 如果這不起作用,請通過添加額外的
y
強(qiáng)制刷新所有包數(shù)據(jù)庫:sudo pacman -Syyu
修復(fù) “target not found” 錯誤的其他建議
如果上述方法沒有為你解決此錯誤,這里有一些修復(fù)此錯誤的提示。
仔細(xì)檢查包名稱
我親愛的 Watson,這可能看起來很簡單,但人們通常只是錯誤地輸入了包名稱。
Linux 區(qū)分大小寫,包通常以小寫命名。因此,如果你要使用一個名為 Flameshot 的流行工具,那么它的包名稱很可能是 flameshot。
此外,某些軟件的拼寫與常見軟件的拼寫不同。例如,它是 hyprland,這使我錯誤地輸入了 hyperland(使用通常的 “hyper” 拼寫)。
在極少數(shù)情況下,可能會混淆是 l
、I
或者 1
。
基本上,確保你輸入的包名稱是正確的。
查看該軟件包在倉庫中是否可用
Arch Linux 的倉庫中有大量軟件包。但這并不意味著它擁有所有可能的 Linux 軟件包。
訪問 Arch Linux 官方軟件包網(wǎng)站:
在這里輸入包名,查看該包是否可用。如果是,它是哪個倉庫以及它在哪個設(shè)備上可用。
x86_64
適用于英特爾架構(gòu),任何包含 ARM 架構(gòu)的均適用于 樹莓派類設(shè)備。
?? 如果在某些倉庫中找到該軟件包,但 pacman 即使在更新的系統(tǒng)上也找不到它,請檢查
pacman.conf
文件并查看是否啟用了所述倉庫。
確保它不是 AUR 包
Arch 用戶倉庫(AUR) 是提供更新包的附加社區(qū)支持平臺。
現(xiàn)在,有多種使用 AUR 包的方法,但 pacman
不是其中之一。
檢查你嘗試安裝的軟件包是否是 AUR 軟件包。首先檢查官方 Arch 倉庫,如上所述。如果不存在,請檢查 AUR 頁面。
如果它是 AUR 包,則必須 使用 yay 或一些 其他 AUR 幫助程序。你不能使用 pacman
安裝 AUR 軟件包。
你能解決這個問題嗎?
在大多數(shù)情況下,更新系統(tǒng)可以解決此問題。在極少數(shù)情況下,可能還有其他原因,我已經(jīng)提到了一些建議。
現(xiàn)在輪到你了。