Sejak Fedora 26, dukungan repoquery
sub- perintah Dnf memiliki opsi baru untuk mendaftar semua paket yang diinstal pengguna:
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
Berbeda dengan metode lain, ia juga mencantumkan semua paket debuginfo. Grep tambahan dalam contoh di atas memfilternya.
Untuk menginstal daftar di host B:
$ < pkgs_a.lst xargs dnf -y install
API Dnf
Dengan versi Dnf terbaru (mis. Fedora> = 23), basis data paket dapat ditanyakan untuk nama paket yang diinstal pengguna melalui API Python Dnf:
$ 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
Secara default, dnf install
batalkan jika satu atau lebih paket tidak tersedia lagi. Atau, dnf dapat dipaksa untuk menginstal semua yang tersisa:
# dnf install --setopt=strict=0 $(cat pkgs_a.lst) # on host_b
PS: Masukkan kode di atas dan lebih banyak lagi user-installed.py
yang juga mendukung distribusi lain.
riwayat pengguna diinstal
Pada Fedora 23 dan yang lebih baru, Dnf menyediakan
# dnf history userinstalled
perintah yang mencantumkan semua paket yang diinstal pengguna. Pada 2016-11, kegunaannya terbatas karena tidak ada cara untuk mengontrol hasilnya dan mencetak paket yang sepenuhnya memenuhi syarat (yaitu termasuk informasi versi).
Keterbatasan yang diinstal pengguna
Perhatikan bahwa penandaan paket sebagai yang diinstal oleh pengguna memiliki beberapa batasan pada beberapa versi Fedora, untuk sistem era Fedora 23-ish (mulai sekitar 2015-11) masalah berikut ini relevan):
Repoquery
Pada sistem Fedora yang lebih lama, di mana Dnf, API Dnf dan dnf history userinstalled
tidak tersedia, seseorang dapat menggunakan repoquery sebagai gantinya, misalnya:
$ 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
Kondisi awk kedua digunakan untuk mengecualikan paket yang diinstal oleh installer. User-id installer tampaknya disimpan sebagai 4294967295 - atau Anda dapat menulis sesuatu seperti itu ($3 == 0 || $3 == your-user-id)
.
Perhatikan bahwa perintah ini berfungsi pada Fedora hingga rilis 21 - tetapi mis. Tidak pada rilis 23, karena perintah repoquery
diganti dengan dnf repoquery
. Dan dnf repoquery
tidak mengerti %{yumdb_info.reason}
tag.
repoquery ...
: "querytag yumdb tidak valid 'alasan' untuk pkg terpasang: HandBrake-cli-0.9.5-1.fc14.x86_64"