7

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

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

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

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

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

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

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

  • Я запускаю Ubuntu 9.04, 32bit, меня не волнуют другие арки / версии на данный момент.
  • Рассматриваемый пакет - compiz-gnome.
  • Изменение очень незначительное и не добавляет никаких зависимостей.

5 ответов5

4

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

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

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

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

Код:

sudo apt-get source network-manager

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

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

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

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

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


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

4

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

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

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

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

Запустите debuild .

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

3

Ответ № 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 (or H'). Изменения вступят в силу немедленно> после выхода из экрана выбора [S].

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

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

1

Если вы скачиваете исходники с официального сайта, то через 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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .