Arch Linux 中的 AUR 是什麼?您應該使用它嗎?

已發表: 2023-06-23
ArchWiki 網站上的 Arch Linux 徽標。
喬丹·格洛爾 / 極客指南
Arch Linux AUR 存儲庫包含社區驅動的軟件,如果您採取一些簡單的預防措施,就可以安全使用。 即使您不懂 shell 腳本,也可以使用一些指標來判斷包是否安全。

AUR 是 Arch Linux 皇冠上的寶石之一,提供了數千個附加軟件包。 但是這個用戶驅動的存儲庫使用起來安全嗎,還是應該避免使用它?

目錄

什麼是 AUR?
使用 AUR 的危險
AUR 安全:檢查包裹詳細信息和聲譽
檢查 PKGBUILD 和其他文件的內容
您可以幫助其他 AUR 用戶

什麼是 AUR?

AUR(Arch 用戶存儲庫)是一個社區驅動的軟件存儲庫,為 Arch Linux 用戶提供超過 85,000 個軟件包。 與其他 Arch 存儲庫(例如 core、extra 和 multilib 存儲庫)不同,AUR 不託管可立即安裝的軟件包。 事實上,它根本不託管二進製文件或打包軟件。

AUR 託管包構建文件,稱為 PKGBUILD。 這些是由 Arch makepkg工具運行的 shell 腳本。 當makepkg運行時,它會查找名為“PKGBUILD”的文件。 如果找到,它將打開它並按照其中的說明在您的計算機上創建軟件包存檔。 如果您熟悉在命令行上進行編譯,那麼 PKGBUILD 文件和makepkg協同工作方式與 MAKEFILE 和make實用程序類似。

PKGBUILD 指令下載源代碼文件和創建包存檔所需的其他文件。 自動調用pacman工具來安裝軟件包存檔中的軟件。

一些 AUR 包確實提供了預編譯的二進製文件,但存在引入一些混亂的風險。 但這些二進製文件並不託管在 AUR 中,而是存儲在互聯網上的其他位置。 這些包的 AUR 條目僅包含一個 PKGBUILD 文件,該文件將預編譯的二進製文件下載到您的計算機。

Arch Linux 與 Ubuntu:您應該使用哪個?
相關Arch Linux 與 Ubuntu:您應該使用哪個?

AUR 允許任何人為他們想要提供給其他 Arch 用戶的軟件創建 PKGBUILD。 這些可以是開源或閉源軟件包,甚至是商業軟件。 獲得足夠用戶投票的 AUR 軟件包可以升級到稱為社區存儲庫的常規 Arch 存儲庫。

當您將其歸結為基礎知識時,AUR 的問題就變得顯而易見。 它是來自互聯網上隨機用戶的腳本的集合。 他們希望您在計算機上運行它們。

為了降低風險,上傳的腳本由合格的、受人尊敬的志願者(稱為可信用戶)進行審核。 受信任的用戶檢查和測試 PKGBUILDS,並刪除任何包含危險錯誤或惡意意圖的內容。

相關:如何更新 Arch Linux

使用 AUR 的危險

這種情況非常罕見,但有時,儘管值得信賴的用戶很努力,但事情還是會漏網。 早在 2015 年,如果您之前將 Steam 目錄移至新位置,Valve Software Steam 腳本就會刪除您的主目錄。

更險惡的是2005年的事件,當時一個孤立的AUR包被一個新的維護者接管,他故意在PKGBUILD文件中添加了惡意代碼。 這些例子既古老又不常見,但同樣的事情可能會再次發生。

當然,如果你足夠熟練,你可以自己查看PKGBUILD文件的內容。 這種透明度是 AUR 的優勢之一,但它確實需要足夠的腳本知識才能從中受益。 這僅涵蓋 PKGBUILD 文件本身。 如果它提取了大量應用程序源代碼,理論上也應該進行檢查。

