Kukla tarafından kontrol edilen bir dosya yum tarafından değiştirileceğinde bilgilendirilir


13

Kukla tarafından kontrol edilen bir dosyayı içeren bir paket bu dosyayı değiştirmek üzereyken konsoldan bildirim almak mümkün müdür? Yani, yum güncellemesi yaparken yum'da, özel bir uyarı enjekte etmek mümkün mü?

Yanıtlar:


22

Yum eklentileri destekler, bu nedenle önbelleğe alınmış kukla bildirimini okuyan ve bir işlemin kukla kontrollü bir dosyanın üzerine ne zaman yazılacağını uyaran bir eklenti yazmak tamamen mümkündür. Bunu yapan mevcut bir eklentinin farkında değilim, ama muhtemelen yazdım, fikri sevdiğim gibi kendim yazdım.

Eklenti, yeni yüklenen / yükseltilen / indirgenmiş tüm paketleri kontrol eder, hangi kukla tarafından yönetilen dosyaların üzerine yazacağını söyler ve bunun için bir onay ister.

    [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!

Eklentinin kendisi benim github hacks deposunda bulunabilir .


8 Kasım 2013 güncellemesi:

Yorumlarda belirtildiği gibi, şimdi Yum ve Kukla arasındaki etkileşimi geliştirmek için daha büyük bir projeye dönüştürdüm. GitHub'da bulabilirsiniz .


Bu çok hoş. Kesinlikle% config (noreplace) şeyleri görmezden gelmeyi bilseydim, çünkü bunların üzerine yazılmayacak.
freiheit

Evet, eklemeyi ve çok daha fazlasını yapmayı planlıyorum. Bu soru bana :) verdi fikirler çok
Dennis Kaarsemaker

Vaov ! Gerçekten burada görev çağrısının ötesine geçtiniz. Etkilendim. Sorum tam olarak bu soruyu ele almaya çalışıyordu. Bir kabuk senaryosu düşünüyordum ama bu çok daha iyi! Şimdi, eklentinizi yum'a yükledim, ancak kukla eklentisini yüklemeyecek. Neden olduğu hakkında bir fikrin var mı? .Pyc dosyasını görüyorum, ancak rhnplugin ve güvenlik gibi bir .pyo dosyası yok
Brian

Boşver, PyYAML'i kurmak zorunda kaldım.
Brian

Bir yazılım lisansı ekleyebilir misiniz?
Brian

2

Evet, mümkün ama Kukla'nın kendisi ile ilgili değil.

Linux sistemleri, "dosya sistemi olaylarını izlemek ve bunlara göre hareket etmek için kullanılabilen" inotify mekanizmasını desteklemektedir . Ayrıca cron benzeri çalışan ama dosya sistemi olaylarına tepki veren bir program inotify-toolsda var incron. Herhangi bir dosyayı değiştirme konusunda bilgilendirilmek için kullanabileceğinizi düşünüyorum.

(BTW, eğer /etc/sysctl.confdosyayı izlemek istiyorsanız, daha önce kontrol etmenizi öneririm - Linux'unuzda /etc/sysctl.ddizin desteği var mı?)


0

Bu tür bildirimleri uygulamanın bir yolunu bilmiyorum. Yum işlemini hazırlayarak, etkilenebilecek yapılandırma dosyalarının listesini belirleyerek ve sonra kuklanın bunlardan herhangi birini yönetip yönetmediğini kontrol ederek bir şey ayarlamak mümkün olabilir.

Ancak, genellikle bir paket tarafından güncellenecek bir dosyayı yönetmek iyi bir uygulama değildir. Yapılandırma dosyaları söz konusu olduğunda (böyle işaretlenip işaretlenmediklerini görmek için rpm -qlc packagegename kullanın), paket yeni bir sürüm içeriyorsa dosyaadı.rpmnew olarak kaydedilir. Ardından, gerekli değişiklikleri birleştirmek için kendi cihazlarınıza bırakılırsınız.

Bir yapılandırma dosyasının kukla tarafından kaldırıldığı ve paket güncellendiğinde yum ile değiştirildiği bir sorunla karşılaştık. Bu, bir sonraki kukla çalıştırması dosyayı kaldırana kadar sorunlara neden oldu. Bu durum için geçici çözümümüz, "kaldırıldı" dosyasının içeriğini bir açıklamaya ayarlamaktı. Bunu ele almanın başka bir yolu da, Paket'in sadece bir kukla çalıştırılması için Paket ['a'] -> Dosya ['/ etc / a'] olmasını sağlamaktır.


Kukla üzerinde "paket tarafından güncellenecek bir dosyayı yönetmek iyi bir uygulama değil" diyen en iyi uygulamaları bulmaya çalıştım. Özellikle bu uygulamada belirli uygulamaların çalışması için gereken ayarlar olduğu için sysctl.conf dosyasını yönetiyorum. O zaman alternatif nedir?
Brian

1
Yum'ın da dokunmak istediği kukla ile yapılandırmaları yönetmek kesinlikle iyidir. RPM genellikle özelleştirilmiş yapılandırma dosyalarına dokunmaz ve olsa bile, kukla içeriğinizi geri yükler.
Dennis Kaarsemaker

Yapılandırma dosyaları yalnızca yoksa RPM / yum tarafından güncellenir. Paketteki diğer dosyaları düzenlemek için kukla kullanmak (genellikle) iyi bir uygulama değildir, çünkü değişiklikleriniz işlevselliği bozabilir. Yönetim uygun izinleri sağlayabileceğinden, cevabımda "düzenle" den "düzenle" demek daha iyi olurdu sanırım. Yapılandırma dosyası olmayan dosyaları düzenlemek istiyorsanız, paketlerin otomatik olarak değil isteğe bağlı olarak güncellenmesini sağlamak için bir tür sürüm kilitleme veya dışlama da uygulamalısınız. Bu şekilde tüm güncelleme işlemini kontrol edebilirsiniz.
jdkindy


@ 0A0D: Teşekkürler, bahsettiğim davranış bu. Keşke Dennis Kaarsemaker'ın gönderisine yorum yapmak için yeterli temsilcim olsaydı - bu zarif bir çözümün başlangıcı. Ayrıca, paket destekliyorsa, ".d" yapılandırmalarının (php-coder tarafından not edilir) kukla içinde uygulanması çok kolaydır.
jdkindy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.