9.10.2017

Fedora'da dnf kullanımı

Fedora'da yum'ın yerini alan dnf gayet pratik. Ama özetlemek için birkaç önemli noktayı yazmak istedim, biraz da apt ile kıyaslayarak (// işaretinden sonrası Ubuntu için).

Repository'leri güncellemek
# dnf check-update  // apt update
Kurulu bütün paketleri güncellemek
# dnf update // apt upgrade
Tek bir paketi güncelleme
# dnf update firefox // apt upgrade firefox
Veya daha da öncesinde paket kurmak
# dnf install firefox // apt install firefox
Paketi kaldırmak
# dnf remove firefox // apt remove firefox
Bazen log dosyaları vs ile birlikte programın tüm artıklarından kurtulmak gerekir. Bu işin dnf'te karşılığı yok.
 # --------- // apt purge firefox (veya apt remove --purge firefox)
Kurulu paketi tekrar kurmak
# dnf reinstall firefox  //  apt reinstall firefox
Başka bir programın bağımlılığı olarak kurulmuş ama şu anda ihtiyaç duyulmayan paketleri kaldırmak için
# dnf autoremove // apt autoremove
Güncellenebilir (veya kurulu) olan paketlerin listesini almak için
# dnf list --upgrades (--installed) // apt list --upgradable (--installed)
Bir paket aramak
# dnf search (all) firefox // apt-cache search firefox
Bir paket hakkında ayrıntılı bilgi almak
# dnf info firefox // apt show firefox
Kurulu ve depolardaki sürüm hakkında bilgi almak
# dnf info firefox // apt-cache policy firefox
Geçici (cache) bilgileri temizlemek için
# dnf clean all  // apt clean
Bir dosyayı hangi paket kurdu
# dnf provides <dosya_adi> //  dpkg -S <dosya_adi> (veya apt-file search <dosya_adi>)
Veya bir paket kurulunce sisteme hangi dosyalar eklendi
# rpm -ql firefox (veya paket için rpm -qlp firefox-58.0.2-1.fc27.x86-64.rpm) //  dpkg-query -L firefox (paket için dpkg-deb -c firefox.deb, veya apt-file list firefox)
İnternet bağlantısı olmayan bir sisteme bir paketi kurabilmek için internet bağlantısı olan bir Fedora makinede gerekli indirmeleri yapıp, bunları daha sonra bağlantısı olmayan bilgisayara kurmak için download komutu kullanılabilir.
# dnf download NetworkManager
Açıkça belirtilmezse indirme konumu /var/cache/dnf olur (nasıl açıkça belirtilir, az sonra!) Ama hedef paketin bağımlılıkları varsa bunları tek tek indirmeye çalışmak zaman alıcı olabilir. Bunun için --resolve anahtarın kullanmak gerek.
# dnf download NetworkManager --resolve
Hatta bu indirilen tüm paketleri belli bir klasörde toplamak için --downloaddir anahtarı kullanılabilir.
# dnf download NetworkManager --resolve --downloaddir=/home/user/Downloads/NM
Komut geçmişini incelemek
# dnf history // # less /var/log/apt/history.log [bkz. 2]

En son dnf işlemini görmek için

# dnf history 0

en sondan bir önceki için

# dnf history -1

veya listedeki herhangi bir işlemin ID'sini kullanarak

# dnf history 13

kullanabiliriz. En sol satırda yazan ID, belli bir tarihe ait benzersiz bir belirteçtir. Bu tarihte yapılan işlerin ayrıntısını görmek için (örneğin ID'si 49 olan tarih ile ilgili) şu yazılabilir:

# dnf history info 49

Firefox'un son dnf upgrade ile yükseltilip yükseltilmediğini öğrenmek için şu komudu kullanabiliriz:

# dnf history info 0 | grep -i 'Firefox'

ID'lerde 0 en son güncelleştirmeyi, -1 ise ondan bir öncekini gösterir.

Yapılan işlemlerden herhangi birisini geri alabiliriz. Bu durumda geri alınan işleme ait kayıt history'den silinmez, ama geri alma (undo) işlemine ait yeni bir kayıt oluşturulur.

# dnf history undo 7

Bu sadece 7 numaralı dnf işleminde yapılanı geri alır. Bundan sonraki 8, 9 vs işlemlerini geri almaz. Geri almanın benzeri rollback işlemi var. Rollback'te ise belirtilen işleme kadar tüm işlemler geri alınır, sistem belirtilen işlem yapıldıktan sonraki haline geri döner. Yani

# dnf history rollback 7

dersek, 7 numaralı işlem yapıldıktan sonraki haline döneriz. 8, 9 ve diğerleri artık yapılmamış sayılır. 7'den sonraki işlemler history listesinden de silinir. Undo ve rollback işlemleri öncesinde clean komutunu kullanmamak gerek ki cache'teki dosyalarımızla işlem yapabilelim.

Repository listesini amak

# dnf repolist // # grep -Erh '^deb ' /etc/apt/sources.list*
Bunun yanı sıra bir de Fedora'ya özgü paket grupları var. Örneğin geliştiriciler için "Development and Creative Workstation" gibi. Bunların listesini almak için
# dnf grouplist
Bu grup paketlerinden birini kurmak için
# dnf groupinstall "Web Server"
Kaldırmak için ise
# dnf groupremove "Web Server"

kullanılabilir.

Fedora (Redhat) ailesinde dnf update sonrasında emin misiniz sorusunun cevabı varsayılan olarak "hayır (H)". Ubuntu'da varsayılan olarak evet.

2018-10-15 Ekleme: dnf history kullanırken farkettiğim birşey var. Yeni kurulmuş bir Fedora 28 işistasyonu için dnf history komutunu verince aldığım çıktı şöyle oluyor.


Wikipedia'da [3] ve Fedora Project Community Blog'da [4] görüldüğü gibi Fedora 28'in çıkış tarihi 01.05.2018. Yani history'nin 1 numaralı girişi için gözüken tarih 2018-04-25 aslında Fedora 28'in resmi çıkış tarihinden önce bir tarih. Sistemi kurduktan sonraki ilk açılışta dnf upgrade ile güncellediğim için 2 numaralı satırda gözüken tarih doğru olarak sistemin ilk güncellemesine ait giriş.

2022-08-05 Ekleme: dnf'i hızlandırmak için şu videoda Ermanno, /etc/dnf/dnf.conf dosyasını açarak aşağıdaki satırları eklemiş:

max_parallel_downloads=10    # varsayılan 3
fastestmirror=True           # tartışmalı

fastestmirror söylendiğine göre sadece anlık olarak sunucuların cevap süresine bakarak bir tercihte bulunuyor. Reddit'te bir gönderide bu seçeneğin en hızlı bant genişliğine sahip sunucuyu seçmediğinden ve çoğu zaman daha yavaş bir indirmeye sebep olabileceğinden bahsedilmiş.


---

[1] https://www.digitalocean.com/community/tutorials/package-management-basics-apt-yum-dnf-pkg
[2] https://askubuntu.com/questions/21657/how-do-i-show-apt-get-package-management-history-via-command-line
[3] https://en.wikipedia.org/wiki/Fedora_version_history
[4] https://communityblog.fedoraproject.org/fedora-28-release-dates-schedule/

Hiç yorum yok: