27 פקודות 'DNF' (מצת Yum) לניהול חבילות RPM ב-Linux

DNF הידוע גם כ־Dandified YUM הוא מנהל חבילות לדור הבא עבור הפצות מבוססות RPM. הוא נכנס לשימוש לראשונה ב־Fedora 18 והחליפ את הכלי YUM בגרסה האחרונה של Fedora 22.

DNF פועל לשיפור נקודות התוהו ב־YUM, כגון ביצועים, שימוש בזיכרון, פתרון תלותים, מהירות ועוד. DNF מנהל חבילות באמצעות RPM, libsolv וספריית hawkey. אף על פי שהוא אינו מותקן מראש ב־CentOS ו־RHEL 7, אפשר להתקין אותו על ידי הפקודות yum, dnf ולהשתמש בו בנוסף ל־yum.

ניתן לקרוא עוד על DNF כאן:

  1. Reasons Behind Replacing Yum with DNF

הגרסה היציבה האחרונה של DNF היא 1.0 (בזמן כתיבת הפוסט) שיצאה ב־11 במאי 2015. היא (וכל הגרסאות הקודמות של DNF) נכתבו בעיקר בפייתון ושוחררו תחת רישיון GPL v2.

התקנה של DNF

DNF אינו זמין במאגר הברירת מחדל של RHEL/CentOS 7. בכל זאת, Fedora 22 מגיעה עם DNF מוטמעת באופן רשמי.

כדי להתקין DNF על מערכות RHEL/CentOS, יש להתקין ולהפעיל את המאגר epel-release.

# yum install epel-release
OR
# yum install epel-release -y

אף על פי שזה לא אתי טוב להשתמש ב-"-y" עם yum מכיוון שמומלץ לראות מה מתקין במערכת, אם זה אינו חשוב לך, ניתן להשתמש ב-"-y" עם yum כדי להתקין הכל באופן אוטומטי ללא התערבות המשתמש.

לאחר מכן, יש להתקין את חבילת ה-DNF באמצעות פקודת yum ממאגר epel-release.

# yum install dnf

לאחר ההתקנה המוצלחת של dnf, עתיד להראות לך 27 שימושים מעשיים של פקודות DNF עם דוגמאות שיסייעו לך לנהל חבילות בהפצה מבוססת RPM בצורה קלה ויעילה.

1. בדוק את גרסת DNF

בדוק את גרסת DNF המותקנת במערכת שלך.

# dnf --version

2. רשימת מאגרי DNF המופעלים

האפשרות 'repolist' עם הפקודה dnf תציג את כל המאגרים המופעלים במערכת שלך.

# dnf repolist

3. רשימת כל המאגרים המופעלים והמנוטרלים של DNF

האפשרות 'repolist all' תדפיס את כל המאגרים המופעלים/המנוטרלים במערכת שלך.

# dnf repolist all

4. רשימת כל החבילות הזמינות והמותקנות באמצעות DNF

הפקודה "dnf list" תציג את כל החבילות הזמינות מכל המאגרים והחבילות המותקנות במערכת ה-Linux שלך.

# dnf list

5. רשימת כל החבילות המותקנות באמצעות DNF

בעוד שהפקודה "dnf list" מציגה את כל החבילות הזמינות/מותקנות מכל המאגרים. עם זאת, יש לך אפשרות לרשום רק את החבילות שמותקנות באמצעות האפשרות "list installed" כפי שמוצג למטה.

# dnf list installed

6. רשימת כל החבילות הזמינות באמצעות DNF

באופן דומה, האפשרות "list available" תציג את כל החבילות הזמינות להתקנה מכל המאגרים שמופעלים.

# dnf list available

7. חיפוש אחר חבילה באמצעות DNF

אם אין לך מושג על החבילה שברצונך להתקין, במצב כזה תוכל להשתמש באפשרות 'search' עם פקודת dnf כדי לחפש את החבילה שמתאימה למילה או מחרוזת (אמרו ננו).

# dnf search nano

8. ראה מה מספק קובץ/תת-חבילה?

האפשרות של dnf "provides" מוצאת את שם החבילה שמספקת קובץ/תת-חבילה מסוים. לדוגמה, אם ברצונך לגלות מה מספק '/bin/bash' במערכת שלך?

# dnf provides /bin/bash

9. קבל פרטי חבילה באמצעות DNF

נניח שברצונך לקבל את המידע על חבילה לפני התקנתה במערכת, ניתן להשתמש במפתח "info" כדי לקבל מידע מפורט על חבילה (אמרו ננו) כמצויין למטה.

# dnf info nano

10. התקן חבילה עם DNF

כדי להתקין חבילה בשם nano, פשוט הריץ את הפקודה למטה וזה יפתור ויתקין את כל התלות הדרושות באופן אוטומטי עבור החבילה nano.

# dnf install nano

11. עדכון חבילה באמצעות DNF