使用 AUR 的其他危險是基於分佈的。 並非所有基於 Arch 的發行版都足夠像 Arch,使 AUR 能夠完美運行。 AUR 假設它安裝在正版 Arch Linux 上,並且是一個經過完全修補和更新的版本。 例如,Manjaro 並不正式支持 AUR,儘管它是基於 Arch 的。

但是,鑑於您的發行版確實支持 AUR,無論您是否了解源代碼和 shell 腳本,您可以採取什麼措施來確保盡可能安全地使用它?

AUR 安全:檢查包裹詳細信息和聲譽

即使沒有代碼審查,您也可以採取一些步驟來幫助您決定是否可以信任 AUR 包。

在 AUR 上查找您的包裹

AUR 中每個包都有一個頁面。 該包的網頁描述了該包、它具有哪些依賴項、哪些包依賴於它以及其他有用的信息。 通過前往 AUR 並蒐索您的包裹來開始調查。

AUR 網站上的搜索欄

它的聲譽如何?

軟件包可以由用戶投票,每個軟件包也有一個受歡迎程度分數。 票數越多,人氣越高越好。 這意味著該軟件包是眾所周知的並且被廣泛使用。 換句話說,這是一個有信譽的軟件包。

yay 套餐的 AUR 套餐詳細信息,突出顯示了投票數和受歡迎程度

該軟件包的聲譽很好地表明了其可信度。 使用它並投票的人越多,您使用它的感覺就越舒服。

檢查活動日期

在“套餐詳細信息”部分,您將看到其投票、受歡迎程度得分和兩個日期。 第一個是軟件包首次引入 AUR 的時間,第二個是軟件包最後一次更新的時間。

yay 套餐的 AUR 套餐詳細信息,突出顯示首次提交和最後更新日期

“最後更新”日期將告訴您該軟件包是否正在積極維護。 長期休眠的包應謹慎對待。

上游 URL 是有效位置嗎?

另請檢查“上游 URL”並驗證它是否轉到包或項目的有效網頁或代碼存儲庫。 如果沒有,那就有問題了。

yay 包的 AUR 包詳細信息,其中突出顯示了上游 URL

閱讀用戶評論

每個 AUR 頁面的底部都有用戶評論。 這些可以擴展到許多頁面。 查看其他用戶對該軟件包的評價以及他們提出了哪些問題。 另請參閱針對所提出的問題提供了哪些解決方案。 最近有什麼評論嗎? 這個軟件包仍然有活躍的用戶群嗎?

註冊並參與

如果您在 AUR 上註冊並創建一個免費帳戶,您將能夠發表評論並提出問題。 此外,還可以使用論壇和 Reddit 子版塊等其他資源來詢問該軟件包。

即使您不了解 shell 腳本,仍然可以檢查一些內容。

檢查 PKGBUILD 和其他文件的內容

訪問 AUR 的常見方法是使用命令行“AUR 助手”,例如yay ,但您也可以以手動方式使用 AUR。

好的 AUR 幫助程序讓您可以選擇檢查 PKGBUILD 文件,如果您不想繼續,則可以停止安裝。 在手動過程中,您在 AUR 上搜索軟件包並下載 PKGBUILD 文件並在使用前檢查它。 如果您在查看後願意繼續,則可以手動運行makepkg

手動安裝至少一個軟件包是個好主意,這樣您就可以了解 AUR 幫助程序在後台執行的操作機制。 我們將使用 yay AUR 幫助程序作為示例。

該軟件包於 2016 年首次提交,最後一次更新於 2023 年 5 月。在撰寫本文時,這是最近的更新。 另外值得注意的是,原始提交者、當前維護者和最後打包軟件的人都是同一個人。 這種連續性是一個好兆頭。

單擊“包詳細信息”部分中的“Git Clone URL”URL 鏈接,將其複製到剪貼板。

在終端窗口中,鍵入“git clone”(一個空格),然後按 Shift+Ctrl+V 將 URL 粘貼到命令行上。 按“Enter”開始下載。

 git 克隆 https://aur.archlinux.org/yay.git 

