Как вы строите chroot-тюрьмы с помощью dnf?

Еще в тот же день, когда я использовал chroot jails, используя yum . Это было просто, легко и позволяло мне делать то, что в действительности не было доступно в то время (создавать пакеты для нескольких дистрибутивов на платформах, таких как ia64 и ppc, используя ту же инфраструктуру).

Ускорьтесь на 5 лет, я хотел бы построить простую тюрьму chroot на Fedora 23. Однако dnf не делает это легко. Раньше я мог просто создать файл /etc/yum.repo.d/ в jail dir и вызвать yum --installroot . К сожалению, dnf все еще читает местное репо, а не то, что создано в тюрьме chroot.

Возможно ли использовать dnf файлы conf, которые не являются /etc/dnf/dnf.conf или в /etc/yum.repos.d/ ?

  • Как удалить hex-суффикс из имен кэшира DNF в Fedora?
  • Переустановка только пакетов с отсутствующими или поврежденными файлами в нерабочей системе?
  • Как установить пакет из источника на Fedora в 2017 году?
  • Правильный способ использования пакетов репозитория
  • Как исправить поврежденные зависимости, которые требуют деинсталляции dnf на Fedora 23?
  • dnf понижение не останется на udpate
  • Почему эта странная сортировка списка результатов пакета dnf?
  • Как удалить перенос строк из команд DNF и YUM?
  • 3 Solutions collect form web for “Как вы строите chroot-тюрьмы с помощью dnf?”

    Как вы узнали, с dnf вам нужно указать аргумент --releaserver .

    Кроме того, если вы хотите использовать репозитории, специфичные для chroot, вам потребуется немного больше работы.

    Я считаю, что самое простое решение – создать собственный файл dnf.conf внутри chroot, поместить внутри него конфигурацию репозитория, а затем использовать его.

    Например, предположим, вы хотите создать chroot Fedora 24 в папке $(pwd)/mychroot , используя только пакеты из репозиториев fedora и rpmfusion.

    Вы должны создать mychroot/etc/dnf/dnf.conf со следующим содержимым:

     [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True reposdir= [fedora] name=Fedora $releasever - $basearch failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch enabled=1 metadata_expire=7d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [rpmfusion-free] name=RPM Fusion for Fedora $releasever - Free metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-$releasever&arch=$basearch enabled=1 metadata_expire=14d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever и [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True reposdir= [fedora] name=Fedora $releasever - $basearch failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch enabled=1 metadata_expire=7d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [rpmfusion-free] name=RPM Fusion for Fedora $releasever - Free metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-$releasever&arch=$basearch enabled=1 metadata_expire=14d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever и [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True reposdir= [fedora] name=Fedora $releasever - $basearch failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch enabled=1 metadata_expire=7d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [updates] name=Fedora $releasever - $basearch - Updates failovermethod=priority metalink=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f$releasever&arch=$basearch enabled=1 gpgcheck=1 metadata_expire=6h gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch skip_if_unavailable=False [rpmfusion-free] name=RPM Fusion for Fedora $releasever - Free metalink=https://mirrors.rpmfusion.org/metalink?repo=free-fedora-$releasever&arch=$basearch enabled=1 metadata_expire=14d gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever 

    (посмотрите файлы /etc/yum.repos.d/*.repo в вашей системе и просто скопируйте-вставьте)

    Важной частью этой строки является main раздел, в котором говорится, что dnf не ищет репозитории в любом каталоге, а только в главном файле конфигурации, который заставит его игнорировать ваши системные репозитории:

     reposdir= 

    Наконец, вы можете запустить dnf:

     # dnf -c $(pwd)/mychroot/etc/dnf/dnf.conf install --installroot=$(pwd)/mychroot --releasever=24 gstreamer1-libav 

    С 2016 года или около того Dnf изменила свои значения по умолчанию . Это означает, что при выполнении команды

     # dnf --installroot=/mnt/new-root --releasever=26 \ group install custom-environment 

    По умолчанию Dnf теперь выглядит сначала в etc/dnf/dnf.conf и etc/yum.repo.d под /mnt/new-root .

    Это значение по умолчанию можно изменить, указав:

      --setopt=reposdir=/other/path --config /other/location/dnf.conf 

    dnf позволяет установить любую конфигурационную опцию в командной строке, и это включает reposdir . Должна быть доступна такая команда:

     ROOT=/path/to/my/chroot dnf --installroot="$ROOT" \ -c "$ROOT"/etc/dnf/dnf.conf \ --setopt=reposdir="$ROOT"/etc/yum.repos.d \ install ... 
    Interesting Posts

    перезаписать данные раздела ext4 без предварительного удаления

    Найти каталоги и файлы с разрешениями, отличными от 775/664

    Не удается разрешить все имена после подключения к VPN

    Bash Как я могу обернуть текст на определенное количество разделенных пространством входов

    Как выбрать строки в файле, который содержит число из списка номеров

    Изменение времени создания файла в файловой системе FAT

    вставлять переменный текст после другого текста переменной на определенной строке

    Feh – странное поведение при загрузке фонов в Arch Linux

    Включая каталоги в Locate на Mac OS X

    переименуйте 10 наиболее недавно измененных файлов в AIX

    Запустить сценарий, когда пользователь выйдет из системы

    Обрезание изображения в формате JPG

    Правила IPTables для маршрутизации трафика VPN через прокси-сервер

    Как переформатировать табличные данные с помощью AWK?

    Cron неожиданно вызывает скрипт каждые 15 минут

    Linux и Unix - лучшая ОС в мире.