Yanıtlar:
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 .
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-tools
da var incron
. Herhangi bir dosyayı değiştirme konusunda bilgilendirilmek için kullanabileceğinizi düşünüyorum.
(BTW, eğer /etc/sysctl.conf
dosyayı izlemek istiyorsanız, daha önce kontrol etmenizi öneririm - Linux'unuzda /etc/sysctl.d
dizin desteği var mı?)
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.