Відповіді:
Yum підтримує плагіни, тому цілком можливо написати плагін, який зчитує кешований маніфест маріонетки та попереджає, коли транзакція замінить файл, керований лялькою. Я не знаю про існуючий плагін, який робить це, але я , мабуть, напишу щойно написав сам, як мені подобається ідея.
Плагін перевіряє всі нещодавно встановлені / оновлені / зменшені пакети, повідомляє, які файли, якими керує лялька, він буде перезаписаний, і просить підтвердити це.
[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!
Сам плагін можна знайти в моєму сховищі хаків github .
8 листопада 2013 року оновлення:
Як натякнули в коментарях, я зараз перетворив це на більш масштабний проект покращення взаємодії між Yum та Лялькою. Ви можете знайти його на GitHub .
Так, це можливо, але це не стосується самої Лялечки.
Системи Linux мають підтримку механізму inotify, який "може використовуватися для моніторингу та дії подій файлової системи". Крім того, inotify-tools
існує також incron
програма, яка працює аналогічно cron, але вона реагує на події файлової системи. Я думаю, що ви можете використовувати його для оповіщення про зміну будь-якого файлу.
(BTW, якщо ви хочете переглянути /etc/sysctl.conf
файл, я пропоную перевірити, перш ніж це зробити - чи є у вашого Linux підтримка /etc/sysctl.d
каталогу?)
Я не знаю, як реалізувати такі сповіщення. Можливо, можливо щось налаштувати шляхом постановки трансляції yum, визначення списку конфігураційних файлів, на які це може вплинути, а потім перевірки, чи маріонетка управляє будь-яким із них.
Однак, як правило, керувати файлом, який буде оновлений пакетом, не є хорошою практикою. У випадку файлів конфігурації (використовуйте rpm -qlc ім'я пакета, щоб побачити, чи вони позначені як такі), якщо пакет містить нову версію, він зберігається як filename.rpmnew. Потім ви залишаєтесь на власних пристроях, щоб об'єднати всі необхідні зміни.
Ми зіткнулися з проблемою, коли конфігураційний файл було видалено маріонеткою, а потім замінено yum, коли пакет оновлений. Це спричинило проблеми, поки наступний маріонетковий цикл не видалив файл. Нашим вирішенням цієї ситуації було встановити вміст "вилученого" файлу до коментаря, щоб він по суті був порожнім. Іншим способом впоратися з цим було б спробувати переконатися, що Package ['a'] -> File ['/ etc / a'], так що потрібен лише один маріонетковий запуск.