PKGBUILD 到底是什么?我应该在安装软件包时编辑它吗?

PKGBUILD 到底是什么?我应该在安装软件包时编辑它吗?

每当我yaourt -Syua在 Manjaro Linux 系统中使用时,它都会给我

Edit PKGBUILD ? [Y/n] ("A" to abort)

有时

Edit chromium-pepper-flash.install ? [Y/n] ("A" to abort)

我在某个地方读到对编辑这些文件说不。

维基百科:https://wiki.archlinux.org/index.php/PKGBUILD

说这PKGBUILD只是安装时要更改的一些开关,那么保留默认值可以吗?

我没有找到有关这些.install文件的信息,它们是什么?

答案1

你为什么不彻底阅读一下你所看到的维基页面呢?链接的:

Arch Linux 中的软件包是使用以下命令构建的makepkg存储在 PKGBUILD 中的实用程序和信息。什么时候makepkg正在运行,搜索 PKGBUILD在当前目录中和遵循其中的说明编译或以其他方式获取文件以构建包文件

所以,PKGBUILD是一个“食谱”用于创建包(类似于RPM spec,gentoo ebuild)。有时,当安装/删除/升级软件包时,可能需要在将软件包文件写入磁盘/从磁盘中删除之前/之后自动执行一些脚本/程序,因此需要额外的“食谱”需要,即.install (摘自同一链接):

安装

的名称。安装要包含在包中的脚本。 pacman 能够在安装、删除或升级软件包时存储和执行特定于软件包的脚本。该脚本包含以下在不同时间运行的函数:

pre_install - The script is run right before files are extracted. One argument is passed: new package version.
post_install - The script is run right after files are extracted. One argument is passed: new package version.
pre_upgrade - The script is run right before files are extracted. Two arguments are passed in the following order: new package version, old package version.
post_upgrade - The script is run after files are extracted. Two arguments are passed in the following order: new package version, old package version.
pre_remove - The script is run right before files are removed. One argument is passed: old package version.
post_remove - The script is run right after files are removed. One argument is passed: old package version.

通常,您可以进行编辑PKGBUILD以自定义包的构建方式(例如添加/删除--configure选项、更改安装前缀、修补源代码、从包中排除文件等)。同样,您可以编辑.install以添加或删除应在软件包安装/升级/删除之前/之后自动执行的命令。
我想说,最好在出现提示时打开这些文件并阅读其内容,以确保一切正常。

答案2

如果你想安装一个只能从尿素尿率,亚乌尔特将下载所需的包PKGBUILD(也许还有其他一些文件)并使用 PKGBUILD(makepkg程序)将构建该包,以便您可以安装它。

如果您需要,可以编辑 PKGBUILD,但我认为在大多数情况下这是不必要的。如果你不想回答这个问题(并且总是回答“是”),你可以这样做:放入/etc/yaourtrc下一行:

EDITFILES=0

我正在使用 AUR 中的一些软件包,并且我从来不需要编辑 PKGBUILD。

编辑:这仅防止有关编辑的问题PKGBUILD。您有可能会中断从 AUR 安装不受支持的软件包,您可以PKGBUILD在构建和安装软件包之前进行检查。

相关内容