23.07.2018

archlinux kablosuz ağ şifresini güncelleme

İlk archlinux kurulumumda, wifi şifresini değiştirdikten sonra ağ bağlantısı sorunu yaşamaya başladım. Bilgisayarım bir türlü şifresi değişen kablosuz ağa bağlanmıyordu. Archlinux forumlarındaki şu sayfada faydalı birkaç öneri verilmiş.

Kablosuz erişim noktası üzerindeki kablosuz ağ şifremi değiştirdikten sonra /etc/netctl klasörü altında profil dosyama girip şifremi güncellemiştim. Benimki için dosya adı
/etc/netctl/wlo1-Deneme
idi. Dosyanın içinde Key ile başlayan satırdaki şifreyi güncelledikten sonra
sudo netctl start wlo1-Deneme
komutu ile profilimi başlatmayı denediğimde şöyle bir hata alıyordum:

Job for netctl@Deneme.service failed because the control process exited with error code. 
See "systemctl status netctl@Deneme.service" and "journalctl -xe" for details.

Forumdaki yüce kişilik öncelikle bu hatanın birden fazla IP otomatik ayarlaması yapan hizmetin çalışması ile ilgili olabileceğini farkederek bu kontrolü yaptırmış:
ls -l /etc/systemd/system/multi-user.target.wants 
 Klasörünün altındaki hizmetleri listeletmiş. Benimkinde de dhcp hizmetine ait bir öğe vardı. Önce onu kaldırdım:
systemctl disable dhcpcd.service systemd-networkd.service wicd.service
Daha sonra bilgisayarımı tekrar başlattım. Bilgisayarım tekrar başladıktan sonra netctl komutlarına daha önceki gibi hata vermeyi bıraktı. Artık wifi şifremi değiştirdikten sonra ilgili profil dosyamdaki şifreyi değiştirip sonrasında
netctl stop wlo1-Deneme
ve ardından (bazı durumlarda ip link set wlo1 up gerekebilir)
netctl start wlo1-Deneme
yapmam yetiyor :)

Ek 2019-05-29: Bilgisayarımın bağlandığı varsayılan wifi ağını değiştirdim. Archlinux, hala eski ağa bağlanmaya çalışıyor. Yenisine otomatik olarak bağlanmıyor. Şu adımları izledim:
sudo netctl disable wlo1-EskiAg
sudo netctl enable wlo1-YeniAg
Bu şekilde /etc/systemd/system/multi-user.target.wants  altındaki varsayılan bağlantı değiştirilir.

Archlinux ve pacman

Ubuntu ve Fedora'nın ardından yeni favorim Archlinux. Bir deneme yapabilmek için diskimde yeni bir bölüm oluşturdum, manuel kurulumu tamamladım. Komut satırı, AUR ve pacman ile biraz daha yakın ilişkim olacak, orası kesin.

Pacman'i biraz özetlemek benim için faydalı olacak.

Öncelikle söylenen o ki pacman, apt ve dnf'e kıyasla daha hızlı. Ama ihtiyaç duyulan parametreler biraz daha içgüdüden uzak. Kendi içinde bir yapısı var elbette, ama öğremek zaman alacak.

 Pacman'da işlemler 5 ana kategoride:

-Q : (Query) pacman veritabanını sorgula
-R : (Remove) sistemden paket kaldır
-S : (Sync) paketleri senkronize et
-U : (Upgrade) Sistemdeki paketleri güncelle
-F : (File) sistemde kurulu dosyaların içinde sorgu çalıştır

Query (-Q) işlemleri için kullanılabilecek anahtarlar:
-i : Kurulu paket ile ilgili bilgileri göster. Örneğin
pacman -Qi firefox
-k : Bir pakedin sahip olduğu dosyaları kontrol et. Ayrıntılı kontrol için -kk kullanılabilir.
-l : Bir paketin sisteme kurduğu dosyaları göster
-o : Bir dosyanın sahibi olan paketi ara
-s : Kurulu paketlerin arasında bir paket ismi ara
-e : explicit : sistemin kurduğu değil, kullanıcı tarafından kurulan programları listele.
-q : Quiet. sürüm no gibi ek bilgileri gösterme, sadece paket isimlerini listele.
-n : Sadece ana repo'lardan kurulan programları listele.
-m: AUR'dan kurulan programları listele.
-d : dependencies. Başka bir programın alt bağımlığı olarak kurulan programları listele.
-t : unrequired. gereksinim duyulmayan paketleri listele.
-dt: genelde ihtiyaç duyulmayan paketleri listelemek için ikisi beraber kullanılır.

vlc kurulu mu değil mi öğrenmek için:
pacman -Qs vlc

Remove (-R) işlemleri için kullanılabilecek anahtarlar:
-s : recursive. bir paketi ve o paketle gelen tüm alt bağımlılıkları kaldırmak için
-u : unneeded. gereksiz paketleri de kaldır
-n : paketle beraber gelen sistem yapılandırma dosyalarını da sil

Dolayısıyla thunderbird ile gelen bütün herşeyi kaldırmak için gereken komut:
pacman -Rnu thunderbird
olabilir.

Sync (-S) anahtarları:
-c : clean, yerel belleği temizle
-i : Kurulu olmayan paket ile ilgili bilgileri göster
-l : list
-q : quiet. Ekstra ayrıntılara (sürüm no, repo adı vs) girmeden sadece isimleri listele.
-s : search. depolarda arama yap.

Depolarda chromium aramak için
pacman -Ss chromium
-y : refresh. depolardan paket listesini tekrar indir (-Syy : liste yeniyse bile tekrar indir)
-u : upgrade. Tüm kurulu paketleri güncelle (-Suu: depodaki paket kurulu sürümden eskiyse bile güncelle)
-w : indir, ama kurma

