
Я пытаюсь создать Red Hat 7.8 ISO с сокращенным набором RPM, обновленных до последней версии. Я понял, как изолировать нужные мне пакеты и загрузить их, но когда я создаю новый ISO, он загружается, запускает установщик, но так и не находит источник установки на локальном носителе. Я выполнил следующие шаги:
- Смонтировать исходный ISO-образ
- Скопировать всю файловую структуру во временную папку.
- Отфильтруйте обороты, оставив только те, которые мне нужны
- Используйте yumdownloader для загрузки последней версии каждого RPM в newPackages
- Удалите исходную папку Packages и переименуйте пакеты newPackages.
Следующим шагом будет создание новых реподданных, что я делаю, выполнив следующую команду в Packages:
createrepo -dpo .. .
Он создает новые файлы репозитория в папке repodata и заменяет файл repomd.xml.
Однако при загрузке не удаётся найти репозиторий в ISO-образе.
Есть ли другой файл, который нужно обновить, чтобы распознать новый репозиторий, или какая-то опция, которая мне нужна, чтобы сделать репозиторий совместимым с ISO? Я удалил rpm, который требуется для первоначальной установки?
решение1
Я нашел несколько страниц, которые ссылались на comps.xml, и наконец выяснил, что comps.xml на исходном ISO имеет гораздо более длинное имя файла и находится в архиве. В моем случае имя файла было:
c0dee7823d016c47d3d8ad66d65f6cbce5284a00f349dc4d7a72a971c283edd0-comps.xml.gz
Как только я это понял, я извлек файл и поместил его в родительскую папку моего нового дерева ISO. Затем, используя следующую команду, я успешно смог обновить исходный репозиторий с сокращенным списком пакетов из моей папки Packages (запустите эту команду из вашей папки Packages):
createrepo --update -g ../../comps.xml -dpo .. .
Разбираем команду:
- --update сообщает createrepo о необходимости обновить существующие файлы в папке repodata
- -g ../../comps.xml копирует группы пакетов из исходного файла comps.xml
- -dp Флаг -d создает файлы базы данных, а -p делает файлы XML красивыми.
- -o указывает местоположение вывода. В этом случае родительская папка, где находится исходная папка repodata
Точка в конце (.) относится к текущей папке, в которой находятся все пакеты.