У меня есть исходный код программы (взят из cvs / svn / git / ...), и я хотел бы создать для него пакет Debian / Ubuntu. Пакет присутствует в репозиториях, но:
- Это более старая версия (мне не хватает необходимых мне функций)
- Мне нужны несколько другие параметры компиляции, чем по умолчанию.
Как это сделать проще всего? Меня беспокоит пара вещей
- Как я могу проверить, правильно ли я указал все зависимости? (Я могу получить некоторые подсказки, посмотрев, от чего зависела более старая версия, но могли быть добавлены новые зависимости.)
- Как я могу запретить системе обновлений устанавливать старую версию в репо при обновлении?
- Как я могу предотвратить установку системой более новой версии (когда она отсутствует), перезаписывающей мой пользовательский пакет?
Ответы:
вы можете использовать специальный пакет «checkinstall» для всех пакетов, которых еще нет даже в debian / ubuntu.
Вы можете использовать "uupdate" (
apt-get install devscripts
) для сборки пакета из исходного кода с существующими исходными кодами debian:Пример для libdrm2:
источник
libdrm-2.3.1
именно? Также откудаlibdrm-2.4.1.tar.gz
взялось (мое первоначальное предположение состоит в том, что это скомпилированный двоичный файл приложения, которое мы хотим упаковать в deb, но заменяющий существующую версию, это правильно?)You must put some 'source' URIs in your sources.list
, раскомментируйте строки deb-src в вашем/etc/apt/sources.list
Во-первых, вопрос заголовка: если каталог debian уже существует, перейдите в исходный каталог (каталог, содержащий каталог debian) и вызовите dpkg-buildpackage. Мне нравится запускать его со следующими параметрами:
что означает не подписывать результат и не чистить.
Получение зависимостей - черное искусство. «Официальный» способ проверки зависимости сборки - это сборка пакета с использованием только базовой системы, «необходимых для сборки» пакетов и указанных вами зависимостей сборки. Не знаю общего ответа для обычных зависимостей, просто войдите :)
Мои знания об этом могут быть устаревшими, но для решения обоих вопросов: используйте dpkg --set-selections. Предполагая, что nullidentd был тем пакетом, который вы хотели оставить, запустите от имени root
В качестве альтернативы, поскольку вы строите из исходного кода, вы можете использовать эпоху, чтобы установить номер версии искусственно высоким и никогда больше не беспокоиться. Чтобы использовать эпоху, добавьте новую запись в файл debian / changelog и поставьте 99: перед номером версии. Учитывая мой пример с nullidentd, первая строка вашего обновленного журнала изменений будет гласить:
Ссылка Бернарда хороша, особенно если вам нужно создать каталог debian самостоятельно - также полезны ссылка для разработчиков и общая страница ресурсов . Ссылка Адама тоже выглядит неплохо, но я с ней не знаком.
источник
Пример сборки ccache на основе Ubuntu :
Подробнее: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
источник
Для того, что вы хотите сделать, вы, вероятно, захотите использовать исходный код debian diff, поэтому ваш пакет похож на официальный, за исключением используемой исходной версии. Вы можете загрузить исходный код с сайта packages.debian.org или получить его вместе с .dsc и исходным архивом с помощью «apt-get source».
Затем вы распаковываете новую версию исходного кода, переходите в этот каталог и применяете загруженный файл diff, выполнив
Затем внесите необходимые изменения в параметры компиляции и соберите пакет, выполнив
источник
источник
Я считаю, что это «библия» пакета Debian.
Что ж, это руководство нового сопровождающего Debian, поэтому многое из него неприменимо, но оно охватывает то, что и где.
источник
Если вы используете Ubuntu, ознакомьтесь с проектом pkgcreator: http://code.google.com/p/pkgcreator
источник
Вот руководство по созданию пакета Debian.
В основном вам необходимо:
Обычно я делаю все это в моем Makefile, поэтому могу просто набрать make, чтобы выплюнуть двоичный файл и упаковать его за один раз.
источник
Это
pbuilder
отличный инструмент для проверки как зависимостей сборки, так и зависимостей путем настройки чистой базовой системы в среде chroot. Скомпилировав пакет в pbuilder, вы можете легко проверить зависимости сборки, а тестируя его в среде pbuilder, вы можете проверить зависимости.источник
Если вам нужен быстрый и грязный способ установки зависимостей сборки, используйте:
Это устанавливает зависимости. Для этого вам нужны строки sources в вашем sources.list:
Если вы переносите пакеты из тестирования в стабильную версию, имейте в виду, что зависимости могли измениться. Команда apt-get build-deb устанавливает зависимости для исходных пакетов в вашем текущем репозитории.
Но, конечно, dpkg-buildpackage -us -uc покажет вам все неустановленные зависимости.
Если вы хотите чаще компилировать, используйте cowbuilder.
Затем создайте область сборки:
sudo DIST = сжатие ARCH = amd64 cowbuilder --create
Затем скомпилируйте пакет с исходным кодом:
Посмотрите, куда ковбилдер кладет получившийся пакет.
Удачи!
источник