Чи можу я здійснити беззвучне або ненавмисне оновлення версій?


31

Як оновити до нової версії Ubuntu без необхідності реагувати на підказки?

Я зараз на 12.04 і хотів би встановити 12.10. Коли я запускаю оновлення, він зазвичай завантажує матеріали, потім задає питання, трохи встановлює, задає питання тощо. Я залишаю це протягом ночі і іноді виявляю, що оновлення майже не просунулося. Я хотів би просто розпочати процес, піти і закінчити його через пару годин. Мені добре, що він автоматично оновлює конфігураційні файли в / etc тощо. Тож як почати без нагляду оновлення?

Відповіді:


42

Наступна команда оновлює новий стабільний випуск без підказок:

do-release-upgrade -f DistUpgradeViewNonInteractive

Наступна команда оновлення до поточного випуску розробки без підказок:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

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

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

Джерело: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-rely-automatic-non-interactive-upgrade/ . У посиланні також є інші способи зробити це.


Будь ласка, уникайте посилань на вміст із посилань, але включайте відповідну інформацію, а також щоб уникнути втрати інформації, якщо сайт недоступний.
k0pernikus

Я зробив це, і все, здавалося, спрацювало, але після перезавантаження я отримав лише помилку grub , тому вам, здається, доведеться додати ще кілька конфігурацій grub після цього без нагляду оновлення. може, з sudo apt-get install grub-emu?
rubo77

6
Це не працює для Trusty => Xenial. Все ще виникають питання щодо модифікованих файлів тощо.
Віллем

Чи не слід це робити із судо?
Серін

Що стосується питань про змінених файлах / і т.д., є круте рішення тут: awaseroot.wordpress.com/2012/04/29 / ... . Виконайте команду з "echo" y \ n \ ny \ ny \ ny \ n "| 'перед до-релізом-оновленням. Це насіння відповіді на запитання. Додайте багато відповідей у ​​випадку, якщо в / і т.д. є багато модифікованих файлів.
nmgeek

6

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

Усі ці кроки передбачають, що ваше сховище пакетів працює. Значить, якщо ви виконуєте оновлення apt-get, вам не представлено багато 404 з-за наявності застарілої версії. Потрібно це виправити спочатку, тому подивіться на це відповідь .

0. Оновіть усі існуючі пакети

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

1. Налаштуйте виконання без паролів

Додайте себе до списку користувачів, які можуть виконати до-реліз-оновлення за допомогою sudo без введення пароля, досягається виконанням

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

і додавши наступний рядок, замінюючи моє ім’я користувача своїм курсом:

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. Виправити конфігураційні файли до їх попереднього стану

Після цього вам доведеться перемістити резервні файли конфігурації до їх попереднього місця, оскільки процес оновлення поставив на їх місце конфігурації за замовчуванням.

Не задоволені відповідями за замовчуванням?

У цього хлопця є спосіб заздалегідь підготувати відповіді до кожного підказки, але недоліком є ​​те, що ви повинні знати, скільки підказок є…


5

Щоб підтвердити те, про що говорить Томас Уорд у своїй відповіді, і суперечить прийнятій відповіді, do-release-upgrade -d -f DistUpgradeViewNonInteractiveНЕ ПРАЦЮЄТЬСЯ.

Насправді в першому ж підказці він зламав мій тестовий розділ 16.04 - 18.04, і мені довелося його повторно використати. Тут сценарій заморожується:

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.


Щоб зробити життя ще цікавішим, до мого NVD-SSD було додано новий 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форматі.


Це все-таки велике, тому вам слід повідомити про це на Launchpad. Використовували не інтерактивний спосіб через кілька оновлень дистрибуції раніше
олігофрен

оновили і ubuntu, і windows на той самий ящик в той же день? ви повинні насолоджуватися болем
JDS

@JDS Windows зламалася. 1700 оновлень відсутнє, усі види розбитої залежності Python 2 проти Python 3. Мені потрібно стерти і перевстановити Ubuntu 16.04 із зітхання Windows Store .
WinEunuuchs2Unix

2

Це можна зробити через термінал, використовуючи sudo apt-get -y upgrade. Це відповість "так" на всі підказки. Однак він не запуститься автоматично, тому вам доведеться його запустити. Це має працювати. AFAIK немає способу використовувати менеджер оновлень графічного інтерфейсу для автоматичного оновлення програмного забезпечення ( це НЕ те саме, що оновлення версії! )

Якщо ви намагаєтесь оновити до іншої версії Ubuntu (він же оновлення випуску , і зазвичай наступний випуск у рядку випусків відносно вашої версії Ubuntu), вам потрібно активувати це вручну . sudo do-release-upgradeможе працювати. Неможливо, однак, пропустити минулі підказки. Ось чому ви ініціюєте оновлення, коли ви збираєтеся знаходитись навколо таких підказок - з'являться підказки.


1
"Неможливо пропустити попередні підказки". Що з прапором DistUpgradeViewNonInteractive? Це пропускає підказки.
олігофрен

1
@oligofren Томас має рацію, оскільки -f DistUpgradeViewNonInteractiveпрапор викликає замикання сценарію при першому (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прапор, тому ця відповідь не стосується ситуації оновлення до нового випуску .
Елія Каган

Так, цікаво. Я, мабуть, тоді читав про Дебіан.
Сет
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.