Как изменить пакет deb?

12053
Kim

Что я сделал до сих пор

  • Я скачал исходный официальный deb-пакет из репозиториев Ubuntu.
  • Я применил патч.
  • Побежал настроить и сделать успешно.
  • Протестировал программу.

Что я хотел бы сделать

  • Я хотел бы создать пакет deb из этого, используя всю информацию (зависимости и т. Д.) Из старого пакета.

Мой вопрос (они тесно связаны)

  1. Есть ли простой (= в основном автоматизированный) способ сделать это?
  2. Могу ли я просто скопировать двоичные файлы в старый файл deb?
  3. Будут ли мои изменения перезаписаны после обновления исходного пакета в репозиториях?
  4. Если так, как этого избежать?
  5. Есть ли способ пометить его как «альтернативную» версию, которая удовлетворяет всем «входящим» зависимостям исходного пакета?

Дополнительная информация

  • Я запускаю Ubuntu 9.04, 32bit, меня не волнуют другие арки / версии на данный момент.
  • Рассматриваемый пакет - compiz-gnome.
  • Изменение очень незначительное и не добавляет никаких зависимостей.
7
Вопросы явно настолько тесно связаны, что отдельное обсуждение каждого из них не имеет смысла. Kim 14 лет назад 0
Отредактированный вопрос как предложено. Kim 14 лет назад 0
+1 Хороший вопрос joe 14 лет назад 0

5 ответов на вопрос

4
lyarwood

На форумах Ubuntu я нашел следующее руководство по перестройке пакета сетевого менеджера здесь

Re: как патчить источник деба

Цитата: Первоначально Послано шнур

Я хочу перестроить пакет сетевого менеджера с помощью своего рода патча, чтобы что-то проверить. Итак, я хочу: 1. получить исходный код для "версии" Ubuntu сетевого менеджера

Код:

sudo apt-get source network-manager

Цитата: 2. Патч с моим патчем Исходные файлы будут загружены в рабочий каталог. Смотрите это для получения дополнительной информации.

3. создайте файл deb, который я могу установить вместо текущего сетевого менеджера.

Выполнить код:

dpkg-buildpackage -rfakeroot -uc -b
в каталоге создан.

Также нашел эту статью: Руководство нового сопровождающего Debian Глава 6 - Сборка пакета


Что касается ваших изменений, потерянных обновлением из официальных репозиториев, я не уверен. Вы всегда можете просто отправить свой патч в апстрим к сопровождающим пакета compiz-gnome или создать собственный репозиторий для обновленного пакета.

Один из способов избежать засорения вашего частного пакета - добавить в начало `debian / changelog` запись с более высоким номером версии, а затем собрать свой пакет. Chris Jester-Young 14 лет назад 2
Патч, скорее всего, не будет принят в апстриме, так как он был доступен в течение достаточно долгого времени. Создание собственного репо кажется излишним для 20-строчного изменения. Может быть, я просто попробую и посмотрю, что произойдет. Спасибо за Ваш ответ. Kim 14 лет назад 1
4
Ryan Thompson

Процедура, которую я использую, такова:

Получить исходный код (через apt-get src).

Примените патч или сделайте все, что нужно изменить.

запустите debchange --nmuи введите описание внесенных вами изменений. Это автоматически увеличит номер версии, так что система не будет пытаться «обновить» ваш пользовательский пакет до стандартного.

Беги debuild.

Наслаждайтесь своими файлами deb.

3
nagul

Ответ № 3 и № 4 заключается в том, что вы должны перевести пакет в состояние удержания после установки вашей версии. Это говорит системе управления пакетами Debian «хранить» любые будущие изменения в этом пакете, что позволяет вам управлять пакетом вручную.

Из FAQ по Debian :

7.11 Что подразумевается под неизвестным, устанавливать, удалять, очищать и удерживать в статусе пакета?

Эти флаги «хотят» сообщают, что пользователь хотел сделать с пакетом (как указано в действиях пользователя в разделе «Выбор» dselect или в прямых вызовах пользователя dpkg).

Их значения:

  • неизвестно - пользователь никогда не указывал, хочет ли он посылку>

  • установить - пользователь хочет, чтобы пакет был установлен или обновлен

  • удалить - пользователь хочет удалить пакет, но не хочет удалять существующие файлы конфигурации.

  • purge - пользователь хочет, чтобы пакет был полностью удален, включая его> файлы конфигурации.

  • hold - пользователь хочет, чтобы этот пакет не обрабатывался, т. е. он хочет сохранить текущую версию с текущим статусом, какой бы она ни была.

7.12 Как мне поставить пакет на удержание?

Существует три способа удержания пакетов с помощью dpkg, aptitude или с помощью dselect.

С помощью dpkg вы должны экспортировать список выбранных пакетов:

dpkg --get-selections *> selections.txt

Затем отредактируйте полученный файл selections.txt, измените строку, содержащую пакет, который вы хотите сохранить, например, libc6, из этого:

libc6 установить

к этому:

libc6 hold

Сохраните файл и перезагрузите его в базу данных dpkg:

dpkg --set-selections <selections.txt

С помощью aptitude вы можете держать пакет, используя

aptitude hold имя_пакета

и снять трюм с

aptitude unhold package_name

С помощью dselect вы должны войти в экран выбора [S], найти пакет, в котором вы хотите сохранить> его текущее состояние, и нажать клавишу =' key (orH '). Изменения вступят в силу немедленно> после выхода из экрана выбора [S].

Примечание. Люди обнаружили проблемы с командой aptitude hold, поэтому имхо вы должны предпочесть команду dpkg для хранения пакета. Кроме того, вы можете удерживать пакет через графический интерфейс диспетчера пакетов Synaptic (Package> Lock Version). Я предпочитаю использовать dpkg, потому что он хорошо сработал для меня.

У вас уже есть хороший ответ для остальных, поэтому я не буду рисковать своим мнением по этому поводу.

Спасибо за дополнительную информацию! Я думаю, что теперь у меня есть все. :) Kim 14 лет назад 0
1
jack

Если вы скачиваете исходники с официального сайта, то через apt должен быть доступен сам пакет. Итак, вы можете скачать готовый пакет, изменить его и снова упаковать:

apt-get download your_package dpkg -x your_package_vesion.deb your_package_folder/ ... making changes in your_package_folder/ ... # extract all needed controles/scripts from existing deb to new dpkg -e your_package_vesion.deb your_package_folder/DEBIAN dpkg -b your_package_folder/ new_package_vesion.deb 

Источник с подробностями: http://sysadm.pp.ua/linux/deb-creation-edit.html

0
Journeyman Geek

Ну, это сводится к перекомпиляции. Если вам не нужна полная среда создания пакетов, одобренная Debian (правильный путь), я обычно использую checkinstall для быстрого и грязного создания пакетов (простой способ) - это не рекомендуемый Debian способ, но намного проще, чем другой способ. настройте, затем сделайте, и замените makeinstall на checkinstall. Затем установите новый пакет с помощью sudo dpkg -i