Как я могу вернуться из обновления в Предлагаемый репозиторий?
Я по ошибке включил репозиторий Pre-release updates (natty-предложил), а затем обновил все пакеты.
Как я могу отменить это?
Вот результаты теста из инструкций @enzotib и результаты теста из моих инструкций.
6 ответов
Вот более общий способ возврата из локально установленных пакетов, предложенных пакетов и пакетов с обратным портом в канал стабильных обновлений. Хотя остальные ответы верны и работают аналогичным образом, я думаю, что это более элегантный подход.
- Убедитесь, что вы удалили записи
-proposed
или же-backports
в вашем/etc/apt/sources.list
а также/etc/apt/sources.list.d/*
файлы. Добавьте файл apt-предпочтений, например
/etc/apt/preferences.d/99-back-to-stable-updates
содержащий (дляprecise
здесь - замените на вашу версию):Package: * Pin: release a=precise Pin-Priority: 1001 Package: * Pin: release a=precise-updates Pin-Priority: 1001 Package: * Pin: release a=precise-security Pin-Priority: 1001 Package: * Pin: release a=precise-proposed Pin-Priority: -10 Package: * Pin: release a=precise-backports Pin-Priority: -10
Это закрепление> 1000 сделает apt force понижение для пакетов из этого канала и приоритет < 0 для
-proposed
а также-backports
каналы заставят удалить любые дополнительные пакеты тоже.Теперь беги
sudo apt-get update sudo apt-get dist-upgrade
Осмотрите предложенное решение, которое вам даст, и если вы считаете, что все в порядке, то примите это. Если вам нужно узнать, почему и на какую версию он будет понижен, проверьте это с помощью
apt-cache policy packagename
чтобы увидеть, какие версии доступны и что apt решит, является кандидатом на установку.Удалить
/etc/apt/preferences.d/99-back-to-stable-updates
снова файл, так как он больше не нужен.
Благодаря mlind
на форумах Ubuntu об этом увлечении закреплением в его посте более 5 лет назад - все же это выручило меня довольно хорошо сегодня.
На этой странице предполагается, что закрепление Apt может использоваться для понижения версии всего хранилища, используя тот факт, что приоритеты выводов выше 1000 могут вызвать понижение качества пакета.
Таким образом, одним из решений может быть временное увеличение на 1000 приоритетов по умолчанию для всех файлов пакетов, кроме тех, которые указаны в natty-proposed
репозиторий:
apt-cache policy | awk '
/^ [0-9]+ / {
p = $1;
getline;
r = $0;
if (r !~ /a=natty-proposed/) p += 1000;
print "Package: *\nPin: " r "\nPin-priority: " p "\n"
}
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed
(Примечание. Этот метод не может повысить приоритет файлов пакетов, чьи поля выпуска содержат запятые. См. Этот вопрос.)
После этого apt-get --simulate upgrade
может использоваться для проверки на успешное обнаружение понижения. После подтверждения того, что обнаружены правильные оценки, sudo apt-get upgrade
должно быть все, что нужно для выполнения понижения.
Когда понижение версии будет завершено, используйте Software Sources, чтобы отключить хранилище предварительных обновлений (предложено natty), а затем удалите временное увеличение приоритета:
sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed
Наконец, перезагрузите компьютер, чтобы все запущенные программы были его устаревшими версиями.
Я не могу найти более простое решение, чем следующее. Все же надеясь, что кто-то получит лучший ответ.
Следующий скрипт, который может выполнить понижение
#!/bin/bash
# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages
# run apt-cache policy on each of them, then elaborate with the awk script
apt-cache policy $(<all-packages) |
./get-prev-pkg-vers >old-versions
# install previous version of packages
sudo apt-get --simulate install $(< old-versions)
awk
сценарий, названный get-prev-pkg-vers
как следовать
#!/usr/bin/awk -f
/^[^ ]/ {
package = $1
gsub(":", "", package)
search_next = 0
}
/^ [^ ]/ {
installed = 0
version = $1
if (search_next == 1) {
print package "=" version
search_next = 0
}
}
/^ \*\*\* [^ ]/ {
installed = 1
}
/^ [^ ]/ {
branch = $3
if (installed == 1 && branch ~ /proposed/) {
search_next = 1
}
installed = 0
}
При запуске сценария предложенное хранилище НЕ должно быть отключено.
Не забудьте установить исполняемый бит в обоих скриптах.
Проблема этого подхода заключается в том, что все устаревшие пакеты будут установлены как установленные вручную (в том числе и те, которые были установлены автоматически).
Чтобы быть в безопасности, добавьте --simulate
возможность apt-get
в конце сценария bash.
Отмена всех пакетов из предложенного natty, вероятно, не нужна: большинство пакетов скоро будут обновлены до тех же версий через natty-updates.
В случае, если у вас есть проблема с одним пакетом, вы можете вернуть этот пакет, используя метод, представленный родителем (после отключения -proposed), или вы можете использовать sudo aptitude install packagename/natty
, Но что еще более важно, вы должны сообщить об ошибке в пакете. Мало кто на самом деле проверяет предложенное Natty, и если возникают регрессии (= новые проблемы), о них обязательно нужно сообщить. В противном случае они могут оказаться в обновлениях для всех пользователей Ubuntu. Так что если у вас есть какие-либо проблемы, пожалуйста, сообщите.
В Synaptic вы можете отключить хранилище для предложенных и обновить ваши источники. Затем вы увидите, что все пакеты, которые были обновлены, отображаются как локально установленные (поскольку их больше нет в репозиториях).
Теперь вам придется "понизить" эти пакеты. Выберите один за другим, и в верхнем меню выберите:
package > force version
(или Control+E)
Появится меню с доступными опциями. Я бы выбрал нижний номер версии для каждого пакета. Если вы допустили ошибку и в обычных репозиториях появилась более новая версия, она будет исправлена в более позднем обновлении.
Быстрое решение состоит в том, чтобы использовать команду purge-ppa, указывающую на porporated репозиторий, но не знаю, будет ли он работать с ними, я использовал его только для очистки внешних пакетов ppa и downgrade до официальных версий ubuntu. Я не рекомендую вам делать это в этом случае, может быть, кто-то знает, если это безопасный метод...
Я предложил предоставить функцию для понижения всех proposed
пакеты с простой поддерживаемой командой, эквивалентной ppa-purge
по адресу https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499 поскольку сообщения, представленные здесь, все еще представляют состояние системы.
"предложено" - понятно?