У меня есть несколько меза пакетов, которые я обновил до версии PPA, прежде чем очистить PPA, чтобы я мог обновить свою систему. Различия в версиях незначительны (технически они одинаковы, только один набор библиотек был из git, а остальные - окончательные версии).
Если я попытаюсь понизить рейтинг через Synaptic, apt-get или aptitude, я попаду в ад зависимости.
Есть ли способ понизить пакеты вручную (возможно, один за другим) и пометить их зависимые пакеты как неподвижные (если это имеет смысл), пока я не закончу?
PS этот вопрос: как понизить пакет через apt-get? немного отличается и не помогает в этой ситуации.
apt
dpkg
dependencies
downgrade
RolandiXor
источник
источник
ppa-purge
первый?synaptic
пакет. Например, если вы используете , когда вы выбираете пакет xyz, все зависимости будут выбраны по умолчанию. Но вы всегда можете отменить выбор всех зависимостей и просто установить основной пакет. Позже вы можете установить все зависимости. Но снова, это работает, только если вы готовы переустановить.Ответы:
Я никогда не играл с этим раньше, но я бы предложил вам
hold
(илиlock
) версию зависимостей, которые доставляют вам неприятности. Этот способapt
имеет более ограниченное число возможных решений и, возможно, не запутается, когда вы попытаетесь понизить версию других пакетов.Если больше ничего не работает, вы можете воспользоваться ручным подходом, предложенным в этом ответе: Как понизить пакет через apt-get? , В основном, скачать необходимые
.deb
пакеты вручную, а затем установить их по одному с помощью более низкого уровняdpkg
и один из его аргументов насильственных:--ignore-depends
,--force-depends
,--force-depends-version
, или даже--force-all
.В том же духе, что и выше, у вас есть
--force-downgrade
аргумент:Но это предполагает, что вы прочитали
man dpkg
и понимаете, что делаете:См. Ошибка: номер версии не начинается с цифры и Как установить более старую версию Java и Как установить более старую версию пакета, например, Liquid 2.2.2? для примеров:
И посмотрите, как я могу установить пакет без установки некоторых зависимостей? например (вместе с соответствующим предупреждением):
Еще один подход заключается в создании фиктивного
.deb
пакета с использованиемequivs
пакета (и, возможно, немного другого имени). Затем установка фиктивного пакета должна позволить вам удалить «истинный» пакет, сохраняя при этом соответствующие deps, а затем установить более старую версию. Я не уверен, как именно это будет работать, но посмотрите подробности в этой теме: Как удалить deb, не удаляя его зависимости .источник
Вы можете сначала использовать,
apt-mark
чтобы пометить все зависимости целевого пакета (и, возможно, также рекомендованные / предложенные), установленные в системе, при ручной установке. После этого установите предыдущие версии программного обеспечения сapt-get
явным указанием версии.Чтобы получить список зависимостей, рекомендуемых и предлагаемых пакетов для target-package:
Пометка пакетов как установленных вручную :
(используйте это для всех зависимостей, рекомендует и предлагает.)
Удалить целевой пакет:
Чтобы увидеть список версий пакетов, которые вы можете понизить / обновить, используйте:
Установите целевую версию необходимого пакета:
или
PS. Если список зависимостей / рекомендуемых / предлагаемых пакетов, т. Е. Тех, которые должны быть помечены,
apt-mark
является большим, сохраните предполагаемый список упакованных выходных данныхapt-cache show <target-package-name>
в любом файле, скажем,/path/to/foo
и используйтеapt-mark
комбо в виде:источник
apt-cache policy <target-package-name>
для получения списка версий пакетов, которые вы можете понизить / обновить до ..Я только что прошел через боль в процессе обновления до версии пакета, выпущенной в апстриме, а затем решил перейти на более раннюю версию. Это было через частный репозиторий сопровождающих. В моем случае это все о том, чтобы опробовать последнюю версию systemd 233 (пока не выпущенную).
Ключ должен понимать, что вам нужно указать все пакеты, которые должны быть понижены. Если вы поймете это правильно, скорее всего, вы будете делать то, что хотите. Если вы что-то пропустите, apt скажет вам, что это действие приведет к удалению большого количества пакетов. Чтобы убедиться, что мы используем флаг '-s', чтобы попробовать понизить версию, прежде чем делать это.
Шаги, которые вам нужно предпринять, следующие:
1) Перечислите все зависимости, которые были обновлены до восходящего (используйте другое ключевое слово, если ваша ситуация отличается):
Это дает вам список пакетов с вышестоящим номером версии.
2) Перечислите правильную стабильную версию для каждого пакета:
3) Дважды проверьте все хорошо:
(не уверен, что --reinstall был необходим, кстати, но это то, что я сделал)
4) Удалите -s и сделайте это.
источник