headermask image

Notice: Undefined variable: t in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15

Notice: Undefined variable: r in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

Как пересобрать deb-пакет

Иногда хочется пересобрать какой-нибудь пакет дистрибутива, включив или отключив в нём что-нибудь на свой вкус (наложив патч, изменив опции сборки…). Например, я (для личного пользования) вырезаю занимающее полэкрана приветствие gnuplot при его запуске :)

К счастью, пересобрать (изменённый) пакет достаточно просто. Последовательность действий:

0. Убедиться, что в /etc/apt/sources.list есть подходящая запись deb-src; добавить, если нет. Добавляется примерно такая строчка:

deb-src http://ftp.ru.debian.org/debian/ testing main contrib non-free

в ней можно менять адрес зеркала, ветку (например, stable или unstable вместо testing) и разделы репозитория.

После этого надо сделать aptitude update. Перейти в каталог, в котором собираетесь собирать исходники.

1. Получить исходники пакета: apt-get source названиепакета. Здесь надо учитывать, что иногда из одного пакета с исходниками собирается несколько бинарных.

2. Скачать всё, что необходимо для сборки: apt-get build-dep название пакета

3. Перейти в каталог названиепакета-версия/

4. Поправить, что хочется, в исходниках. Отредактировать файл debian/changelog. Описывать изменения и менять номер версии пакета нужно, чтобы потом самому отличать свои пакеты от дистрибутивных.

5. Пересобрать пакет: fakeroot dpkg-buildpackage -us -uc

На каталог выше должны появиться новые бинарные пакеты, готовые к установке.

Возможно, это не совсем идеологически верное описание и что-то важное я упустил (я не Debian-гуру). Кто знает лучше — пусть поправит. Однако такой способ вполне годится для личного использования.

Дополнение: анонимный читатель указал, что для пересборки пакета можно также воспользоваться программой pbuilder, которая позволяет производить сборку в «чистом окружении» и не засорять систему зависимостями для сборки (см. этап получения build-dep).

Оригинал тут