ตั้งแต่ Fedora 26 คำrepoquery
สั่งย่อย Dnf สนับสนุนมีตัวเลือกใหม่สำหรับการแสดงรายการแพ็คเกจที่ผู้ใช้ติดตั้งทั้งหมด:
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
ตรงกันข้ามกับวิธีอื่นมันยังแสดงรายการแพ็คเกจ debuginfo ทั้งหมด grep เพิ่มเติมในตัวอย่างด้านบนจะกรองออก
ในการติดตั้งรายการบนโฮสต์ B:
$ < pkgs_a.lst xargs dnf -y install
Dnf API
ด้วยรุ่น Dnf ล่าสุด (เช่น Fedora> = 23) ฐานข้อมูลแพ็คเกจสามารถสอบถามได้จากชื่อแพ็คเกจที่ผู้ใช้ติดตั้งผ่าน Dnf Python API:
$ 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
ตามค่าเริ่มต้นให้dnf install
ยกเลิกหากแพ็คเกจอย่างน้อยหนึ่งแพ็คเกจไม่สามารถใช้ได้อีกต่อไป อีกทางเลือกหนึ่ง dnf สามารถบังคับให้ติดตั้งส่วนที่เหลือทั้งหมด:
# dnf install --setopt=strict=0 $(cat pkgs_a.lst) # on host_b
PS:ใส่รหัสข้างต้นและอื่น ๆ ลงในuser-installed.py
นั้นยังสนับสนุนการแจกแจงอื่น ๆ
ประวัติผู้ใช้ที่ติดตั้ง
ใน Fedora 23 และใหม่กว่านั้น Dnf ให้บริการ
# dnf history userinstalled
คำสั่งที่แสดงรายการแพ็คเกจที่ผู้ใช้ติดตั้งทั้งหมด ตั้งแต่วันที่ 2016-11 มีประโยชน์มี จำกัดเนื่องจากไม่มีวิธีการควบคุมผลลัพธ์และพิมพ์แพ็คเกจที่มีคุณสมบัติครบถ้วน (เช่นรวมถึงข้อมูลรุ่น)
ข้อ จำกัด ที่ผู้ใช้ติดตั้ง
โปรดทราบว่าการทำเครื่องหมายแพ็คเกจที่ติดตั้งโดยผู้ใช้นั้นมีข้อ จำกัด บางอย่างเกี่ยวกับ Fedora บางรุ่นสำหรับระบบยุค Fedora 23-ish (จากประมาณ 2015-11-11) ปัญหาต่อไปนี้มีความเกี่ยวข้อง):
Repoquery
สำหรับระบบ Fedora รุ่นเก่าที่ซึ่ง Dnf, Dnf API และdnf history userinstalled
ไม่มีให้บริการหนึ่งสามารถใช้repoqueryแทนเช่น:
$ 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
เงื่อนไข awk ที่สองใช้เพื่อแยกแพคเกจที่ติดตั้งโดยตัวติดตั้ง รหัสผู้ใช้งานติดตั้งเห็นได้ชัดว่าถูกเก็บไว้เป็น 4294967295 - ($3 == 0 || $3 == your-user-id)
อีกทางเลือกหนึ่งที่คุณสามารถเขียนสิ่งที่ต้องการ
โปรดทราบว่าคำสั่งนี้ทำงานบน Fedora ถึงปล่อย 21 - แต่เช่นไม่ได้อยู่ในการเปิดตัว 23 เพราะคำสั่งถูกแทนที่ด้วยrepoquery
dnf repoquery
และdnf repoquery
ไม่เข้าใจ%{yumdb_info.reason}
แท็ก
repoquery ...
: "yumdb querytag 'เหตุผล' สำหรับการติดตั้ง pkg ที่ไม่ถูกต้อง: HandBrake-cli-0.9.5-1.fc14.x86_64"