Як знизити версію пакету через 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>перераховані всі доступні версії. (г / т Спархак )
  • apt-mark hold <package-name> "утримує" пакет у поточній версії, запобігаючи автоматичним оновленням. (год / т Луїс де Суса )

58
Також використовуйте apt-cache showpkg <package-name>для переліку доступних версій.
Sparhawk

16
А потім ви також можете запустити: apt-mark hold <package-name>щоб уникнути автоматичного оновлення.
Luís de Sousa

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» - номер версії.


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 install ppa-purge

Потім ви можете видалити ppa за допомогою команди

sudo ppa-purge ppa: користувач / ppa-ім'я

це автоматично знизить програмне забезпечення до його оригінальної версії, що постачається з Ubuntu.


1
Це рішення просто не відповідає, якщо пакет має залежності, які також доведеться зменшити. Дякую!
і

1
Так, це рішення, яке найкраще працювало для зменшення робочого столу KDE / Plasma з kubuntu-ppa / backports - одне, що я помітив, - це .list файл PPA не повинен коментувати дебют, тому ppa-purge може посилатися на всі файли які потрібно видалити для очищення. Потрібно мені хвилинку, щоб зрозуміти, чому спочатку це не працює. Сподіваюся, що допомагає іншим людям!
AveryFreeman

10

Для пониження рівня потрібно виконати таку команду

 sudo apt-get install pkg_name=version

у своєму терміналі.

На місце versionпомістіть попередню версію, на яку ви хочете відновити версію.


Він не працює принаймні для 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


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/ тощо, залежно від ваших потреб.


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

sudo apt-show-versions -iСпершу слід запустити , якщо кеш пакету застарів.
jarno
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.