Arch Linux 中的 AUR 是什么?您应该使用它吗?
已发表: 2023-06-23AUR 是 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 文件,该文件将预编译的二进制文件下载到您的计算机。
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 的时间,第二个是软件包最后一次更新的时间。
“最后更新”日期将告诉您该软件包是否正在积极维护。 长期休眠的包应谨慎对待。
上游 URL 是有效位置吗?
另请检查“上游 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
下载完成后,切换到新的“yay”目录。
CD 耶
让我们看看我们有哪些文件。
ls
只有一个文件,即 PKGBUILD 文件。 通常还有一两个附加的帮助文件。 也看看那些。 我们将使用less
来读取我们的单个文件。
少 PKGBUILD
PKGBUILD 文件使用哪些 URL?
遵循约定的格式良好的 PKGBUILD 文件将创建变量来保存它使用的 URL。 这为我们提供了 PKGBUILD 将引用的 URL 文件顶部的简洁列表。 在这种情况下,只有一个。
我们可以看到它指向yay
项目的 GitHub 页面。
GitHub 页面的所有者与此包的 AUR 页面上列出的维护者同名。 这是两个很好的迹象,表明这是一个安全的包。
但我们会继续深入研究。
寻找下载命令
使用less
搜索功能在文件中搜索wget
或curl
的使用情况。 这两个工具都可以用来检索远程文件。 一个行为良好的 PKGBUILD 应该不需要这样的活动。
如果您确实发现任何情况,请将其视为危险信号,并且在确定该软件包是良性的之前不要安装该软件包。 wget
或curl
命令引用的URL 是什么? 它们看起来合法且与包裹相关吗?
如果您可以从可信来源获得确认,证明 PKGBUILD 是值得信赖的,并且它只是以不遵循约定的方式编写的,您仍然可以选择安装它。
查找 rm、mv 和其他危险命令
同样,PKGBUILD 文件不需要包含rm
或mv
命令,也不需要引用“/dev”目录中的任何内容。 如果 PKGBUILD 直接调用pacman
,或提及systemctl
、 systemd
或任何其他重要系统组件(例如grub
,请将 PKGBUILD 文件视为危险文件并且不要运行它。
即使您无法读取 shell 脚本,也可以执行我们迄今为止使用的步骤。 如果您确实了解一些 shell 脚本,则可以查看 PKGBUILD 中的实际代码。
警惕混淆代码
编写恶意代码的人经常试图通过混淆来隐藏其意图。 他们使用极简、简洁、难以理解的语法,因此很难破译他们想要做什么。 如果您看到任何使用重定向或调用sed
或awk
的行,请将它们视为可疑。
复制这些行并将它们放入在线解析器(例如explainshell.com)中将解压它们,这样您就可以看到它们实际上做了什么。 如果您遇到密集的方括号、分号和与号,那么值得使用在线解析器来仔细检查您是否正确解释了该行试图执行的操作。 但总的来说,难以阅读的代码是一个警告信号。
你的 /home 应该是你的城堡
PKGBUILD 编译和构建在chroot
环境中进行。
这些是独立的小型文件系统,允许开发人员通过限制他们对计算机文件系统其余部分的访问并减少对其他系统命令的访问来进行沙箱处理。
如果 PKGBUILD 直接操作您的主目录,请将其视为警告标志。 在决定运行它之前,请确保您完全了解它在做什么。
您可以帮助其他 AUR 用户
使用非常受欢迎的套餐,您很可能是安全的。 由于用户数量众多,因此可以更快地发现并报告问题。 您可以通过报告您发现的任何问题来尽自己的一份力量,并对好的软件包进行投票以提高其声誉。
如果您发现某个软件包存在问题,导致您不想安装它,那么您可能会发现自己陷入困境,因为您需要该软件包。 一种前进的方法是在论坛上询问可以满足该特定需求的其他软件包的建议。
Linux 通常有很多方法可以给任何给定的猫剥皮。
相关:如何从 GUI 安装 Arch Linux