Bagaimana saya menjalankan pembaruan secara bertanggung jawab secara otomatis di Arch Linux?

15

Saya sedikit pendatang baru di Arch Linux dan masih terbiasa dengan beberapa paradigma. Saya datang dengan banyak kebiasaan dari distro lain yang sedikit lebih terstruktur dan dalam beberapa hal dapat diprediksi.

Satu hal yang ingin saya lakukan dengan beberapa sistem¹ adalah memungkinkan pekerjaan cron untuk melakukan pembaruan otomatis semua paket sistem. Sepertinya ini akan cukup mudah, kecuali saya juga ingin umpan balik yang berarti dari sistem yang memberitahu saya bagaimana hal-hal yang tidak begitu bertele-tele sehingga saya akhirnya mengabaikannya sampai saya menemukan sistem bertindak.

  • Output penuh dari pacmantidak perlu. Saya tidak peduli berapa lama unduhan berlangsung atau pembaruannya 46 dari 53.
  • Sebagian besar saya tidak peduli dengan kesuksesan.
  • Saya peduli tentang kesalahan. Jika proses pembaruan gagal, saya ingin mengetahuinya dan pesan kesalahan khusus apa pun harus ditambal.
  • Saya peduli dengan "pemberitahuan" yang dikeluarkan saat instalasi. Misalnya pembaruan sistem hari ini mengatakan:

    :: coredumps are no longer sent to the journal by default. To re-enable:  
    echo >/etc/sysctl.d/50-coredump.conf \  
        "kernel.core_pattern=|/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e"
    

    Atau filesystem yang menghasilkan ini:

    warning: /etc/group installed as /etc/group.pacnew  
    warning: /etc/passwd installed as /etc/passwd.pacnew  
    warning: /etc/shadow installed as /etc/shadow.pacnew
    

    Kategori terakhir ini sebenarnya yang mendorong saya untuk mengajukan pertanyaan ini karena sepertinya ini sangat tidak konsisten di seluruh paket. Beberapa di antaranya tampaknya dihasilkan oleh post_upgrade(), yang lain oleh install(), dll. Kadang-kadang ditulis untuk stdout, kadang-kadang untuk stderr. Format pesan sangat bervariasi: kadang-kadang seluruh blok diawali dengan lekukan dalam beberapa cara, di lain waktu hanya ada string gema yang digema.

Saya ingin tahu tentang hal-hal yang mungkin memerlukan intervensi saya pada suatu sistem tetapi tidak akan terganggu sebaliknya. Apakah ada alat di luar sana yang secara cerdas mengelola data ini dan menyederhanakan administrasi sistem? Apakah ada cara untuk mendapatkan output yang dihasilkan oleh paket secara terpisah dari proses pacman menginstalnya? Atau apakah saya sendiri untuk menulis semacam parser yang menyaring hal-hal yang tidak berbahaya dari log instalasi?

¹ Sebelum Anda melompati betapa bodohnya hal ini, harap dicatat bahwa saya cukup pintar untuk tidak melakukan ini pada server produksi dan bukan tanpa cadangan sistem lengkap berbasis snapshot yang akan membuat pemulihan mudah jika terjadi bencana.

Caleb
sumber
Hal pertama yang akan saya lakukan adalah menghapus yaourttag, baik dari pertanyaan Anda dan model konseptual Anda: mencoba melakukan ini dengan repo resmi akan cukup sulit, menambahkan paket acak dari AUR ke dalam campuran akan membuatnya menjadi aneh ...
jasonwryan
Oh, dan ini bukan ide yang bodoh; tapi itu sangat mendorong cara Arch bekerja. Menggunakan checkupdatesdan menggunakan -Syusekali sehari adalah tugas yang cukup sepele; Saya tidak melihat manfaat apa pun untuk semua pekerjaan yang diperlukan dalam proposal Anda.
jasonwryan
@jasonwryan saya bermaksud untuk memperluas itu, tapi saya benar-benar memiliki beberapa paket AUR yang saya ingin muat dalam alur kerja yang sama. Saat ini saya banyak menggunakan yaourt dan sangat merindukan kenyataan bahwa tidak ada dukungan dry-run untuk operasi manajemen paket! : /
Caleb
2
DNA Arch membuat tangan Anda kotor: ini memang bukan cara yang seharusnya dijalankan; Anda mungkin sampai di sana, tetapi itu akan menjadi kemenangan Pyrrhic dan, jika didokumentasikan di sini, hanya akan membawa banyak pemula ke tepi tebing yang mereka sama sekali tidak siap untuk ...
jasonwryan
2
Saya menghabiskan beberapa waktu mencoba ini tahun lalu dan sampai pada kesimpulan bahwa satu-satunya cara untuk mencapai peningkatan tanpa membunuh sistem secara teratur adalah dengan membangun gambar baru (yang tampaknya menjadi titik pengujian dasar dan lebih dapat diandalkan di Arch) kemudian layanan transplantasi dengan konfigurasi alat manajemen. Mungkin pembaruan telah sedikit menurun tetapi ada 3-4 dalam periode 6 bulan yang akan selang sistem tanpa intervensi manual.
Matt

