У меня есть программный пакет из ~ 150 пользовательских RPM с довольно сложными зависимостями между ними:
- дерево зависимостей для каждого пакета обычно имеет глубину около пяти уровней
- тамнесколько пакетов, которые (намеренно) конфликтуют друг с другом
- большинство пакетов зависят от одного или нескольких пакетов Red Hat, а также от других пользовательских пакетов
Моя машина непрерывной интеграции собирает все мои пакетыи создает из них репозиторий yum, а затем запускает ISO-образ репозитория yum - так распределяется мое программное обеспечение.
Моя проблема: я хочу, чтобы машина CI проверила, для каждого пакета вISO, что все его зависимости встречаются либо другими пользовательскими пакетами в ISO, либо пакетами Red Hat.Это сделано для того, чтобы ловить не только ошибки в базовом программном обеспечении, но и разработчиков, которые забыли перенести свои изменения в ветку релиза в системе управления версиями.
Вот как я хотел бы ее решить (чтобы вы, ребята, моглискажите мне, что есть лучший способ!): для каждого пакета создайте чистую виртуальную машину с:
- базовой установкой репозиториев пакетов RHEL или CentOS
- , указывающих на зеркало RHEL имой ISO (монтируется через петлевое устройство)
... и вызовите "yum install xxx" на виртуальной машине.
Проблема в том, что это занимает слишком много времени - выполнение каждого пакетаУстановка изменяет состояние виртуальной машины.Каждый RPM действительно должен быть протестирован на «чистой» ОС, и повторное создание занимает ~ 10 минут на пакет .Могу ли я проверить установку пакета без изменения виртуальной машины или ее повторного создания с нуля?Я надеялся, что для yum был аргумент командной строки «--test», аналогичный «rpm -i --test», но я его не вижу.Я не могу использовать «rpm» напрямую, потому что он не загружает автоматически зависимости.
Вопросы:
- Кто-нибудь знает способ запуска yum в режиме «имитации»?
- есть ли лучший способ решить мою проблему?
Имейте в виду, я здесь на RHEL (ням 3.2.22), а не на Fedora, но EPEL, вероятно, всеправо на использование.