Как я могу вернуться из обновления в Предлагаемый репозиторий?


23

Я по ошибке включил репозиторий Pre-release updates (natty-предложил), а затем обновил все пакеты.

Как я могу отменить это?

Вот результаты теста из инструкций @ enzotib и результаты теста из моих инструкций .


1
Результаты теста Pastebins мертвы.
энзотиб

Ответы:


24

Вот более общий способ возврата из локально установленных пакетов, предложенных пакетов и пакетов с обратным портом в канал стабильных обновлений. Хотя остальные ответы верны и работают аналогичным образом, я думаю, что это более элегантный подход.

  1. Убедитесь, что вы удалили записи -proposedили -backportsв ваших /etc/apt/sources.listи /etc/apt/sources.list.d/*файлов.
  2. Добавьте файл 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 составит склонное сила понижения рейтинга на пакеты из этого канала и приоритет <0 на -proposedи -backportsканалах будут делать удалять любые дополнительные пакеты тоже.

  3. Теперь беги

    sudo apt-get update
    sudo apt-get dist-upgrade
    

    Осмотрите предложенное решение, которое вам даст, и если вы считаете, что все в порядке, то примите это. Если вам нужно выяснить, почему и на какую версию он будет понижен, отметьте это, apt-cache policy packagenameчтобы узнать, какие версии доступны и что apt решит, является ли кандидатом на установку.

  4. Удалите /etc/apt/preferences.d/99-back-to-stable-updatesфайл еще раз, так как он больше не нужен.

Спасибо mlindна форумах Ubuntu за эту страсть к закреплению в его посте более 5 лет назад - но сегодня он мне очень помог.


Я полагаю, это должно работать и с Debian. К сожалению, это ничего не делает для меня: /
Michael

@Michael 1) У Debian нет концепции официально предложенных репозиториев. 2) Этот сайт посвящен Ubuntu, а не Debian. Я хотел бы предложить вам , чтобы задать новый вопрос о Unix.SE .
gertvdijk

Это решение также работало с версией «xenial»! (после замены точного на xenial в файле, конечно) Большое спасибо!
Морхук

4

На этой странице предполагается, что закрепление 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

Наконец, перезагрузите компьютер, чтобы все запущенные программы были его устаревшими версиями.


1
Интересное решение, вероятно, лучшее и более общее, чем мое. Кстати, количество пониженных пакетов одинаково, что подтверждает правильность обоих подходов.
энзотиб

2

Я не могу найти более простое решение, чем следующее. Все же надеясь, что кто-то получит лучший ответ.

Следующий скрипт, который может выполнить понижение

#!/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.


2

Отмена всех пакетов из предложенного natty, вероятно, не нужна: большинство пакетов скоро будут обновлены до тех же версий через natty-updates.

В случае, если у вас есть проблема с одним пакетом, вы можете вернуть этот пакет, используя метод, представленный родителем (после отключения -proposed), или можете использовать sudo aptitude install packagename/natty. Но что еще более важно, вы должны сообщить об ошибке в пакете. Мало кто на самом деле проверяет предложенное Natty, и если возникают регрессии (= новые проблемы), о них обязательно нужно сообщить. В противном случае они могут оказаться в обновлениях для всех пользователей Ubuntu. Так что если у вас есть какие-либо проблемы, пожалуйста, сообщите.


1

В Synaptic вы можете отключить хранилище для предложенных и обновить ваши источники. Затем вы увидите, что все пакеты, которые были обновлены, отображаются как локально установленные (поскольку их больше нет в репозиториях).

Теперь вам придется «понизить» эти пакеты. Выберите один за другим, и в верхнем меню выберите:

package > force version

(или Control + E)

Появится меню с доступными опциями. Я бы выбрал нижний номер версии для каждого пакета. Если вы допустили ошибку и в обычных репозиториях появилась более новая версия, она будет исправлена ​​в более позднем обновлении.

Быстрое решение состоит в том, чтобы использовать команду purge-ppa, указывающую на встроенный репозиторий, но не знаю, будет ли он работать с ними, я использовал его только для очистки внешних пакетов ppa и downgrade до официальных версий Ubuntu. Я не рекомендую вам делать это в этом случае, может быть, кто-то знает, если это безопасный метод ...


Последний абзац является только предположением и поэтому должен быть комментарием к вопросу или исследован должным образом.
Карл Рихтер

0

Я предложил предоставить функцию для понижения всех proposedпакетов с помощью простой поддерживаемой команды, эквивалентной по ppa-purgeадресу https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499, поскольку сообщения, представленные здесь, по-прежнему представляют состояние системы.

«предложено» - понятно?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.