Как подделать установленную версию пакета?

Будучи первопроходцем и используя ежедневные сборки 11.04, я иногда сталкиваюсь с ситуацией, когда некоторым пакетам требуются более ранние версии пакетов, чем те, которые я установил. Обычно более новые (но отказанные) версии необходимых пакетов предоставляют все функциональные возможности своих старых версий.

Если я использую dpkg -i --force-depends-version для установки зависимых пакетов, все работает нормально, я никогда не видел проблем.

Вместо того, чтобы вручную загружать и устанавливать каждый пакет, могу ли я просто заставить систему притворяться, что установлена ​​конкретная версия пакета, когда есть более новая? Или есть --force-depends-version эквивалент ключа для apt-get?

30
задан 6 November 2011 в 01:35

2 ответа

Вы можете использовать пакет equivs, чтобы создать фиктивный пакет для подделки устанавливаемого пакета. Некоторые инструкции здесь.

18
ответ дан 6 November 2011 в 01:35

Несмотря на то, что ответ уже принят, встраивание принятого лучше передает процесс:

  1. Существует пакет Debian под названием Equivs , который может создавать фиктивные пакеты. Установите его, запустив sudo apt-get install -y Equivs

  2. После установки вы создаете "контрольный" файл шаблона, используя следующую команду: Equivs-control postfix (замените postfix на имя вашего пакета). В моем случае я мог бы использовать другое имя пакета, например postfix-custom или что-то еще, но мой собственный пакет выполнен или Предоставляет установочную зависимость postfix (снова заменяя postfix для любого пакета, который вы хотите.

  3. После создания файла управления шаблоном я обычно удаляю многие закомментированные операторы (операторы, начинающиеся с # ). Я предпочитаю оставить именно Обеспечивает: утверждение, в котором я могу сказать, что мой пакет предоставляет возможности, предлагаемые другим пакетом, который я пытаюсь подделать, например Обеспечивает: postfix сообщает механизму разрешения зависимостей Debian / Ubuntu, что мой пакет - с любым именем - предоставляет те же возможности, что и целевой пакет, опять же postfix или что-то еще. Это позволяет мне называть свой пакет независимо от целевого пакета, чтобы избежать путаницы. Erlang Factory делает это со своими вещами, например esl-erlang предоставляет erlang .

  4. Наконец, после создания файла управления шаблоном вы используете Equivs-build для создания поддельного пакета, например Equivs-build /path/to/generated/control/file[1160833 visible.

  5. Сборка пакета занимает несколько секунд, а затем вы можете запустить sudo dpkg -i my_package_name * .deb

Для опытных пользователей: если ваш файл управления шаблоном имеет строку зависимости Requires: , вы можете использовать такой инструмент, как gdebi , чтобы установить свой пакет, а также различные пакеты, которые он объявляется как зависимости.

29
ответ дан 6 November 2011 в 01:35

Другие вопросы по тегам:

Похожие вопросы: