
Я использую версию 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
для создания фиктивных пакетов, которые предоставляют недостающие пакеты.
Конечно, это работает только в том случае, если между установленными пакетами нет конфликтов.