Как понизить пакет через apt-get?

309

Как я могу понизить пакет до более старой версии через apt-get?

Другие инструменты также приемлемы, но apt-getпредпочтительнее.

Занна
источник

Ответы:

307

Если у вас есть номер версии или целевой выпуск, вы можете apt-getвыбрать конкретную версию или целевой выпуск. Более подробную информацию можно найти на странице руководства apt-get . Вы также можете получить доступ из терминала, набравman apt-get

sudo apt-get install <package-name>=<package-version-number> ИЛИ ЖЕ

sudo apt-get -t=<target release> install <package-name>

команда для запуска Это может быть использовано для понижения пакета до определенной версии.

В комментариях было полезно указать, что

  • apt-cache showpkg <package-name>перечисляет все доступные версии. (ч / т Sparhawk )
  • apt-mark hold <package-name> «держит» пакет в текущей версии, предотвращая автоматическое обновление. (ч / т Луис де Соуза )
Махеш
источник
58
Также используйте apt-cache showpkg <package-name>список доступных версий.
Sparhawk
16
И после этого вы также можете запустить: apt-mark hold <package-name>чтобы избежать автоматических обновлений.
Луис де Соуза
4
Я обнаружил, что aptitudeпонизил зависимости лучше, чем apt-get.
Криспи
5
apt-cache policy <package-name>показывает только установленные и доступные версии
Майкл Лоутон
18
А что, если showpkgне показывает интересующую вас версию?
демонголем
104

ИСПОЛЬЗОВАНИЕ

apt-get install «pkg»=«version»

ИЛИ ЖЕ

sudo aptitude install «pkg»=«version»

Где «pkg» - это название пакета, а «version» - номер версии.

danorton
источник
3
когда я apt-get install pkg=versionнабираю apt-get, предложения удаляют почти половину всех установленных пакетов, что, конечно, не то, что я хочу сделать
Dfr
Как указано в (иначе идентичном) ответе с большим количеством голосов, это, кажется, один из ключевых случаев, когда работа aptitudeнамного лучше, чем apt-get. В моем случае apt-getкатегорически отклонил запрос на понижение версии, тогда как aptitudeуказал, что существуют другие pkgs, которые зависят от более новой версии (и, следовательно, требуют понижения в то же время).
sxc731
28

Если вы обновили программное обеспечение с помощью ppa, вы можете понизить его с помощью ppa-purge. Сначала вы должны установить, ppa-purgeиспользуя этот код:

sudo apt-get установить ppa-purge

Затем вы можете удалить ppa с помощью команды

sudo ppa-purge ppa: пользователь / имя ppa

это автоматически понизит версию программного обеспечения до его первоначальной версии, поставляемой с Ubuntu.

Apurba
источник
1
Это решение не имеет себе равных в случае, если пакет имеет зависимости, которые также должны быть понижены. Спасибо!
и
1
Да, это решение, которое лучше всего подействовало на меня для понижения рабочего стола KDE / Plasma с kubuntu-ppa / backports - одна вещь, которую я заметил, это то, что в файле .list PPA не должно быть закомментировано deb, поэтому ppa-purge может ссылаться на все файлы что нужно убрать для чистки. Мне потребовалась минута, чтобы понять, почему сначала это не сработало. Надеюсь, что это помогает другим людям!
AveryFreeman
10

Чтобы понизить рейтинг, вы должны выполнить команду вроде

 sudo apt-get install pkg_name=version

в вашем терминале.

Вместо того, чтобы versionпоставить предыдущую версию вы хотите понизить до.

rɑːdʒɑ
источник
Это не работает по крайней мере для linux-generic, который зависит от пакетов, которые также должны быть понижены. Я получаю paste.ubuntu.com/p/NWSmf2ZwTy
mymedia
9

На мой взгляд, вы должны сначала удалить или очистить пакет, например:

sudo apt-get remove <package>

или же

sudo apt-get purge <package>

Затем вы можете скачать версию, которую хотите установить, и сохранить ее в папке, например, abc.debв разделе « Загрузки». Откройте терминал, перейдите в папку с помощью cdкоманды и установите предыдущую версию, используя dpkg:

sudo dpkg -i abc.deb

Или есть небольшая утилита, которая вызывается, ppa-purgeесли вы хотите понизить версию пакетов, обновленных через PPA.

Смотрите эту ветку: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html

Theeternalflame
источник
3
Удаление пакета может удалить много зависимых, что приведет к непригодности системы. ppapurge звучит интересно, хотя.
введите
12
Можете ли вы объяснить, почему вы считаете, что мы должны сначала удалить пакеты (как отдельный шаг) перед установкой старых версий?
Элия ​​Каган
1
@temoto эта ссылка для понижения версий unstable-> testing-> stableчтобы не понижать версии отдельных пакетов.
Брайам
0

Этот вопрос старый, но Google привел меня сюда, и я не нашел простого решения, которое не требует ручной передачи версии при понижении пакета пакетов до более старой версии.

Так что, возможно, кому-то, кому это тоже нужно, тоже пригодится мое решение.

Существует инструмент под названием, apt-show-versionsкоторый показывает установленные версии.

Вы можете легко понизить все необходимые пакеты, настроив регулярное выражение, но вот оно:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

Вместо этого jessieвы можете использовать buster/ xenial/ etc в зависимости от ваших потребностей.

gudvinr
источник
Или автоматически уменьшится до уточненный установлен релиз: sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'). Я предпочитаю использовать -Fдля grepздесь.
Ярно
Вы должны запустить sudo apt-show-versions -iсначала, если кеш пакета устарел.
Ярно