Pertanyaan Bagaimana saya bisa menginstal pembaruan keamanan hanya dari baris perintah?


sudo apt-get upgrade memasang semua pembaruan, bukan hanya pembaruan keamanan. Saya tahu bahwa saya dapat menggunakan Update Manager untuk memilih hanya pembaruan keamanan penting, tetapi apakah ada cara untuk melakukan ini dari baris perintah?


286
2017-07-28 22:50


asal


Saya tidak berpikir demikian. dist-upgrade mengambil seluruh sistem ke rilis baru. Saya berbicara tentang pembaruan sehari-hari, seperti yang Anda lihat di Update Manager. - mac9416
Oh, aku mengerti apa yang kamu katakan sekarang. Heh, saya menjalankan pembaruan apt-get begitu sering, saya mengetiknya tanpa berpikir. Terimakasih atas peringatannya! - mac9416
Anda ingin "apt-get dist-upgrade", bukan "apt-get upgrade". "Dist-upgrade" bukan untuk rilis baru (itu "do-release-upgrade" perintah terpisah). Menggunakan "dist-upgrade" berarti ia akan menangani perubahan dependensi paket-paket baru. Ini bisa menjadi penting. - Kees Cook
dist-upgrade adalah operasi normal yang dilakukan oleh Update Manager GUI. Untuk paket seperti kernel di mana ada linux-image-generic paket, tergantung pada gambar saat ini, misalnya linux-image-3.x.y-zz-generic (masing-masing versi yang merupakan nama paket terpisah), dist-upgrade (yang memungkinkan paket-paket baru untuk diinstal untuk memenuhi dependensi) akan melakukan upgrade ini, sedangkan upgrade akan menampilkan paket kernel sebagai hold-back. - chronitis
Mengejutkan bahwa tidak ada kebaikan apt-get berdasarkan jawaban untuk ini, mengingat betapa mencoloknya terdaftar di setiap server - Karthik T


Jawaban:


Paket upgrade tanpa pengawasan menyediakan fungsionalitas untuk menginstal pembaruan keamanan secara otomatis.

Anda dapat menggunakan ini, tetapi alih-alih mengkonfigurasi bagian otomatis Anda dapat menyebutnya secara manual. Untuk kasus ini, hal berikut harus dilakukan dengan tenang:

sudo unattended-upgrade

atau lebih banyak versi verbose, untuk mengendalikan bagaimana kelanjutannya

sudo unattended-upgrade -d

CATATAN: Saat Anda menghubungi tanpa pengawasan, Anda meninggalkan "s" di bagian akhir.

Ini mengasumsikan bahwa paket itu diinstal secara default, yang mungkin adalah. Jika tidak, lakukan saja:

sudo apt-get install unattended-upgrades

Lihat juga /usr/share/doc/unattended-upgrades/README.md.


267
2017-07-29 17:28



Untuk menonaktifkan eksekusi otomatis unattended-upgrade Anda mungkin perlu memodifikasi /etc/cron.daily/apt, tetapi tidak yakin itu "benar" untuk melakukannya - Jaime Hablutzel
catatan samping: untuk server Ubuntu 12.04.5 LTS, unattended-upgrades tidak diinstal secara default. - Raptor
Karena Anda melakukan ini dari baris perintah, gunakan -v untuk pesan info atau -d untuk pesan debug. Jika tidak, utilitas akan sangat sunyi, dalam hal ini Anda perlu memeriksa log masuk /var/log/unattended-upgrades. Anda juga bisa menggunakan --dry-run untuk mensimulasikan tetapi tidak benar-benar meningkatkan apa pun. Untuk info lebih lanjut dan opsi lainnya, gunakan --help untuk mendapatkan pesan bantuan. - ADTC
saya belajar beberapa hal unattended-upgrades hari ini. Terima kasih! - the0ther
"untuk memantau bagaimana kelanjutannya", itu hanya men-debug pesan non-interaktif kan? - Aquarius Power


Beberapa Tips tentang Cara Mengelola Pembaruan

Ini berlaku baik untuk Debian dan Ubuntu, tetapi lebih spesifik instruksi untuk mengikuti Ubuntu.

  • Hanya tampilkan pembaruan keamanan:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    atau

    sudo unattended-upgrade --dry-run -d
    

    atau

    /usr/lib/update-notifier/apt-check -p
    
  • Tampilkan semua paket yang dapat di-upgrade

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Instal pembaruan keamanan saja

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print $2'} | 
        xargs apt-get install
    