從 git 存儲庫克隆 yay PKGBUILD 文件

下載完成後,切換到新的“yay”目錄。

 CD 耶

將目錄更改為 yay 文件夾。

讓我們看看我們有哪些文件。

 LS 

使用 ls 列出檢索到的文件

只有一個文件,即 PKGBUILD 文件。 通常還有一兩個附加的幫助文件。 也看看那些。 我們將使用less來讀取我們的單個文件。

 少 PKGBUILD 

啟動 less 文件查看器來打開 yay PKGBUILD 文件

PKGBUILD 文件使用哪些 URL?

遵循約定的格式良好的 PKGBUILD 文件將創建變量來保存它使用的 URL。 這為我們提供了 PKGBUILD 將引用的 URL 文件頂部的簡潔列表。 在這種情況下,只有一個。

使用 less 文件查看器檢查 yay PKGBUILD 文件

我們可以看到它指向yay項目的 GitHub 頁面。

GitHub 頁面的所有者與此包的 AUR 頁面上列出的維護者同名。 這是兩個很好的跡象,表明這是一個安全的包。

但我們會繼續深入研究。

尋找下載命令

使用less搜索功能在文件中搜索wgetcurl的使用情況。 這兩個工具都可以用來檢索遠程文件。 一個行為良好的 PKGBUILD 應該不需要這樣的活動。

如果您確實發現任何情況,請將其視為危險信號,並且在確定該軟件包是良性的之前不要安裝該軟件包。 wgetcurl命令引用的URL 是什麼? 它們看起來合法且與包裹相關嗎?

如果您可以從可信來源獲得確認,證明 PKGBUILD 是值得信賴的,並且它只是以不遵循約定的方式編寫的,您仍然可以選擇安裝它。

查找 rm、mv 和其他危險命令

同樣,PKGBUILD 文件不需要包含rmmv命令,也不需要引用“/dev”目錄中的任何內容。 如果 PKGBUILD 直接調用pacman ,或提及systemctlsystemd或任何其他重要係統組件(例如grub ,請將 PKGBUILD 文件視為危險文件並且不要運行它。

即使您無法讀取 shell 腳本,也可以執行我們迄今為止使用的步驟。 如果您確實了解一些 shell 腳本,則可以查看 PKGBUILD 中的實際代碼。

警惕混淆代碼

編寫惡意代碼的人經常試圖通過混淆來隱藏其意圖。 他們使用極簡、簡潔、難以理解的語法,因此很難破譯他們想要做什麼。 如果您看到任何使用重定向或調用sedawk的行,請將它們視為可疑。

複製這些行並將它們放入在線解析器(例如explainshell.com)中將解壓它們,這樣您就可以看到它們實際上做了什麼。 如果您遇到密集的方括號、分號和與號,那麼值得使用在線解析器來仔細檢查您是否正確解釋了該行試圖執行的操作。 但總的來說,難以閱讀的代碼是一個警告信號。

你的 /home 應該是你的城堡

PKGBUILD 編譯和構建在chroot環境中進行。

這些是獨立的小型文件系統,允許開發人員通過限制他們對計算機文件系統其餘部分的訪問並減少對其他系統命令的訪問來進行沙箱處理。

如果 PKGBUILD 直接操作您的主目錄,請將其視為警告標誌。 在決定運行它之前,請確保您完全了解它在做什麼。

您可以幫助其他 AUR 用戶

使用非常受歡迎的套餐,您很可能是安全的。 由於用戶數量眾多,因此可以更快地發現並報告問題。 您可以通過報告您發現的任何問題來儘自己的一份力量,並對好的軟件包進行投票以提高其聲譽。

如果您發現某個軟件包存在問題,導致您不想安裝它,那麼您可能會發現自己陷入困境,因為您需要該軟件包。 一種前進的方法是在論壇上詢問可以滿足該特定需求的其他軟件包的建議。

Linux 通常有很多方法可以給任何給定的貓剝皮。

相關:如何從 GUI 安裝 Arch Linux