ano*_*non 2 arch-linux make makepkg
来自Arch 维基:
Arch Linux 中的软件包是使用该
makepkg
实用程序构建的。当 makepkg 运行时,它会在当前目录中搜索PKGBUILD
文件,并按照其中的说明进行编译或以其他方式获取文件以构建包存档 (pkgname.pkg.tar.xz)。生成的包包含二进制文件和安装说明,可以使用 pacman 轻松安装。
Make
是一个 GNU 实用程序,用于从源代码构建和安装软件包,为此,它会在适当的目录中搜索 makefile,该目录将所需的输入提供给make
.
Somakepkg
用于制作 pacman 可安装的二进制文件,并且makepkg -si
可以选择解析依赖项(主要用于 AUR 包)。区别只是在于依赖解析和 pacman 特定的东西吗?它只是一些可以通过make
每个发行版手动完成的事情的自动化。
我对么?抱歉,如果这是一个愚蠢的问题。
优点makepkg
超过make
:
make
, configure
, cmake
, qmake
, npm
, pybuild
, ninja
, pybuild
)--verbose
make
MakeFile
将在当前目录中 执行 a ,构建所需的目标。make install
将尝试将这些目标安装到DESTDIR
.
makepkg -i
基于 的规则构建PKGBUILD
。这可能是:
configure
make
make install DESTDIR=/usr
Run Code Online (Sandbox Code Playgroud)
或者
cmake .
cmake --build . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
ctest .
cmake --build . --target=install
Run Code Online (Sandbox Code Playgroud)
或任何一个
cargo build --release
npm --build
pybuild
qmake
...
Run Code Online (Sandbox Code Playgroud)
有很多构建系统。 make
只是其中之一,并且通常只是其中的一部分(例如autoconf)。 PKGBUILD
这是一种很好的方法,使得 arch 包用户(或构建机器)可以使用单个命令(makepkg
),而无需了解有关构建系统的任何信息。它的目的是定义如何构建包而不是如何构建源代码。
PKGBUILD
还提供了定义构建依赖项或运行时依赖项的机会。这意味着如果您需要cmake
构建一个包,它将自动安装(如果-s
指定)并自动删除(如果-r
指定)。如果您的软件包依赖于python3
,那么它将确保python3
自动安装在您的系统上。
PKGBUILD
还为 Arch 维护者提供了将自己的补丁/自定义添加到原始源代码包的可能性。如果上游包将库可执行文件安装到/usr/lib/
,但 Arch 的标准宁愿将它们放在 中/usr/libexec/
,则该PKGBUILD
文件允许此类自定义。
如果您不使用该-i
选项,makepkg
则不会尝试安装该版本。相反,输出是一个.tar.xz
文件,可以将其上传到存档并由其他用户使用pacman
. 这就是官方 arch 存储库的工作方式。
Arch 开发人员将编写PKGBUILD
文件,然后构建机器将解析这些文件,构建包,并将它们上传到官方存储库,以便您可以用来pacman
下载/安装它们。
使用makepkg
over的另一个优点make install
是你的包管理器会保留安装内容、位置和版本的索引。这意味着,如果您对为什么某个文件位于您的系统上有疑问,您应该能够查询包管理器,他会告诉您哪个包“拥有”该文件以及它是什么版本。当您卸载软件包时,软件包管理器知道所有文件,因此不会留下任何孤立的文件。当您升级软件包时,软件包管理器知道在安装过程中要替换/重命名/删除哪些文件,并且还可能运行一两个脚本以确保顺利迁移。
归档时间: |
|
查看次数: |
4837 次 |
最近记录: |