Как вы строите 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/ ?

  • Как установить пакет из источника на Fedora в 2017 году?
  • Как показать текущую версию во время обновления / проверки обновлений dnf
  • Fedora 24 переключается с начала KDE на значение по умолчанию (GNOME)
  • tell dnf как ссылаться на установленную библиотеку
  • dnf: Как узнать, что вызывает нарушения?
  • Имеет ли dnf эквивалент «build-dep» apt,
  • Fedora 23: «обновление dnf» застряло в «Выполнение транзакции»
  • Как установить gcc 6.4.1 на Fedora 26
  • 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 ... 
    Linux и Unix - лучшая ОС в мире.