Могу ли я сделать обновление в автоматическом или автоматическом режиме?

31

Как мне перейти на новую версию Ubuntu, не реагируя на запросы?

Я сейчас на 12.04 и хочу установить 12.10. Когда я запускаю обновление, оно обычно загружает материал, затем задает вопрос, устанавливает немного, задает вопрос и т. Д. Я оставляю это на ночь и иногда обнаруживаю, что обновление почти не прогрессирует. Я хотел бы просто начать процесс, уйти и закончить его через пару часов. У меня все в порядке с автоматическим обновлением файлов конфигурации в / etc и так далее. Итак, как запустить автоматическое обновление?

JDM
источник

Ответы:

42

Следующая команда обновляется до нового стабильного выпуска без запросов:

do-release-upgrade -f DistUpgradeViewNonInteractive

Следующая команда обновляется до текущей версии разработки без запросов:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

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

Возможно, вам придется использовать dpkg-reconfigureвпоследствии, если вы недовольны конфигурацией определенных пакетов, но большую часть времени у вас должно быть все в порядке.

Источник: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . В ссылке есть и другие способы сделать это.

JDM
источник
Пожалуйста, избегайте ссылок на контент по ссылкам, но также включайте соответствующую информацию, чтобы избежать потери информации, если сайт недоступен.
k0pernikus
Я сделал это, и все, казалось, работало, но после перезагрузки я получил только ошибку grub , поэтому вам, кажется, придется добавить еще несколько настроек grub после этого автоматического обновления. может быть с sudo apt-get install grub-emu?
rubo77 15.10.15
6
Это не работает для Trusty => Xenial. Тем не менее получите вопросы об измененных файлах / etc.
Виллем
Разве это не должно быть запущено с sudo?
Cerin
Что касается вопросов об измененных файлах / etc, здесь есть отличное решение: awaseroot.wordpress.com/2012/04/29/… . Запустите команду с помощью 'echo "y \ n \ ny \ ny \ ny \ n" | перед do-release-upgrade. Это семена ответов на вопросы. Добавьте много ответов, если в / etc есть много измененных файлов.
nmgeek
6

Просто чтобы подробно остановиться на предыдущих ответах, здесь показано, как удаленно сделать то же самое, что и принятый ответ, используя обновление без пароля по ssh, которое обновит ваш ящик до последней версии. Это скопировано из моей собственной записи в блоге .

Все эти шаги предполагают, что ваш репозиторий пакетов работает. Это означает, что если вы выполните обновление apt-get, вам не будет предоставлено 404 файла из-за устаревшей версии. Вы должны исправить это в первую очередь, так что посмотрите этот ответ для этого.

0. Обновите все существующие пакеты

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

1. Настройте выполнение без пароля

Добавление себя в список пользователей, которые могут выполнять do-release-upgrade с помощью sudo без ввода пароля, достигается путем выполнения

sudo visudo -f /etc/sudoers.d/do-release-upgrade.

и добавив следующую строку, подставив вместо my-username ваше собственное:

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2. Начните дополнительные обновления

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

while true; do 
    ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3. Установите файлы конфигурации в их прежнее состояние.

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

Не устраивает ответы по умолчанию?

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

oligofren
источник
5

Чтобы подтвердить, что Томас Уорд заявляет в своем ответе и противоречит принятому ответу, do-release-upgrade -d -f DistUpgradeViewNonInteractiveНЕ РАБОТАЕТ.

Фактически, в самом первом запросе он сломал мой тестовый раздел с 16 по 18 апреля, и мне пришлось отменить его. Вот где скрипт останавливается:

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

Из-за Входных Ингибиторов ни перезагрузка, ни выключение не будут работать после убийства сценария. Вы должны сделать холодное отключение (удерживайте кнопку питания ~ 10 секунд).

Слава богу, это было обновление клона 16.04, а не на настоящий раздел 16.04.