Catatan: 

  • Terkadang Ubuntu menampilkan pembaruan keamanan seolah-olah mereka datang dari repositori pembaruan rilis-rilis. Ini begitu, saya diberitahu, karena pengembang Ubuntu mendorong pembaruan keamanan ke repositori pembaruan rilis $ juga untuk mempercepat ketersediaan mereka.

    Jika itu yang terjadi, Anda dapat melakukan hal berikut untuk hanya menampilkan pembaruan keamanan:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    dan

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print $2'}
    
  • Periksa layanan apa yang perlu di-restart setelah peningkatan paket. Cari tahu paket apa yang akan Anda tingkatkan sebelumnya dan jadwalkan restart / reboot Anda. Masalahnya di sini adalah bahwa kecuali Anda me-restart layanan itu mungkin masih menggunakan versi lama dari sebuah perpustakaan (alasan paling umum) yang telah dimuat ke dalam memori sebelum Anda menginstal paket baru yang memperbaiki kerentanan keamanan atau apa pun.

    checkrestart -v
    

    Namun, perlu diingat itu checkrestart dapat mencantumkan proses yang seharusnya tidak perlu dimulai ulang. Sebagai contoh, layanan PostgreSQL mungkin menyimpan referensi memorinya ke file xlog yang sudah dihapus, yang bukan alasan yang sah untuk me-restart layanan.

    Oleh karena itu, cara lain yang lebih andal untuk memeriksa ini dengan menggunakan standar adalah skrip bash kecil berikut ini yang tanpa malu saya curi dari https://locallost.net/?p=233

    Ini memeriksa apakah proses yang berjalan pada sistem masih menggunakan pustaka yang dihapus karena menyimpan salinan dari mereka dalam memori aktif.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    

104
2017-11-16 11:35



Saya perhatikan hanya sekarang posting ini. Ini sangat tepat. Terima kasih banyak (+1) - Danduk82
dari mana 'checkrestart' berasal? Saya tidak dapat menemukannya di Ubuntu Trusty. Saya menemukan "needrestart" yang terlihat seperti itu akan cocok dalam instruksi Anda? - Ben XO
Ini dapat ditemukan dalam paket debian-barang: packages.debian.org/wheezy/debian-goodies. Ada juga yang butuh bantuan. Anda dapat menemukan keduanya di Xenial dengan menjalankan: $ apt-cache search checkrestart - ILIV
Saya mendapatkan "E: Tidak dapat membuka file kunci / var / lib / dpkg / kunci - terbuka (13: Izin ditolak)" bahkan dengan sudo. Apakah ini sesuatu yang spesifik untuk salah satu pembaruan atau perintah yang Anda berikan? - Nathan Hornby
Kemungkinan besar itu tentang penghentian salah / abnormal dari dpkg yang meninggalkan file kunci tidak jelas. Tidak terjadi secara normal sampai, mis. instalasi paket tidak selesai dengan sukses (full disk, dll.) Anda mungkin tidak dapat menjalankan perintah apt-get dan dpkg lainnya, bukan? - ILIV


menggantikan /etc/apt/preferences dengan yang berikut:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

sekarang sederhana apt-get upgrade akan meningkatkan semua pembaruan keamanan saja.

Mengapa (dan bagaimana) ini berfungsi: File preferensi akan menyematkan semua paket dari distribusi Ubuntu ke prioritas 50, yang akan membuatnya kurang diinginkan daripada paket yang sudah diinstal. File yang berasal dari repositori keamanan diberikan prioritas default (500) sehingga dianggap untuk instalasi. Ini berarti bahwa hanya paket yang dianggap lebih diinginkan daripada yang diinstal saat ini adalah pembaruan keamanan. Informasi lebih lanjut tentang menjepit di apt_preferences manpage.

Anda dapat secara temporer mempromosikan distribusi tertentu untuk pembaruan dengan --target-release opsi yang berfungsi dengan apt-get dan aptitude (setidaknya) yang akan memungkinkan Anda memasang rilisan tertentu sehingga mereka memenuhi syarat untuk ditingkatkan.

Jika Anda ingin menggunakan ini hanya untuk skrip dan tidak menjadikannya default untuk sistem, Anda dapat menempatkan aturan ke beberapa lokasi lain dan gunakan ini sebagai gantinya:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Ini akan membuat pencarian apt untuk file preferensi dari lokasi non-default.

File preferensi yang diberikan sebagai contoh tidak berlaku untuk repositori pihak ketiga, jika Anda ingin memasang pin yang juga dapat Anda gunakan apt-cache policy untuk dengan mudah menentukan kunci yang diperlukan untuk pinning.


46
2017-07-29 04:12



