Como você constrói jail chroot com dnf?

7

De volta ao dia eu costumava construir jail chroot usando yum . Foi simples, fácil e deixou-me fazer coisas que não estavam realmente disponíveis no momento (construir pacotes para várias distros em plataformas como ia64 e ppc usando a mesma infra-estrutura).

Avanço rápido de 5 anos, gostaria de construir uma simples cadeia chroot no Fedora 23. No entanto, dnf não torna isso fácil. Eu costumava ser capaz de criar um arquivo /etc/yum.repo.d/ no diretório jail e chamar yum --installroot . Infelizmente dnf ainda está lendo o repositório local e não aquele criado na cadeia chroot.

É possível ter dnf use arquivos conf que não são /etc/dnf/dnf.conf ou /etc/yum.repos.d/ ?

    
por Joe 02.03.2016 / 20:11

3 respostas

3

Como você descobriu, com dnf você precisa especificar o argumento --releaserver .

Além disso, se você quiser usar repositórios específicos para o chroot, você precisará de um pouco mais de trabalho.

Acho que a solução mais fácil é criar seu próprio arquivo dnf.conf dentro do chroot, colocar as configurações do repositório dentro dele e depois usá-lo.

Por exemplo, digamos que você queira criar um chroot do Fedora 24 na pasta $(pwd)/mychroot , usando apenas pacotes dos repositórios fedora e rpmfusion.

Você criaria o arquivo mychroot/etc/dnf/dnf.conf , com o seguinte conteúdo:

[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

(veja os arquivos /etc/yum.repos.d/*.repo em seu sistema e apenas copie e cole)

A parte importante é essa linha na seção main , que diz ao dnf para não procurar repositórios em nenhum diretório, mas apenas no arquivo de configuração principal, o que fará com que ele ignore os repositórios do sistema:

reposdir=

Finalmente, você pode executar o dnf:

# dnf -c $(pwd)/mychroot/etc/dnf/dnf.conf install --installroot=$(pwd)/mychroot --releasever=24 gstreamer1-libav
    
por 13.07.2016 / 09:05
3

Desde 2016-10 ou mais, o Dnf alterou seus padrões . Isso significa que ao executar um comando como

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

Dnf agora procura primeiro etc/dnf/dnf.conf e etc/yum.repo.d sob /mnt/new-root , por padrão.

Este padrão pode ser alterado através da especificação de:

 --setopt=reposdir=/other/path --config /other/location/dnf.conf
    
por 14.07.2017 / 22:21
0

dnf permite configurar qualquer opção de configuração na linha de comando, e isso inclui reposdir . Deve ser possível usar um comando como este:

ROOT=/path/to/my/chroot
dnf --installroot="$ROOT" \
    -c "$ROOT"/etc/dnf/dnf.conf \
    --setopt=reposdir="$ROOT"/etc/yum.repos.d \
    install ...
    
por 17.06.2017 / 12:27

Tags