Bisakah saya melakukan Upgrade Rilis Senyap atau Tanpa Pengawasan?

31

Bagaimana cara meningkatkan ke versi Ubuntu baru tanpa harus bereaksi terhadap prompt?

Saya di 12,04 sekarang dan ingin menginstal 12.10. Ketika saya memulai pembaruan, biasanya mengunduh hal-hal, kemudian mengajukan pertanyaan, menginstal sedikit, mengajukan pertanyaan, dll. Saya membiarkannya dalam semalam dan kadang-kadang menemukan bahwa itu membuat hampir tidak ada kemajuan memperbarui. Saya hanya ingin memulai proses, pergi dan menyelesaikannya setelah beberapa jam. Saya baik-baik saja dengan itu secara otomatis memperbarui file konfigurasi di / etc dan seterusnya. Jadi bagaimana cara memulai peningkatan tanpa pengawasan?

jdm
sumber

Jawaban:

42

Perintah berikut meningkatkan ke rilis stabil baru tanpa diminta:

do-release-upgrade -f DistUpgradeViewNonInteractive

Perintah berikut meningkatkan ke rilis pengembangan saat ini tanpa diminta:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

Saya belum mengujinya, tetapi tampaknya hanya melakukan tindakan default ketika pertanyaan muncul. Ini juga akan menghilangkan skrip jika mereka menggantung terlalu lama.

Anda mungkin harus menggunakannya dpkg-reconfiguresetelah itu jika Anda tidak puas dengan konfigurasi paket-paket tertentu, tetapi sebagian besar waktu Anda seharusnya baik-baik saja.

Sumber: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ . Di tautan ada juga cara lain untuk melakukan ini.

jdm
sumber
Harap hindari merujuk konten dari tautan tetapi sertakan informasi yang relevan juga untuk menghindari informasi yang hilang jika situs tidak dapat dijangkau.
k0pernikus
Saya melakukan ini dan semuanya tampak bekerja, tetapi setelah reboot saya hanya mendapatkan kesalahan grub , jadi Anda tampaknya harus menambahkan beberapa konfigurasi grub setelah peningkatan tanpa pengawasan ini. mungkin dengan sudo apt-get install grub-emu?
rubo77
6
Ini tidak berfungsi untuk Trusty => Xenial. Masih mendapatkan pertanyaan tentang file / etc yang dimodifikasi.
Willem
Bukankah ini harus dijalankan dengan sudo?
Cerin
Mengenai pertanyaan tentang file modifikasi / etc, ada solusi keren di sini: awaseroot.wordpress.com/2012/04/29/… . Jalankan perintah dengan 'echo "y \ n \ ny \ ny \ ny \ n" | 'Di depan do-release-upgrade. Itu biji jawaban untuk pertanyaan. Tambahkan banyak jawaban jika ada banyak file yang dimodifikasi di / etc.
nmgeek
6

Hanya untuk memperluas jawaban sebelumnya, berikut adalah cara melakukan hal yang sama dari jarak jauh dengan jawaban yang diterima, menggunakan pemutakhiran tanpa kata sandi di atas ssh yang akan membuat kotak Anda ditingkatkan ke versi terbaru. Itu disalin dari entri blog saya sendiri .

Semua langkah ini menganggap repositori paket Anda berfungsi. Berarti jika Anda menjalankan pembaruan apt-get, Anda tidak mendapatkan banyak 404 karena memiliki versi yang sudah ketinggalan zaman. Anda harus memperbaikinya terlebih dahulu, jadi lihat jawaban ini untuk itu.

0. Perbarui semua paket yang ada

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

1. Atur eksekusi tanpa kata sandi

Tambahkan diri Anda ke daftar pengguna yang dapat menjalankan do-release-upgrade menggunakan sudo tanpa memasukkan kata sandi yang dicapai dengan mengeksekusi

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

dan menambahkan baris berikut, mengganti nama pengguna saya dengan nama Anda sendiri tentu saja:

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

2. Mulai peningkatan bertahap

Logout dan jalankan perintah berikut dari komputer Anda. Ini akan melakukan peningkatan tanpa meminta Anda untuk memasukkan (menerima semua jawaban default), menunggu komputer untuk reboot, dan kemudian mencoba memutakhirkan lagi. Ini berjalan sampai Anda ditingkatkan ke versi terbaru.

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

3. Perbaiki file konfigurasi ke keadaan sebelumnya

Setelah itu Anda harus memindahkan file konfigurasi yang dicadangkan ke lokasi sebelumnya karena proses pemutakhiran telah menempatkan konfigurasi default di tempatnya.

Tidak puas dengan jawaban default?

Orang ini memiliki cara untuk menyiapkan jawaban untuk setiap prompt, tetapi downside adalah bahwa Anda harus tahu berapa banyak prompt yang ada ...

oligofren
sumber
5

Untuk mengkonfirmasi apa yang dinyatakan Thomas Ward dalam jawabannya dan bertentangan dengan jawaban yang diterima, do-release-upgrade -d -f DistUpgradeViewNonInteractiveJANGAN BEKERJA.

Bahkan pada prompt pertama itu rusak 16,04 saya untuk 18,04 tes partisi rusak dan saya harus membatalkannya. Di sinilah script membeku:

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...

