Diberitahu ketika file yang dikendalikan oleh boneka akan diubah oleh yum

13

Apakah mungkin untuk menerima pemberitahuan di konsol ketika paket yang berisi file yang dikendalikan oleh boneka akan mengubah file itu? Artinya, pada saat Anda melakukan pembaruan, apakah mungkin untuk menyuntikkan peringatan khusus?

Brian
sumber

Jawaban:

22

Yum mendukung plugin, jadi sangat mungkin untuk menulis sebuah plugin yang membaca manifes boneka yang di-cache dan memperingatkan ketika suatu transaksi akan menimpa file yang dikendalikan oleh boneka. Saya tidak mengetahui plugin yang ada yang melakukan ini, tapi saya mungkin akan menulis hanya menulis sendiri karena saya suka ide itu.

Plugin memeriksa semua paket yang baru diinstal / ditingkatkan / diturunkan versinya, memberi tahu Anda file yang dikelola boneka yang akan ditimpa dan meminta konfirmasi untuk melakukannya.

    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total download size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    (1/2): pam-0.99.6.2-12.el5.x86_64.rpm                                                                                                   | 982 kB     00:00
    (2/2): pam-0.99.6.2-12.el5.i386.rpm                                                                                                     | 983 kB     00:00
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                          8.7 MB/s | 1.9 MB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: n


    Aborting
    [root@camel ~]# yum update pam
    Loaded plugins: puppet, security
    Skipping security plugin, no data
    Setting up Update Process
    Resolving Dependencies
    Skipping security plugin, no data
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-12.el5 set to be updated
    ---> Package pam.x86_64 0:0.99.6.2-12.el5 set to be updated
    --> Finished Dependency Resolution

    Dependencies Resolved

    ===============================================================================================================================================================
     Package                           Arch                                 Version                                       Repository                          Size
    ===============================================================================================================================================================
    Updating:
     pam                               i386                                 0.99.6.2-12.el5                               base                               983 k
     pam                               x86_64                               0.99.6.2-12.el5                               base                               982 k

    Transaction Summary
    ===============================================================================================================================================================
    Install       0 Package(s)
    Upgrade       2 Package(s)

    Total size: 1.9 M
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.i386 overwrites puppet-managed file /etc/security/limits.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/pam.d/system-auth
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/access.conf
    Installing pam-0.99.6.2-12.el5.x86_64 overwrites puppet-managed file /etc/security/limits.conf
    Is this ok [y/N]: y
      Updating       : pam                                                                                                                                     1/4
      Updating       : pam                                                                                                                                     2/4
      Cleanup        : pam                                                                                                                                     3/4
      Cleanup        : pam                                                                                                                                     4/4

    Updated:
      pam.i386 0:0.99.6.2-12.el5                                                    pam.x86_64 0:0.99.6.2-12.el5

    Complete!

Plugin itu sendiri dapat ditemukan di repositori hack github saya .


Pembaruan 8 November 2013:

Seperti yang diisyaratkan dalam komentar, saya sekarang telah mengubah ini menjadi proyek yang lebih besar untuk meningkatkan interaksi antara Yum dan Wayang. Anda dapat menemukannya di GitHub .

Dennis Kaarsemaker
sumber
Ini indah. Namun saya berharap ia tahu untuk mengabaikan% config (noreplace), karena itu tidak akan ditimpa.
freiheit
Ya, saya berencana untuk menambahkan itu, dan banyak lagi. Pertanyaan ini memberi saya banyak ide :)
Dennis Kaarsemaker
Wow ! Anda benar-benar melampaui panggilan tugas di sini. Saya terkesan. Persis seperti itulah yang coba saya jawab. Saya sedang memikirkan skrip shell tetapi ini jauh lebih baik! Sekarang, saya menginstal plugin Anda ke yum, tetapi itu tidak akan memuat plugin boneka. Ada yang tahu kenapa? Saya melihat file .pyc, tetapi tidak ada file .pyo seperti rhnplugin dan keamanan miliki
Brian
Nevermind, saya harus menginstal PyYAML.
Brian
Bisakah Anda menambahkan lisensi perangkat lunak?
Brian
2

