Seit Fedora 26, die Dnf repoquery
subcommand Träger hat eine neue Option für die Auflistung alle vom Benutzer installierten Pakete:
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
Im Gegensatz zu anderen Methoden werden auch alle debuginfo-Pakete aufgelistet. Das zusätzliche grep im obigen Beispiel filtert sie heraus.
So installieren Sie die Liste auf Host B:
$ < pkgs_a.lst xargs dnf -y install
DNF API
Bei neueren Dnf-Versionen (z. B. Fedora> = 23) kann die Paketdatenbank über die Dnf-Python-API nach vom Benutzer installierten Paketnamen abgefragt werden:
$ python3 -c 'import dnf; b = dnf.Base(); b.fill_sack(); \
l = sorted(set(x.name for x in b.iter_userinstalled() \
if not x.name.endswith("-debuginfo") \
and x.name not in \
["kernel-modules", "kernel", "kernel-core", "kernel-devel"] )); \
print("\n".join(l)) ' > pkgs_a.lst
# dnf install $(cat pkgs_a.lst) # on host_b
Standardmäßig wird dnf install
abgebrochen, wenn ein oder mehrere Pakete nicht mehr verfügbar sind. Alternativ kann dnf gezwungen werden , alle verbleibenden zu installieren:
# dnf install --setopt=strict=0 $(cat pkgs_a.lst) # on host_b
PS: Gib den obigen Code ein und vieles mehr user-installed.py
, das auch andere Distributionen unterstützt.
Verlauf vom Benutzer installiert
Auf Fedora 23 und höher bietet DNF die
# dnf history userinstalled
Befehl, der alle vom Benutzer installierten Pakete auflistet. Ab 2016-11 ist seine Nützlichkeit eingeschränkt, da es keine Möglichkeit gibt, seine Ausgabe zu steuern, und es druckt vollständig qualifizierte Pakete (dh einschließlich Versionsinformationen).
benutzerinstallierte Einschränkungen
Beachten Sie, dass die Kennzeichnung von Paketen als vom Benutzer installiert bei einigen Fedora-Versionen einige Einschränkungen aufweist.
Repoquery
Auf älteren Fedora-Systemen, auf denen Dnf, die Dnf-API, dnf history userinstalled
nicht verfügbar ist, kann stattdessen Repoquery verwendet werden, z.
$ repoquery --installed \
--qf '%{n} | %{yumdb_info.reason} | %{yumdb_info.installed_by}' --all \
| awk -F'|' ' $2 ~ /user/ && ($3 != 4294967295) { print $1 }' \
| sort -u > pkgs_a.lst
Die zweite awk-Bedingung dient zum Ausschließen von Paketen, die vom Installationsprogramm installiert wurden. Die Benutzer-ID des Installateurs wurde anscheinend als 4294967295 gespeichert - alternativ können Sie so etwas schreiben ($3 == 0 || $3 == your-user-id)
.
Beachten Sie, dass dieser Befehl auf Fedora bis Release 21 funktioniert - aber z. B. nicht auf Release 23, da der Befehl repoquery
durch ersetzt wurde dnf repoquery
. Und dnf repoquery
versteht das %{yumdb_info.reason}
Tag nicht.
repoquery ...
Folgendes auf meinem System, als ich lief : "Ungültiger yumdb querytag 'Grund' für installiertes pkg: HandBrake-cli-0.9.5-1.fc14.x86_64"