Karena Inhibitor Input, reboot atau shutdown tidak akan berfungsi setelah membunuh skrip. Anda harus melakukan shutdown dingin (tahan tombol power ~ 10 detik).

Syukurlah ini adalah peningkatan klon 16,04 dan bukan pada partisi 16,04 yang sebenarnya.


Untuk membuat hidup lebih menarik, partisi 898 MB baru ditambahkan ke NVMe SSD saya dan partisi reguler saya bergeser:

$ 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 Dahulu tempat partisi Ubuntu 16.04 saya tinggal tetapi sekarang sudah aktif nvme0n1p7
  • nvme0n1p8 Dulu di tempat partisi uji 18,04 saya berada tetapi sekarang aktif nvme0n1p8

CATATAN: Saya juga memutakhirkan Windows 10 dari Build 1709 ke Build 1803 sore ini sehingga mungkin ia menciptakan nvme0n1p5partisi 898 MB baru dalam ntfsformat.

WinEunuuchs2Unix
sumber
Itu besar, jadi Anda harus melaporkannya di Launchpad. Menggunakan cara non-interaktif melalui beberapa peningkatan distribusi sebelumnya
oligofren
memutakhirkan ubuntu dan windows di kotak yang sama pada hari yang sama? Anda harus menikmati rasa sakit
JDS
@ JDS Windows borked. 1700 upgrade hilang, semua jenis dependensi rusak Python 2 vs Python 3. Saya harus menghapus dan menginstal ulang Ubuntu 16.04 dari Windows Store mendesah .
WinEunuuchs2Unix
2

Anda dapat melakukan ini melalui terminal, menggunakan sudo apt-get -y upgrade. Ini akan menjawab "ya" untuk semua konfirmasi. Ini tidak akan berjalan secara otomatis, jadi Anda harus menjalankannya. Itu harus bekerja. AFAIK tidak ada cara untuk menggunakan manajer pembaruan GUI untuk melakukan peningkatan tanpa pengawasan ke perangkat lunak ( ini BUKAN sama dengan upgrade rilis! )

Jika Anda mencoba meningkatkan ke versi Ubuntu yang berbeda (alias upgrade rilis , dan biasanya rilis berikutnya dalam garis rilis relatif terhadap versi Ubuntu Anda), Anda harus mengaktifkannya secara manual . sudo do-release-upgradedapat bekerja. Tidak ada cara untuk melewati permintaan sebelumnya. Inilah sebabnya mengapa Anda memulai pemutakhiran ketika Anda akan berada di sekitar untuk permintaan tersebut - akan ada konfirmasi.

Thomas Ward
sumber
1
"Namun, tidak ada cara untuk melewatkan permintaan sebelumnya". Bagaimana dengan flag DistUpgradeViewNonInteractive? Itu melewatkan petunjuknya.
oligofren
1
@oligofren Thomas benar karena -f DistUpgradeViewNonInteractiveflag menyebabkan skrip terkunci pada (Y/I/N/O/D/Z)prompt pertama . Lihat jawaban saya, saya baru saja memposting.
WinEunuuchs2Unix
-4

Coba tambahkan -yopsi apt-gettetapi ketahuilah bahwa itu akan menjawab ysemua pertanyaan.

blogger
sumber
1
Saya menggunakan manajer pembaruan grafis, bukan apt-get. Saya bisa melakukan pembaruan di konsol, tapi saya pernah mendengar 'apt-get dist-upgrade' tidak berfungsi selama bertahun-tahun (untuk memutakhirkan di antara rilis), jadi perintahnya bukan 'apt-get'.
jdm
@ JDM apt-get dist-upgradeharus bekerja dengan baik. Di mana Anda di sini tidak bekerja lagi?
Seth
3
@Seth apt-get dist-upgradetidak sekarang dan belum pernah, dalam sistem operasi apa pun, melakukan pembaruan rilis sendiri. Lihat man apt-get. upgradehanya memutakhirkan paket yang dapat ditingkatkan tanpa paket yang baru diinstal, atau dihapus instalasinya. dist-upgradememutakhirkan paket bahkan ketika itu berarti paket dihapus atau ditambahkan. Ini terutama berguna untuk melakukan pembaruan biasa - misalnya, upgradetidak akan memperbarui kernel.
Eliah Kagan
2
Mengubah sources.listuntuk menunjuk ke arsip rilis berikutnya dan kemudian menjalankan apt-get dist-upgradeakan, jika berhasil , melakukan peningkatan rilis. Ini didukung di Debian meskipun disarankan untuk digunakan aptitude dist-upgradesebagai gantinya karena resolusi ketergantungan yang lebih maju. Di Ubuntu, tidak ada yang seperti ini yang didukung sama sekali , meskipun mungkin berhasil. Sebagai gantinya, untuk meningkatkan ke rilis berikutnya di baris perintah, do-release-upgradedigunakan. Utilitas itu tidak mengambil -ybendera, jadi jawaban ini tidak berlaku untuk situasi peningkatan ke rilis baru .
Eliah Kagan
Hah, menarik. Saya pasti sudah membaca tentang Debian.
Seth