DNF Paket Yöneticisi için Hızlı Kılavuz

Yayınlanan: 2020-06-06

DNF, şu anda çoğu RPM tabanlı Linux dağıtımında varsayılan paket yönetim sistemidir.

DNF, depolardan paketleri indirir, paketleri kurar, kaldırır ve günceller. Yüklediğiniz, güncellediğiniz veya kaldırdığınız paketler için otomatik bağımlılık çözümü gerçekleştirir ve bağımlılık gereksinimlerini karşılamak için gereken tüm paketleri kurar.

Fedora'da, Fedora 22'den beri varsayılan paket yöneticisi olmuştur. RHEL 8.x'te artık varsayılan paket yöneticisidir.

DNF, GPG imzalı paketlerde GPG imza doğrulamasını etkinleştirerek güvenli paket yönetimi sağlar. DNF, o depo için doğru anahtarla imzalanmamış hiçbir paketi kurmayacaktır.

Geriye dönük uyumluluk için RHEL 8.x, DNF'ye bir bağlantı olmasına rağmen bir YUM komutuna da sahiptir.

Neden DNF?

DNF veya Dandified YUM, yeni nesil YUM'dur. YUM ile karşılaştırıldığında, DNF daha iyi bellek kullanımına, gelişmiş bağımlılık yönetimine ve hem Python 2 hem de Python 3'ü kullanarak çalışma yeteneğine sahiptir.

DNF ile Paket Yönetimi

Paketi yüklemek, güncellemek veya kaldırmak amacıyla DNF Komutunu kullanmak için süper kullanıcı ayrıcalıklarına sahip olmanız gerekir. Aşağıda, sistem yöneticileri tarafından sıklıkla kullanılan bir dizi DNF komutu bulunmaktadır.

paket aranıyor

Yüklü veya tüm depolarda bulunan bir paketi aramak için şunu kullanın :

 $ sudo dnf search <em>package_name</em>

Örneğin, Nmap paketini aramak için:

 $ sudo dnf search nmap
 Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement

Paketleri listeleme

Yüklü ve kullanılabilir tüm paketlerin bir listesini görmek için:

 $ sudo dnf list all
 Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...

Kurulu tüm paketleri listelemek için:

$ sudo dnf list installed

 Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...

Mevcut tüm paketleri listelemek için:

 $ sudo dnf list available
 Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...

Örneğin, mevcut tüm MySQL paketlerini listelemek için:

 $ sudo dnf list available "mysql*"
 Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms

Paket bilgilerini görüntüleme

Bir paketle ilgili bilgileri görüntülemek için:

 $ sudo dnf info <em>package_name </em>

Örneğin, httpd sunucusu hakkında bilgi görüntülemek için:

 $ sudo dnf info httpd
 Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.

paketleri yükleme

Tek bir paket yükleme

Tek bir paketi ve kurulu olmayan tüm bağımlılıklarını kurmak için:

 $ sudo dnf install package_name

Örneğin, Nginx'i kurmak için:

 $ sudo dnf install nginx
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..

Bu, Nginx'i ve kurulu olmayan tüm bağımlılık gereksinimlerini yükleyecektir.

Birden çok paket yükleme

Ayrıca bu komuta paket isimleri ekleyerek birden fazla paket kurabilirsiniz. Örneğin, Nginx, PHP ve MySQL sunucusunu kurmak için şunu girin:

 $ sudo dnf install nginx php mysql-server
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...

Bir paketi ikili dosya adına göre yükleme

Yüklenecek ikili dosyanın adını biliyor, ancak paket adını bilmiyorsanız, bu bile ilgili paketi yüklemek için yeterlidir.

Örneğin, şunu girerseniz:

 $ sudo dnf install /usr/sbin/named
 Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:

DNF, /usr/sbin/ adlı paketi sağlayan paketi arar ve bulur ve onu yüklemenizi ister.

Hangi paketin bir dosyaya sahip olduğunu bulma

Dosya adını biliyorsanız ve hangi paketin sağladığını (yüklü veya değil) bulmak istiyorsanız, şunu kullanın:

 $ sudo dnf provides <em>file_name</em>

Örneğin, hangi paketin adlandırılmış olduğunu bulmak için, DNS sunucusu için ikili dosya kullanın:

 $ sudo dnf provides named
 Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named

Bir paketi kaldırma

Bir paketi kaldırmak için:

 sudo dnf remove <em>package_name</em>

Ancak dikkatli olun, DNF bir paketi kendisine bağlı olan paketleri de kaldırmadan kaldıramaz. nmap paketini kaldırmak için şunu kullanın:

 $ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:

Paket gruplarını yönetme

Paket grubu, yakından ilişkili ve ortak bir amaca hizmet eden paketler topluluğudur. Bir paket grubu kurmak, bir dizi paket kurarak çok zaman kazandırır.

Tüm paket gruplarını listele

Tüm paket gruplarını listelemek için:

 $ sudo dnf group list
 Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support

Bir gruptaki tüm paketleri listele

Bir gruptaki tüm paketleri listelemek için:

 $ sudo dnf group info <em>package_name</em>

Örneğin, Güvenlik Araçları grubundaki paketleri görüntülemek için:

 $ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers

Paket grubu yükleme

Bir grubun kurulması, bir gruptaki tüm paketleri kuracaktır. Bir paket grubu kurmak için şunları kullanın:

 sudo dnf group install <em>package_group_name</em>

Örneğin, “Ağ Sunucuları” grubunu kurmak için:

 $ sudo dnf group install “Network Servers”
 Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:

Bir paket grubunu kaldırma

Bir paket grubunu kaldırmak için:

 sudo dnf remove <em>package_name</em>

Bu nedenle, “Güvenlik Araçları” paket grubunu kaldırmak için:

 $ sudo dnf group remove "security tools"
 Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]: 

Paketleri güncelleme

Tüm paketleri güncelleme

Tüm paketleri ve bağımlılıklarını güncellemek için şunları kullanabilirsiniz:

 $ sudo dnf upgrade
 Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!

Bu, yüklenebilecek tüm güncellemeleri yükler. Hem dnf yükseltmesi hem de dnf güncellemesi aynı etkiye sahiptir, ancak dnf yükseltmesi tercih edilir.

Tek bir paketi güncelleme

Tek bir paketi güncellemek için şunu çalıştırın:

 $ sudo dnf upgrade package_name

Örneğin, python paketini güncellemek için:

 $ sudo dnf upgrade python

Çözüm

DNF'yi öğrenmek, genellikle sistem yönetimi görevlerini gerçekleştirmenin en hızlı yolu olduğu için faydalı olabilir. RHEL 8 öğrenmekle ilgileniyorsanız, bu Udemy kursuna göz atabilirsiniz.