Jawaban:

11

Saya ingin menjadi jelas bagi Anda dan orang lain yang mungkin terjadi pada utas ini. Apa yang ingin Anda lakukan tidak mungkin. Arch tidak merahasiakan fakta bahwa ia mengharapkan Anda untuk mengelola sistem Anda. Bagian dari tanggung jawab itu hadir untuk siklus pembaruan.

Sekarang, ada langkah - langkah proses pembaruan yang Anda dapat mengotomatisasi secara bertanggung jawab, tetapi itu tidak akan pernah berarti otomatis -Syu. Anda hanya perlu berada di sana untuk peningkatan.

Apa yang dapat Anda lakukan, misalnya, adalah mengatur cronpekerjaan yang mengunduh paket apa saja yang perlu diinstal (tetapi tidak menginstalnya). Berikut ini adalah kutipan dari pacmandokumentasi:

SYNC OPTIONS
...
-w  --downloadonly
    Retrieve all packages from the server, but do not install/upgrade anything.

Anda kemudian bisa, mengatur cronpekerjaan untuk dijalankan sudo pacman -Syuw. Saya tidak terlalu akrab dengan cronatau kemampuan penjadwalannya. Namun, jika hanya mampu menjalankan pekerjaan setelah kondisi tertentu terpenuhi (misalnya, perintah mengembalikan nilai tertentu), maka akan cukup sepele untuk memicu pengunduhan paket baru sesuai kebutuhan.

Saya akan membayangkan menjalankan cek terhadap checkupdates | wc -l, misalnya. Jika mengembalikan angka apa pun di atas nol, Anda dapat memicu unduhan. Sekali lagi, bagaimanapun, ini tidak akan menggantikan menjalankan -Syuketika Anda hadir dan siap untuk berurusan dengan upgrade.

Untuk bagian terakhir dari pertanyaan Anda, di mana untuk mendapatkan hasil dari apa yang terjadi selama peningkatan, Anda cari /var/log/pacman.log. Ini mencakup semua informasi kesalahan yang mungkin menarik bagi Anda.


Ada alat yang dimaksudkan untuk membuat pacmansedikit lebih ramah bagi pengguna yang tidak terbiasa. Jika saya tidak salah, itu juga memberikan pemberitahuan tentang item berita jika harus ada pembaruan yang memerlukan intervensi manual.

Alat ini mungkin membuat hidup Anda sedikit lebih sederhana dalam jangka pendek, tetapi itu tidak akan pernah menjadi pengganti yang masuk akal dan rajin mengikuti Milis.

HalosGhost
sumber
2
Sebenarnya, untuk pemberitahuan tentang paket resmi yang memerlukan intervensi manual, saya sarankan Anda mengikuti arch-dev-public dan arch-general .
HalosGhost
@Jasonwryan juga sepenuhnya benar. Melakukan ini dengan pacmandimungkinkan. Melakukannya dengan yaourttidak layak.
HalosGhost
yaourtsebenarnya melakukan pekerjaan yang sedikit lebih baik daripada pacman, meskipun, seperti yang saya pikir maksud Anda, konfigurasi default sebagai sedikit lebih dari pembantu aur hampir pasti akan merusak hal-hal dalam jangka panjang. Namun demikian, sangat dapat dikonfigurasi, dan dapat dibuat untuk memelihara pohon sumber dengan sangat efektif. Keduanya yaourtdan pacmanhanya bungkus alpmsaja.
mikeserv
Atau, saya kira itu lebih benar untuk mengatakan, yaourtmembungkus pacmandan beberapa alpmfungsionalitas tambahan dan pacmanmembungkus alpm. Bagaimanapun, yaourtmeluas pacman.
mikeserv
Seperti disebutkan di sini , -Syuwberpotensi sangat berbahaya. Ini memiliki kemampuan untuk menghasilkan pembaruan parsial jika pembaruan tidak diterapkan, dan perangkat lunak kemudian diinstal dengan -S.
Sparhawk
1

