во всем интернете есть описания как собирать пакеты из исходников, но нигде нет упоминия о том как собрать debian пакет из бинарников.
ситуация следующая:
Имеется некая абстрактная программа которая представлена, имеется также документация на эту программу. Программа написана с применением неких библиотек без которых она не работоспособна, так же есть некие пакеты которые также необходимы для ее функционирования, т.е. есть некие зависимости без которых функциональность программы не возможна.
В качестве программы я имею ввиду или программу предствавленную в ибнарном виде или это опросто набор скриптов.
Я попробовал использовать dpkg-buildpackage но особенно ничего не получилось, т.к. необходимо неким образом написать написать конфигурационные файлы, а как их писать в описанном выше случае я не знаю.
Сразу скажу что все описанное выше я проделываю на Nexenta Core Platform. (это грубо говоря OpenSolaris с системой управления пакетами от Debian).
Сборка собственного пакета deb формата (из готовых бинарников)
Модераторы: Warderer, Модераторы разделов
-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Сборка собственного пакета deb формата
Это библиотеки в составе программы или они тоже в каких-то сторонних пакетах?
Если все зависимости для работоспособности Вам известны, то всё просто.
deb-пакет - это архив, в котором хранятся два архива:
1) control.tar.gz - архив с управляющей информацией;
2) data.tar.gz - архив с данными в уже "раскиданной" по нужным папкам форме.
Возьмите любой deb-пакет, например hdparm (я на нем поясню).
Поместите его в папку ~/hdparm и перейдите туда в терминале.
Выполните команду:
Код: Выделить всё
$ dpkg-deb -x hdparm_8.9-3_i386.deb package/По этой команде происходит распаковка в папку package всех файлов данных (из архива data.tar.gz). Как видно, они уже раскиданы по нужным папкам. Если представить, что папка package/ - это корень, то видно, куда будут положены какие файлы.
Выполните команду:
Код: Выделить всё
$ dpkg-deb -e hdparm_8.9-3_i386.deb package/DEBIANПо этой команде распакуется вся управляющая информация в папку package/DEBIAN (название подпапки обязательно должно быть DEBIAN).
Зайдите туда и посмотрите, что там есть:
- control - управляющий файл, где прописана вся информация о пакете. Если Вы действительно смотрели, как собирать пакет, то должны быть уже знакомы со структурой данного файла и Вам не составит особого труда сделать аналогичный для своего пакета.
- md5sums - файл md5-сумм некоторых файлов данных.
- conffiles - перечень конфигурационных файлов (обычно это файлы, которые кидаются в папку /etc). Здесь важно знать, что при удалении пакета через aptitude remove имя_пакета мы удаляем все файлы пакета, ЗА ИСКЛЮЧЕНИЕМ фйлов, перечисленных в данном управляющем файле. При использовании команды aptitude purge имя_пакета мы удаляем ВСЕ файлы данных, включая перечисленные в этом файле.
- preinst - скрипт, который выполняет определенные действия ДО установки пакета (то есть до разархивирования файлов данных).
- postinst - скрипт, который выполняет определенные действия сразу после установки файлов данных (какое-нибудь конфигурирование, связывание библиотек, запуск установленных демонов и т.д.). Тут важно то, что если данный скрипт не отработает (то есть не сможет отработать в силу каких-то косяков), то пакет будет несконфигурированным.
- postrm - скрипт, выполняющий определенные действия после удаления пакета.
Из перечисленных файлов обязательным является только файл control. Если программа предоставляет какие-либо библиотеки, то также обычно присутствует скрипт postinst, задача которого выполнить команду ldconfig для предоставления системе информации о том, что появились какие-то новые библиотеки, которые могут быть использованы. Но Вас, я так понимаю, вопрос с библиотеками не касается, значит остается только control.
Теперь удалите deb-пакет hdparm_8.9-3_i386.deb.
Из всего добра, находящегося в папке package/ можно собрать пакет простой командой. Находиться Вы должны на уровень выше, то есть в папке hdparm, которую создали вначале. Команда такая:
$ fakeroot dpkg-deb -b папка_с_файлами куда_поместить_пакет
В нашем случае будет иметь вид (мы в каталоге hdparm):
Код: Выделить всё
$ fakeroot dpkg-deb -b package/ ./fakeroot нужен для того, чтоб у файлов внутри пакета владельцем стал root (короче, безопасность).
Появится пакет hdparm_ВЕРСИЯ_АРХИТЕКТУРА.deb, где ВЕРСИЯ и АРХИТЕКТУРА прописаны в control-файле, то есть будет пакет hdparm_8.9-3_i386.deb.
Итак, Ваша задача сводится к:
1) созданию папки proga;
2) созданию внутри данной папки структуры для раскидывания имеющихся у Вас данных;
3) раскидыванию Ваших файлов по данной структуре подкаталогов;
4) созданию папки DEBIAN с расположенным и правильно заполненным файлом control внутри (может еще какие скрипты из вышеперечисленных надумаете сделать здесь);
5) выдаче команды на сборку пакета.
Только не собирайте пакет в ту же папку proga - получится не совсем то, что Вы ожидаете :).
-
eXeC001er
- Сообщения: 7
Re: Сборка собственного пакета deb формата
супер! все описано по высшему классу и понятно. спасибо.
-
IMB
- Сообщения: 2567
- ОС: Debian
Re: Сборка собственного пакета deb формата
Прошу рассмотреть возможность закрепления данного топика.
-
eXeC001er
- Сообщения: 7
Re: Сборка собственного пакета deb формата
появилась необходимость сборки подобного рода пакетов, но для размешения их в репозитории, в следствии чего на выходе помимо deb нужны и другие файлы, которые генерируются при использовании dpkg-buildpackage.
Что делать в этом случае?
Что делать в этом случае?
-
KernelPanic
- Бывший модератор
- Сообщения: 2060
- Статус: Brain Атаке
- ОС: Debian squeeze/sid/exp
Re: Сборка собственного пакета deb формата
Какие конкретно? changes-файлы? У меня репозиторий работает и без них, смотрите прикрепленную тему про локальные репы. Что за репозиторий такой?