SGI sistemini uzun süredir yerel ağda kullanıyordum ama IRIX tarafındaki ağ ayarları yarım yamalak durumdaydı. Makine yönlendiriciye ping atabiliyor, doğrudan IP adreslerine ulaşabiliyor; buna rağmen alan adlarını çözemiyordu. Üstelik normal kullanıcı hesabında ping bile “Command not found” diyordu. Buradan başlayıp ağ, DNS, kabuk ayarları ve Nekoware paket kurulumunu tek seferde toparladım.
Bu yazı bir “şu üç komutu yaz, bitsin” tarifi değil. IRIX'in eski UNIX alışkanlıklarıyla modern ağın birbirine sürttüğü yerleri, yaptığım yanlış denemeleri ve çalışan son düzeni de içeriyor. Ekran fotoğraflarını özellikle sırayla bıraktım; komutların gerçek sistemdeki karşılığını takip etmek isteyen için küçük bir kurulum günlüğü oldu.
Ağ Arayüzü ve /etc/hosts
Önce root oldum ve ağ servisini, makine adını, arayüzü ve yönlendirme tablosunu kontrol ettim. Makineye 192.168.1.50 adresini verdim; varsayılan ağ geçidi 192.168.1.1. /etc/hosts içinde hem localhost hem de SGI'ın kendi adı doğru IP ile bulunmalı. Ben makine adını sgi-irix olarak kullandım.
su root
hostname
ifconfig -a
netstat -rn
cat /etc/hosts
/usr/etc/ping 192.168.1.1
IRIX'te bazı yönetim komutları /usr/etc altında. Root ortamında bulunan bir komut normal kullanıcıda PATH'e girmemiş olabiliyor. Bu yüzden “ping yok” sonucu ağ aracının kurulu olmadığı anlamına gelmiyor; önce /usr/etc/ping ile denemek gerekiyor.
IP Çalışıyor, DNS Çalışmıyor
Ağ geçidine ve 8.8.8.8 adresine ping başarılıydı. Yani Ethernet, IP adresi ve route tarafı çalışıyordu. Buna karşılık ping google.com hâlâ “Cannot resolve” hatası veriyordu. /etc/resolv.conf içine DNS sunucularını ekledim:
nameserver 8.8.8.8
nameserver 1.1.1.1
İlginç tarafı, nslookup google.com cevap veriyor ama normal uygulamalar alan adını çözemiyordu. IRIX isim çözümlemeyi doğrudan yalnızca resolv.conf üzerinden değil, nsd ve /etc/nsswitch.conf üzerinden yürütüyor. nsd günlüklerinde “no domain or search path in resolv.conf” uyarısını görünce dosyaya yerel ağ için bir arama alanı ekledim ve servisi yeniden yükledim.
search local
killall -HUP nsd
/etc/init.d/network stop
/etc/init.d/network start
/usr/etc/ping google.com
Buradaki local yalnızca ev ağı için kullandığım arama alanı. Kendi DNS alanınız varsa onu yazmanız gerekir. Bu düzeltmeden sonra hem IP hem alan adı çözümlemesi çalıştı.
PATH, Komut Geçmişi ve tcsh
Normal kullanıcı hesabında ping komutunun bulunmamasının nedeni PATH'ti. /usr/etc dizinini kullanıcı ortamına ekledim. Ardından her oturumda yukarı/aşağı oklarla komut geçmişini kullanabilmek için tcsh ayarlarını kalıcılaştırdım.
which tcsh
echo $SHELL
set path = ( /usr/etc $path )
set history = 100
Bu satırları kullanıcı hesabındaki ~/.cshrc dosyasına ekledim ve yeni oturum açmadan denemek için source ~/.cshrc çalıştırdım. Sonuçta ping doğrudan çağrılabildi, komut geçmişi çalıştı ve istemde makine adı görünür hâle geldi.
Türkçe Klavye Denemesi
Ağ işi bitince Türkçe klavye düzenine de baktım. IRIX'teki find, GNU find ile aynı seçeneklere sahip değil; örneğin -iname yok. X11 tuş eşlemelerini xmodmap -pke ile çıkardım, Türkçe karakter keysymlerini ve ISO-8859-9 fontlarını aradım.
xmodmap -pke
xlsfonts | grep iso8859-9
locale
locale -a
setenv LC_CTYPE tr
xmodmap ile tek tek keycode eşlemek mümkün görünse de sistemde xev bulunmadığı için fiziksel tuşları rahatça teşhis edemedim. Ayrıca locale ile klavye eşlemesi aynı şey değil: LC_CTYPE=tr Türkçe karakter sınıflandırmasını sağlıyor, tuşların hangi karakteri ürettiğini tek başına değiştirmiyor. Bu yüzden bu aşamada çalışan ağı bozacak kadar dosya kurcalamak yerine Türkçe klavyeyi ayrı bir işe bıraktım.
Nekoware ve wget Kurulumu
IRIX üzerinde wget ve curl kurulu değildi; fakat klasik FTP istemcisi vardı. IRIX Network'ün FTP sunucusuna anonymous olarak bağlanıp nekoware/current dizinine geçtim. Nekoware paketleri tardist biçiminde ve IRIX'in kendi inst aracıyla kuruluyor.
ftp ftp.irixnet.org
Name: anonymous
cd nekoware
cd current
binary
get neko_wget-1.11.3.tardist
quit
İlk denemede paketi yanlış dizinden açmaya çalıştığım için “No such file or directory”, salt okunur konuma yazmaya çalıştığım için de izin hataları aldım. inst içinde göreli dosya adıyla uğraşmak yerine tardist dosyalarının tam yolunu vermek en temiz çözüm oldu.
Bağımlılıklar ve inst
wget tek başına kurulmadı; kullandığım Nekoware paketinin gettext, libiconv ve OpenSSL bağımlılıkları vardı. Paketleri önce kullanıcı dizinine indirdim, ardından root olarak inst başlattım.
su root
cd /usr/people/kadir
inst
inst ana menüsünde her paketi tam yoluyla açtım:
open /usr/people/kadir/neko_libiconv-1.14.tardist
open /usr/people/kadir/neko_gettext-0.18.1.1.tardist
open /usr/people/kadir/neko_openssl-0.9.8x.tardist
open /usr/people/kadir/neko_wget-1.11.3.tardist
list
go
Paket adı veya sürümü FTP'deki dosyayla birebir aynı olmalı. Fotoğraflardaki bazı “file not found” ve tar hataları, adı ezberden yazdığım ya da eksik inmiş dosyayı açmaya çalıştığım denemelere ait. Son turda dosyaları ls -l ile doğrulayıp tam yolları kullanınca ürün açıklamaları düzgün okundu ve bağımlılıklar birlikte seçilebildi.
Sonuç
Son durumda SGI yerel ağda 192.168.1.50 adresiyle çalışıyor; ağ geçidine, internetteki IP adreslerine ve alan adlarına ulaşabiliyor. Normal kullanıcı ortamında /usr/etc PATH içinde, varsayılan kabuk tcsh ve komut geçmişi kalıcı. Nekoware paketlerini FTP ile indirip inst üzerinden kurabilecek bir temel de oluştu.
Bu işte en yanıltıcı nokta nslookup çalıştığı hâlde diğer programların DNS kullanamamasıydı. IRIX'te nsd, nsswitch.conf ve resolv.conf üçlüsünü birlikte düşünmek gerekiyor. İkinci tuzak da modern Linux alışkanlıkları: komut yolları, find seçenekleri, paket biçimi ve kurulum aracı farklı. Sistem bozuk değildi; yalnızca 1990'ların UNIX mantığıyla konuşmak gerekiyordu :)
SGI, IRIX, nsd, DNS, tcsh, Nekoware, tardist, inst, wget, IRIX Network.