Fedora 26'dan bu yana, Dnf altkomut repoquery
desteği , kullanıcı tarafından kurulan tüm paketleri listelemek için yeni bir seçeneğe sahiptir:
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
Diğer yöntemlerin aksine, tüm hata ayıklama paketlerini de listeler. Yukarıdaki örnekteki ek grep onları filtreliyor.
Listeyi ana makineye B yüklemek için:
$ < pkgs_a.lst xargs dnf -y install
Dnf API'sı
En son Dnf sürümleriyle (örneğin Fedora> = 23), paket veritabanı, Dnf Python API'sı aracılığıyla kullanıcı tarafından yüklenen paket adları için sorgulanabilir:
$ 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
Varsayılan olarak, dnf install
bir veya daha fazla paket artık kullanılamıyorsa iptal edilir. Alternatif olarak, dnf geri kalanları yüklemeye zorlanabilir :
# dnf install --setopt=strict=0 $(cat pkgs_a.lst) # on host_b
Not: Yukarıdaki kodu ve daha fazlasını user-installed.py
diğer dağıtımları da destekleyen kodlara yerleştirin .
Tarih geçmişi
Fedora 23 ve sonrasında Dnf,
# dnf history userinstalled
kullanıcının kurduğu tüm paketleri listeleyen komut. 2016-11 itibariyle, çıktısını kontrol etmenin bir yolu olmadığından ve paketleri tamamen nitelikli (yani sürüm bilgileri dahil) yazdırdığı için kullanışlılığı sınırlıdır .
userinstalled Sınırlamalar
Paketlerin kullanıcı tarafından yüklenen olarak işaretlenmesinin bazı Fedora sürümlerinde bazı sınırlamalar olduğunu, Fedora 23-ish dönemi sistemleri (2015-11 arası) için aşağıdaki sorunların geçerli olduğunu unutmayın:
Repoquery
Dnf, Dnf API'sinin ve dnf history userinstalled
kullanılamadığı eski Fedora sistemlerinde, bunun yerine repoquery kullanılabilir, örneğin:
$ 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
İkinci awk koşulu, yükleyici tarafından yüklenen paketleri hariç tutmak için kullanılır. Yükleyicinin kullanıcı kimliği görünüşte 4294967295 olarak saklandı - alternatif olarak benzer bir şey yazabilirsiniz ($3 == 0 || $3 == your-user-id)
.
Bu komutun 21 sürümüne kadar Fedora üzerinde çalıştığını, ancak komutun repoquery
yerini aldığı için 23 sürümünde çalışmadığını unutmayın dnf repoquery
. Ve etiketi dnf repoquery
anlamıyor %{yumdb_info.reason}
.
repoquery ...
koştuğumda bunları sistemimde fark ettim : "Kurulu pkg için geçersiz yumdb querytag 'nedeni': HandBrake-cli-0.9.5-1.fc14.x86_64"