如何在pbuilder构建中使用本地.deb文件?


9

通常,我需要创建另一个程序包依赖的程序包(即构建依赖项)。与其首先在我的ppa中构建所有这些软件包(有时可能需要一些时间),不如将pbuilder的results目录用作pbuilder本身的源。

我怎样才能做到这一点?我可以通过挂钩执行此操作吗?

Answers:



6

这可以通过几种方法来完成。正如adol所提到的,Ubuntu Wiki提供了一个很好的示例,说明如何使用mini-dinstall创建本地存储库并将其添加到pbuilder配置中。丹尼斯关于使用dpkg-scanpackages的答案也有效。

我最近一直在使用apt-ftparchive进行此操作。我喜欢这种方法,因为我发现它的重量很轻。这是我的注释示例:

# From my ~/.pbuilderrc file

# Location of the dir where you keep pbuilder hook scripts.
HOOKDIR="/home/andrew/.pbuilder-hooks"

# Path to your local repo to be used as a mirror written as apt source line.
OTHERMIRROR="deb file:///home/andrew/pbuilder/local_repo ./"

# Path to your local repo. This tells pbuilder to mount this directory so it is available in the chroot.
BINDMOUNTS="/home/andrew/pbuilder/local_repo"

# As we need to have the apt-ftparchive command, we need to insure this package is installed.
EXTRAPACKAGES="apt-utils"

您还需要一个pbuilder钩子:

# From my ~/.pbuilder-hooks/D5update-local-repo file

# Path to the local repo.
LOCAL_REPO="/home/andrew/pbuilder/local_repo"

# Generate a Packages file.
(cd $LOCAL_REPO ; apt-ftparchive packages . > Packages)

# Update to include any new packages in the local repo.
apt-get update

现在您所要做的就是将软件包放入您的本地仓库中,它们将可供pbuilder使用。如果您尝试链式构建依赖项字符串,则可以将pbuilder结果目录作为本地repo目录。

您可能会想到其他变化。例如,您可以将dput与post_upload_command一起使用以生成Packages文件,而不使用钩子。

这个Debian Wiki页面也可能会有所帮助。


1
挂钩文件需要被调用D05...(两位数)并且必须是可执行的。另外(至少在使用pbuilder-dist时)在添加了apt-utils额外软件包后,您必须调用pbuilder-dist <dist> update --override-config一次。同样,对于pbuilder-dist,您还需要将OTHERMIRROR设置为环境变量,因为它会覆盖配置文件设置。
BubuIIC 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.