Как правильно создать собственные пакеты для локальной установки?

Я использую сервер Ubuntu 12.04 LTS. В настоящее время у меня есть проблема, из-за которой один из моих использованных пакетов имеет раздражающую ошибку. Вместо того, чтобы удалять его и просто собирать из исходного кода, я хочу интегрировать его в управление пакетами Ubuntus / Debians.

Исходя из ArchLinux, мы сделали это, скопировав оригинальный PKGBUILD и изменив его таким образом, чтобы он компилировал новый пакет . Это очень простой процесс, но он информирует менеджера пакетов об этом пакете, даже если он отсутствует в локальных репозиториях.

Есть ли подобный способ для Ubuntu / Debian? Могу ли я легко основать свой пакет на устаревшей версии Ubuntu и установить этот пакет вместо оригинальной версии репозитория?

Примечание : соответствующее программное обеспечение - libvirt (по крайней мере, мне нужно 0.9.13, 12.04 работает с 0.9.8), и хотя я хотел бы найти решение для этого конкретного пакета в комментариях, я ищу более общее решение для таких проблем, если они возникнут в будущем.

Вопреки вопросам Как я могу вручную собрать свой собственный пакет «трудным путем»? и Что такое простое Руководство по созданию пакетов Debian? Я не заинтересован в создании новый пакет, но вместо этого использующий существующие ресурсы и обновляющий их до более новой версии.

6
задан 13 April 2017 в 15:24

2 ответа

Я бы сначала скачал исходный код и зависимости сборки для версии Ubuntu:

apt-get install dpkg-dev
apt-get build-dep <package>
apt-get source <package>

Немодифицированный исходный источник, на котором основана версия Ubuntu, будет в файле < pkg > _ < ver > .orig.tar.gz (схема сжатия может отличаться) - я распаковываю это в один каталог (назовем его «dir A»), затем загружаю исходный код с исправленной ошибкой в ​​другой каталог («dir B») ), а затем сгенерируйте патч для того, что изменилось:

diff -Nur <dirA> <dirB> >/tmp/upgrade.patch

Затем перейдите в каталог, где apt-get source распаковал модифицированную версию Ubuntu, и примените патч

patch -p1 </tmp/upgrade.patch

Предполагая, что между двумя вышестоящими версиями было не так много изменений, и они не конфликтовали ни с какими изменениями в пакере Ubuntu, это должно работать. Затем отредактируйте файл debian / changelog в пакете Ubuntu, чтобы присвоить ему новый номер версии, и dpkg-buildpackage должен создать вам пользовательскую версию.

0
ответ дан 13 April 2017 в 15:24

Просто для того, чтобы подрезать мой собственный рог, у меня есть решение именно для этого обстоятельства. Вы можете загрузить, распаковать, собрать и переустановить пакет Debian с помощью 2 или 3 команд.

Это скрипт оболочки debtool , который доступен на GitHub по вышеупомянутой ссылке.

Сборка пакетов Debian из исходного кода может быть громоздкой, особенно на ежедневном драйвере, который не обязательно путать с многочисленными зависимостями сборки и тому подобным.

Предполагая, что libvirt доступна через источники, выполните следующую команду:

debtool --download --unpack libvirt

Приведенная выше команда только что загрузила файл libvirt_0.9.8_all.deb и распаковал его в каталог libvirt_0.9.8_all .

В качестве альтернативы вы можете распаковать версию libvirt , которая в настоящее время установлена ​​в вашей системе:

debtool --unpack libvirt

На этом этапе вы должны внести все свои изменения в файлы в каталог. Вы также, вероятно, захотите увеличить номер версии пакета (например, 0.9.8-custom1), расположенный в ./ libvirt_0.9.8_all / DEBIAN / control .

Теперь соберите пакет, выполнив следующую команду:

debtool --build ./libvirt_0.9.8_all

Теперь ваш готовый пакет находится в текущем каталоге как libvirt_0.9.8-custom1_all.deb .

Вы можете быстро переустановить этот пакет, запустив debtool --reinst ./libvirt_0.9.8-custom1_all.deb или альтернативно debtool --build --reinst ./libvirt_0.9.8_all, чтобы собрать и переустановить одним махом.

Etcetera

Вы также можете выполнить несколько других связанных задач с debtool .

Показать доступные версии

Если в репозиториях доступно несколько версий пакета, вы можете перечислить их следующим образом:

debtool --show zsh

Приведенная выше команда вернет следующее:

zsh 5.0.5-4ubuntu1~ubuntu14.04.1 amd64
zsh 5.0.2-3ubuntu6 amd64

Если вы хотите загрузить пакеты вручную, вы можете использовать опцию --show-format.

debtool --show --show-format zsh

Возвращает следующее:

apt-get download zsh=5.0.5-4ubuntu1~ubuntu14.04.1 -a=amd64
apt-get download zsh=5.0.2-3ubuntu6 -a=amd64

Загрузить архивы Debian

Вы можете загрузить самую последнюю версию пакета следующим образом:

debtool --download zsh

Вы можете скачать определенную версию следующим образом:

debtool --download zsh=5.0.2-3ubuntu6

Распаковка пакетов

Вы можете распаковать пакет на жесткий диск:

debtool --unpack package.deb

Вы также можете распаковать пакет, который в настоящее время установлен в вашей системе:

debtool --unpack package

Если вы внесли изменения в любой из установленных файлов, они также будут включены. Это идеально, если вы хотите работать с пакетом, который больше не доступен из исходников, или если вы хотите включить ранее исправленные исправления в «исправленный» deb.

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

Похожие вопросы: