Satu perintah tunggal untuk memperbarui semuanya di Ubuntu?

15

Saya tahu bahwa ada tiga perintah untuk memperbarui dan kemudian memutakhirkan seluruh sistem, ini adalah:

  • sudo apt-get update # Mengambil daftar pembaruan yang tersedia
  • sudo apt-get upgrade # Tingkatkan paket-paket saat ini dengan ketat
  • sudo apt-get dist-upgrade # Menginstal pembaruan (yang baru)

Apakah ada perintah super-upgrade yang menggabungkan semua perintah ini menjadi satu?

JohnDoea
sumber
1
Tidak, Anda dapat melakukan paling banyaksudo apt-get update && sudo apt-get dist-upgrade
heemayl
Itu masih satu baris perintah! ;-)
Fabby
Bagi mereka yang akan tersandung pada pertanyaan ini suatu hari nanti, inilah yang terkait untuk dijalankan updatedan upgradesebagai one-liners askubuntu.com/a/1086022/295286
Sergiy Kolodyazhnyy

Jawaban:

23

Ada 3 pilihan yang layak:

  1. Anda dapat membuat skrip seperti berikut:

    #!/bin/bash
    set -e
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get dist-upgrade

    Sebutkan sesuatu seperti update.shdan tempatkan di dalamnya /usr/local/bindan kemudian buat skrip dapat dieksekusi dengan menjalankan:

    sudo chmod +x /usr/local/bin/update.sh
  2. Metode lain adalah membuat alias bash (dalam ~/.bashrc) atau di mana pun Anda biasanya menyimpan alias:

    alias update='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'
  3. Metode terakhir adalah dengan hanya merangkai 3 perintah bersama di commandline:

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

Beberapa pilihan ...

Referensi:

andrew.46
sumber
6
Ketika Anda menggunakan dist-upgradetidak ada gunanya melakukan upgradesebelumnya ..
heemayl
3
@ Heemayl: Secara teori ya. Dalam praktiknya ada kasus sudut di mana arahan dist-upgrademungkin gagal tetapi upgradediikuti oleh dist-upgradetidak. Hal ini sebagian besar disebabkan oleh bug definisi ketergantungan paket atau paket campuran dari rilis / distribusi / PPA yang berbeda. Jika seseorang hanya menggunakan paket dari repositori resmi Canonical untuk tepat satu rilis (default), kesalahan seperti itu harus sangat langka dan diperbaiki dengan cepat.
David Foerster
2
Ada juga varian mengesankan teman-teman dari # 3:for x in update {,dist-}upgrade; do sudo apt $x; done
Eli Barzilay
1
Pada langkah 1, apa yang dilakukan "set -e"?
karjedavpalaa
7

Jika Anda terganggu oleh terlalu banyak mengetik, Anda dapat mendefinisikan diri sendiri sebagai "alias". Ini bisa dilakukan misalnya dengan menambahkan baris ke akhir $HOME/.profileseperti Anda ini:

alias sau='sudo aptitude update && sudo aptitude upgrade'

(tentu saja Anda dapat mengganti "sau" dengan sesuatu yang lain - bagi saya itu adalah singkatan dari Sudo Apt-get Update). Setelah menyimpan file, buka shell baru (atau "sumber" file .profile kembali berjalan . $HOME/.profile. Sekarang Anda selalu dapat cukup mengetik "sau" untuk melakukan pekerjaan lengkap. Bekerja bagus untuk saya dengan beberapa mesin.

Izzy
sumber
Hm Saya kira saya hanya meminta seseorang untuk memberi tahu saya alias: P
polandeer
Ya, tapi itu satu-satunya cara untuk melakukannya dengan "perintah tunggal". Dan pertanyaan Anda tidak mengecualikan ini;)
Izzy
Rumit. Ngomong-ngomong, satu-satunya alasan saya bertanya adalah karena saya ingin mengerti lebih baik, bukan karena saya terlalu malas untuk menulis sudo aptitude update && sudo aptitude upgradeAlasan saya bertanya adalah karena Anda dapat melakukannya dengan pacman ( sudo pacman -Syu --noconfirm).
Polandia
Jika Anda harus sering melakukannya dan di banyak komputer, Anda senang setidaknya memiliki alias. Namun: apt-get updatememiliki parameter -u, sesuai dengan halaman manual yang menunjukkan pembaruan yang tersedia. Tidak mencoba apakah kemudian meminta untuk menerapkannya (tidak ada Ubuntu / Debian di dekat saya untuk memeriksa sekarang).
Izzy
7

Kami dapat memiliki perintah satu baris (tidak perlu skrip, cukup salin-tempel)

sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
  • update - memperbarui daftar paket tetapi tidak menginstal
  • upgrade - instal versi paket baru jika versi baru tersedia
  • full-upgrade - melakukan fungsi pemutakhiran tetapi akan menghapus paket yang diinstal saat ini jika ini diperlukan untuk memutakhirkan sistem secara keseluruhan (memperbaiki dependensi buruk lalu)
  • autoremove, autocleandan clean- bersihkan paket lama yang tidak diperlukan lagi
  • Opsi -ytidak meminta izin pada setiap langkah
João Pimentel Ferreira
sumber
3

Sayangnya, kedua perintah tersebut harus dijalankan secara terpisah.

Cormac O'Brien
sumber
2
sudo apt install unattended-upgrades

Ini adalah jalur terbaik. Semua solusi lain Anda harus mengetikkan satu baris berulang kali setiap hari. Ini benar-benar solusi satu perintah. Lihat dokumentasi apt resmi dari ubuntu!

Dengan mengedit .conffile dari paket ini, /etcAnda dapat mengatur frekuensi update, install, clean, autoremove...

Atau secara sederhana dan email termasuk pemberitahuan bahwa pembaruan tersedia dengan daftar nama paket

File log kecil yang bagus dihasilkan dengan setiap perubahan, dan saya membayangkan skrip kecil dapat ditulis sebagai ekstensi gui untuk muncul di notifikasi desktop juga (di luar topik haha)

bukan-coderp
sumber