如何在Arch Linux上使用Pacman下载源代码?

45

我正在使用 Arch Linux。我想做与 apt-get source coreutils 相同的事情;是否可以使用 Pacman 下载源代码?我在 man页面 中没有找到解决方案。

如何获取软件包的源代码?


您也可以通过svn获取单独的软件包:https://wiki.archlinux.org/index.php?title=Getting_PKGBUILDS_From_SVN - Sparhawk
3个回答

48
  1. 运行命令pacman -S asp
  2. 如果你想获取Linux命令find的源代码,先要找出该命令所属的软件包:使用命令pacman -Qo $(which find),结果是"/usr/bin/find is owned by findutils 4.4.2-3"。

  3. 运行命令asp export findutils

  4. ...
cd findutils
makepkg -o
现在你已经拥有你的源代码了。

1
如果您只需要一个软件包,可以执行类似于 abs core/wpa_supplicant 的操作,其中您需要在软件包仓库前面添加前缀。如果您不想使用 sudo,也可以使用 ABSROOT=/tmp/ abs core/wpa_supplicant - Ehtesh Choudhury
1
感谢您提供的提示,不需要使用sudo即可下载软件包(使用apt-get source命令即可)。另外,在第5.1步骤中,如果您正在寻找“find”命令,只需输入“pacman -Qo find”即可。我个人更喜欢使用“pkgfile find”命令。您可以试试看。 - tiktak
你可以使用 makepkg -o 仅下载和打补丁源代码,而不是构建整个软件包! - LassePoulsen
FYI,就我个人而言,我尝试下载 python 源代码,但在执行 makepkg -o 时出现了“缺少依赖项”的错误。请使用 makepkg -o -i 命令跳过依赖项检查。 - CSJ

24

2018年更新:

下面所描述的abs工具已被弃用,它及其rsync端点自2017年中旬起已被删除。

现在可以使用asp工具提供类似功能,更多信息请点击这里


如前所述,您可以使用ABS(Arch Build System):

使用pacman安装:

sudo pacman -S base-devel abs

首先,下载ABS树:

sudo abs

然后,获取特定的软件包:

sudo abs [package_name]

从本地的abs树(例如/var/abs/core/findutils)复制您想要源代码的软件包到另一个目录中,例如/home/blabla/abs

然后运行makepkg

  • 如果您只想获取源代码而不想构建软件包,则可以运行makepkg -od

  • 否则,请运行makepkg -s,它将自动处理所有软件包依赖项

  • 注意:makepkg将覆盖您的修改,请使用makepkg -e代替构建您的本地源

如果您想安装已构建的软件包,则运行

pacman -U name-of-package.xz

makepkg -i会安装软件包;也可以使用makepkg -ei一次编译src中的内容并安装生成的软件包。 - apurkrt

3

编辑:由于ABS的变化,此答案已过时。

你可以从叫做ABS的Arch Linux SVN仓库获取软件包源代码。

首先在线上找到所需的软件包: http://www.archlinux.org/packages/?q=coreutils

然后,在软件包详情页面右侧使用SVN链接,例如: http://repos.archlinux.org/wsvn/packages/coreutils/trunk/

在那里,你会看到一个方便的“下载”按钮,以coreutils为例,它将导向: http://repos.archlinux.org/wsvn/packages/coreutils/trunk/?op=dl&isdir=1

相比于apt-get source,这个方法略微复杂。但是也许你可以在AUR中找到一个能够为你完成这项工作的工具,例如yaourt支持从源代码构建并导出软件包。


1
我刚忘了提到,上述的ABS还附带有用户空间工具,因此您实际上可以自动检出所有软件包等。但是对于单个软件包来说,这太过浪费了。 - ypnos
仓库网站现在完全是空白的。 - l0b0
没错,但是软件包详情页面上的链接仍然存在,现在可以在这里找到软件包:https://projects.archlinux.org/svntogit/packages.git/tree/ - ypnos
我看不到任何“下载”链接。唯一的方法是通过单击“plain”链接逐个下载每个文件。 - Sparhawk
这是因为他们改用了Git。不过你可以使用Git命令行工具一次性下载整个树。 - ypnos
4
正如在这里和https://www.archlinux.org/news/deprecation-of-abs/中已经解释的那样,**abs**已被新实用程序**asp**所取代。 要下载特定软件包的源代码,您可以尝试以下操作(它在一秒钟前对我有效,但我不能确认它总是有效): sudo pacman -S asp; asp checkout nano; cd repos/core-x86_64/; makepkg; - kay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接