Bagaimana cara menginstal pembaruan melalui baris perintah?

692

Ketika saya masuk ke server web saya melalui SSH saya melihat informasinya:

88 packages can be updated.
80 updates are security updates

Aku mencoba apt-get updatekemudian apt-get upgrade, tapi setiap kali saya log in saya masih melihat pesan tentang pembaruan. Bagaimana cara menginstalnya?

Marlin
sumber
1
Apakah Anda mencoba ini dulu: sudo apt-get clean ini seharusnya membersihkan cache.
user2635584

Jawaban:

870

Gunakan ini:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

Dokumentasi tentang setiap aptopsi dapat ditemukan di halaman manual untuk apt . Ini juga tersedia dengan menjalankan man aptdi terminal Anda.

Penggunaan keduanya upgradedan full-upgradebersama - sama biasanya tidak diperlukan, tetapi mungkin dapat membantu dalam beberapa kasus: lihat dokumentasi Debian tentang Peningkatan dari Debian 9 .

TuanCharlo
sumber
29
Haruskah saya selalu memulai kembali sudo rebootsetelah itu?
hellboy
1
Saya perlu menambahkan -y agar berfungsi. Ubuntu 17.10
T04435
125

Jalankan semua perintah dengan mengetik sudosekali:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

atau

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

atau bahkan lebih pendek dalam for loop (Terima kasih @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'
Benny
sumber
3
Anda dapat menggabungkan dist-upgradedan autoremoveoleh apt-get dist-upgrade --auto-remove.
jarno
3
Tidak perlu menjalankan keduanya upgradedan dist-upgrade.
jarno
3
@jarno dist-upgradedapat menghapus paket. Penggunaan upgradepertama mungkin menghindari ini, seperti ketika versi paket baru lebih mudah memenuhi dependensi daripada yang lama. Saya tidak tahu seberapa sering ini membantu ketika meningkatkan paket dalam rilis Ubuntu yang stabil, tetapi direkomendasikan dalam beberapa konteks lain . Secara pribadi, saya jarang menggunakan dist-upgradeUbuntu, dan ketika saya melakukannya, saya tidak pernah lulus -y. Tetapi jika seseorang ingin berlari dist-upgradedan lulus -y, saya pikir masuk akal untuk melakukan upgradetindakan terlebih dahulu.
Eliah Kagan
1
@ Jarno sementara Anda dapat berantai --autoremovebersama dengan perintah pemutakhiran pilihan Anda, itu tidak disarankan karena hal itu dapat mengakhiri Anda dengan keadaan yang tidak bersih ketika salah satu paket gagal. Yang lebih baik adalah menggunakan autoremovesendiri pada baris yang terpisah setelah proses pembaruan selesai, jika Anda ingin membersihkan file konfigurasi lama juga Anda dapat rantai ini dengan --purge.
Videonauth
@ Video Oh, itu tergantung bagaimana aptditerapkan. Saya pikir itu harus diimplementasikan agar tidak meninggalkan sistem dalam keadaan najis.
jarno
91

Ini adalah perilaku normal.

Pesan yang Anda lihat pada login telah ditambahkan ke status server 'Message-Of-The-Day', yang hanya diperbarui setiap hari kalender (atau pada boot server / startup). Lihat isinya, gunakan

cat /etc/motd

Masih melihat pembaruan yang sama tersedia, setelah berjalan

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

yang diharapkan. Jika Anda menjalankan kembali perintah ini, Anda hanya akan diminta untuk pembaruan lebih lanjut jika pembaruan lebih baru (lebih baru) telah dirilis.

david6
sumber
Saya memperhatikan bahwa setiap perubahan file di seluruh sistem tidak muncul hingga hari kalender berikutnya, apakah ada cara seperti "menyegarkan" untuk mulai melihat perubahan segera?
aljuaid86
Apakah yang Anda maksud pembaruan untuk konten Message-Of-The-Day , atau tidak mendapatkan apa yang Anda inginkan setelah berjalan sudo apt-get update && sudo apt-get upgrade?
david6
3
Ini tidak lagi berlaku pada 16.04. Setelah "apt-get dist-upgrade" dan reboot saya melihat "0 paket dapat ditingkatkan".
Bogdan Calmac
1
Pernyataan '.. atau di server reboot ..' di atas tidak mencakup hal itu.
david6
3
cat: / etc / motd: Tidak ada file atau direktori seperti itu
xApple
11

Setelah Anda masuk ke server Anda, jalankan perintah di bawah ini.

sudo apt-get upgrade

Seharusnya melakukan trik. Mungkin Anda hanya perlu me-restart server Anda.

Mitch
sumber
3
Terima kasih atas jawaban Anda, tetapi saya sudah mencoba peningkatan sudo apt-get. Restart server tidak ada pertanyaan karena saya punya situs di dalamnya.
Marlin
3
jika Anda menginstal pembaruan yang secara langsung memengaruhi kernel atau pembaruan driver atau pembaruan keamanan yang kritis, Anda perlu memulai ulang server.
Evandro Silva
Mungkin Anda harus mempertimbangkan kesalahan 503 selama satu menit. Apakah Anda tahu pembaruan seperti apa ini?
NorTicUs
1
Bagaimana Anda bisa memberi 503 jika server sedang offline?
mcont
8

Dalam kasus saya, saya memiliki URL yang salah atau tidak dapat diakses di /etc/apt/sources.list. Setelah menghapus URL ini, saya berhasil memperbarui semua paket.

Perintah:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade
burtsevyg
sumber
7

Solusi saya (sangat terlambat, saya suka lencana ahli nujum :-)):

  1. Instal wajig (sekali):

    sudo apt-get install wajig 
    
  2. Ketika Anda ingin memperbarui / meningkatkan sepenuhnya sistem Anda

    wajig dailyupgrade
    

    (ia akan meminta kata sandi jika diperlukan, dan melakukan semua langkah pembaruan, peningkatan, peningkatan, dan penghapusan otomatis untuk Anda).

Rmano
sumber
1

skrip ini berguna untuk mengotomatisasi pembaruan termasuk menghapus paket yang tidak dibutuhkan dan melakukan reboot hanya jika OS menginginkannya

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

untuk berjalan di kotak lokal Anda cukup tinggalkan baris pertama melakukan ssh

di sini ada alias yang saya simpan di ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

maka pada terminal saya hanya mengeluarkan doit

Scott Stensland
sumber
0

Jika Anda menjalankan apt-get updatelagi setelah apt-get upgradedisimpulkan, pesan-pesan di ssh login harus pergi.

Francisco Luz
sumber