Как избежать необходимости чинить сломанные пакеты?

Как избежать необходимости чинить сломанные пакеты?

Я использую версию rubygems, необходимую для запуска одного из приложений моего сервера, установленного следующим образом:

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

При каждом использовании aptitude хочет откатиться к старой версии rubygems (хранящейся в репозиториях.

Как мне сказать aptitude игнорировать эту проблему?

Мне бы хотелось получить решение с помощью командной строки, поскольку я использую сервер (Ubutun 10.04), поэтому это не дубликат:Скажите aptitude игнорировать сломанный пакет

решение1

Просто установите версию gems, необходимую вне apt. Это на самом делелучшетоже, потому что это будет в /usr/local/bin(то, что вы установили), а не /usr/binто, что должно быть для дистрибутива (то, что собрано в репозитории, из которого вы скачиваете). В этом случае дистрибутив, очевидно, пытается отклонить вашу версию gems.

Кроме того, элементы, установленные вместе с вашей версией Ruby Gems, вероятно, будут находиться в другом каталоге, расположенном выше ввключить-путькак /usr/local/shareа не /usr/lib. Это означает, что когда вы устанавливаете что-то с помощью /usr/local/bin/gemэтого, оно будет помещено в специальное место, которое не будет мешать устанавливаемым вещам /usr/bin/gem.

решение2

Я храню пакеты с помощью aptitude hold <package>. Я не уверен, работает ли это для предотвращения откатов, но попробовать стоит.

Вы также можете использовать dpkg: echo “<package> hold” | dpkg --set-selections

Ссылка

решение3

Если бы я был вами, я бы перекомпилировал (изменил) пакет, чтобы он не нарушал зависимости.

Потому что я не думаю, что существует приемлемый способ заставить dpkg/apt смириться с неудовлетворенными/сломанными зависимостями... поскольку именно для этого они и были созданы.

решение4

Вы можете использоватьequivsдля создания фиктивных пакетов, которые предоставляют недостающие пакеты.

Конечно, это работает только в том случае, если между установленными пакетами нет конфликтов.

Связанный контент