2012-05-03 4 views
2

Я пишу плагин yum, который обновляет URL-адреса локальных репозиториев. Когда URL-адрес репо изменяется, я хотел бы, чтобы yum запустил yum clean all, чтобы убедиться, что устаревшая информация не кэшируется. Я знаю, что у yum есть крючок для запуска кода, когда запрашивается yum clean [plugins|all], но можно ли вызывать чистую все из одной из других функций перехватчика плагина?Как я могу запустить «yum clean all» из плагина yum?

+0

Я предполагаю, что ваш плагин что-то делает с метаданными? Поскольку по умолчанию yum обнаруживает изменение URL (по крайней мере, на моей машине F16) и запускает сам makecache. – Stan

+0

Да, я изменяю URL-адрес репо только в определенных обстоятельствах. Вероятно, это не обнаружено, потому что это делается после инициализации. Вот почему я думаю, что мне нужно добавить свой собственный чек. –

ответ

3

Вы можете сделать это легко. Yum предоставляет библиотеку, которая используется программой командной строки. Ниже приведен пример код для конфетки чистого всего:

import sys 
sys.path.append("/usr/share/yum-cli") 
import cli 
ybc = cli.YumBaseCli() 
ybc.cleanCli(["all"]) 

В случае, если вы хотите сделать больше, чем «чистый все» с помощью функции проверки всего API, предоставляемых методы библиотеки CLI, экспонированных на/пользователе/​​долях/ни-кли папка :)

С уважением,

Смежные вопросы