ניתן לעדכן רק את החבילה הספציפית (לדוג' systemd) ולהשאיר את כל המערכת במקום.

# dnf update systemd

12. לבדוק עדכונים למערכת באמצעות DNF

ניתן לבדוק עדכונים עבור כל החבילות במערכת פשוט כך.

# dnf check-update

13. לעדכן את כל חבילות המערכת באמצעות DNF

ניתן לעדכן את כל המערכת כולל כל החבילות המותקנות עם הפקודות הבאות.

# dnf update
OR
# dnf upgrade

14. להסיר/למחוק חבילה באמצעות DNF

כדי להסיר חבילה לא רצויה (לדוג' nano), ניתן להשתמש במפתח "remove" או "erase" עם פקודת dnf כדי להסיר אותה.

# dnf remove nano
OR
# dnf erase nano

15. להסיר חבילות יתומות באמצעות DNF

החבילות שהותקנו כדי לעמוד בתלות יתכנו שיהיו בלתי שימושיות אם לא ישמשו על ידי יישומים אחרים. כדי להסיר את החבילות היתומות אנא בצע את הפקודה הבאה.

# dnf autoremove

16. להסיר חבילות מטמונות באמצעות DNF

A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.

# dnf clean all

17. לקבלת עזרה בפקודת DNF ספציפית

ניתן לקבל עזרה לגבי פקודת dnf ספציפית (לדוג' clean) פשוט על ידי ביצוע הפקודה הבאה.

# dnf help clean

18. לרשום את כל הפקודות והאפשרויות של DNF

כדי לרשום עזרה לגבי כל הפקודות והאפשרויות של dnf הקיימות, פשוט הקלד.

# dnf help

19. להציג את היסטוריית DNF

ניתן לקרוא את ההיסטוריה של dnf כדי לראות את רשימת הפקודות שבוצעו כבר. בכך ניתן לדעת מה הותקן/הוסר עם חותמת זמן.

# dnf history

20. לרשום את כל חבילות הקבוצה

הפקודה "dnf grouplist" תדפיס את כל החבילות הזמינות או המותקנות, ואם אין כלום מוזכר, היא תציג את כל הקבוצות הידועות.

# dnf grouplist

21. התקנת חבילת קבוצה באמצעות DNF

כדי להתקין קבוצת חבילות שמגובשות יחד כחבילת קבוצה (נניה אמריקאית תוכנה לחינוך) פשוט ככה.

# dnf groupinstall 'Educational Software'

22. עדכון של חבילת קבוצה

בואו נעדכן חבילת קבוצה (אמריקאית תוכנה לחינוך) על ידי ביצוע הפקודה הבאה.

# dnf groupupdate 'Educational Software'

23. הסרת חבילת קבוצה

אנו יכולים להסיר את חבילת הקבוצה (אמריקאית תוכנה לחינוך) ככה.

# dnf groupremove 'Educational Software'

24. התקנת חבילה ממחסן מסוים

DNF מאפשרת להתקין כל חבילה מסוימת (אמריקאית phpmyadmin) ממחסן (epel) פשוט ככה,

# dnf --enablerepo=epel install phpmyadmin

25. סנכרון של חבילות המותקנות לגרסה יציבה

הפקודה "dnf distro-sync" תספק אפשרויות נדרשות לסנכרון כל החבילות המותקנות לגרסה האחרונה ויציבה ביותר הזמינה מכל מחסן מאופשר. אם לא נבחרה חבילה, כל החבילות המותקנות יתואגדו.

# dnf distro-sync

26. התקנה מחדש של חבילה

הפקודה "dnf reinstall nano" תתקין מחדש חבילה שכבר הותקנה (אמריקאית nano).

# dnf reinstall nano

27. גרסת ירידה של חבילה

האפשרות "ירידה בגרסה" תקטין את החבילה שצוינה (אמריקאית acpid) לגרסה נמוכה אם יש אפשרות לכך.

# dnf downgrade acpid
פלט לדוגמה
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

האבחנה שלי: DNF לא ירד את החבילה כפי שצפוי. גם דווח על כך כשגיאה.

מסקנה

DNF הוא המצב העליון של מנהל החבילות YUM. זה נוטה לעשות המון עיבוד אוטומטי שאינו מתקבל הרבה על ידי מנהלי מערכת Linux מנוסים, כפי שאני מאמין. כדי לתת משל:

  1. --skip-broken אינו מוכר על ידי DNF ואין חלופה.
  2. אין דבר כמו פקודת ‘resolvedep‘ אף על פי כן אתה יכול להריץ dnf provides.
  3. אין פקודת ‘deplist‘ כדי למצוא תלות בחבילות.
  4. כאשר אתה מחייב ריפוי של מאגר, זה אומר שההוצאה תחול על כל הפעולות, לא כמו yum שמחריב את המאגרים האלו רק בזמן ההתקנה והעדכונים, וכו'

כמה משתמשי Linux אינם מרוצים מהכיוון שהאקוסיסטמה של Linux נעה אליו. תחילה Systemd הסיר את מערכת ההפעלה init v ועכשיו DNF יחליפו את YUM במהירות יותר ב־Fedora 22 ולאחר מכן ב־RHEL ו־CentOS.

מה דעתך? האם ההפצות וכל האקוסיסטמה של Linux אינם מעריכים את המשתמשים שלהם ומתקדמים נגד רצונם. גם נאמר בתעשיית המחשבים – "למה לתקן, אם לא פגום?", ולא גם שיטת ההפעלה init V ולא YUM פגומים.

זהו כולו עבור כעת. אנא תעדו את דעותיכם המוערכות בתגובות למטה. תיהנו מהמאמר? עשו לייק ושתפו כדי לעזור לנו להפיץ.

Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/