फेडोरा 26 के बाद से, Dnf repoquery
उपकमांड समर्थन सभी उपयोगकर्ता-स्थापित पैकेजों को सूचीबद्ध करने के लिए एक नया विकल्प है:
$ dnf repoquery --qf '%{name}' --userinstalled \
| grep -v -- '-debuginfo$' \
| grep -v '^\(kernel-modules\|kernel\|kernel-core\|kernel-devel\)$' > pkgs_a.lst
अन्य तरीकों के विपरीत, यह सभी डिबगिनफो पैकेजों को भी सूचीबद्ध करता है। उपरोक्त उदाहरण में अतिरिक्त grep उन्हें फ़िल्टर करता है।
होस्ट B पर सूची स्थापित करने के लिए:
$ < pkgs_a.lst xargs dnf -y install
Dnf एपीआई
हाल के Dnf संस्करणों (उदाहरण के लिए फेडोरा> = 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
पुनश्च: उपरोक्त कोड और user-installed.py
उस में भी डाल अन्य वितरण का समर्थन करता है।
इतिहास उपयोगकर्ता की स्थापना की गई
Fedora 23 और बाद में, Dnf प्रदान करता है
# dnf history userinstalled
कमांड जो सभी उपयोगकर्ता स्थापित संकुल को सूचीबद्ध करता है। 2016-11 तक, इसकी उपयोगिता सीमित है क्योंकि इसके उत्पादन को नियंत्रित करने का कोई तरीका नहीं है और यह पूरी तरह से योग्य (यानी संस्करण जानकारी सहित) प्रिंट करता है।
उपयोगकर्ता सीमित सीमाएँ
ध्यान दें कि उपयोगकर्ता-स्थापित के रूप में संकुल के अंकन में कुछ फेडोरा संस्करणों पर कुछ सीमाएँ हैं, फेडोरा 23-ईश युग प्रणालियों (2015-11 के आसपास से) के लिए निम्नलिखित मुद्दे प्रासंगिक हैं:
Repoquery
बड़े फेडोरा सिस्टम, जहां DNF, DNF एपीआई और पर 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
इंस्टॉलर द्वारा स्थापित किए गए पैकेजों को बाहर करने के लिए दूसरी अजीब स्थिति का उपयोग किया जाता है। इंस्टॉलर का यूजर-आईडी जाहिरा तौर पर 4294967295 के रूप में संग्रहीत किया गया था - वैकल्पिक रूप से आप कुछ ऐसा लिख सकते हैं ($3 == 0 || $3 == your-user-id)
।
ध्यान दें कि यह कमांड फेडोरा पर 21 रिलीज करने के लिए काम करता है - लेकिन उदाहरण के लिए रिलीज 23 पर नहीं, क्योंकि कमांड repoquery
को बदल दिया गया था dnf repoquery
। और टैग dnf repoquery
को नहीं समझता है %{yumdb_info.reason}
।
repoquery ...
"अवैध yumdb querytag 'कारण' भी इंस्टॉल किया pkg के लिए: HandBrake-CLI-0.9.5-1.fc14.x86_64"