File system (-F) işlemleri ile kullanılabilecek anahtar:
-s : search. Diskte kurulu bir dosyayı hangi paket kurmuş Bu artık (2024-02-27) yok. Bu işlev yerine sadece -F kullanılmalı.
-yy : force update. Henüz yeni güncellenmiş olsa da yine de paket listesini güncelle.
pacman -Fy
pacman -F libmozgtk.so
pacman -F /usr/lib/firefox/libmozgtk.so

Yukarıdaki ilk adımda pacman'in dosya/paket listesini güncellemesini, ikinci adımda libmozgtk.so dosyasının hangi paketlerde bulunabileceğini, üçüncü adımda ise tam yolu verilen dosyanın hangi paketlerde bulunabileceğini sorguluyoruz. Buna benzer bir işlev pkgfile ile de sunuluyor:

pkgfile lsb-release
pkgfile /etc/lsb-release
Genel bir anahtar: 
-p : işlemi yapmaktansa sadece işlemin uygulanacağı paket adını yaz.

Birkaç örnek üzerinden gidelim:

pacman -Syy // yerel paket verisini sunucularla eşleştir (sync)
pacman -Syu // tüm paketleri güncelle
pacman -Ss firefox // repository'lerde adında firefox geçen paket ara
pacman -Ssq ^firefox$ // tam adı firefox olan paketi ara, ayrıntısız
pacman -S firefox // firefox'u depolardan kur
pacman -S extra/firefox // belli bir depodan kur
pacman -U /home/user/package // sistemdeki yerel dosyayı kur
pacman -U http://github/... // bir URL'den dosya kur
pacman -S gnome // gnome paket grubunu kur
pacman -R firefox // bir paket kaldır
pacman -Rs apache // bir paket ve tüm alt bağımlılıklarını kaldır
pacman -Rns $(pacman -Qtdq) // sistemdeki tüm kullanılmayan paketleri temizle/kaldır
pacman -Ru gnome // tüm gnome paket grubunu kaldır
pacman -Q | more // tüm kurulu paketleri listele
pacman -Ql apache // apache tarafından kurulan tüm dosyaları listele
pacman -Ss chromium // depolarda bir paket ara
pacman -Qs firefox // kurulu paketlerin içinde bir paket ara
pacman -Si chromium // kurulu olmayan bir paket hakkında bilgileri göster
pacman -Qi apache // kurulu bir paket ile ilgili bilgileri göster

pactree apache // bir paket ile ilgili bağımlılık ağacını göster
pacman -Qdt // artık gerekli olmayan paketleri listele
pacman -Sc  // cache verileri temizle
pacman -Scc // cache belleğe alınan paketleri sil
pacman -Qo netctl // netctl dosyasını hangi paket kurmuş göster
pacman-optimize // optimize pacman

Ayrıca pacman'in yapılandırmasını /etc/pacman.conf dosyasını düzenleyerek de yapabiliriz. Örneğin şu ayarlar mümkün:

Color # renkli çıkış
CheckSpace # indirme yaparken her seferinde diskte boş yer var mı kontrol et

VerbosePkgList # kurulacak paketler ile ilgili ayrıntılı bilgi
TotalDownload # dosya bazında değil, tüm indirmelerin ne kadarının tamamlandığını göster


2021-12-23 ek:

Kurulu çekirdekleri listelemek için:

$ pacman -Qsq ^linux | grep -E '^linux[0-9]{2,3}$'

veya

$ ls -l /boot/vmlinux*

ve hatta sadece Manjaro'ya özel

$ mhwd-kernel -li

kullanılabilir.

---

https://wiki.archlinux.org/title/Pacman/Tips_and_tricks

9.07.2018

Komut satırından harici IP adresi bulmak

Arch linux kurulumu sırasında harici IP adresimi bulmak istedim. Aradığımda aşağıdaki gibi sonuçlara ulaştım:

OpenDNS ile:

dig +short myip.opendns.com @resolver1.opendns.com
Bu sayede öğrendim ki OpenDNS sunucuları üzerinde myip.opendns.com için yapılan sorgularda sorguyu yapan istemcinin adresi dönüyormuş.

Web Hizmeti ile:

Aynı  www.whatismyip.com gibi bir sayfaya girerek bakmak gibi, ama düz metin olarak IP dönüyor:
curl -S http://whatismyip.akamai.com

Elbette şu sayfada whatismyip.akamai.com için alternatifler de verilmiş.

2021 güncellemesi: Şu video'da gördüm ki

curl ifconfig.me

gibi daha da basit olabiliyormuş.

2022 güncellemesi: Yeni bir alanadı

    curl echoip.xyz 

ya da

    curl ipecho.net/plain

ya da

  curl icanhazip.com 

belki de

  curl ifconfig.io 

hatta

  curl wtfismyip.com/text (json da var)

Bir de bunları Windows'da yapmanın yollarını bulmak istedim. dig'in Windows eşdeğeri (basit bir DNS sorgusu yapmak aslında) nslookup veya Resolve-DnsName olabilir:

nslookup myip.opendns.com resolver1.opendns.com
Ama bu komut sonunda tek satırlık bir hedef dönmüyor, en alt satırdaki sonuca odaklanmak lazım.

Ya da Powershell eşdeğerini kullanarak
PS> (Resolve-DnsName -Name myip.opendns.com -Server resolver1.opendns.com).IPAddress
Curl'un eşdeğerini aradığımda da zaten curl diye bir alias'ı bulunan Invoke-WebRequest cmdlet'ini gördüm. Sadece IP adresini döndürmek için alias'ı kullanarak:
PS> curl http://whatismyip.akamai.com | select -ExpandProperty content