Terima kasih telah meluangkan waktu untuk jawaban yang menyeluruh. saya berpikir Saya mengerti cara kerjanya. Tetapi ketika saya membuat file / etc / apt / preference dan menjalankan apt-get upgrade, ia ingin meng-upgrade semua paket, bukan hanya pembaruan keamanan. Daftar upgrade sebelum dan sesudah persis sama, kecuali dengan / etc / apt / preferences tidak ingin meng-upgrade Leafpad, yang saya buat dari sumber dan diinstal "dengan tangan" dengan dpkg. Ini sangat aneh bagiku, tapi mungkin berarti bagimu. - mac9416
Anda dapat melihat apa yang terjadi dengan perintah kebijakan apt-cache. Pilih salah satu paket yang tidak mendapatkan perbaikan keamanan dan jalankan apt-cache policy packagename. Ini akan mendaftar prioritas untuk berbagai versi. Anda harus melihat berbagai lini dan prioritas yang berbeda. Jika tidak ada garis dengan prioritas 50, penyematan tidak memengaruhi paket yang dimaksud karena alasan tertentu. - Ressu
Saya telah mengikuti jawaban ini di masa lalu. Hari ini saya menemukan bahwa karena jawaban ini, 68 paket pembaruan keamanan TIDAK dipasang di server saya dan tidak muncul sebagai calon pemasangan potensial. Ini BUKAN JAWABAN YANG BAIK! - Shade


Berikut ini dikonfirmasi di Ubuntu 14.04 LTS.

Menggunakan unattended-upgrade paket.

Lihatlah file /etc/apt/apt.conf.d/50unattended-upgrades. Harus ada bagian di bagian atas yaitu:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Perhatikan bagaimana ini telah dikonfigurasi untuk hanya memperbolehkan upgrade tanpa pengawasan untuk paket keamanan, secara default.

Ubah file /etc/apt/apt.conf.d/10periodic mirip dengan:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Ini akan menjalankan peningkatan keamanan otomatis tanpa pengawasan, satu kali per hari.

Sekarang, untuk dijalankan secara manual: sudo unattended-upgrade.

Untuk menguji sebagai dry-run, tanpa melakukan apa pun: sudo unattended-upgrade --dry-run.

Sumber: https://help.ubuntu.com/14.04/serverguide/automatic-updates.html


9
2017-10-03 17:18



Apakah ada cara untuk membuat jadwal bulanan ini? - mike.b93
@ mike.b93, saya percaya pengaturan APT::Periodic::Unattended-Upgrade "30"; Akan melakukan ini - setiap 30 hari. - vcardillo


Meskipun cukup jelek, Anda dapat menonaktifkan semua repositori terpisah dari repositori keamanan dan kemudian lakukan:

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

Saya belum mengujinya, tetapi secara teori hanya akan menemukan pembaruan di repo keamanan dan menerapkannya ...


5
2017-07-29 00:00



Ya, itu kemungkinan. Saya akan memeriksanya. Saya tidak pandai BASH, tapi saya mungkin mencoba membuat skrip untuk melakukannya. - mac9416
OK, saya menonaktifkan semua kecuali repositori keamanan Ubuntu dan menjalankan sudo apt-get update && sudo apt-get upgrade (membatalkan sebelum upgrade dilakukan). Lalu saya mengaktifkan kembali semua repositori saya, berlari sudo apt-get updatee, dan membuka Update Manager. Paket-paket yang ditandai sebagai pembaruan keamanan tidak persis seperti apa apt-get upgrade ditemukan, tetapi mereka sangat dekat - cukup dekat untuk saya. Saya masih berharap saya tahu persis bagaimana Update Manager melakukannya dan bagaimana melakukan hal yang sama dari baris perintah, tetapi ini akan dilakukan. Terima kasih! - mac9416


  • apt-get update: cukup baca entri di repositori - menurut daftar yang ada. Diperlukan untuk memeriksa apa yang baru.
  • apt-get upgrade: semua pembaruan untuk paket yang diinstal tanpa modul kernel. Tidak ada pembaruan rilis.
  • apt-get dist-upgrade: semua pembaruan untuk paket yang diinstal juga dengan modul kernel. Tidak ada pembaruan rilis.
  • apt-get dengan parameter -s: uji saja, tidak ada perubahan yang dilakukan.

3
2017-08-02 09:49





Saya tidak dapat menemukan opsi baik apt-get atau aptitude, namun seseorang memiliki pertanyaan yang sama pada SuperUser. Satu-satunya tanggapan adalah:

Periksa dan sesuaikan /etc/apt/apt.conf.d/50unattended-upgrade. Apakah Anda mengganti 'karma' dengan nama kode Ubuntu Anda?

Tidak ada jawaban apakah itu berhasil.


0
2017-07-28 23:04



Tampaknya metode yang dijelaskan di halaman wiki itu tergantung pada pengaturan aptitude -target-release argument ke <release> -security. Seperti OP dari pertanyaan itu, metode itu menginstal semua pemutakhiran, bukan hanya peningkatan keamanan. Membaca halaman manual apt-get dan aptitude, saya tidak berpikir argumen —pendeluaran-rilis bahkan dimaksudkan untuk membatasi upgrade hanya untuk keamanan, meskipun saya tidak yakin apa itu aku s untuk. - mac9416