Bagaimana cara mengatur Raspberry Pi saya untuk secara otomatis memperbarui / meningkatkan?

34

Saat ini, untuk mendapatkan informasi terkini tentang Raspberry Pi saya, saya harus mengetik sudo apt-get updatedan sudo apt-get upgrade. Apakah ada cara untuk mengaturnya agar secara otomatis melakukan ini? Saya menjalankan Jessie Raspbian.

Isaac Corbrey
sumber

Jawaban:

47

alih-alih cron manual, Anda dapat menginstal unattended-upgrades, yang berguna untuk memastikan kernel terbaru diinstal. Sebagian besar dirancang untuk keamanan.

https://wiki.debian.org/UnattendedUpgrades

apt-get install unattended-upgrades

Ada beberapa bit yang dapat disesuaikan / dikonfigurasi, tetapi standarnya baik-baik saja.

tedder42
sumber
5
Bagi saya, standarnya tidak baik. Itu tidak melakukan apa-apa: /var/log/unattended-upgrades/unattended-upgrades.logfile melaporkan Allowed origins are: []jadi pada dasarnya itu tidak menarik pembaruan apa pun. Setelah memperbarui /etc/apt/apt.conf.d/50unattended-upgradesuntuk memasukkan "origin=Raspbian,codename=${distro_codename},label=Raspbian";pembaruan mulai masuk.
Rabarberski
Stok tulang saya (per September 2017) 50unattended-upgradesdaftar "origin=Debian,codename=${distro_codename},label=Debian-Security";dan tampaknya menemukan paket yang relevan dengan benar. Tentu saja itu mengabaikan banyak dari mereka. Saya belum mengatur daftar putih atau daftar hitam.
Jon V
3
Defaultnya 50unattended-upgradesmemang bodoh dan harus diubah agar ini bisa berfungsi pada Raspian. Tidak ada Raspian-Security. Pembaruan keamanan tidak diberi label. Penting untuk menambahkan keduanya "origin=Raspbian,codename=${distro_codename},label=Raspbian";dan "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";ke/etc/apt/apt.conf.d/50unattended-upgrades
user643011
23

Di terminal, ketik:

sudo su

Untuk mengakses prompt level root. Lalu lari:

crontab -e

Untuk mulai mengedit crontab Anda, daftar tugas dijalankan secara otomatis pada waktu tertentu. Ini akan terbuka di editor teks pilihan Anda. Ubah untuk menyertakan baris berikut:

0 7 * * 1 apt update && apt upgrade -y

Untuk memperbarui dan meningkatkan aplikasi Anda secara otomatis pada pukul 07:00 setiap hari Senin. Baca di crontab untuk melihat cara menyesuaikan dengan keinginan Anda.

Komunitas
sumber
2
mungkin lebih baik untuk meletakkan perintah pada baris yang sama dengan &&karena mereka terkait dan tidak ada alasan untuk melakukan 'upgrade' jika 'pembaruan' gagal.
tedder42
di crontab 0berarti hari Minggu tetapi dalam kode Anda, Anda telah meletakkannya 1sehingga perintah akan dijalankan pada hari Senin, bukan hari Minggu
rav_kr
3
dist-upgradelebih baik daripada upgrade, Anda akan berakhir dengan ketergantungan hanya menggunakan dependensi upgrade. Anda juga tidak akan mendapatkan pembaruan yang membutuhkan konfirmasi dialog. @ tedder42 menunjukkan metode yang disukai oleh Debian (menggunakan unattended-upgrades).
ryanpcmcquen
Anda melewatkan sudo kedua setelah menambahkan &&. Meskipun itu di root crontab.
user643011
1
Seharusnya tidak ada apa pun sudodi sana; Anda telah beralih ke rootakun dengan menggunakan su. Crontab superuser dijalankan dengan hak superuser.
goldilocks
8

Anda dapat menginstal dan mengkonfigurasi cron-apt. Instal dengan melakukan hal berikut:

apt-get install cron-apt

file konfigurasi utama adalah / etc / cron-apt / config

Satu hal yang saya tambahkan ke konfigurasi saya adalah:

MAILON="always"

ini akan mengirim email setiap kali berjalan, tidak hanya jika menemui kesalahan.

Perhatikan bahwa pengaturan default tidak akan secara otomatis menginstal pembaruan (ada beberapa alasan bagus untuk tidak melakukan ini), tetapi Anda dapat mengonfigurasinya untuk melakukannya. Satu kelebihan yang disediakan program ini daripada solusi cron sederhana adalah memberi Anda kendali atas apa yang diinstal (hanya mengunduh paket baru, menginstal pembaruan keamanan atau menginstal semua pembaruan).

Untuk mengatur waktu berjalan edit file /etc/cron.d/cron-apt.

Anda dapat menemukan lebih banyak info dan opsi konfigurasi di sini

Paket ini termasuk dokumentasi yang sangat bagus, namun ia di-gzip. Untuk mengekstrak file:

  1. buat direktori untuk bekerja di - mkdir cron-apt_documentation
  2. ubah ke direktori baru - cd cron-apt_documentation
  3. salin file yang dikompresi - cp /usr/share/doc/cron-apt/README.gz. (perhatikan titik trailing)
  4. buka kompresi file - gunzip README.gz
  5. baca file - cat README | kurang
Steve Robillard
sumber
atauzcat /usr/share/doc/cron-apt/README.gz | less
5

Dalam konfigurasi standarnya, unattended-upgradesrusak di Raspbian Buster. Itu tidak akan menginstal pembaruan penting untuk kernel dan perangkat lunak lain. Pilihan Anda adalah:

Opsi yang Direkomendasikan:

sudo apt install unattended-upgrades

echo 'Unattended-Upgrade::Origins-Pattern {
//      Fix missing Rasbian sources.
        "origin=Debian,codename=${distro_codename},label=Debian";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
        "origin=Raspbian,codename=${distro_codename},label=Raspbian";
        "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
};' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-raspbian

Untuk pembaruan keamanan yang lebih cepat (tetapi stabilitasnya lebih rendah, karena paket belum disetujui untuk rasbian), Anda dapat menambahkan paket keamanan debian ke apt:

echo 'deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free' | sudo tee /etc/apt/sources.list.d/debian-security.list

Anda mungkin perlu menginstal kunci apt baru untuk repositori debian .

Pilihan lain:

  • Mengatasinya dengan menggunakan cron-apt: sudo apt install cron-apt

  • Cara lain untuk mengatasinya.

Dianjurkan untuk menggunakan pembaruan tanpa pengawasan dan memperbaiki paket, karena itu paling cocok untuk tujuan tersebut. Cron-apt adalah pilihan terbaik kedua Anda, karena ini juga dirancang untuk tujuan yang sama. Saya tidak yakin dapat mem-boot ulang sistem Anda secara otomatis setelah pembaruan kernel. Upgrade tanpa pengawasan biasanya memiliki opsi itu, tapi saya tidak yakin itu bekerja dengan perbaikan di atas.

Dej
sumber