Ada skrip lama yang melakukan pekerjaan dengan sangat baik; ini disebut safepac .

EDIT: Skrip ini masih tersedia di github di sini: https://github.com/bencahill/binfiles/blob/master/safepac

Apa fungsinya dan bagaimana cara kerjanya?

Cara saya biasanya memperbarui Arch adalah dengan membaca berita dan kemudian melakukan pacman -Syu, atau hanya melakukan pacman -Syudan jika ada yang salah, baca berita. Sekarang skrip ini tidak melakukan hal lain: Ia menerima entri berita terbaru dari umpan RSS, melakukan beberapa sedkeajaiban, dan membandingkan nama semua paket yang memiliki pembaruan yang tersedia untuk berita tersebut. Itu cocok dengan "nama-paket" dan "nama-paket-" di berita, dan jika nama paket muncul di suatu tempat di berita, itu akan mengabaikan paket dan hanya memperbarui yang lain. Dengan cara ini, apa pun yang mungkin salah akan ditunda hingga seseorang memiliki waktu untuk memeriksa masalah tersebut dengan tangan, sementara pembaruan yang tidak penting hanya akan dilakukan secara otomatis!

Biasanya, setelah Anda mengurus pembaruan yang mungkin tidak lancar, Anda tidak ingin safepacmengabaikan paket tertentu karena masih dalam berita. Itulah gunanya si bodoh itu. Jadi, setiap kali Anda memperbarui secara manual, Anda dapat menambahkan entri berita terkait ke daftar abaikan , di mana nomor entri berita tersebut. Anda juga dapat menentukan jumlah berita terbaru yang ingin Anda sertakan dalam penguraiannya dengan sakelar. Skrip juga cukup pintar untuk melewati entri yang tidak ada. Jika Anda mengalami masalah dengan paket yang memiliki nama yang sangat pendek yang dapat muncul secara sewenang-wenang dalam berita (seperti "ya"), Anda dapat menambahkannya ke daftar putih dengan sehingga mereka akan selalu diinstal meskipun mereka muncul dalam berita.safepac -Ia xxxxxx-nsafepac -Wa

Harap perhatikan bahwa Anda memerlukan penyetelan surat yang berfungsi karena skrip ini juga mengirimi Anda surat intisari (dengan log lengkap?), Dan dengan bagian pembaruan yang penting:

parsing pacmanoutput untuk mencari kata-kata ini dan menambahkannya ke intisari:
"note" "pacnew" "error" "important" "warning" "exist".

Skrip sudah tua, tetapi idenya bagus dan mungkin masih berfungsi dengan pembaruan kecil, jika ada.

Lesto
sumber
satu masalah yang mungkin terjadi adalah pembaruan besar (atau melanggar) tidak diceritakan dalam berita, tetapi Anda harus melacaknya sendiri. Contoh kasus, perbarui dari python2 ke python3
Lesto
Namun, Anda dapat menggunakan checkupdates (pacman-utils) dan mendapatkan daftar paket, dan kemudian memasukkannya dalam daftar putih, bagus jika Anda memiliki kumpulan, tetapi mungkin lebih baik untuk menyiapkan sesuatu seperti repo lokal
Lesto
-2

Saya menggunakan ketidakberdayaan saya sendiri untuk dijalankan yaourtoleh cron.

vadzim
sumber
1
Yaourt benar- benar mati : ini adalah ide yang sangat buruk.
jasonwryan
Saya menggunakan yaourtselama bertahun-tahun sendiri. Itu adalah alat yang baik, tetapi hal-hal yang dibangun untuk "membungkus" telah berubah bentuk dan melakukan beberapa hal yang cukup salah sekarang. Pada titik ini sangat bermasalah sehingga penulis alat mengatakan bahkan mereka tidak menggunakannya lagi. Jika Anda menginginkan pembantu AUR, saya sarankan Anda mencoba salah satu yang dipelihara secara aktif. Saya beralih ke yaydiri saya sendiri dan cukup senang.
Caleb
Utilitas itu juga berfungsi yayuntuk saya.
vadzim