Ya, itu mungkin tapi itu tidak berhubungan dengan Wayang itu sendiri.

Sistem Linux memiliki dukungan untuk mekanisme inotify yang "dapat digunakan untuk memantau dan bertindak atas kejadian sistem file". Selain itu inotify-toolsada juga incronprogram yang bekerja mirip dengan cron tetapi bereaksi terhadap peristiwa sistem file. Saya pikir Anda dapat menggunakannya untuk diberi tahu tentang mengubah file apa pun.

(BTW, jika Anda ingin menonton /etc/sysctl.conffile saya sarankan untuk memeriksa sebelum melakukannya - apakah Linux Anda memiliki dukungan untuk /etc/sysctl.ddirektori?)

php-coder
sumber
0

Saya tidak tahu cara menerapkan pemberitahuan seperti itu. Dimungkinkan untuk mengatur sesuatu dengan mengatur transaksi yum, menentukan daftar file konfigurasi yang mungkin terpengaruh, dan kemudian memeriksa untuk melihat apakah boneka mengelola salah satunya.

Namun, secara umum itu bukan praktik yang baik untuk mengelola file yang akan diperbarui oleh suatu paket. Dalam hal file konfigurasi (gunakan nama paket rpm -qlc untuk melihat apakah mereka ditandai demikian), jika paket berisi versi baru, ia disimpan sebagai nama file.rpmnew. Anda kemudian dibiarkan ke perangkat Anda sendiri untuk menggabungkan setiap perubahan yang diperlukan.

Kami telah mengalami masalah di mana file konfigurasi telah dihapus oleh boneka dan kemudian digantikan oleh yum ketika paket itu diperbarui. Ini menyebabkan masalah sampai boneka berikutnya menjalankan menghapus file. Solusi kami untuk situasi itu adalah mengatur konten file "dihapus" ke komentar sehingga pada dasarnya kosong. Cara lain untuk menanganinya adalah dengan mencoba memastikan bahwa Paket ['a'] -> File ['/ etc / a'] sehingga hanya satu boneka yang diperlukan.

jdkindy
sumber
Saya mencoba menemukan beberapa praktik terbaik pada boneka yang mengatakan "bukan praktik yang baik untuk mengelola file yang akan diperbarui oleh sebuah paket". Saya mengelola sysctl.conf terutama karena ada pengaturan dalam file yang saya perlukan untuk menjalankan aplikasi tertentu. Apa alternatifnya?
Brian
1
Benar-benar baik untuk mengelola konfigurasi dengan boneka yang ingin disentuh yum. RPM umumnya tidak akan menyentuh file konfigurasi yang disesuaikan, dan bahkan jika itu terjadi, boneka akan mengembalikan konten Anda.
Dennis Kaarsemaker
File konfigurasi hanya akan diperbarui oleh RPM / yum jika tidak ada. Ini bukan (umumnya) praktik yang baik untuk menggunakan boneka untuk mengedit file lain dalam paket, karena perubahan Anda dapat merusak fungsionalitas. Saya kira akan lebih baik untuk mengatakan "edit" daripada "kelola" dalam jawaban saya karena mengelola dapat memastikan izin yang tepat. Jika Anda ingin mengedit file yang bukan file konfigurasi, maka Anda juga harus menerapkan semacam penguncian atau pengecualian versi untuk memastikan bahwa paket diperbarui berdasarkan permintaan, bukan secara otomatis. Dengan begitu Anda dapat mengontrol seluruh proses pembaruan.
jdkindy
@ 0A0D: Terima kasih, itu adalah perilaku yang saya bicarakan. Saya berharap saya memiliki cukup perwakilan untuk mengomentari posting Dennis Kaarsemaker - itu adalah awal dari solusi yang elegan. Juga, konfigurasi ".d" direktori (dicatat oleh php-coder) sangat mudah diimplementasikan dalam wayang jika paket mendukungnya.
jdkindy