Как я могу использовать локальные файлы .deb в моих сборках pbuilder?

9

Часто мне нужно создавать пакеты, от которых зависит другой пакет (т.е. строить зависимости). Вместо того, чтобы все эти пакеты сначала собирались в моем ppa (что иногда может занять некоторое время), я хотел бы использовать каталог результатов из pbuilder в качестве источника для самого pbuilder.

Как я могу это сделать? Могу ли я сделать это через крючок?

txwikinger
источник

Ответы:

5

Вы можете прикрепить их в простое хранилище, созданное с помощью dpkg-scanpackages, и сделать это доступным через apache. Затем обновите apt-конфигурацию pbuilder, чтобы использовать репозиторий.

Деннис Каарсемакер
источник
3
См. Также wiki.ubuntu.com/PbuilderHowto#Building с локальными пакетами. Не уверен, что их пример OTHERMIRROR против локальной файловой системы работает сразу. Я выбрал простой путь использования пути к локальному хосту для моего дополнительного репозитория.
андол
6

Это можно сделать несколькими способами. Как упомянул adol, вики Ubuntu имеет хороший пример того, как это сделать, создав локальный репозиторий с помощью 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 локальным каталогом репо.

Вы можете, вероятно, представить другие варианты этого. Например, вы можете использовать dput с post_upload_command для генерации файла Packages вместо использования ловушки.

Эта вики-страница Debian также может быть полезна.

andrewsomething
источник
1
Файл хука должен быть вызван D05...(двузначное число) и должен быть исполняемым. Также (по крайней мере, при использовании pbuilder-dist) после добавления дополнительного пакета apt-utils вам придется вызывать pbuilder-dist <dist> update --override-configодин раз. Также, опять же, с помощью pbuilder-dist вам нужно установить OTHERMIRROR как переменную окружения, так как она переопределяет настройку файла конфигурации.
BubuIIC