Який правильний спосіб створити власні пакети для локальної установки?


6

Я запускаю сервер Ubuntu 12.04 LTS. На даний момент у мене виникла проблема, коли в одному з моїх використаних пакетів є дратівлива помилка. Замість того, щоб видаляти його та просто будувати з джерела, я хочу інтегрувати його в управління пакетами Ubuntus / Debians.

Починаючи з ArchLinux, ми зробили це, скопіювавши оригінальний PKGBUILD та змінивши його таким чином, щоб він склав новий пакет. Це дуже простий процес, але він інформує менеджера пакунків про цей пакет, навіть якщо він не знаходиться в локальних сховищах.

Чи існує подібний спосіб для Ubuntu / Debian? Чи можу я легко базувати свій пакет на застарілій версії Ubuntu і встановити цей пакет замість оригінального сховища?

Примітка . Програмне забезпечення стосується libvirt (мені потрібно щонайменше 0.9.13, 12.04 працює 0.9.8), і хоча я вдячний за рішення цього конкретного пакета в коментарях, я шукаю більш загальне рішення для таких проблем, якщо вони виникають у майбутньому.

На відміну від питань Як я можу вручну зібрати свій власний пакет «важким шляхом»? і який найпростіший посібник з упаковки Debian? Мені не цікаво створювати новий пакет, але натомість використовувати наявні ресурси та оновлювати їх до нової версії.



1
Це не відповідає на ваше запитання, але оновлений libvirt знаходиться у хмарному
Хорхе Кастро

1
Ви завжди можете завантажити старішу версію пакета з будь-якого місця, а потім встановити її вручну, не перепаковуючи все.
Thomas Ward

@ bodhi.zazen він хоче виправити помилку локально, не надсилаючи новий пакет Ubuntu.
Брайам

@Braiam Дякую, я вважаю, що я неправильно зрозумів "Я хочу інтегрувати його в управління пакетами Ubuntus / Debians".
Пантера

Відповіді:


4

Я б спочатку завантажував джерело та залежності збірки для версії 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 повинен скласти вам власну версію ..


1

Тільки для того, щоб зарізати власний ріг, я створив рішення для цієї точної обставини. У вас може бути завантажений, розпакований, побудований та перевстановлений пакет Debian у 2 або 3 команди.

Це дебют сценарію оболонки і доступний на 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

Якщо ви внесли зміни в будь-який з встановлених файлів, вони також будуть включені. Це ідеально, якщо ви хочете працювати з пакетом, який більше не доступний з джерел, або якщо ви хочете включити попередні виправлення в дефіс "виправленого".


Залежно від того, наскільки локальний мається на увазі під місцевим, і якщо ви хочете отримати стабільне програмне забезпечення, процес має бути розширений у власному сховищі (а не на ppa). Зверніть увагу, як це робиться для багатьох перероблених дистрибутивів, таких як Зорін, М’ята, М'ята та ін.
mckenzm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.