Чтобы сделать жизнь еще более интересной, в мой твердотельный накопитель NVMe был добавлен новый раздел на 898 МБ, и мои обычные разделы изменились:

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5 Раньше там, где находился мой раздел Ubuntu 16.04, но теперь он включен nvme0n1p7
  • nvme0n1p8 Раньше там был мой тестовый раздел 18.04, но теперь он включен nvme0n1p8

ПРИМЕЧАНИЕ. Я также обновил Windows 10 с Build 1709 до Build 1803 сегодня днем, поэтому вполне возможно, что он создал новый nvme0n1p5раздел размером 898 МБ в ntfsформате.

WinEunuuchs2Unix
источник
Это большое, так что вы должны сообщить об этом на Launchpad. Ранее использовали неинтерактивный способ через несколько обновлений дистрибутива
oligofren
обновили и Ubuntu, и Windows на одной коробке в один и тот же день? Вы должны наслаждаться болью
JDS
@JDS Windows сломалась. 1700 обновлений не хватает, все виды разбитых зависимостей Python 2 против Python 3. Я удалить и переустановить Ubuntu 16.04 из Windows Store вздыхать .
WinEunuuchs2Unix
2

Вы можете сделать это через терминал, используя sudo apt-get -y upgrade. Это ответит «да» на все запросы. Однако он не будет запускаться автоматически, поэтому вы должны его запустить. Это должно работать. AFAIK нет способа использовать менеджер обновлений GUI для автоматического обновления программного обеспечения ( это НЕ то же самое, что обновление выпуска! )

Если вы пытаетесь перейти на другую версию Ubuntu (то есть обновление выпуска и, как правило, следующий выпуск в ряду выпусков, относящихся к вашей версии Ubuntu), вы должны активировать ее вручную . sudo do-release-upgradeможет работать. Там нет способа пропустить прошлые запросы, хотя. Вот почему вы инициируете обновления, когда вы собираетесь быть рядом с такими приглашениями - будут приглашения.

Томас Уорд
источник
1
Msgstr "Нет способа пропустить прошлые запросы, хотя". Что насчет флага DistUpgradeViewNonInteractive? Это пропускает подсказки.
oligofren
1
@oligofren Thomas прав, потому что -f DistUpgradeViewNonInteractiveflag заставляет скрипт блокироваться при первой (Y/I/N/O/D/Z)подсказке. Смотрите мой ответ, который я только что опубликовал.
WinEunuuchs2Unix
-4

Попробуйте добавить -yопцию, apt-getно знайте, что она ответит на yвсе запросы.

блоггер
источник
1
Я использую графический менеджер обновлений, а не apt-get. Я мог бы выполнить обновление в консоли, но я слышал, что «apt-get dist-upgrade» не работал годами (для обновления между выпусками), поэтому команда не будет «apt-get».
JDM
@jdm apt-get dist-upgradeдолжен работать нормально. Где ты здесь больше не работает?
Сет
3
@Seth apt-get dist-upgradeсейчас не работает и никогда в своей операционной системе не производила обновление релиза самостоятельно. См man apt-get. upgradeобновляет только те пакеты, которые могут быть обновлены без каких-либо новых или удаленных пакетов. dist-upgradeобновляет пакеты, даже если это означает, что пакеты удалены или добавлены. Это в основном полезно для выполнения обычных обновлений - например, upgradeне будет обновлять ядра.
Элия ​​Каган
2
Если sources.listперейти к архивам следующего выпуска, а затем запустить apt-get dist-upgrade, в случае успеха выполнится обновление выпуска. Это поддерживается в Debian, хотя рекомендуется использовать aptitude dist-upgradeвместо этого из-за более продвинутого разрешения зависимостей. В Ubuntu ничего подобного не поддерживается вообще , хотя это может быть успешным. Вместо этого для обновления до более поздней версии в командной строке, do-release-upgradeиспользуется. Эта утилита не принимает -yфлаг, поэтому этот ответ не относится к ситуации обновления до новой версии .
Элия ​​Каган
Да, интересно. Должно быть, я тогда читал о Debian.
Сет