Früher baute ich Chroot-Gefängnisse mit yum
. Es war einfach, leicht und ließ mich Dinge tun, die zu diesem Zeitpunkt nicht wirklich verfügbar waren (Pakete für mehrere Distributionen auf Plattformen wie ia64 und ppc mit derselben Infrastruktur erstellen).
5 Jahre schneller Vorlauf, ich möchte auf Fedora 23 ein einfaches Chroot-Gefängnis bauen. Das dnf
macht dies jedoch nicht einfach. Früher konnte ich einfach eine /etc/yum.repo.d/
Datei im Gefängnisverzeichnis erstellen und anrufen yum --installroot
. Leider dnf
liest immer noch das lokale Repo und nicht das im Chroot-Gefängnis erstellte.
Ist es möglich, dnf
Conf-Dateien zu verwenden, die nicht /etc/dnf/dnf.conf
oder nicht vorhanden sind /etc/yum.repos.d/
?
--releasever=23
die Installation mit meinen lokalen Repos funktioniert hat, aber ich kann trotzdem nicht auf ein anderes Repo verweisen, das nicht Teil meiner Installation ist. Dies bringt mir das, was ich gerade will, löst aber nicht das GrundproblemAntworten:
Wie Sie herausgefunden haben, müssen Sie mit dnf das
--releaserver
Argument angeben .Wenn Sie außerdem Repositorys verwenden möchten, die für die Chroot spezifisch sind, benötigen Sie etwas mehr Arbeit.
Ich finde, die einfachste Lösung besteht darin, eine eigene
dnf.conf
Datei in der Chroot zu erstellen , die Repository-Konfigurationen darin abzulegen und sie dann zu verwenden.$(pwd)/mychroot
Angenommen , Sie möchten eine Fedora 24-Chroot im Ordner erstellen , indem Sie nur Pakete aus den Fedora- und rpmfusion-freien Repositorys verwenden.Sie würden die
mychroot/etc/dnf/dnf.conf
Datei mit folgendem Inhalt erstellen :(Sehen Sie sich die
/etc/yum.repos.d/*.repo
Dateien auf Ihrem System an und kopieren Sie sie einfach.)Der wichtige Teil ist diese Zeile in dem
main
Abschnitt, in dem dnf angewiesen wird, nicht in einem Verzeichnis nach Repositorys zu suchen, sondern nur in der Hauptkonfigurationsdatei, wodurch Ihre System-Repositorys ignoriert werden:Schließlich können Sie dnf ausführen:
quelle
AttributeError: 'NoneType' object has no attribute 'lstrip'
Seit etwa 2016-10 hat Dnf seine Standardeinstellungen geändert . Das heißt bei der Ausführung eines Befehls wie
Dnf sucht jetzt standardmäßig zuerst nach
etc/dnf/dnf.conf
undetc/yum.repo.d
unter/mnt/new-root
.Diese Standardeinstellung kann geändert werden, indem Folgendes angegeben wird:
quelle
Mit dnf können Sie eine beliebige Konfigurationsoption in der Befehlszeile festlegen
reposdir
. Es sollte möglich sein, einen Befehl wie diesen zu verwenden:quelle