İçerik:
Her şeyden önce, Gentoo dünyasına hoş geldiniz. Seçim ve performansın dünyasına girmek üzeresiniz. Gentoo tamamiyle bir seçimler dünyasıdır. Kaç kez derleme yapmak isteyeceğiniz, Gentoo sisteminizi nasıl yükleyeceğiniz, hangi sistem kayıtçısını kullanmak isteyeceğiniz ve bunun gibi daha bir çoğunu Gentoo Linux'sunuzu yüklediğiniz zaman anlaşılır hale gelecek.
Gentoo hızlı, temiz, esnek ve modern tasarıma sahip bir dağıtımdır. Gentoo serbest yazılım çerçevesinde yapıldı ve sistemin temelini kullanıcılarından saklamaz. Portage, Python ile yazılmış, Gentoo'nun kullandığı bir paket bakım/koruma ve edinme sistemidir. Bu sistemle paketleri kolayca görebilir ve değişiklik yapabilirsiniz. Gentoo'nun paketleme sistemi kaynak kodunu kullanır (ayrıca yeniden derlenmiş paketleride destekler) ve Gentoo olaylarını düzenli metin dosyalarıyla yapılandırır. Diğer bir değişle, her yerde açık sözlüdür.
Gentoo'yu çalışır yapan seçimleri anlamış olmanız çok önemli. Size sevmediğiniz herhangi bir şey için baskı yapmak istemiyoruz. Eğer öyle yaptığımızı düşünüyorsanız, lütfen hata raporu olarak bize iletin.
Gentoo kurulum prosedürü 2-11 bölümleri arasında yer alan 10 adım olarak görülebilir. Her adımın sonucu aşağıdaki gibidir:
Bir karar verdiğinizde, size tüm işlemleri elimizden geldiğince iyi açıklamaya çalışacağız. Daha sonra "Varsayılan:" olarak isimlendirdiğimiz öntanımlı seçimden devam edeceğiz. Diğer olasılıkları "Alternatif:" olarak isimlendirdik. 'Varsayılan' olanları bizim önerimiz olarak düşünmeyin. Onlar çoğu kullanıcının kullanacağını düşündüğümüz şeyler.
Bazen isteğe bağlı bir adım kullanabilirsiniz. Bunlar Gentoo kurulumu için mutlaka gereken işlemler değil. Bunları "Seçmeli" olarak isimlendirdik. Aynı zamanda bazı isteğe bağlı işlemler bir önceki karara bağlı olabilir. Böyle bir karar yürüttüğünüzde size isteğe bağlı seçimi anlatmadan bu durum hakkında açıklama yapacağız.
Gentoo'yu bir kaç değişik yolla kurabilirsiniz. Bizim LiveCD'lerimizden (kurulum CD'leri) bir tane indirip kuruluma LiveCD üzerinden başlayabilirsiniz. Kurulu bir sisteminiz var ise, başlatılabilir bir CD ile (Knoppix gibi), internetten başlatılmış bir ortamla, bir kurtarma disketiyle vs. değişik yöntemler ile kurulumu gerçekleştirebilirsiniz. Bu döküman bizim LiveCD'mizle kurulumu anlatıyor. Diğer kurulum yollarıyla ilgili yardım için lütfenAlternatif Kurulum Rehberibelgemizi okuyunuz.
Ayrıca bir kaç ihtimalinizde var: rastgele sisteminizi derleyebilir ya da hazırlanmış paketleri kurarak Gentoo ortamınızı fazla beklemeden çalıştırabilirsiniz, ve tabiki hazır bir sistem için herşeyi derlemek yerine ortalama çözümlerde kullanabilirsiniz.
Eğer bu kurulumda (ya da bu kurulum dökümanında) bir hata bulursanız, lütfen yazım hatasını Gentoo Release Engineering Project projesinden kontrol edin, bugtracking system sistemini ziyaret edin ve bu hatanın farkedilip farkedilmediğini kontrol edin. Eğer farkedilmediyse, lütfen bir hata raporu oluşturun ki bunun çaresine bakalım. Hata raporlarınızı geliştiricilere iletmekten korkmayın, onlar genelde insan yemezler :-)
Şunu unutmayın, şu an okuduğunuz bu döküman mimari-değişkendir, yani diğer mimarilerede rehberlik yapar. Bu nedenle beklendiği gibi Gentoo El Kitabının geniş kısımları kaynak kodu kullanımına değiniyor. Bunu olabildiğince karışıklığı küçük tutmaya çalıştık.
Eğer bir problemin kullanıcı veya yazılım problemi olduğundan emin değilseniz , irc.freenode.org üzerindeki #gentoo kanalına gelmekten çekinmeyin, tabiki diğer zamanlarda gelmektende özgürsünüz :-)
Eğer Gentoo'ya dair bir sorunuz varsa, Gentoo Dökümantasyonundan Sıkça Sorulan Sorular (Frequently Asked Questions)bölümünü kontrol edebilirsiniz. Ayrıca bunlarıforumumuzdanda görebilirsiniz. Eğer yanıtı bulamazsanız irc.freenode.org üzerindeki #gentoo kanalında sorabilirsiniz. Evet, bazılarımız IRC'de bulunabilecek kadar kaçığız :-)
1.b. Hazır paket yoksaa hepsini derlemek mi?
Gentoo Kaynak Platformu Nedir?
Gentoo Kaynak Platformu, bundan sonra GRP'ye kısaltarak bahsedeceğiz. Bu hazır paket kullanan kullanıcılarının (bu siz oluyorsunuz) yükleme işlemlerini hızlandırmaya yarayan bir görüntüdür. GRP tam anlamıyla fonksiyonel bir Gentoo kurulumu için gerekli tüm paketlere bağlıdır. Bunlar yalnızca yeterli temel kurulumu hızlandırmak içindir, fakat büyük yapılar için (örn: KDE, XFree, GNOME, OpenOffice, Mozilla, ... gibi) GRP paketleride mevcut durumdadır.
Diğer yandan, bu hazır paketler Gentoo dağıtımında hayati bir temel teşkil etmez. Bunlar sadece her Gentoo sürümüyle gelen görüntü sürümleridir ve kısa sürede fonksiyonel ortam sahibi olmanızı sağlar. Siz Gentoo ortamınızda çalışırken arkaplanda sisteminizi güncelleyebilirsiniz.
Portage GRP Paketlerini Nasıl Hallediyor?
'Portage tree' ( yani ebuilds kolleksiyonu; paketler hakkında açıklama, anasayfa, kaynak kodu adresi, derleme açıklamaları, bağımlılıklar, vs. gibi bilgileri barındıran dosyalar) - GRP setiyle senkronize olmalıdır: mevcut yapıların versiyonları ve eşlik eden GRP paketleri uyuşmalıdır.
Bu nedenle GRP kurulum yöntemini kullanmak istiyorsanız, en son mevcut Portage şemasını yüklemeniz gerekir.
Tüm mimariler GRP paketlerini karşılamaz. Bu GRP'nin başka bir mimariyi desteklemediği anlamına gelmiyor, fakat bu GRP paketlerini hazırlamak ve test etmek için kaynağımız olmadığı anlamına geliyor.
Şu anda aşağıdaki GRP paketlerini karşılayabiliyoruz:
Gentoo Hardenedprojesi kendi GRP paketlerini (ve evrelerini) tam olarak güvenli bir sistem üzerine yoğunlaşmış olarak önerir. Herhangi biri x86 mimarisinde bir sunucu kurmak istiyorsa bu seçenek üzerinde araştırma yapmalı.
Eğer sahip olduğunuz mimari (ya da alt mimari) bu listede yoksa, GRP kurulumu yapamazsınız.
Başlangıç burda bitiyor, şimdi En Doğru Kurulum Yöntemini Seçmekile devam edelim. .
İşe koyulmadan önce, kurulum için gereken/desteklenen donanıma sahip olup olmadığınızı inceleyelim. Tabii ki bu kullandığınız mimariye bağlı.
Gentoo kurulumuna başlamadan önce aşağıdaki gereksinimleri kontrol ettiğinizden emin olun:
Gentoo yu kurup denemekte hala kararlı mısınız? Kararlıysanız kurulum medyanızı seçin. Hangi yöntemi seçerseniz seçin. Birbirinden farklı kurulum yolları, ama netice aynı olan seçim imkanınız var: Oda Gentoo temel sistemidir. .
Şimdi size kurulum medyalarını tanıtalım:
Ama ilk önce size 3 aşamada nasıl yüklendiğini anlatalım. 3 Aşama
Gentoo Linux 3 aşamadan herhangi birisi ile yüklenebilir. Seçiminiz sizin Sisteme ne kadar derleme yapacağınıza bağlıdır. Aşama1 (stage1) bootstrap yapıp Sistem'i en baştan kurmak için kullanılır. Aşama2(stage2) Aşama2 tüm Sistem'i hazır "yarı derlenmiş" tabandan kurmak için kullanılır. Aşama de ise Gentoo temel sistem sizin için derlenmiş ve yapılmıştır. Size sonra hiç bir şey derlemeden Gentoo yu nasıl yükleyeceğinize değineceğiz (Kernel ve seçimlik paketler hariç). Eğer bu şekilde kurmak isterseniz size Aşama3 (stage3) arşivi gerekir.
Şimdi hangi aşamayı seçmeye karar verdiniz?
Aşama1 'den başlamak ileride size seçimlik sistem ayarlarında tam kontrol sahibi olmanızı sağlar. Aşama1 tecrübeli ve ne yaptığını bilen kullanıcılar içindir. Gentoo'nun içyapısını bilmek isteyen kişiler için muhteşem bir Gentoo kurulum şeklidir.
Aşama 1 internet bağlantısı gerektiren bir aşamadır.
| Aşama1 (Stage1) | Avantaj ve Dezavantajları |
| + | Sistem üzerinde yapılacak tüm seçim ve ayarlarda, özel çalışmalarda ve sisteminize en baştan aktif edilecek olan her şeyde kontrol imkanına sahibisiniz. |
| + | Ne yaptığını bilen kullanıcılar için tavisye edilen bir yöntemdir. |
| + | Gentoo'nun iç yapısını öğrenmenizi sağlar. |
| - | Kurulumu uzun sürer |
| - | Eğer standart ayarları değiştirmek gibi bir niyetiniz yoksa zaman öldürmekten etmekten başka bir şey olmaz. |
| - | İnternet bağlantısı olmayanlar için tavsiye edilmez. |
Aşama2 (Stage2) kurulumunda Bootstrap işlemini geçebiliriz. Bu imkan bizler tarafından seçilen seçimlik ayarları ile memnunsanız iyidir.
Aşama 2 internet bağlantısı olanlar için tavisye edilir.
| Aşama2 (Stage2) Avantaj ve Dezavantajları | |
| + | Bootstrap yapmak zorunda değilsiniz |
| + | Başlaması aşama1'den hızlıdır |
| + | Kendi ayarlarınızı genede seçebilirsiniz |
| - | Aşama1 de olduğu gibi özelleştirilemez |
| - | Gentoo kurmanın en hızlı yolu değildir |
| - | Bootstrap için seçtiğimiz seçenekleri kabul etmek zorundasınız |
| - | İnternet ağı olmayanlar kuramaz. |
Aşama3 arşivi en hızlı Gentoo kurma yöntemidir. Ama buda demektir ki, Base System'iniz standart ayarlara sahiptir (gerçekçi olmak gerekirse, bunlar sağlamlık ve hız konusunda iyi balans sağlayan ayarlardır). Aşama3 hazır derlenmiş paketleri kullanabilmek için gerekmektedir.
| Aşama 3 | Avantaj ve dezavantajları |
| + | 'Gentoo Base System' elde edebilmenin en hızlı yöntemidir |
| + | İnternet bağlantınız olmadan kurulum yapabilirsiniz. |
| - | Temel sistemi kendiniz ayarlayamazsınız (öntanımlı olarak ayarlanmıştı |
| - | Arkadaşlarınıza Aşama1 veya Aşama2 kurdum diye hava atamazsınız :-) |
Şimdi hanagi aşama ile kurulum yapacağınaza karar verin ve bunu aklınızda tutun. Çünkü LiveCD veya başka birkurulum medyasını seçip kuruluma başladığınızda bu aşama seçimlerinine ihtiyacınız olacak.
Şimdi kurulum medyalarına bir göz atalım.
Gentoo Alpha LiveCD Gentoo ortamını barındıran ve yüklenme(bootable) özelliği olan CD'lerdir. Size doğrudan CD'den boot etme imkanı sağlar. Yükleme (boot) esnasında donanımımız otomatik olarak tanınır ve sürücüleri yüklenir. Gentoo geliştiricileri tarafından desteklenir ve yönetilir.
Gentoo Alpha LiveCD genelde yansılarda releases/1.4_rc1/alpha dizinlerinde bulunur ve gentoo-alpha-1.4rc1-test3.iso.bz2 ismini taşır.
2.c. Standard: İndirmek, Cd Yazmak ve Gentoo LiveCd'sini Yüklemek
Gentoo LiveCD'sini kullanmaya karar verdiniz (eğer öyle değilse yanlış bölümü okuyorsunuz demektir). Öncelikle LiveCD'leri indireceğiz ve yazacağız. Daha önceden kullanılabilecek birkaç LiveCD'den bahsetmiştik, fakat bunları nereden bulabilirsiniz?
Yansı adreslerimizden ve releases/1.4rc1/alpha dizininden bunları bulabilrisiniz. Burda ISO dosyaları vardır ve indirp cd yazıcınız ile yazdırabilrisiniz.
Eğer indirdiğiniz dosyanın bozuk olup olmadığını kontrol etmek istiyorsanız dosyasınızın MD5 sonuçlarını, indirdiğiniz dizinde bulunan, bizim sonuçlarımızla (gentoo-alpha-1.4rc1-test3.iso.bz2.md5sum gibi) karşılaştırmalısınız. MD5 sonuçlarını Linux/Unix altında md5sum veya windows altında md5summer progrmaları ile karşılaştırabilrisiniz.
Image dosyalarını indirdikten sonra bunzip2 ile açabilirsiniz
Kod Listeleme 3.1: iso.bz2 Image dosyasının açılması |
# bunzip2 gentoo-alpha-1.4rc1-test3.iso.bz2
|
İndirdiğiniz dosya(lar)ın geçerliliğini kontrol etmenin bir diğer yolu ise GnuPG kullanarak bizim kriptografik imzalarımızla (sonu .asc ile biten dosyalar) karşılaştırmanızdır. Bunun için imza dosyasını indirin ve genel anahtarımızı(public key) edinin:
Kod Listeleme 3.2: Genel anahtarı edinmek |
# gpg --keyserver pgp.mit.edu --recv-keys 19462D47
|
Şimdi, imzayı doğrulayın:
Kod Listeleme 3.3: İmzayı doğrulamak |
$ gpg --verify <imza dosyası> <indirilen iso dosyası> (Eğer her şey düzgün giderse buna benzer birşeyler görmeniz gerekir:) gpg: Signature made Mon Apr 19 18:54:40 2004 EDT using DSA key ID 19462D47 gpg: Good signature from "John Davis (Gentoo Linux Developer) <zhen@gentoo.org>" gpg: aka "Gentoo Linux Release Engineering <releng@gentoo.org>" |
İndirilen ISO dosyalarını CD'ye yazdırmak için RAW modusu seçmeniz gereklidir. bunların nasıl olabileceği ise kullanılan programa bağlıdır. Şimdi kullanılabilecek bazı programlar altında kısaca açıklayalım:
Alpha LiveCD(s) Yüklemek (boot)
Alpha sistem açıldığında ilkönce Firmware çalışır. Birçeşit BIOS gibidir.Bunlar iki türlütür: SRM (Systems Reference Manual) ve ARC (Advanced Risc Console).
SRM Alpha Console Subsystem basislidir ve OpenVMS OpenVMS, Tru64 UNIX ve Linux işletim sistemi içindir. ARM Advanced RISC Computing (ARC) basisli olup Windows NT gibi çalışır..
Sisteminizin hem SRC hemde ARCs (ARC, AlphaBIOS, ARCSBIOS) desteklemsini istiyorsanız bu belgeyi okumanız gereklidir.
Alpha Livecd yüklemek için Cdromunuza cd yi takın ve sistemi yeniden başlatın, sonra Milo kullanın. Eğer Milo kurulu değilse Milo Image dosyasını Tavisos Homepage adresinden indirip kullanabilirsiniz.
Kod Listeleme 3.4: SRM ile CD-rom yüklenmesi |
(Mevcut Hardware sürücülerini listesi) >>> show device dkb0.0.1.4.0 DKB0 TOSHIBA CDROM (...)) (dqa0 yerine kendi CDROM sürünüzü değiştirebilrisiniz.) >>> boot dqa0 -flags 0 |
Kod Listeleme 3.5: Boooten einer CD-ROM mit Milo |
(hdb yerine kendi CDROM sürünüzü değiştirebilrisiniz) MILO> boot hdb:boot/vmlinuz initrd=initrd.img root=/dev/ram0 init=/linuxrc |
Siz karşılaştığınız Boot resminden başka gelişmiş Boot resmi ile selamlanacaksınız. Boot işlemi bittikten sonra otomatik olarak Superuser "root" olarak "Live" Gentoo Linux'a login olacaksınız. Konsol'da root Prompt ("#") göreceksiniz. Bununla Alt-F2, Alt-F3 ve Alt-F4'e basarak başka Konsola geçebilirsiniz. Alt-F1'e basarak başladığınız yere geri dönebilirsiniz.
Şimdi Gelişmiş Donanım Ayarları bölümü ile devam edebilrisiniz.
LiveCD yi başlattığınız zaman tüm Donanımınızı tanımaya ve gereken Modülleri yüklemeye çalışacaktır. Genelinde bu işlem hep basarili olur. Bazı durumlarda (SPARC LiveCD Donanım tanıma yapmaz) gereken Modüllerin otomatik yüklenmediği zamanlar olabilir. Bu durumda eliniz ile kendiniz gerekli modulu yüklemeniz icap edecektir.
Sıradaki örnekte size 8139too Modülünün nasıl eliniz ile yüklendiğini izah edeceğiz:(8139 ethernet kartları için)
Kod Listeleme 3.6: Kernel modulunu elimiz ile yükleme |
# modprobe 8139too |
İsteğe Bağlı: Sabit Diskin Performansını Yükseltmek
Eğer tecribeli bir kullanıcı isenizhdparm komutunun yardımı ile IDE sabit diskinizin performansını artırabilirsiniz. the -tT parametresi ile sabit diskinizin performansını test edebilirsiniz:
Kod Listeleme 3.7: Sabit Disk performansını test etmek |
# hdparm -tT /dev/hda |
Performansı yükseltmek için vereceğimiz örneği kullanbilirsiniz. Verdiğimiz Örnekte /dev/hda sizin Sabit diskiniz için kullanılacak (/dev/hda bunu kendi aygıtınızın adı ile değiştirin):
Kod Listeleme 3.8: Sabit Disk verimini yükseltme |
DMA Etkinleştirme: # hdparm -d 1 /dev/hda DMA aktifleştirme + güvenli verimini düzenleme: # hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda |
İsteğe Bağlı: Kullanıcı Hesapları
Eğer başkasına Kurulum için yada irssi programı ile Chat yapabilmesini root olarak sağlamak istiyorsanız, bir kullanıcı hesabı açıp, root şifresini değiştirmeniz gerekir.
root şifresini değiştirmek için passwd komutunu uygulayın:
Kod Listeleme 3.9: root şifresini değiştirmek |
# passwd New password: (yeni root şifresini girin) Re-enter password: (şifreyi tekrarlayın) |
Bir Kullanıcı hesabı oluşturmak için hesap adı ve şifre gerekmektedir. Biz useradd ve passwd komutlarını bu amaç için kullanıyoruz. Sıradaki örnekte "ahmet" Kullanıcısını oluşturacağız.
Kod Listeleme 3.10: Kullanıcı hesabı oluşturma |
# useradd ahmet # passwd ahmet New password: (ahmet için şifre girin) Re-enter password: (şifreyi tekrar girin) |
Root iken kullanıcı hesabını kullanmak istiyorsanız bunu su komutunun yardımı ile yapabilirsiniz:
Kod Listeleme 3.11: Kullanıcı ID değiştirmek |
# su ahmet - |
İsteğe Bağlı: SSH Daemon'u Çalıştırmak
Başka bir kullanıcının sizin bilgisayarınıza ulaşım yetkisi vermek isterseniz (Belki size kurulumda yardım edecek yada kurulumu sizin için yapabilecek bir kişi olabilir), o kişi için hesap açmanız ve hatta root şifresini dahi vermeniz gerekebilir. (Bunu sadece o kişiyi çok iyi tanıyor ve güvenebiliyorsanız yapın).
SSH Daemon'u çalıştırmak için aşağıdaki komutu kullanın:
Kod Listeleme 3.12: SSH Daemon'u çalıştırma |
# /etc/init.d/sshd start |
sshd'yı kullanabilmek için bir Ağ kurmanız gerek. Sıradaki Bölümle devam edelim: Ağ Ayarları.
Seçtiğiniz minimum kuruluma bağlı olarak, internet olmadan kuruluma devam etmeniz mümkün olabilir yada olmayabilir.
Genel olarak ağ kurmaya çok ihtiyacımız olacak. Bununla birlikte, Gentoo ayrıca internet bağlantısı olmadan size kurulum yapabilme imkanı sağlar. Bu kurulum seçeneğini sadece Gentoo Live Cd'ye sahip olanlar yapabilir.
Neden ağ bağlantısına ihtiyaç duyarız ?
Gentoo'yu tamamen internetten yükleyebilmek mümkün. Güncel bir internet kurulum tabanlı taşıma sistemi kullanarak(Portage Tree) kurulum yapılabilir. (Portage: paketlerin birlikte bulunduğu bilgisayar yazılımınızın kurulumunu idare edebileceğiniz bir araçtır.) Bunu ayrıca da internetten kurulum yapabilmemiz için en iyi sebeb gösterebiliriz. Bu sebebe rağmen pek çok kişi internetten kurulumun yapmayı pek istememektedir.
Eğer internetten kurulum yapmak istemiyorsanız, Gentoo Universal LiveCD'ye ihtiyacımız olacak. Bu LiveCD içerisinde kaynak kodlar ve Gentoo'yu yükleyebilmek için gerekli olan en güncel paketler mevcuttur.
İnternet olmadan kuruluma devam etmek istiyorsanız, biraz önce bahsedilen Universal LiveCD'ye sahip olmanız vede bu bölümü atlamanız gereklidir ve aşağıdaki bağlantıdaki 4. bölüm ile devam etmek gerekir:
Bölüm 4: Kurulum öncesi sabit sürücüleri hazırlamak
Aksi takdirde aşağıda anlatılacak olanlar internetten kurulumu gerektirmektedir.
Eğer internete Proxy'den geçerek ulaşıyorsanız, proxy ayarlarını(bilgilerini) kurulum sırasında girmeniz gerekli. Çok basit bir yolla proxy ayarlarınızı girebilirsiniz.
Çoğu durumda sadece sunucu adı olarak proxy sunucu adı (yani hostname) girmemiz yeterli. Birkaç örnek verecek olursak; farz edelim ki proxy sunucu adı(yani hostname 'si)proxy.gentoo.org ve port numarası 8080 olsun.
Kod Listeleme 1.1: Proxy tanımlamak |
(eğer proxy sunucunuz filter olarak HTTP tabanlı ise) # export http_proxy="http://proxy.gentoo.org:8080" (eğer proxy sunucunuz filter olarak FTP tabanlı ise) # export ftp_proxy="ftp://proxy.gentoo.org:8080" (eğer proxy sunucunuz filter olarak RSYNC tabanlı ise) # export RSYNC_PROXY="proxy.gentoo.org:8080" |
Eğer proxy sunucuya bağlanmak için kullanıcı adı ve şifre gerekli ise, değişken olarak yazmanız gereken sözdizimi:
Kod Listeleme 1.2: Kullanıcı adı ve şifre eklemek |
http://kullanici_adi:şifre@sunucu_adresi |
HTTP tabanlı Proxy için kullanıcı adı ve şifre tanımlamak:
Kod Listeleme 1.3: Onaylı Proxy |
# export http_proxy="http://kullanıcı_ismi:şifre@proxy.gentoo.org:8080" |
3.b. Ağ Bileşenlerini Otomatik Olarak Bulmak
Eğer sisteminiz DHCP tabanlı bir ağ sunucusuna bağlı ise, muhtemelen ağ yapılandırmanız otomatik olarak tanımlı bulunacaktır. Eğer tanımlı ise pek çok ağ komutlarından yararlanabilmek mümkündür. LiveCD'de bulunan birçok komuttan yararlanabilirsiniz, örnek:ssh, scp, ping, irssi, wget ve links, ve diğer birçok komut.
Eğer, ağ yapılandırmanız tanımlı ise/sbin/ifconfig komutu size ağ ile ilgili bilgileri karşınıza getirecektir (örnek eth0 için ):
Kod Listeleme 2.1: /sbin/ifconfig çalışan bir ağ yapılandırması |
# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr:fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb)
TX bytes:123951388 (118.2 Mb)
Interrupt:11 Base address:0xe800 |
Kendi internet sağlayıcınızın DNS numaralarına PING çekmek isterseniz ( DNS numaraların bulunduğu dosya:/etc/resolv.conf) ve bir Web sitesi seçerseniz , gönderdiğiniz PING'e gelen cevapların hatalı olmadığına ve DNS çözülümü yapabildiğine dikkat edin. Bunun anlamı DNS doğru çalıştığı ve sorunsuzca internete çıkabileceğinizdir.
Kod Listeleme 2.2: Alternatif ağ testi |
# ping -c 3 www.yahoo.com |
Ağınızı kullanabiliyor musunuz ? Eğer cevabınız evet ise bu andan itibaren 4. bölüme geçmelisiniz: Kurulum Öncesi Sabit Kurucuları Hazırlamak Hayır mı!! Kötü şans üzülmeyin, birazcık uğraşacaksınız :)
3.c. Ağ Bileşenlerini Otomatik Olarak Ayarlamak
Eğer ağ bağlantınız çalışmıyorsa, bazı komutlar ağınızı tanıtmaya yardımcı olabilir (normal ağ ve adsl kullanıcıları için) . Örnek:net-setup (Normal kullanıcı için) veya adsl-setup (ADSL kullanıcıları için).
Eğer seçtiğiniz minimum Gentoo kurulumu bu otomatik kurulum komutlarını içermiyorsa veya ağ tanımlı değilse, Ağ bileşenlerini elle ayarlamak bölümüne atlayınız.Elile Ağ Bileşenlerinin Ayarlanması .
Varsayılan: net-setup Kullanımı
Henüz hala ağınız tanımlı değilse, tanımlamak için verebileceğiniz komut: net-setup
Kod Listeleme 3.1: net-setup komutunu çalıştırmak |
# net-setup eth0 |
net-setup size ağınızla ilgili bazı sorular soracaktır. Bu soruların hepsi bittiğinde, tamamıyle çalışan bir ağa sahip olmuş olacaksınız. Tekrar daha önce denediğiniz gibi ping atarak ağınızın çalışıp çalışmadığını kontrol etmeniz mümkün. Test sonucu olumlu ise Tebrikler! Gentoo kuruluma hazır. Bu bölümü atlayınız ve 4. bölümden devam ediniz. Kurulum Öncesi Sabit Sürücüleri Hazırlamak
Hala ağınız çalışmıyorsa Ağ bileşenlerini elle ayarlamak bölümüne atlayınız. Elile Ağ Bileşenlerinin Ayarlanması.
Alternatif: RP-PPPoE Kullanımı
Farz edelim ki internete bağlanmak için PPPoE 'ye ihtiyacınız var. LiveCD (herhangi bir sürüm) bunu içermektedir. adsl-setup komutu ile bağlantınızı tanımlamak mümkün. Bu komut sizi tam olarak adsl modeminize bağlayacak kullanıcı adı, şifre, IP, DNS sunucusu kısımlarını gireceksiniz.
Kod Listeleme 3.2: rp-pppoe kullanımı |
# adsl-setup # adsl-start |
Eğer birşeyler yolunda gitmiyorsa dikkatli bir şekilde tekrar kullanıcı adı ve şifreyi /etc/ppp/pap-secrets veya /etc/ppp/chap-secrets dosyalarına bakarak, doğru girdiğinizden ve doğru ağ kartını kullandığınızdan emin olun. Eğer ağ kartınız mevcut değilse ağ kartınıza uygun olan, ona yakın olan ağ(network) modüllerini yüklemeniz gerekli. Bu durumda Elile Ağ Bileşenlerinin Ayarlanması bölümüne gidiniz: Elile Ağ Bileşenlerinin Ayarlanması.
Herşey yolunda ise 4. bölümden devam edin: Kurulum Öncesi Sabit Sürücüleri Hazırlamak.
3.d. Ağ Bileşenlerini Elile Ayarlamak
Eğer net-setup veya adsl-setup başarısız sonuç verirse bunun sonucunda ağ kartınız büyük bir olasılıkla bulunamadı demektir. Bunun anlamı kernel(çekirdek) modülünüzü nam-ı diğer çekirdek derlemesini elle yani manuel olarak yapmak zorunda kalacaksınız.
Hangi kernel modülünün bizim ağa uygun olacağını görmek için:
Kod Listeleme 4.1: Gerekli olan modülü aramak |
# ls /lib/modules/`uname -r`/kernel/drivers/net |
Eğer ağ kartınız için bir sürücü(driver) bulduysanız, kernel modülünü yüklemek için modprobe komutunu kullanın:
Kod Listeleme 4.2: Kernel modulu yükelemek için modprobe kullanımı |
(örneğin, pcnet32 modülünün yüklenmesi) # modprobe pcnet32 |
Ağ kartınızın yüklenip yüklenmediğini kontrol edin. Bunun için ifconfig komutunu kullanın. Tanımlanmış bir ağ kartı aşağıdaki sonucu verecektir:
Kod Listeleme 4.3: Network kartının test edilmesi |
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) |
Eğer sonuç olarak aşağıdaki hata mesajını aldıysanız ,ağ kartınız alğılanamamıştır:
Kod Listeleme 4.4: Network kartının test edilmesi |
# ifconfig eth0
eth0: error fetching interface information: Device not found |
Farzedelimki kartımız bulundu. Tekrar net-setup ve adsl-setup komutlarını deneyin(hangisiyle bağlanıyorsanız). Ayarlarınızı yapın. Uzman kişiler için nasıl elle ayar yapılır bölümü hazırladık. İsterseniz göz atabilirsiniz.
Aşağıdaki bölümlerden hangisi sizinle ilgili ise seçiniz:
DHCP (Dynamic Host Configuration Protocol) Ağ bilgilerinizi otomatik olarak algılamayı sağlar. Bunlar IP adresi, netmask, broadcast adresi, ağ geçidi, nameservers vb. bilgileridir. Bu sadece ağınızda DHCP sunucu varsa (servis sağlayıcınız DHCP hizmeti veriyorsa) çalışır. Bunu yapabilmek için ve bilgileri otomatik olarak alabilmek için dhcpcd komutunu kullanmanız gerekli:
Kod Listeleme 4.5: dhcpcd kullanmak |
# dhcpcd eth0 |
Eğer bu çalışıyorsa (tekrar ping atmayı deneyiniz örnegin Google adresine mesela), sonrasında devam etmeye hazırsınız demektir. Bu bölümü atlayarak 4. bölüme geçiniz. Kurulum Öncesi Sabit Sürücüleri Hazırlamak.
Not: Not: Bütün LiveCD leri iwconfig komutuna sahiptir. Eğer sizinki sahip değilse linux-wlan-ng projectadresinden edinerek devam edebilirsiniz.. |
Eğer 802.11 kartına sahipseniz daha ileriye gitmeden önce wireless ayarlarımızı kontrol etmemiz gerekecek. Şu anki güncel wireless(kablosuz), bağlantı bilgilerini görmek içiniwconfigkomutunu kullanınız. iwconfig çalıştığı zaman:
Kod Listeleme 4.6: güncel wireless ağ ayarları |
# iwconfig eth0
eth0 IEEE 802.11-DS ESSID:"GentooNode"
Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2
Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535
Retry limit:16 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm
Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
excessive retries:237 Invalid misc:350282 Missed beacon:84 |
Not: Bazı wireless kartları eth0 yerine wlan0 aygıt ismine sahip olabilir. |
Bir çok kullanıcı için sadece 2 önemli değiştirilebilecek ayar vardır. ESSID(wireless network name) veya WEP anahtarı. Eğer ESSID ve erişim noktası adresi zaten biliniyorsa ve WEP anahtarını kullanmıyorsanız, wireless çalışıyor demektir. Eğer ESSID'yi değiştirmek isterseniz veya WEP anahtarı eklemek isterseniz aşağıdaki komutları kullanmalısınız:
Kod Listeleme 4.7: ESSID veya WEP ahantarını değiştirmek |
(bu ağ adını "GentooNode" olarak ayarlar) # iwconfig eth0 essid GentooNode (bu hexadecimal olarak WEP anahtarını ayarlar) #iwconfig eth0 key 1234123412341234abcd (bu ASCII kodu olarak ve "s" ön takısı olarak anahtarımızı ayarlar) # iwconfig eth0 key s:some-password |
Sonrasında wireless ayarlarınızı iwconfig komutunu kullanarak doğrulamanız gerekmektedir. Bir kez çalışıyorsa IP düzeyini ayarlama kısmından devam ediniz.(Ağ terminolojisini anlamak) veya daha önceden anlattığımız gibi net-setup bölümü ile devam edin.
Not: Eğer IP, broadcast, ağ maskesi, nameserver adreslerini biliyorsanız bu bölümü atlayarak diğer bölüme yani ifconfig ve route komutlarını kullanmakbölümü ile devam ediniz. |
Eğer tüm bunlar başarısız olduysa ağınızı elle yapılandırmak zorunda kalacaksınız. Korkmaya gerek yok. Zorluktan çok uzak hatta çok basit, fakat bunu başarabilmeniz için size kesin ağ(network) bilgisini vermeden önce kendinize olan güveninizi arttırınız. Bunu okuduğunuz zamangateway (ağ geçidi) nedir,netmask (ağ maskesi) nedir, gibi soruların cevablarını ve diğerlerinin ne olduğunu, nameserver'a neden ihtiyaç duyacağımızı, herşeyi ögreneceksiniz.
Bir Ağ'da adresler IP adresleri olarak tanımlanırlar (Internet Protocol address). Bu 0 ile 255 arasinda 4 haneden olusan bir rakamdır, bunu anlıyabilmemiz için gerçekte IP adresinin 32 bit olduğunu ve 1 ve 0 lardan meydana geldiğini bilmeniz gerekir. Bir örnekle özetlemek gerekirse:
Kod Listeleme 4.8: IP adres örneği |
IP Address (numbers): 192.168.0.2 IP Address (bits): 11000000 10101000 00000000 00000010 -------- -------- -------- -------- 192 168 0 2 |
Bu IP adresleri tüm kullanıcılara özel eşsiz adreslerdir. İnternette herşeyi bu adresler üzerinden yaparız. Ağda bulunan iki adres arasında ayrım yapabilmek ve ağın dışındaki bir IP adresi arasındaki farkı anlayabilmek için IP adresi iki kısma ayrılır. Host kısmı ve Network kısmı.
Aşağıda ayrım ağ maskesi(netmask) üzerinde anlatılmıştır. 1 ler topluluğunu 0 lar izlemektedir. 1 lerden oluşan kısım network kısmı diğer kısmı ise host kısmıdır. Genel olarak ağ maskesi IP adresi olarak yazılır.
Kod Listeleme 4.9: network/host ayrım örneği |
IP-address: 192 168 0 2 11000000 10101000 00000000 00000010 Netmask: 11111111 11111111 11111111 00000000 255 255 255 0 +--------------------------+--------+ Network Host |
Diğer bir değişle 192.168.0.14 adres ağımızın bir parçası fakat 192.168.1.2 değildir.
broadcast 'da ağımızın bir parçası olan IP adresidir, fakat sadece host kısmı. Her ağ daki host IP adresini dinler.
Kod Listeleme 4.10: Broadcast adresi |
IP-address: 192 168 0 2 11000000 10101000 00000000 00000010 Broadcast: 11000000 10101000 00000000 11111111 192 168 0 255 +----------------------------------------------+--------+ Network Host |
İnternette sörf yapabilmeniz için hangi host'un interneti paylaştığını bilmeniz gerekir. Bu host, gateway olarak bilinir. Eğer düzenli bir host varsa düzenli bir IP adresi vardır demektir. Örnegin 92.168.0.1 gibi.
Daha önce ifade ettiğimiz gibi, her host kendi IP adres aralığına sahiptir. Bu host ismine ulaşabilmek için bir servise ihtiyaç duyarız. Bu adresi isme çeviren bir servis(dev.gentoo.org) vardir. Bu servisleri kullanabilmek için gerekli ismi /etc/resolv.conf dosyasının içinde tanımlamamız gerekir.
Bazı durumlara ağ geçidimiz aynı zamanda nameserver olarak da görev yapar. Aksi takdirde servis sağlayıcınızın söylediği nameserver adresini girmeniz gerekir.
Buraya kadar özetlemek gerekirse ilerlemeniz için aşağıdaki bilgilere ihtiyacınız var:
| Ağ Öğesi | Örnek |
| IP adresiniz | 192.168.0.2 |
| Netmask | 255.255.255.0 |
| Broadcast | 192.168.0.255 |
| Gateway | 192.168.0.1 |
| Nameserver(ler) | 195.130.130.5, 195.130.130.133 |
ifconfig ve route komutlarını kullanmak
Ağımızı ayarlayabilmek için 3 aşama gerekli: İlk olarak ifconfig kullanarak IP adresimizi girmek, sonrasında ağ geçidi adresini route komutunu kullanarak girmek ve son olarak nameserver ismini /etc/resolv.conf dosyasının içine koymak. :) .
ifconfıg komutunun kullanımına bir örnek vermek gerekirse;
${IP_ADDR} IP adresiniz,
${BROADCAST} broadcast adresiniz
${NETMASK} netmask adresiniz:
Kod Listeleme 4.11: ifconfig kullanımı |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up |
Şimdi ise sıra geldi routing kullanmaya :).
${GATEWAY} Sizin gateway IP adresiniz.
Kod Listeleme 4.12: route komutunu kullanmak |
# route add default gw ${GATEWAY} |
Son olarakta her hangi sevdiginiz bir editor yardımı ile /etc/resolv.conf dosyasını açıp ( kendi örneğimizde biz nano editorunu kullandık ) Nameserver IP adreslerini yazıyoruz.
Kod Listeleme 4.13: /etc/resolv.conf dosyasını oluşturmak |
# nano -w /etc/resolv.conf |
Şimdi dosyamızı açtıktan sonranameserver(s) kısmını "${NAMESERVER1} ve ${NAMESERVER2}" şablonunu kullanarak dolduralım: (${NAMESERVER1} ve ${NAMESERVER2} bölümlerini kendi Nameserver IP adresleriniz ile değiştirebilirsiniz )
Kod Listeleme 4.14: /etc/resolv.conf şablonu |
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2} |
İŞTE BU KADAR!!! Şimdi ağınızın tam olarak çalıştığını bu kadar uğraştan sonra google adresine ping atarak test edebilmemiz mümkün. Eğer bu çalışıyorsa şimdi güvenle 4. bölüme geçebilirsiniz.hat's it. Kurulum Öncesi Sabit Sürücüleri Hazırlamak.
Bu bölümde sizlere Gentoo Linux'un "disk-orient" yönünü, Linux'un genel yapısını, ve dosya sistemini, disk bölümlerini anlatacağız. Sonrasında disk girdi çıktı yapısını ve dosya sistemiyle devam edeceğiz. Sizlere rehberlik edecek olan bu yazı, size sabitdisk bölümlemede ve dosya sistemi oluşturmada, Gentoo Linux 'unuzu kurmada size yardımcı olacaktır.
Başlangıç olarak sizeBlok aygıtlar hakkında bilgi vereceğiz. Bildiğimiz en yaygın sabit disk muhtemelen IDE sürücümüz yani /dev/hda. Eğer sisteminiz SCSI sürücü kullanıyorsa tabiki ilk sürücünüz /dev/sda olacaktır.
Sabit Disk Bölümleri (Partitions)
Pratikte mümkün olmamasına rağmen, teorik olarak bütün sabit diskimizi Linux olarak kullanmak mümkün. Ama bunun yerine yönetimi kolaylaştırmak amacı ile bütün sabit diskimizi daha küçük bölümlere ayırmak mümkün. Bu x86 sisteminde bölüm (Partitionen) olarak bilinir. Diğer mimarilerde Slices olarak tanınır.
Bölümler 3 kısma ayrılır: birincil (primar), uzatılmış (extended) ve mantıksal (logical).
Birincil bölüm (primary) bölünme bilgilerinin MBR(master boot record) üzerinde yazıldığı bir bölümdür. MBR çok küçük olduğu için (512 bytes) sadece 4 birincil bölüm tanımlanabilir. (Örneğin /dev/hda1 'den /dev/hda4 'e kadar).
Uzatılmış bölüm (extended) özel bir bölümdür ve kendi içerisinde başka bölümler içerir. Bunun anlamı, uzatılmış bölüm altında birçok bölünme yapılabilir. 4 bölünme az olduğu için ve geriye uyumluluğu genişletmek için bu bölüm geliştirilmiştir.
Mantıksal bölümler (logical) Uzatılmış bölümler içinde bulunan bölümdür. Tanımlamaları MBR içerisinde kaydedilmez aksine uzatılmış bölüm içerisinde bu bilgiler saklanır.
4.b. Sabit Disk Bölümlerini Tasarlamak
Eğer sisteminizin disk bölümlerinin şemasını çıkarmakla fazla kafa yormak istemiyorsanız, bizim sizin için hazırladığımız tabloyu kullanabilirsiniz:
| Bölüm | Dosya sistemi | Boyut | Açıklama |
| /dev/hda1 | ext2 | 32M | Boot bölümü |
| /dev/hda2 | (swap) | 512M | Swap bölümü |
| /dev/hda3 | ext3 | Geriye kalan GB | Root bölümü |
Eğer sabit disk bölümleri ile ilgili iseniz, kaç tane bölüme ihtiyacımız olduğunu merak ediyorsanız, okumaya devam edin. Aksi takdirde diğer bölüm başlığı olan fdisk kullanarak diski bölümlere ayırmak adlı olan bölümümüze geçiniz.
Diskimin kaç tane bölümü ve boyutu ne olmalı?
Sabit disk bölümlerimizin büyüklüğü sisteminizdeki ortama bağlıdır. Örneğin birçok kullanıcıya sahipseniz muhtemelen /home dizininizi bölmek isteyeceksiniz. Güvenliği arttırmak ve yedeklemek kolay olacaktır. Eğer Gentoo'yu Mail sunucusu olarak kuracaksanız /var dizini bölümleyebilirsiniz. İyi bir dosya sistemi seçimi sisteminizin performansını arttıracaktır. Oyun sunucusu olarak kurmak istersenizde birçok program /opt izini altına kurulacaktır. Bölünmede sebeb hep aynı /homedizininde olduğu gibi aynı: Güvenlik ve yedekleme.
Görüldüğü gibi, herşey ne elde etmek isteğinize bağlı. Sabit diskinizi bölümlemek size şu avantajları kazandıracaktır:
Bununla birlikte çoklu disk bölümleri büyük bir dezavantaja sahiptir: Eğer doğru düzenlenemezse bölümler arasında tanımlanmamış bilinmeyen boşluklar oluşabilir.
Bir örnek verecek olursak; elimizde bir laptop ve 20GB lik bir sabitdisk bulunmakta websunucusu, mailsunucusu ve gnome içermektedir. Bunu için aşağıdaki bölünmeyi örnek olarak gösterebiliriz:
Kod Listeleme 2.1: Dosya sistemi örneği |
Filesystem Type Size Used Avail Use% Mounted on
/dev/hda5 ext3 509M 132M 351M 28% /
/dev/hda2 ext3 5.0G 3.0G 1.8G 63% /home
/dev/hda7 ext3 7.9G 6.2G 1.3G 83% /usr
/dev/hda8 ext3 1011M 483M 477M 51% /opt
/dev/hda9 ext3 2.0G 607M 1.3G 32% /var
/dev/hda1 ext2 51M 17M 31M 36% /boot
/dev/hda6 swap 516M 12M 504M 2% <not mounted>
(Unpartitionierter Speicherplatz für zukünftige Benutzung: 2 GB)
|
/usr dizini %83 olarak görünmekte, çünkü tüm yazılımlar kurulmuş bir haldedir. İnsanlar sabit diskimizin büyük bir bölümünü /var dizinine eşitlediğimizi düşünebilir. Lakin Gentoo tüm programları derlediğinde /var/tmp/portagedizini altına koyar. Bu durumda en az 1gb /vardizini ne ayırmak gerekecek eğer KDE
4.c. Alpha Mimarisinden Fdisk Yardımı İle Bölümleme Yapmak
Aşağıdaki tablo nasıl Slice bölümü oluşturacağımız hakkında kısa bir bilgi vermektedir:
| Bölüm | Açıklama |
| /dev/sdaa | Swap Partition |
| /dev/sdab | Root Partition |
| /dev/sdac | Tüm Disk (gerekli) |
Bölüm ayarlarını kendi isteğinize göre değiştirin.
Kullanabileceğiniz DISK'leri görmek için aşağıdaki komutu verin:
Kod Listeleme 3.1: Identifizierung verfügbarer Festplatten |
(IDE DISK) # dmesg | grep 'drive$' (SCSI DISK) # dmesg | grep 'scsi' |
Bu çıktıda tanınan DISK ve /dev numaraları okunur. Aşağıdaki örnekte SCSI DISK /dev/sda oldugunu kabul ederek :
Kod Listeleme 3.2: fdisk başlatmak |
# fdisk /dev/sda
|
Biz ilk olarak tüm Slice bölümlerini diskimizden kaldırmak istiyoruz ('c'-Slice hariç). Aşağıda size nasıl bir slice kaldıracağınız gösterecegiz (ör. biz `a` kullanıyoruz). Bu uygulamayi tüm Slice ler için tekrar edin (gene 'c'-Slice haric) Mevcut Slice leri görmek için p tuşuna , ve kaldırmak için d tuşuna basıyoruz.
Kod Listeleme 3.3: Slice kaldırma |
BSD disklabel command (m for help): p 8 partitions: # start end size fstype [fsize bsize cpg] a: 1 235* 234* 4.2BSD 1024 8192 16 b: 235* 469* 234* swap c: 1 5290* 5289* unused 0 0 d: 469* 2076* 1607* unused 0 0 e: 2076* 3683* 1607* unused 0 0 f: 3683* 5290* 1607* unused 0 0 g: 469* 1749* 1280 4.2BSD 1024 8192 16 h: 1749* 5290* 3541* unused 0 0 BSD disklabel command (m for help): d Partition (a-h): a |
Diğer Slice'ler için aynı işlemi uyguladığınız zaman buna benzer liste çıkar :
Kod Listeleme 3.4: Boş bölümleme tablosunu görüntülemek |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
c: 1 5290* 5289* unused 0 0
|
Alpha tabanlı sistemlerde ek olarak /boot bölümü yapmanız gerekmez. aboot Image ilk silindire konulduğu için bu kullanamazsınız.
Ücüncü Silindirde balıyan 1 GB büyüklüğünde swap (takas) slice olusturacağız. Yeni slice oluşturmak için n tuşuna basın, oluşturduktan sonra typ 1 ile swap a değiştirin.
Kod Listeleme 3.5: Swap Slice olusturma |
BSD disklabel command (m for help): n Partition (a-p): a First cylinder (1-5290, default 1): 3 Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M BSD disklabel command (m for help): t Partition (a-c): a Hex code (type L to list codes): 1 |
Bu işlemlerden sonra böyle bir tabloyla karşılaşacaksınız:
Kod Listeleme 3.6: Swap Slice olusturduktan sonraki Slice tablosu |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
a: 3 1003 1001 swap
c: 1 5290* 5289* unused 0 0
|
Swap Slice'den sonra birinci Silinderden başlıyarak root Slice oluşturacağız. p tusuna basarak Swap Slice'nin nerde bittiğini öğrenin. Örneğin bizde bu 1003, yani Root Slice 1004 de başlıyor.
fdiskdeki bi problem, diskin cylinder sayısını 1 fazla görmesi, size son cylinder sorduğu zaman, gerek olanından 1 eksilterek cevap verin.
Slice oluşturulduktan sonra ext2 için Typ 8 olarak değiştirin.
Kod Listeleme 3.7: Root Slice oluşturma |
D disklabel command (m for help): n Partition (a-p): b First cylinder (1-5290, default 1): 1004 Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289 BSD disklabel command (m for help): t Partition (a-c): b Hex code (type L to list codes): 8 |
Bu işlemlerden sonra böyle bir tabloyla karşılacaksınız:
Kod Listeleme 3.8: Ansicht des Slice Layout |
BSD disklabel command (m for help): p
3 partitions:
# start end size fstype [fsize bsize cpg]
a: 3 1003 1001 swap
b: 1004 5289 4286 ext2
c: 1 5290* 5289* unused 0 0
|
Slice Tablosunu Kaydetmek ve fdiskten Çıkmak
Slice Tablosunu kaydedip fdisk 'ten çıkmak için w tuşuna basın.
Kod Listeleme 3.9: fdisk ayarlarını kaydedip çıkmak |
Command (m for help): w
|
4.d. Dosya Sistemimizi Yaratmak
Şimdiye kadar sabitdisk bölümlerimizi yarattık. Şimdi üzerilerine dosya sistemlerini yazmaya geldi. Dosya sistemini seçmek için endişelenmeyin, öntanımlı olan dosya sistemlerini kullanacaksınız, dosya sistemlerinin ne olduğunu bilmek isteyen okumaya devam etsin okumak istemeyenler Dosya Sistemlerini Bölümlere Uygulama adlı başlıktan itibaren okumaya devam edebilirler.. Aksi taktirde mevcut dosya sistemlerini okumaya devam edin...
Linux'un çekirdek yapısı çok çeşitli dosya sistemini destekler. Bunlardan birçoğu amd64 için stabil olarak ifade edilir.Fakat bazıları stabil olarak tanımlanmazlar. AMD64 için Stabil olarak tanımlanan bazı dosya sistemler şunlardır : ext2 ve ext3- JFS ve ReiserFS .
ext2 güvenilirliği denenmiş bir dosya sistemi biçimidir. Fakat "metadata journaling" özelliğine sahip değildir. Bunun anlamı ise ext2 dosya sistemi açılışta herseferinde başlangıç zamanını kontrol eder. Bu da zaman kaybına neden olur. Artık tamamiyle yeni bir nesil olan "journaled" dosya sistemi bulunmaktadır. Ve daha çok tercih edilmektedir. "journaled" dosya sistemleri, bilgisayarınızı yeniden başlattığınız da ve dosya sisteminizin kararsız bir durumda olduğunda geçikmeyi önler.
ext3 ext2 'nin "journaled" halidir ve tüm sistemi hızlı geri almak için "metadata journaling" özelliğine sahiptir. Eğer bu seçenekleri arttırmak istersek "full data" ve "ordered data journaling" buna örnektir. Ext3 "hashed b-tree indexing" özelliği ile çok yüksek performans sağlar. Ext3 mükemmel bir dosya sistemidir.
ReiserFS ise "B*-tree" tabanlı bir dosya sistemidir. ReiserFS, ext2 ve ext3 gibi çok iyi performansa sahiptir. ReiserFS ayrıca "metadata journaling" özelliğine de sahiptir. Özellikle 2.4.18+ sürümleri için mevcuttur. ReiserFS çok büyük boyutlarda sabit disk bölümleri yaratmak isteyeceğiniz zaman kullanacağiniz dosya sistemi olmalıdır.
XFS Gentoo Linux'un tam destek( xfs-sources kerneli) verdiği "metadata journaling" özelliğine sahip bir dosya sistemidir. Bu sistemi sadece SCSI ve UPS sistemi olanlara tavsiye ederiz. Çünkü XFS dosya sistemi RAM ile çok ilişki içindedir ve kullandığınız bir program herhangi bir sebebte dolayı çökerse verilerinizin kaybolmasına sebep olabilir.
JFS IBM tarafından geliştirilen yüksek performanslı "journaling" dosya sistemidir. Yeni bir dosya sistemidir ve henüz daha sağlamlığı hakkında fazla deliller bulunmamaktadır.
Dosya Sistemlerini Bölümlere Uygulama
Bir disk bölümü üzerine istediğimiz dosya sistemini kurmak için gerekli küçük programlar bulunmaktadır. Bunlar aşağıdaki tabloda belirtilmiştir:
| Dosya sistemi | Komut |
| ext2 | mke2fs |
| ext3 | mke2fs -j |
| reiserfs | mkreiserfs |
| xfs | mkfs.xfs |
| jfs | mkfs.jfs |
Boot bölümünü boot bölümünü (yani bizim örneğimizde /dev/hda1 ) ext2 olarak ve kök (root) ( bizim örneğimizde /dev/hda3 ext3 olarak tanımlamak istersek:
Kod Listeleme 4.1: Dosya Sistemlerini Uygulama |
# mke2fs /dev/hda1 # mke2fs -j /dev/hda3 |
Şimdi dosya sistemlerini daha önceden yarattığımız sabit disk bölümleri için ayarlamış olduk.
Takas (Swap) Alanını Aktif Hale Getirmek
mkswap komutu bizim işimizi görecek ve takas alanımızı yaratacaktır:
Kod Listeleme 4.2: takas alanı yaratma # |
# mkswap /dev/hda2
|
Takas alanını etkin hale sokmak için kullanacağımız komut ise swapon:
Kod Listeleme 4.3: Takas alanını aktif hale getirme |
# swapon /dev/hda2
|
Takas alanımız oluşturuldu ve başarıyla aktif edildi.
4.e. Sabit Disk Bölümlerini Bağlamak (Mounting)
Sabitdisk bölümlerimiz hazır ve dosya sistemlerimiz için ev sahipliği yapıyor. Şimdi sıra sabitdisk bölümlerimizi bağlamaya geldi. Kullanacağımız komut: mount Sabitdisk bölümlerimizi bağlamadan önce her bölüm için dizin yaratmayı unutmayın. Aşağıdaki örnekte biz kök ve boot bağladık:
Kod Listeleme 5.1: Sabit disk bölümlerini bağlamak |
# mount /dev/hda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda1 /mnt/gentoo/boot |
Not: Eğer /tmp dizinini ayrı bir sabitdisk bölümüne koymak istiyorsanız, bağlamadan önce aşağıdaki komutunu kullanarak izin verdiğinizden emin olun: chmod 1777 /mnt/gentoo/tmp. Aynı şey /var/tmp dizini içinde geçerlidir. |
Ayrıca çekirdeğimiz için /proc dizinini bağlamamız gerek. Bunu yapmak için ilk olarak /mnt/gentoo/proc dizinini oluşturmak sonra mount ile bağlamamız gerekli:
Kod Listeleme 5.2: /mnt/gentoo/proc bağlanma noktası oluşturma |
# mkdir /mnt/gentoo/proc # mount -t proc none /mnt/gentoo/proc |
Şimdi diğer bölüme geçebilirsiniz : Gentoo Kurulum Dosyalarının Kurulması
5.a. Bir Aşama(Stage) Arşivi Yüklemek
Zaman ve Tarihi Doğru Olarak Yüklemek
Devam etmeden önce sisteminizin saat/tarih ayarlarını yapmalısınız. Yanlış ayarlanmış bir zaman aşaması gelecekte size sorun çıkarabilir.
Güncel saat/tarih ayarlarınızı kontrol etmek için date komutunu kullanabilirsiniz:
Kod Listeleme 1.1: Zaman/Tarih kontrol etmek |
# date
Thu Apr 1 16:21:18 CEST 2004
|
Eğer saat/tarih yanlış ise bunu date MMDDhhmmCCYY paremtreleri ile ayarlayabilirsiniz: (M Ay, D Gün h saat, m dakika, C yüzyıl ve Y sene). Zamanı/Tarihi mesela 29 nisan 2004, 15:49 ayarlamak için aşağıdaki komutu kullanabiliriz:
Kod Listeleme 1.2: Saat/Tarih ayarlamak |
# date 040116212004
|
Sıradaki adım karar verdiğiniz aşama (stage) arşivini sisteme yüklemek. Bunun için karar verdiğiniz Aşama arşivini internetten Tarball olarak indirebilir yada LiveCD kullanıyorsanız oradan kopyalaya bilirsiniz.
5.b. Varsayılan: Aşama(stage) Paketlerini İnternetten İndirme
İnternet'ten aşama(stage) arşivini indirme
İlk önce Gentoo bağlanma(mount) noktasına gitmelisiniz, yukardaki açıklamarı takip ettiyseniz şuanda Gentoo bölümüne bağlı olmanız ve bağlı klasörünüzde bu /mnt/gentoo olabilir:
Kod Listeleme 2.1: Gentoo bağlanma noktasına gitmek |
# cd /mnt/gentoo
|
Kurulum yönteminden bağımsız olarak, Aşama arşivini indirmek için bir çok yazılım bulunmaktadır. Mesela lynx erişilebilir bir durumdaysa direk olarak Gentoo yansı adreslerine gidin ve kendinize bir yansı seçin. Seçtikten sonra releases/ klasörüne gitmelisiniz, sonra kullandığınız mimariye görex86/ altına gidip , güncel olan Gentoo sürümünü (2004.1) seçin ve sonra olarak stages/ klasöründe işlemcinize göre uygun Aşama-arşivleri bulacaksınız. Birini seçtikten sonra lynx tarayıcısında D tuşuna basarak indirin. İndirme işlemi bittikten sonra Q tuşuyla tarayıcıyı kapatabilirsiniz.
Not: Gentoo Hardened Aşamalarının (x86 mimarı için olanlar) bulunduğu bölüm: hardened/stages/. |
Kod Listeleme 2.2: Lynx'le yansı listesini açmak |
# lynx http://www.gentoo.org/main/en/mirrors.xml
|
Eğer lynx kullanma olasılığınız yok ise links2 kullanabilirsiniz. links2 daha gelişmiş olmasına rağmen lynx 'e göre bazı noksanları var. Mesela verdiğimiz proxy ayarlarını kullanmayabilir. Böyle bir durumda links2 tarayıcımızı links2 -http-proxy proxy.server.com:8080 parametresiyle çalıştırabiliriz. Geri kalan işlem ise lynx 'de olduğu gibidir.
Kod Listeleme 2.3: Yansı listesini links2'yle açmak |
(Proxy kulanmadan) # links2 http://www.gentoo.org/main/en/mirrors.xml (Proxy kullanarak) # links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml |
İndirdiğiniz Aşama(stage) arşivinin bozuk olmadığına emin olmak için md5sum yazılımını kullanabilirsiniz. Yansı da bulunan Aşama-arşivinize ait olan md5sum dosyasını, indirmiş olduğunuz arşivle md5sum yazılımıyla karşılaştırın.
Kod Listeleme 2.4: Aşama-arşivini kontrol etmek |
# md5sum stage1-x86-20030910.tar.bz2
6cda1cc745ba882731ac07fbae0dd973 stage1-x86-20030910.tar.bz2
|
Şimdi indirmiş olduğunuz Aşama-arşivini sisteminizin içinde açmalısınız. Bu işlem için GNU tar yazılımını kullanacağız, çünkü en kolay yöntem bu.
Kod Listeleme 2.5: Aşama arşivini açmak |
# tar -xvjpf stage?-*.tar.bz2
|
-xvjpf parametresini kullandığınıza emin olun. Parametredeki x 'in anlamı açmak (extrackt) için , v bilgi vermek için ((ing: Verbose, şart değil ama genede olası hataları görmek için ideal) , j parametresi bzip2 ile açmak için, p parametresi dosya haklarının aynen kalması ve f bir dosyayı açacağımızı bildiren ve standart veriyi kullanmayacağımızı belirten parametre anlamındadır.
Aşama arşiviniz sisteme yüklendikten sonra Portage Kurulumu ile devam ediniz.
5.c. Alternatif: LiveCD'deki Aşama(stage) Paketerini Kullanmak
CD deki Aşama arşivleri /mnt/cdrom/stages klasöründe bulunmaktadır. Klasör içinde kilerini görüntülemek içinlskomutunu kullanın:
Kod Listeleme 3.1: CD'de bulunan Aşama-arşivlerinin listelenmesi |
# ls /mnt/cdrom/stages
|
Eğer sistem aşağıda olduğu gibi bir hata verirse CD-ROM'unuzu mount etmelisiniz:
Kod Listeleme 3.2: CD-ROM'u bağlamak(mount etmek) |
# ls /mnt/cdrom/stages ls: /mnt/cdrom/stages: No such file or directory # mount /dev/cdroms/cdrom0 /mnt/cdrom # ls /mnt/cdrom/stages |
Şimdi Gentoo bağlanma (mount) noktasına gitmeliyiz (genellikle /mnt/gentoo):
Kod Listeleme 3.3: /mnt/gentoo klasörüne gitme |
# cd /mnt/gentoo
|
Burada seçmiş olduğunuz Aşama arşivini şimdi GNU tar yazılımını kullanarak açacağız. Kesinlikle listeleme 11'de kullandığımız parametreyi (-xvjpf)! kullanmaya özen gösterin! Örnek olarak stage3-20031011.tar.bz2 arşivini Kod Listesi 11 de kuracağız, siz bu dosya ismini seçmiş olduğunuz Aşama-arşivi ismiyle değiştiriniz.
Kod Listeleme 3.4: Aşama arşivini açmak |
# tar -xvjpf /mnt/cdrom/stages/stage3-20031011.tar.bz2
|
Şimdi Aşama(stage) paketleri kuruldu ve Portage Kurulumu ile devam edebiliriz.
Ağ ile mi yoksa ağ olmadan mı?
Eğer internet bağlantınız yoksa LiveCD'deki snapshotlardan birini kullanmalısınız, sonraki adımlarda önderlenmiş paketler kullanmak isterseniz (mesela gentoo kurumunu hızlandırmak için) mutlaka LiveCD deki Snapshotlardan birini seçmelisiniz. Diğer kullanıcılar mesela önümüzdeki adımlarda emerge ile güncel bir Portage ağacı(Tree) indirecekler.
Aşağıdaki bölümlerden birisi ile devam edebilirsiniz:
Portage Snapshot'un ve Kaynak Kodun LiveCD'den Kurulumu
Universal LiveCD'lerde bir Portage Snapshot'u bulunmaktadır. Bu bölümü okuduğunuza ve bu yöntemi seçtiğinize göre LiveCD kullandığınızdan yola çıkabiliriz. Devam etmek için LiveCD'de bulunan yansımayı (Snapshot) yüklememiz gerek, hangi Snapshot'un /mnt/cdrom/snapshots/ klasöründe bulunduğuna lütfen tekrar kontro ediniz:
Kod Listeleme 4.1: /mnt/cdrom/snapshots/ içeriği |
# ls /mnt/cdrom/snapshots
|
Seçtiğiniz Snapshot'u tar komutuyla açabilirsiniz, tekrardan verdiğimiz seçenekleri bire bir aktarmaya özen gösterin. Dikkat edilmesi başka bir unsurda -C 'yi büyük C harfi olarak yazmak, (küçük colarak değil). Sıradaki örneğimizde portage-20031011.tar.bz2 snapshotunu kullanıyoruz, burda bu snapshot'un yerine sizin seçmiş olduğunuz Portage Snapshot'u yazmalısınız.
Kod Listeleme 4.2: Portage Snapshot'unun kurulumu |
# tar -xvjf /mnt/cdrom/snapshots/portage-20031011.tar.bz2 -C /mnt/gentoo/usr
|
Şimdiyse CD'de bulunan tüm kaynak kodunu kopyalamalıyız:
Kod Listeleme 4.3: Kaynak kodun kopyalanması |
# mkdir /mnt/gentoo/usr/portage/distfiles # cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/ |
Portage snapshot şimdi kuruldu ve Derleyici Parametrelerininin Ayarlanması bölümü iled devam edebiliriz.
5.e. Derleyici Parametrelerininin Ayarlanması
Gentoo'yu ayarlamak için portage'i etkileyen bazı değişkenler verilebilir. Bu değişkenlerin tümü ( export komutu ile) ortam değişkenleri olarak tanımlanabilir. Ama bu yöntem kalıcı bir çözüm değildir. Ayarlarınızın kalıcı olması için portage size/etc/make.conf ayar dosyasını sunuyor. Şimdi bu dosyayı ayarlayacağız.
Not: Tüm değişkenlerin açıklamalı anlatımını /mnt/gentoo/etc/make.conf.example dosyasında bulabilirsiniz. Başarılı bir Gentoo kurulumu için vereceğimiz değişkenleri kullanmaya özen gösteriniz. |
Dilediğiniz bir editörü (biz bu durumda nanoeditörünü kullandık) kullanarak, tanıtacağımız ayarlı değişkenlerle /etc/make.conf dosyasını biçimlendirmeliyiz.
Kod Listeleme 5.1: /etc/make.conf dosyasını editörle açmak |
# nano -w /mnt/gentoo/etc/make.conf
|
Sizinde çabucak görebileceğiniz gibi, make.conf.example dosyası tipik bir yapılandırma dosyasıdır: Kullanmak istemediğiniz satırların başına "#" koyabilirsiniz. Kullanmak istediğiniz satırların başında ise sadece değişken tanımlamaları olmalıdır, örn: VARIABLE="content"
Uyarı: Aşama1 kurulumu dışında make.conf dosyasında bulunan CHOST ayarlarına dokunmamakta fayda vardır. Sonuçta sizi bozuk bir sistem bekleyebilir. Tekrardan: CHOST değişkenini sadece Aşama1 (stage1) kurulumunda ayarlamalısınız. |
CHOST değişkeni gcc derleyicisiin yazılımları tercüme ederken hangi mimariyi kullanacağını belirler. Bunlar :
| Mimari | Alt Mimari | CHOST Ayarları |
| x86 | i386 | i386-pc-linux-gnu |
| x86 | i486 | i486-pc-linux-gnu |
| x86 | i586 | i586-pc-linux-gnu |
| x86 | i686 veya daha yükseği (athlon'da dahil) | i686-pc-linux-gnu |
| alpha | alpha-unknown-linux-gnu | |
| ppc | powerpc-unknown-linux-gnu | |
| sparc | sparc-unknown-linux-gnu | |
| hppa | (generic) | hppa-unknown-linux-gnu |
| hppa | pa7000 | hppa1.1-unknown-linux-gnu |
| hppa | pa8000 ve yükseği | hppa2.0-unknown-linux-gnu |
| mips | mips-unknown-linux-gnu | |
| amd64 | x86_64-pc-linux-gnu |
CFLAGS ve CXXFLAGS değişkenlerinin tanımı gcc derleyicisinin C ve C++ derleyicisini uygun hale getirir. Burada bu ayarları global tanımlasak bile en iyi verimi Flag'leri her yazılım için ayrı tanımlayarak elde ederiz. Bunun sebebi her yazılımın derlenirken ayrı davranmasıdır ve ayrı özellikler gösterebilmesidir.
make.conf dosyasını uygun hale getiren Flag'leri tanımlarken sistemin genel olarak ayarlamaya özen gösterin. Bu değişkenlerde denemelerde bulunmayın, aşırı fanatik tanımlarmalar yazılımlarda hatalara yol açabilir
Burada en uygun hale getiren tüm parametreleri açıklamayacağız. Bunları öğrenmek için GNU Online Manual(s) veya gcc info page (info gcc sayfasına bakmanız gereklidir. Bunun dışında make.conf.example dosyası bir sürü örnek ve bilgi barındırmakta.
İlk ayarlamamız -march= flag'ı . Flag işlemcimizin mimarisini belirliyor. Yapılabilecek seçenekler make.conf.example dosyasında açıklanmış halde bulunuyor. Örnek olarak x86 Athlon XP'nin mimarisini ayarlayalım.
Kod Listeleme 5.2: GCC'nin march ayarı |
-march=athlon-xp |
İkinci paremetremiz ise -O flag'ı dır. (DIKKAT: Büyük O harfidir(Osmanın O harfi gibi), sıfır(0) rakamı ile karıştırmayın). Bu Flag'ımız gcc derleyicisini uygun hale getiren sınıflandırmasıdır. Verilebilir sınıflardan bazıları s (for size-optimized), 0 (zero - for no optimizations), 1, 2 veya 3 Flag'ı daha yüksek hız ulaştırmak için kullanılabilir. (Her sınıf kendinden ufak sınıfların Flag'larını miras alablir. Mesela bir Sınıf-2 uygun hale getirme seçeneği olarak kullanmak istersek:
Kod Listeleme 5.3: GCC O değişkeninin ayarları |
-O2 |
Bunların dışında çok kullanılan uygun hale getiren Flag'lerden bazıları -pipe (geçici dosyalar yerine farklı tercüme aşamalarındaki iletişimde pipe kullanıyor) ve fomit-frame-pointer (bu seçenekle fonksiyonlar için kullanılan Frame Pointer ihtiyaç duymadığında kayıt tutulmuyor).
CFLAGS CXXFLAGS değişkenlerinde birden fazla uygunlaştırma flag'leri birleştirerek kullanılabiliniz; aşağıdaki örneğimizde olduğu gibi:
Kod Listeleme 5.4: CFLAGS ve CXXFLAGS değişkenlerinin tanımlanması |
CFLAGS="-march=athlon-xp -pipe -O2"
CXXFLAGS="${CFLAGS}" # Her iki değişken için aynı ayarları kullan
|
MAKEOPTS değişkeniyle kaç tane paralel derleme işleminin bir paketi derlerken çalışmasını belirleriz. Tavsiye edilen sayı makinemizde bulunan işlemci sayısının bir fazlasıdır.
Kod Listeleme 5.5: Basit tek işlemcili bir makina için MAKEOPTS değişkeni |
MAKEOPTS="-j2" |
/mnt/gentoo/etc/make.conf dosyanızı kaydedin ve şimdi Gentoo Temel Sisteminin Kurulması ile devam edebilirsiniz.
Eğer sisteminizi Gentoo LiveCD ile başlattıysanız, /etc/make.confdosyanızı aynı Portage ve kaynak kodlarını kullanan en hızlı yansıları bulup, güncellemesi için mirrorselectkullanabilirsiniz. (İnternet bağlantısına ihtiyaç duyar):
Kod Listeleme 1.1: En hızlı yansıları seçme |
# mirrorselect -a -s4 -o >> /mnt/gentoo/etc/make.conf
|
Eğer herhangi bir nedenle mirrorselect çalışmazsa paniklemeyin. Bu kısım isteğe bağlıdır, öntanımlı ayarlarda yeterli olacaktır.
Yeni ortama geçmeden önce /etc/resolv.conf dosyasındaki DNS bilgilerinin kopyalanması gerekiyor. /etc/resolv.conf ağınızın Nameserver'larını içeriyor.
Kod Listeleme 1.2: DNS bilgisinin kopyalanması |
( "-L" parametresi gereklidir. Aksi taktirde sadece sembolik bağlantı (link) yapabilir. # cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf |
Şimdi tüm bölümler hazırlandı ve temel ortam yüklendi, yeni ortama chrooting yoluyla giriş yapma zamanı. Bu şu anki yükleme ortamından (LiveCD ya da başka bir yükleme yöntemi), sizin yükleme sisteminize geçeceğimiz anlamına geliyor. (kısaca hazırlanmış HDD bölümlerine).
chrooting yöntemi üç adımda tamamlanıyor. İlk önce kök dizinimizi / (yükleme ortamındaki), /mnt/gentoo (sizin HDD bölümünüzdeki) olarak değiştiriyoruz. Sonra env-update kullanarak (ortam değişkenlerini yaratması için) yeni ortamı yaratıyoruz. Son olarak, bu değişkenleri source komutunu kullanarak sistem belleğine yüklüyoruz.
Kod Listeleme 1.3: Yeni ortam için "chroot" işlemi |
# chroot /mnt/gentoo /bin/bash # env-update Regenerating /etc/ld.so.cache... # source /etc/profile |
Tebrikler! Şu an kendi Gentoo Linux ortamınızdasınız. Elbette kurulumun bitmesine henüz uzağız :-)
İsteğe Bağlı: Portage'i Güncellemek
Eğer bir önceki bölümde Portage paket listesini yüklemediyseniz, İnternet üzerinden Portage indirmeniz gerekmektedir. emerge sync bunu sizin için yapar. Diğer kullanıcılar bu kısmı geçerek USE Değişkeninin Yapılandırması bölümünden devam edebilirler.
Kod Listeleme 1.4: Portage'i Güncellemek |
# emerge sync (Eğer rsync kullanamıyorsanız, "emerge-webrsync" (sizin için bir Portage paket listesi indirip, kuracak) kullanın.) # emerge-webrsync |
Eğer Portage'in yeni bir sürümünün olduğuna ve Portage'i güncelleyebileceğinize dair bir uyarı alırsanız, iptal edebilirsiniz. Portage kurulum sırasında güncellenecektir.
USE Değişkeninin Yapılandırması
USE , Gentoo'nun kullanıcılarına sunduğu çok güçlü bir değişkendir. Bir çok program mutlak nesneler için isteğe bağlı seçeneklerle ya da seçenek olmadan derlenebilir. Örnek olarak, bazı programlar gtk desteği ile, ya da qt desteğiyle derlenebilir. Diğerleri SSL desteği ile ya da SSL desteği olmadan derlenebilir. Hatta bazı programlar X11 desteği (X-server) yerine framebuffer (svgalib) desteği ile derlenebilir.
Çoğu dağıtım, paketleri olabildiğince destek ile derler, programların boyutunu ve çalışma zamanını arttırmak için bağımlılık hatalarını belirtmemeye özen gösterir. Gentoo ile bir paketin hangi seçeneklerle derleneceğini belirtebilirsiniz. İşte burada USE rol alıyor.
USE değişkeni ile derleme seçeneklerinde bulunan anahtar kelimeleri belirtebilirsiniz. Örnek olarak,vssl anahtarı, ssl destekleyen programları ssl desteği ile kuracaktır. -X X-server desteğini kaldıracaktır (eksi işareti önde olmalıdır). gnome gtk -kde -qt programlarınızı gnome (ve gtk) desteği ile, fakat kde (ve qt) desteği olmadan derleyecektir. Sisteminizi tamamiyle GNOME'a uyumlu hale getirecektir.
Öntanımlı USE ayarları /etc/make.profile/make.defaults içindedir./etc/make.conf dosyasında belirttiğiniz değişkenler, bu öntanımlı ayarların ardından hesaplanmıştır.Eğer USE yarlarına herhangi bir şey eklediyseniz, o seçenek öntanımlı listeye eklenir. Eğer USE ayarlarından herhangi bir şey kaldırdıysanız (seçeneğin önüne eksi işareti koyarak) o seçenek öntanımlı listeden çıkarılır (eğer ön tanımlı listede bulunuyorsa). Asla /etc/make.profile dizininde bir değişiklik yapmayın; Portage'i güncellediğinizde bu dizin yeniden yazılacaktır!
USE değişkeninin tam bir açıklaması Gentoo El Kitabı'nın ikinci bölümünde bulabilirsiniz; Bölüm 1: USE flags. Ayrıca tam bir başka açıklamayı sisteminizde /usr/portage/profiles/use.desc dosyasında da bulabilirsiniz.
Kod Listeleme 1.5: Kullanılabilir USE seçeneklerini görme |
# less /usr/portage/profiles/use.desc
|
Bir örnek olarak KDE tabanlı; DVD, ALSA ve CD yazma için bir sistemin USE ayarlarını gösterelim:
Kod Listeleme 1.6: /etc/make.conf dosyasını açma |
# nano -w /etc/make.conf
|
Kod Listeleme 1.7: USE ayarları |
USE="-gtk -gnome qt kde dvd alsa cdr" |
İsteğe Bağlı: Dağıtım Derleme Kullanımı
Eğer sistemlerin koleksiyonunu yapmakla ilgileniyorsanız, bizimDistCC Rehberimize göz atmak isteyebilirsiniz. Distcc kullanarak, bir çok sistemin işlemci gücüne ek olarak kurulum da kullanabilirsiniz.
6.b. Aşama1(Stage1), Aşaram2(Stage2) ve Aşama3(Stage3) Arasındaki Farklar
Şimdi rahatlayın ve bundan sonraki adımları düşünün. Size aşama1, aşama2 ve aşama3'den birini seçmenizi söylemiştik ve bu seçimlerin kurulum sırasında sonraki adımlar için önemli olduğu konusunda uyarmıştık. İşte burası yaptığınız seçeneğin sonraki adımları etkileyeceği ilk yer.
6.c. Aşama1(Stage1)'den Aşama2(stage2)'ye İlerleme
Şimdi siz her şeyi gelişi güzel derlemek istiyorsunuz öyle mi? Tamam o zaman :-)
Bu adımlarda, Gentoo sisteminizinbootstrap'nı jazırlayacagız. Bu işlem uzun zaman sürer, fakat kullanıma en iyi derecede ayarlanmış, sıfırdan başlayarak makinenizin ihtiyaçları için hazırlamak en iyi sonucu verir.
Bootstrapping şu anlama gelmektedir: GNU C kütüphanesi, GNU Derleyici Koleksiyonu ve bir kaç anahtar sistem programını yapmaktır.
Bootstrapping'e başlamadan önce, size isteyebileceğiniz ya da istemeyeceğiniz bir kaç seçeneği listeleyeceğiz. Eğer bunları okumak istemiyorsanız,Sistemi Bootstrapping İşleminden Geçirme bölümünden devam edin.
İsteğe Bağlı: Derleme Süresini Azaltma
Eğer bootstrapping işlemini hızlandırmak istiyorsanız, java desteğini seçmeyebilirsiniz. Bu GNU Derleme Koleksiyonu ve GNU C kütüphanesi; java desteği olmadan (bu derleme süresini düşürecektir) derleneceği anlamına geliyor. Bu durumda GNU Java Derleyicisi (gcj) sistemde olmayacak, fakat bu java uygulamalarını ve diğer java malzemelerini kullanamayacağınız anlamına gelmiyor.
Java desteğini kapatmak için, bootstrap scriptini başlatmadan önce USE="-java" seçeneğini kullanın.
Kod Listeleme 3.1: Java desteğini kapatma |
# export USE="-java"
|
Bootstrapping'den sonra değişkenleri unset işleminden geçirmeyi unutmayın:
Kod Listeleme 3.2: USE değişkenini unset işleminden geçirme |
# unset USE
|
İsteğe Bağlı: Önce Kaynakları İndirme
Eğer önce tüm kaynakları kopyalamadıysanız, bootstrap scripti tüm gerekli dosyaları indirecek. Bootstrap bu internet bağlantısı gerektirir demeden çalışmaya koyulacaktır :-) Eğer kaynakları bootsprap işleminden önce ve sonra indirmek istiyorsanız (örnek olarak, eğer derleme esnasında internet bağlantısını açmak istemiyorsanız), bootstrap'in -f parametresini kullanınız (bu tüm kaynak kodlarını sizin için alacak).
Kod Listeleme 3.3: Gerekli Kaynakları İndirme |
# cd /usr/portage # scripts/bootstrap.sh -f |
Sistemi Bootstrapping İşleminden Geçirme
Tamam o zaman, klavyenizi alın ve bootstrap'i başlatmak için sıradaki komutları kullanın. Daha sonra kendinize meşgul olacak birşey bulun çünkü bu adım biraz uzun zaman alacak :-)
Kod Listeleme 3.4: Sistemi Bootstrapping işleminden geçirme |
# cd /usr/portage # scripts/bootstrap.sh |
Eğer önceden /etc/make.conf içindeki CHOST ayarlarında değişiklik yaptıysanız, bazı değişkenleri GCC'nin hızlı çalışması için belli bir düzende tekrar hazırlamanız gerekir:
Kod Listeleme 3.5: Ortam Değişkenlerini Tekrar Hazırlama |
# source /etc/profile
|
Şimdiki adımımız : Aşama2'den Aşama3'e İlerleme.
6.d. Aşama2'den Aşama3'e İlerleme
Eğer bu bölümü okuyorsanız, sistemi bootstrap işleminden geçirdiniz (çünkü öncesinde bootstrap işlemini yaptınız yaaşama2'ikullanıyorsunuz). Şimdi tüm sistem paketlerini kurmanın zamanı geldi.
Tüm sistem paketleri? Hayır, tam olarak böyle değil. Bu adımda, kullanmak için başka alternatifi olmayan paketleri kuracaksınız. Bazı sistem paketleri bir kaç alternatife sahip (sistem kayıtçıları gibi) ve Gentoo tamamen seçenekler hakkında. Size sadece bir tanesi konusunda baskı yapmak istemiyoruz.
İsteğe Bağlı: Bitirilecekleri Görme
Eğer hangi paketlerin kurulacağını görmek istiyorsanız, emerge --pretend system komutunu kullanın. Bu kurulacak bütün paketleri gösterecektir. Eğer liste çok büyük görünüyorsa, less ya da more gibi bir sayfalayıcı da kullanabilirsiniz.
Kod Listeleme 4.1: 'emerge system' komutunun Neler Yapacağını Görme |
# emerge --pretend system | less
|
İsteğe Bağlı: Kaynakları İndirme
Eğer emerge 'nin siz devam etmeden önce kaynakları indirmesini istiyorsanız (örnek olarak, eğer paketlerin kurulumu esnasında internet bağlantısını açmak istemiyorsanız), emerge'ün --fetchonly seçeneğini kullanabilirsiniz (bu tüm kaynakları sizin için alacaktır)
Kod Listeleme 4.2: Kaynak Kodları Alma |
# emerge --fetchonly system
|
Sistemi kurmaya başlamak için, emerge system komutunu kullanın. Sonra kendinizi meşgul edecek başka bir daha bulun çünkü bu işlemde biraz uzun zaman alacak.
Kod Listeleme 4.3: Sistemi Kurma |
# emerge system
|
Güncellenmiş bir yapılandırma dosyasına dair herhangi bir uyarı alırsanız, güvenle uyarıyı görmezden gelebilirsiniz (ignore) (ve etc-update çalışırken). Gentoo sisteminiz tam olarak kurulup, başlatıldığında dökümantasyonumuzu okuyun:Configuration File Protection.
Tüm kurulum işlemleri tamamlandığında, Kernel Yapılandırması ile devam edin: Kernel Yapılandırma.
7.a. Sistem Saat Diliminin Ayarlanması
Sisteminize ilk önce hangi saat diliminde bulunduğunu söylemeniz gereklidir. Bunun için /usr/share/zoneinfo dizini altında size uyan saat dilimini bulun ve ln komutu yardımı ile /etc/localtimeolarak yönlendirin(link edin):
Kod Listeleme 1.1: Saat diliminin ayarlanması |
# ls /usr/share/zoneinfo (Örnek: Türkiye) # ln -sf /usr/share/zoneinfo/GMT /etc/localtime |
7.b. Kernel Kaynak Kodunun Kurulması
Bütün Linux satıcılarının bir araya topladığı programların temeli linux kernele dayanır. Kernel kullanıcı programları ile sistemdeki donanım arasında iletişimi sağlar. Gentoo da bütün kullanıcılarına çeşitli kernel kaynak kodları sunmaktadır. Bu çeşitli Kernel kaynaklarını ve açıklamalarını 'Gento Kernel Guide' bölümünde bulabilirsiniz: Gentoo Kernel Guide.
Alpha basisli sistemler için mevcut kernek kaynakları : vanilla-sources (Ağ oratamı olmadan kernel kurulumu için ideal olan seçim ), alpha-sources (Alpha kullanıcıları için optime edilmiş kernek kaynak kodu), compaq-sources (Redhat tarafından Alpha kullanıcıları için geliştirilen kernel kaynak kodu).
Kernel kaynağını seçin ve emerge komutuyla kurun.
Aşağıdaki örneğimizde vanilla-sources-2.4.24 (Ağ oratamı olmadan kernel kurulumu için ideal olan seçim ). Tabi siz kendi seçtiğiniz kernel kaynağını kurmanız gereklidir. Bu sadece bir örnektir:
Kod Listeleme 2.1: Kernel kaynak kodunun kurulması |
# emerge gentoo-dev-sources
|
Eğer şimdi /usr/src dizinine bakarsanız, linuxadında bir dizinin oluştuğunu ve kernel sürümüne bağlandığını (link) görürsünüz:
Kod Listeleme 2.2: Kernel kaynak koduna sembolik bağlantı oluşturulması |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux->linux-2.6.5-gentoo
|
Eğer linux dizini başka bir dizine bağlı gözüküyorsa, kullandığınız kernel kaynağını ve sürüm numarasını tekrar kontrol edin veya kendi eliniz ile aşağıdaki komutu verip bağlayın:
Kod Listeleme 2.3: Kernel kaynak koduna yapılan sembolik bağlantının değiştirilmesi |
# rm /usr/src/linux # cd /usr/src # ln -s linux-2.6.5-gentoo linux |
Kod Listeleme 2.4: Ändern des Kernelquellen Symlinks |
# rm /usr/src/linux # cd /usr/src # ln -s linux-2.4.24 linux |
Şimdi kernelinizi kendi donanımınıza göre ayarlayabilir ve sonra derleyebilirsiniz. Bütün kernel yapılarında genkernel komutunu kulllanabilirsiniz. Bu sayede LiveCD de kullanınan generik kernelin bir benzeri oluşturulur. Ama şimdi ilkönce 'elile' nasıl ayarlayabileceğinizi aktaracağız. Çünkü bu sayede, yani elile ayarlamada kendi donanımınızı en iyi şekilde ayarlama imkanınız olur.
Eğer kerneli eliniz ile kendiniz ayarlamak istiyorsanız Varsayılan: Elile Kernel Ayarlama bölümü ile devam edin. Eğer genkernelotomatik kernel derleme için genkernel kullanıp, herşeyin otomatik olarak derlenmesini istiyorsanız. Eğer genkernel kullanacaksanız Seçmeli: Genkernel Kullanımı bölümü ile devam edin.
7.c. Standard: Manuelle Konfiguration
Genelde elile kernel ayarlamak linux kullanıcıları için zahmetli bir iştir ve dikkat ister. Ancak birkaç defa kendiniz kernel derlediğinizde, aslında bunun hiçde o kadar zor bir olay olmadığı göreceksiniz. Biraz tecrübe ve pratik ile sizde aynı görüşe sahip olacaksınız, inanın buna.;-)
JYalnız gerçek olan birşey varsa: Elile kernel derlemeden önce, sisteminizdeki bütün donanımı ve bu donanımın bütün özelliklerini çok iyi bilmeniz gereklidir. Donanım ile ilgili önemli birçok bilgileri /proc/pci dosyasının içinden lspci komutu ile alabilirsiniz. LiveCD de kullanılan modulları lsmod komutu yardımı ile öğrenebilir veya bir yere not alabilirsiniz. Bu sayede kernel derlerken hangi modulları işaretleyeceğiniz konusunda size bir fikir verebilir
Şimdi kendiniz kernel derlemek için kernel kaynak kodlarının bulunduğu dizine gidin ve make menuconfig komutunu çalıştırın. Bu komut size ncurses temelli ayar menüsünün çalıştırılmasını sağlar:
Kod Listeleme 3.1: Menuconfig kullanımı |
# cd /usr/src/linux # make menuconfig |
Karşınıza çeşitli ayar bölümlerini gösteren bir menü çıkar. İşaretlenmesi gerekli olan önemli bazı seçenekleri kısaca aşağıda bulabilirsiniz. ( Bu zorunlu secenekleri muhakkak yapmanız gerekli. Aksi taktirde Gentoo sağlam bir şekilde çalışmayabilir).
Gerekli Seçeneklerin Seçilmesi
İlk önce geliştirme ve deneysel kullanıma izin veren kod sürücülerinin blunduğu bölümü seçmeniz gerekli. Bu bölüm gereklidir, çünkü bazı önemli Kod/Sürücü (code/drivers) bölümlerinin menülerde bulamazsınız. Onun için bu bölümü muhakkak işaretleyin:
Kod Listeleme 3.2: Selektieren experimenteller/n Codes/Treiber |
Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers |
Sonra File Systems bölümüne gidin ve kullanmak istediğiniz dosya sistemlerini seçin. Ancak burda seçimn yaparken, dosya sistemleri için asla Modul oalrak seçmeyin. Çünkü Gentoo Linux altında yükleme yaparsan sorun yaşayabilrisiniz. Bu yüzden Y olarak seçim yapın. Aksi taktirde yeni Gentoo sisteminiz sabit sürücünüzdeki (harddisk) bölümleri görmeyebilir( yani mount etmeyebilir). SeçimizineVirtual memory, /proc file system, /dev file system + Automatically mount at boot bölümlerinide ekleyin:
Kod Listeleme 3.3: Gerekli dosya sisteminin seçilmesi |
File systems ---> [*] Virtual memory file system support (former shm fs) [*] /proc file system support [*] /dev file system support (EXPERIMENTAL) [*] Automatically mount at boot (Şayet 2.6 Kernel kullanmıyorsanız aşağıdaki bölümü seçmeyin) [ ] /dev/pts file system for Unix98 PTYs (Kendi ihtiyacınıza göre aşağıdaki dosya sistemlerini seçin) <*> Reiserfs support <*> Ext3 journalling file system support <*> JFS filesystem support <*> Second extended fs support <*> XFS filesystem support |
Not: 2.6 Kernel kullanıcıları aşağıdaki bölümlerde diğer gerekli seçenekleri bulabilirler:Pseudo filesystems ( File systems bölümü altında) |
İnternete PPPoE (genelde ADSL de kullanılır) veya dial-up modem kullanarak çıkmayı planlıyorsanız aşağıdaki seçeneklere ihtiyacınız olacak:
Kod Listeleme 3.4: Selecting PPPoE necessary drivers |
Network device support ---> <*> PPP (point-to-point protocol) support <*> PPP support for async serial ports <*> PPP support for sync tty ports |
Not: 2.6 Kernel kullanıcıları bu seçenekleri Networking support, ( Device Drivers alt bölümünde) bölümünde bulabilirler. |
Aşağıdaki iki seçenekler zarar gelmeyecektir fakat o kadarda gerekli değil. Mesela PPP over Ethernet seçenekleri ve rp-pppoe tarafından kullanılır. (Eğer PPPoE kernel modulu kullanılırsa).
Not: 2.6 Kernel kullanıcıları bahsedilen seçenekleri Device Drivers bölümünde bulabilirler. |
Ağ kartınızın desteğini kernelden aktif etmeyi unutmayın.
Alttaki seenekler sadece Alpha kullanıcıları iin tavsiye edilir:
Kod Listeleme 3.5: Alpha-spezifische Optionen |
General setup --->
<*> SRM environment through procfs
<*> Configure uac policy via sysctl
Plug and Play configuration --->
<*> Plug and Play support
<M> ISA Plug and Play support
SCSI support --->
SCSI low-level drivers --->
<*> SYM53C8XX Version 2 SCSI support (NEW)
<*> Qlogic ISP SCSI support
Network device support --->
Ethernet (10 or 100 Mbit) --->
<M> DECchip Tulip (dc21x4x) PCI support
<M> Generic DECchip & DIGITAL EtherWORKS PCI/EISA
<M> EtherExpressPro/100 support (eepro100)
<M> EtherExpressPro/100 support (e100)
Ethernet (1000 Mbit) --->
<M> Alteon AceNIC
[*] Omit support for old Tigon I
<M> Broadcom Tigon3
[*] FDDI driver support
<M> Digital DEFEA and DEFPA
<*> PPP support
<*> PPP Deflate compression
Character devices --->
[*] Support for console on serial port
[*] Direct Rendering Manager
File systems --->
<*> Kernel automounter version 4 support
Network File Systems --->
<*> NFS
[*] NFSv3 client
<*> NFS server
[*] NFSv3 server
Partition Types --->
[*] Advanced partition selection
[*] Alpha OSF partition support
Native Language Support
<*> NLS ISO 8859-1
Sound --->
<M> Sound card support
<M> OSS sound modules
[*] Verbose initialisation
[*] Persistent DMA buffers
<M> 100% Sound Blaster compatibles
|
Kernel ayarlarınız bittiyse Derleme ve Kurulum ile devam edebilirsiniz.
Artık Kernel derleme için gerekli seçimi yaptınız ve kerneli derleme için gerekli adımı atmaya geldi. Menüden çıkın ve make dep && make bzImage modules modules_install komutlarını çalıştırın:
Kod Listeleme 3.6: Kernel derleme |
( 2.4 Kernel için) # make dep && make vmlinux modules modules_install (2.6 Kernel için) # make && make modules_install |
Kernel derleme işlemi bittikten sonra, oluşan kernel image dosyasını /boot dizini altına kopyalayın. Aşağıdaki örneğimizde biz vanilla-sources-2.4.24 kullandık ve derledik:
Kod Listeleme 3.7: Kernel kurulumu |
# cp vmlinux /boot/kernel-2.4.24 # cp System.map /boot/System.map-2.4.24 |
Ne olur ne olmaz hesabı ile, kernel ayar dosyamızıda /boot dizini altına kopyalıyoruz. Belki ilerde ihtiyacımız olabilir. :)
Kod Listeleme 3.8: Kernel ayar dosyasının yedeklenmesi |
# cp .config /boot/config-2.4.24
|
Şimdi Değişik Kernel Modullarının Kurulması bölümü ile devam edebilrisiniz.
7.d. Seçmeli: Genkernel Kullanmak
Bu bölümü okumanızdaki amaç, Gentoo da kullanılan genkernel skriptini kullanmazı düşündüğünüz içindir. Bu skript aslında bütün işinizi kolaylaştıran bir skripttir.
Kernel kaynak kodu sisteminize kurulu ve şimdi otomatik olarak bütün işlerinizi kolaylaştıracak genkernel komutunu uygulayabilirsiniz. genkernel ilk önce kernel seçimini yapar. Bunun için LiveCD de seçilen seçenekleri esas alır. Bunun anlamı; boot esnasında tanınan bütün donanım kernel seçiminde kullanılır. genkernel çalıştırıldıktan sonra elile bir ayar gerektirmediği için, Linux ve kernel dünyasına yabancı ama kendi özel kernelini derlemek isteyen Gentoo kullanıcıları için ideal bir çözümdür.
Sırası ile Genkernel nasıl kullanabilirsiniz kısaca aktaralım. İlk önce sistemimize genkernel kurmamız gerekli:
Kod Listeleme 4.1: genkernel kurulması |
# emerge genkernel
|
Kernel kaynak kodunun genkernel all yardımı ile derleyebilirsiniz. Burda bir açıklama yapmamız gerekli: genkernel komutu ile kernel derlemek, bütün donanımı destekleyen bir derleme seçeneğidir. Bununda anlamı, derleme süresinin oldukça uzun sürebileceğidir. Yani bu işlemler yapılırken ekranda hiçbir haraket olmadı diye kernel derleme olayını yarıda bırakmayın veya sisteminizi kapatmayın.!
Şunuda belirtmekte yarar var: Eğer kullandığınız boot bölümü (boot partition) ext2 veya ext3 değilse, kendiniz kernel ayarları yapmak için genkernel --menuconfig all komutunu verin ve bu dosya sistemlerini kernel içine gömün ( DIKKAT: Modul olarak seçim yapmayın)
Kod Listeleme 4.2: Ausführen von Genkernel |
# genkernel all GenKernel v3.0.1_beta10 * ARCH: Alpha * KERNEL VER: 2.4.24 * kernel: configuring source * kernel: running mrproper (Uzun bölümler kısaltılmıştır) * Kernel compiled successfully! * Required Kernel Params: * : root=/dev/ram0 init=/linuxrc real_root=/dev/$ROOT * where $ROOT is the devicenode for your root partition as * you should have specified in /etc/fstab * * You MUST tell your bootloader to use the generated initrd * * Recommended Kernel Params: * : vga=0x317 splash=verbose * * Do NOT report kernel bugs (configs included) as genkernel bugs. * Make sure you have the latest genkernel before reporting bugs * * For more info see /usr/share/genkernel/README |
genkernel biter bitmez, yeni bir kernel imagesi, tüm modullar ve bir initial root disk (initrd) oluşturulmuş olur. Eğer bir önyükleyici (bootloader) kullanmak istiyorsanız, oluşan yeni kernel imagesi ve initrd daha sonra burda kullanılabilirsiniz. Bunların isimlerini bir kenara not alın. initrd doğrudan boot bittikten sonra donanımın tanınması için kullanılır. Böylece sisteminizdeki donanım için gerekli olan sürücüler otomatikman yüklenir.
Kod Listeleme 4.3: Kernel imagesinini kontrolu |
# ls /boot/kernel* /boot/initrd*
|
Sırada sistemimizin LiveCD olmaktan kurtaracak hotplug aracını emerge ediyoruz. Donanım initrd tarafından otomatik olarak tanınırken(yani sisteminizi başlatmak için gerekli olan modulları tanırken) hotplug ise otomatik olarak diğer donanımları tanır(örn: USB cihazlarınız gibi). hotplug pakedini kurup, etkin hale sokmak için aşağıdaki komutu vermeniz yeterlidir:
Kod Listeleme 4.4: Hotplug kurulumu ve etkinleştirilmesi |
# emerge hotplug # rc-update add hotplug default |
7.e. Değişik Kernel Modullarının Kurulması
Eğer uyum sağlarsa emerge komutunu kullanarak bütün donanımınızın sürücülerini kurabilirsiniz. Aşağıda sık kullanılan bazı modullar ve ebuilds isimlerini bulabilirsiniz:
| Ebuild | Açıklama | Komut |
Lütfen bu Ebuilds dosyalarının büyük bağımlılıklarıda beraberinde getirebileceklerini untumayın. Kurmak istediğiniz pakedin bağımlı olduğu paketleri bulmak için emerge --pretend kullanabilirsiniz.. Örnek : emu10k1 Pakedi için:
Kod Listeleme 5.1: Bağımlılıkların kontrol edilmesi |
# emerge --pretend emu10k1
|
Kurulacak paketleri istemiyorsanız, emerge --pretend --verbose komutunu vererek, hangi USE-Flags bagımlılıklarına etki yapalabilir görebilirsiniz. Bu sayede istemediğiniz ve bağımlılık gerektiren bir pakedin birlikte derlenmesini engelleyebilirsiniz:
Kod Listeleme 5.2: USE-Flag kullanımı |
# emerge --pretend --verbose emu10k1 ... [ebuild N ] media-sound/aumix-2.8 +gpm +nls +gtk +gnome +alsa -gtk2 |
Yukardaki örnekte de görebileceğiniz gibi emu10k1 için bağımlı paketler(aumix) gtk ve gnome USE-Flags içinde. Bunun anlamı gtk da birlikte derleneceğidir.
Eğer bütün bu bağımlılıkların birlikte derlenmesini istemiyorsanız USE-Flag kullanarak bunları etkisiz hale getirebilirsiniz:
Kod Listeleme 5.3: emu10k1 için USE-Flag kullanarak gerekliliklerden vazgeçmek |
# USE="-gpm -nls -gtk -gnome -alsa" emerge --pretend emu10k1
|
Eğer sonuçtan memnun iseniz --pretend parametresini kaldırın ve emu10k1 derlemeye başlayın.
Otomatik olarak yüklenmesini istediğiniz modulları /etc/modules.autoload.d/kernel-2.4 dosyasına ( veya kernel 2.6 kullananlar için /etc/modules.autoload.d/kernel-2.6) koyabilirsiniz. Eğer kullandığınız modul ilave bir parametre gerektiyorsa veya siz ilave bir parametre eklemek istiyorsanız bu dosya içine koyabilirsiniz.
Mevcut Modulların listesini görmek için find komutunu kullanabilirsiniz. Aşağıdaki komutdaki "<kernel_sürümüm>" bölümüne kendi kernel sürümünüzü yazıp kontrol edin:
Kod Listeleme 5.4: Mevcut modulların listelenmesi |
# find /lib/modules/<kernel_sürümüm>/ -type f -iname '*.o' -or -iname '*.ko'
|
Mesela 3c59x.o Modulunu otomatik olarak, başlangıçda yüklemek istiyorsanız, /etc/modules.autoload.d/kernel-2.4 (veya kernel-2.6) dosyasının içine bunu yazmanız gerekir.:
Kod Listeleme 5.5: /etc/modules.autoload.d/kernel-2.4 |
(2.4 kernel için bir örnek) # nano -w /etc/modules.autoload.d/kernel-2.4 |
Kod Listeleme 5.6: /etc/modules.autoload.d/kernel-2.4 veya kernel-2.6 |
3c59x |
Ve aktif hale getirmek için modules-update komutunu çalıştırın. Böylece /etc/modules.conf dosyasının içindeki değişiklikler etkinleşecektir:
Kod Listeleme 5.7: modules-update komutunun uygulanması |
# modules-update
|
Şimdi Sistem Ayarlarının Yapılması bölümü ile devam edebiliriz.
Linux altında tüm sabit disk bölümleriniz /etc/fstab dosyasında listeli bir şekilde bulunur. Bu dosya sabit disklerinizin bağlantı noktalarını, nasıl bağlandıklarını (spesifik özellikleri ile birlikte) göstermektedir.
/etc/fstab Dosyasının Oluşturulması
/etc/fstab 'ın kendine özel bir sözdizimi(syntax) vardır. Her satır 6 alan içerir ve birbirinden boşluk karakteri ile ayrılır. Her alanın kendine ait anlamı bulunmaktadır.
Şimdi nano editörümüzle /etc/fstab dosyamızı yaratmaya geldi,bunun için:
Kod Listeleme 1.1: etc/fstab dosyasının oluşturulması |
# nano -w /etc/fstab
|
/boot sabit disk bölümümüzün nasıl yazıldığını dikkatle inceleyelim. Bizim örneğimizde /boot sabit disk bölümü /dev/hda1 olarak ext2 dosya sistemini kullanmaktadır. Otomatik olarak bağlanamaz. Ohalde bize gerekli olan satırlar şöyle olabilir:
Kod Listeleme 1.2: /etc/fstab dosyası içindeki /boot satırı |
/dev/hda1 /boot ext2 noauto 1 2 |
Bazı kullanıcılar performansı daha arttırmak için bağlama seçeneklerinden olan noatime 'ı eklemek ister (aslında bu gerekli değildir):
Kod Listeleme 1.3: /etc/fstab daki /boot dizinin geliştirilmesi |
/dev/hda1 /boot ext2 noauto,noatime 1 2 |
Eğer bu şekilde devam edersek, liste sonunda aşağıdaki gibi bir görünüme sahip olmuş olacağız:
Kod Listeleme 1.4: /etc/fstab taki 3 satır |
/dev/hda1 /boot ext2 noauto,noatime 1 2 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 1 |
Bitirmek için /proc, tmpfs(gerekli) ve cd-rom sürücünüz için gerekli olanlar: (tabi ki de başka sürücüler ve sabit disk bölümleri ekleyebilirsiniz):
Kod Listeleme 1.5: Tam bir /etc/fstab örneği |
/dev/hda1 /boot ext2 noauto,noatime 1 2 /dev/hda2 none swap sw 0 0 /dev/hda3 / ext3 noatime 0 1 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0 |
auto seçeneği dosya sistemini otomatik olarak tanınmasını sağlar ( CD rom gibi farklı dosya sistemlerini içeren değiş tokumu yapılabilir multimedya cihazları için tavsiye edilir). user seçeneği kullanıcılara CDROM u mount etmesini sağlar.
Şimdi yukarıdaki örneği kullanarak kendi /etc/fstab dosyasını yaratın.Eğer SPARC kullanıcı sı iseniz /etc/fstab dosyasına ayrıca şunu da eklemelisiniz:
Kod Listeleme 1.6: /etc/fstab ,ç,ne openprom dosya sstemi ekleme |
none /proc/openprom openpromfs defaults 0 0 |
Eğer usbfs ihtiyaç duyuyorsanız (ki yeni bilgisayarlada muhakkak bir USB cihazınız vardır) , aşağıdaki satırı da ekleyiniz:
Kod Listeleme 1.7: /etc/fstab içine USB dosya sistemini ekleme |
none /proc/bus/usb usbfs defaults 0 0 |
Şimdilik bukadar. Yaptıklarınızı tekrar tekrar kontrol edin ve /etc/fstab dosyasın kaydedip çıkın.
Makine Adı,Alan Adı ve diğerleri
Kullanıcı kişinin diğer seçeneklerinden bir tanesi, bilgisayarına isim vermektir. Bu tamamıyla çok basittir, fakat kullanıcıların çoğu Linux sistemlerine isim bulmakta biraz zorlanırlar. İşlemlerimizin hızını arttırmak için biz bir şeyler hazırladı, bilmenizde fayda var, seçtiğiniz isim sonradan da değiştirilebilir. Biz hepimiz için bir isim bulduk, bu isimleri vererek sonrasında istediğiniz şekilde değiştirebilirsiniz. Şimdi makine ismi olarak tux, alan adı olarak ise homewetwork giricegiz.
Bu değerleri şimdiki aşağıdaki örnekde kullanıyoruz. İlk önce makina adını koyalım:
Kod Listeleme 2.1: Makine ismini ayarlamak |
# echo tux > /etc/hostname
|
Sonra alan ismini koyuyoruz:
Kod Listeleme 2.2: Alan ismini ayarlamak |
# echo homenetwork > /etc/dnsdomainname
|
Eğer NIS alan ismine sahipseniz aşağıdaki kodu giriniz.NIS 'in ne olduğunu bilmiyorsanız muhtemelen NIS alan adına sahip değilsiniz:
Kod Listeleme 2.3: NIS alan adının ayarlanması |
# echo nis.homenetwork > /etc/nisdomainname
|
Şimdi alan ismi(domainname) komut dosyasını ön tanımlı "runlevel" için ekleyiniz.:
Kod Listeleme 2.4: Öntanımlı çalışma seviyesine makina ismi ekleme |
# rc-update add domainname default
|
"Hey biz bu bölümü yaptık demeden önce" , hatırlamanız gereken başlangıçtaki ağ ayarlarımız sadece kurulum içindi.Şimdi sıra kalıcı bir şekilde ağınızı biçimlendirmeye geldi.
Ağ ile ilgili tüm bilgileriniz /etc/conf.d/net dosyasında toplanmıştır. Henüz ağınızı elle ayarlamasını bilmiyorsanız eğer, korkmayın biz size her şeyi aşağıda açıkladık:
İlk olarak nano editörü ile /etc/conf.d/net dosyasını açın:
Kod Listeleme 2.5: /etc/conf.d/net dosyasının açılması |
# nano -w /etc/conf.d/net
|
Dosya içine ilk arayacağımız değişken iface_eth0 değişkenidir, aşağıdaki sözdizimine sahiptir:
Kod Listeleme 2.6: iface_eth0 syntaxis |
iface_eth0="<ip adresiniz> broadcast <broadcast adresiniz> netmask <netmask adresiniz>" |
Eğer DHCP (otomatik IP alıyorsanız) kullanıyorsanız, tek yapmanız gereken iface_eth0 değişkenini dhcp olarak tanımlamak (# işaretini kaldırmanız yeterli) . rp-pppoe(ADSL kullanıcıları için) kullanıyorsanız up olarak ayarlayın. Eğer ağınızı elle ayarlamak istiyorsanız ve bu terimlerle ilgili bilgiye sahip değilseniz Ağ Terminolijisi Anlamak bölümüne gidiniz.
Aşağıda sizin için bir kaç örnek verdik.İlki DHCP kullanmakta,ikincisi,sabit bit IP(192.168.0.2), ağ maskesi(255.255.255.0) ve yayımlama(193.168.0.255) adreslerini kullanmaktadır.Sonuncu ise rp-pppoe kullanımını göstermektedir.
Kod Listeleme 2.7: /etc/conf.d/net örnekleri |
(DHCP kullanıcıları için) iface_eth0="dhcp" (Sabit IP kullananlar için) iface_eth0="192.168.0.2 broadcast 192.168.0.255 netmask 255.255.255.0" gateway="eth0/192.168.0.1" (rp-pppoe kullanlar için) iface_eth0="up" |
Eğer birden fazla ağ arabirimine sahipseniz, iface_eth1 ve iface_eth2 gibi extra bir iface_eth değişkeni yaratmanız gerekli. Her bilgisayar için ayrı ağ geçidi girmelisiniz.
Şimdi dosyamızı kayıt ederek güvenli bir şekilde çıkabiliriz.
Ağ Servisimizin Otomatik Olarak Başlangıçda Başlatmak
Ağ servisinizi otomatik olarak başlatabilmek için,aşağıdaki komutları ön tanımlı "runlevel" ekleyiniz. Eğer PCMCIA arabirimine sahipseniz bunu geçin. PCMCIA arabirimini kullanınız.(belgenin sonlarına doğru biz bunu size açıkladık)
Kod Listeleme 2.8: Öntanımlı çalışma seviyesine (runlevel) net.eth0 eklenmesi |
# rc-update add net.eth0 default
|
Birden fazla ağ arabirimine sahipseniz ,ayrıca net.eth1, net.eth2 gibi komut dosyalarını ln komutunu kullanarak oluşturmalısınız:
Kod Listeleme 2.9: İlaveten net.eth1 in oluşturulması |
# cd /etc/init.d # ln -s net.eth0 net.eth1 # rc-update add net.eth1 default |
Linux'unuzu ağ hakkında haberdar etmelisiniz, örneğin 3 bilgisayardan oluşan iç bir ağa sahipseniz, bu bilgisayarları IP adresleriyle birlikte /etc/hosts dosyasına eklemelisiniz. Farz edelimki ağımızda 3 bilgisayar var ise aşağıdaki işlemleri yapabiliriz:
Kod Listeleme 2.10: /etc/hosts 'in açılması |
# nano -w /etc/hosts
|
Kod Listeleme 2.11: Ağ bilgilerinin doldurulması |
127.0.0.1 localhost 192.168.0.5 jenny.homenetwork jenny 192.168.0.6 benny.homenetwork benny 192.168.0.7 tux.homenetwork tux |
Eğer sisteminiz tekse, iç ağ'a sahip değilseniz yani 1 bilgisayarınız varsa, tek bir satır yeterli:
Kod Listeleme 2.12: Tek bir bilgisayar için /etc/hosts dosyası |
127.0.0.1 localhost |
Devam etmek için dosyadan kayıt ederek çıkınız.
Eğer PCMCIA 'a sahip değilseniz, Sistem Bilgileri bölümüne gidebilirsiniz. PCMCIA kullanıcıları PCMCIA le ilgili başlığı okuyunuz.
İsteğe Bağlı: PCMCIA Aygıtlarının Çalıştırılması
Not: pcmcia-cs pakedi sadece x86, amd64 ve ppc platformları için mevcuttur. |
PCMCIA kullanıcıları ilk önce pcmcia-cs paketini yüklemeleri gerekli. Bu anda USE="-X" değişkeni Xfree86 dan sakınmak için gerekli:
Kod Listeleme 2.13: pcmcia-cs pakedinin kurulması |
# USE="-X" emerge pcmcia-cs
|
pcmcia-cs paketi yüklendiği zaman ön tanımlı(default)çalışma seviyemize(runlevel) ekleyelim:
Kod Listeleme 2.14: pcmcia runlevel e eklenmesi |
# rc-update add pcmcia default
|
Gentoo /etc/rc.conf dosyası geniş bir sistem bilgisine sahiptir. Bu dosyayı açarak içerisindeki tüm bilgileri kullanabilirsiniz.:)
Kod Listeleme 3.1: /etc/rc.conf dosyanın açılması |
# nano -w /etc/rc.conf
|
Görüldüğü gibi bu dosya sisteminiz için gerekli değişkenleri ayarlayabilmek için bir çok yoruma sahip ,KEYMAP ayarlarına dikkat ediniz, aksi taktirde klavyeden girilecek olan her yanlış KEYMAP için garip sonuçlar alabilirsiniz. Örn: Türkçe Q Klayve için kullanılabilecek satır :KEYMAP="trq"
Not: Usb tabanlı SPARC sistemleri ve klon kullanıcıları, i386 keymap olarak "us" yerine "sunkeymap" seçebilirler. |
PPC birçok sistemde x86 "keymap" lerini kullanır. önyüklemede ADB "keymap" kullanmak isteyen kullanıcılar çekirdeklerindeki ADB anahtar kodlarını olanaklı kılmak zorunda ve /etc/rc.conf daki mac/ppc "keymap" lerini ayarlamaları gerekmektedir.
/etc/rc.conf dosyasını ayarlamayı bitirdiyseniz kayıt edip çıkabilirsiniz. Bir sonraki bölüme geçiniz: Önyükleyici Ayarlanması.
Şu ana kadar çekirdeğinız doğru şekilde ayarlandı ve tüm gerekli sıstem yapılandırma dosyalarınız doğru şekilde derlendi. Şimdi sıra geldi önyükleyiciyi kurmaya.
Gentoo Linux/Alpha için değişik bootlader seçenekleri sunmakta, Siz sisteminize uygun olan bir bootloader aBoot yada MILO tercih edeceksiniz.
9.b. Varsayılan: aBoot önyükleyicisini kullanmak
İlk önce sistemimize aboot kuracağız tabiiki burada kullanacağımız komut emerge:
Kod Listeleme 2.1: aboot yüklemek |
# emerge aboot
|
Bir sonraki adım bootdısketi hazırlamak Bu disket, sistemimizi boot etmek istediğimiz zaman aboot önyükleyicimizi çalıştıracak. Şimdi bootdısketimizin başlangıç kısmına aboot bootloader i yazdırıyoruz.
Kod Listeleme 2.2: Boot disketi hazırlamak |
# swriteboot -f3 /dev/sda /boot/bootlx # abootconf /dev/sda 2 |
Not: Eğer siz başka bir Partitionierung şema kullanmak isterseniz. Kulandığınız komutun degiştirilmesi gerekir. Değişik komutlar (man 8 swriteboot ve man 8 abootconf) sayfalarında açıklanmıştır. |
Ayrıca ek olarak şunuda yapabilirsiniz, Gentoo boot yaparken aboot ayarlarını SRM boot_osflags Variable ile düzenleyebilirsiniz. Yanlız bootdef_dev uygun bir şekilde yerleşmiş olduğuna emin olmalısınız.
Kod Listeleme 2.3: Boot esnasında Gentoo performansını geliştirmek |
# echo '0:2/boot/vmlinux.gz root=/dev/sda2' > /etc/aboot.conf # echo -n 0 > /proc/srm_environment/named_variables/boot_osflags # echo -n '' > /proc/srm_environment/named_variables/boot_file |
Siz install sırasında eğer serial console kullanıyorsanız, unutmamanız gereken aboot.conf içine bir flag eklenecek 'serial console boot flag' . Ayrıntılılar /etc/aboot.conf.example dosyasında belirtilmiştir.
Artık gereken sistem araçlarını kurabilirsiniz : Gerekli kurulum araçları :
9.c. Alternatif: MILO Kullanmak
Devam etmeden önce, MILO nun nasıl kullanılacağına karar vermelisiniz.Burada bır MILO boot dısketi hazırlaması anlatılmıştır. Eğer siz sabitdısk içinde bir MS-DOS partıtıon çalıştırmak isterseniz, uygun komutları kullanmalısınız.
MILO kurabilmek içn tabiki gene kullanacağımız komut; emerge.
Kod Listeleme 3.1: MILO kurulumu |
# emerge milo
|
MILO kurulduktan sonra, bize gerekli olan MILO-Images /opt/milo içinde bulunuyor. Aşağıda bulunan komutlar bize MILO kullanmamız için gerekli olan bootdisketi yapacak. Düşünmelisinizki Alpha.sisteminiz için doğru Image kullanacaksınız.
Kod Listeleme 3.2: Dıskete MILO kurulumu. |
(lk önce boş bir disket sürücüye takın) # fdformat /dev/fd0 # mformat a: # mcopy /opt/milo/milo-2.2-18-gentoo-ruffian a:\milo # mcopy /opt/milo/linload.exe a:\lilnload.exe (elınizde sadece Ruffian varsa: # mcopy /opt/milo/ldmilo.exe a:\ldmilo.exe ) # echo -ne '\125\252' | dd of=/dev/fd0 bs=1 seek=510 count=2 |
Artık elinizdeki bootdisket Gentoo Linux boot için hazır, Belki daha variable bağlı olarak ARCS Firmware MILO çalıştırırken yerleştirmek zorunda kalabilirsiniz. Hepsi MILO-HOWTO içinde örnek komutlarla açıklanmıştır.
Eğer MILO-HOWTO okumazsanız bilinki bu kötü bir fikir.
Sonraki bölüm ile devam edebilirsiniz: Gerekli sistem araçlarının kurulması
Elkitabının başlangıcında aşama3 bölümünü tanıttığımızda değinmiştik. Orda tüm gereken sistem araçlarının siz seçmeden bulunduğunu ve hatta daha başka araçların sonradan kurulabileceğini söylemiştik. Evet simdi o noktaya geldik :)
İlk seçimini yapabileceğimiz araç, sistemde olan bitenin(aktiveteleri) Protokolunu tutar. Unix ve Linux Sistem protokol tutmada haylice bir ün saldı-- eğer isterseniz, sizde aisteminizde olan biteni protokol halinde alabilirsiniz. Bu işlem sistem kayıtçısı sayesinde gerçekleşir.
Gentoo değişik sistem kayıtçıları arasında size seçim bırakır: Bunlar sysklogd (bu geleneksel sistem kayıtçı daemon'udur) , syslog-ng (geliştirilmiş bir sistem kayıtçısıdır) ve metalog (çok yönlü ayarlanabilir sistem kayıtçısı) 'dur. Daha başkalarıda olabilir, sunulan paket sayısı gün geçtikce artıyor. Eğer karar vermediyseniz çok yetenekli
syslog-ng sistem kayıtcısını tavsiye edebiliriz.
Seçtiğiniz Sistem Kayıtçısını yüklemek için emerge yapmanız ve rc-update ile otomatik başlangıca eklemeniz kafidir. Aşağıdaki örnekte syslog-ng kayıtcısını yükleyeceğiz. Tabii ki burda kullandığımız sistem kayıtçısı ismi yerine yükleyeceğiniz sistem kayıtçısı ismiyle değiştirebilirsiniz:
Kod Listeleme 1.1: Sistem kayıtçısı yüklemek |
# emerge syslog-ng # rc-update add syslog-ng default |
10.b. İsteğe Bağlı: Cron Daemon
Şimdi sırada Cron Daemon var. Yüklenmesi size bağlıdır, kurma gerekliliği yoktur. Ancak yüklenmesi tavsiye edilir. Ama bu Cron Daemon nedir ? Cron daemon belirli zamanlarda çalıştırılması için tanımlanan komutları çalıştırabilir. Bu SIK SIK ve hatta günlük kullanılan komutlarda çok pratiktir (örn. günlük, haftalık, aylık).
Gentoo Linux'ta üç değişik Cron Daemon'dan seçim yapabilirsiniz: dcron, fcron ve vixie-cron. Bunun yüklenmesi Sistem Kayıtçısına benzer. Fakat dcron ve fcron ayarları için ek olarak Komut gerekir, crontab /etc/crontab. Eğer emin değilseniz vixie-cron kullanmanızı öneririz.
Hazır derlenmiş paketten yükleyecekseniz vixie-cron yüklemesinde hata alırsanız, vixie-cron yerine vcron kullanın.
Kod Listeleme 2.1: Cron Daemon yüklenmesi |
# emerge vixie-cron # rc-update add vixie-cron default (Sadece dcron veya fcron kurarsanız aşağıdaki komutu uygulayın) # crontab /etc/crontab |
Hangi tür dosya sistemi kullanmayı düşünüyorsanız, o dosya sistemi için gereken araçları (dosya sistemini kontrol etmek, yeni dosya sistemi yapmak için) yüklemeniz gerekir.
Aşağıdaki tablo gerekli dosya sistemi için dosyaları listeler:
| Dosya sistemi | Araç | Kurulum komudu |
| XFS | xfsprogs | emerge xfsprogs |
| ReiserFS | reiserfsprogs | emerge reiserfsprogs |
| JFS | jfsutils | emerge jfsutils |
Eğer İnternete bağlanmak için rp-pppoe gerek yoksa Gentoo Kurulumunu Bitirmek ile devam edebilirsiniz. Aksi takdirde İsteğe Bağlı: Ağ Araçları bölümü ile devam edin.
10.d. İsteğe Bağlı: Ağ Araçları
İnternete bağlanmak istiyorsanız rp-pppoe pakedini kurmanız gereklidir:
Kod Listeleme 4.1: rp-pppoe kurulması |
# USE="-X" emerge rp-pppoe
|
USE="-X" düzenlemesinde, XFree bağimlılık olarak beraberinde yüklenmesini engeller (rp-pppoe paketinin arayüz (Grafiksel) araçlarıda mevcuttur, eger arayüz kullanmak isterseniz rp-pppoe paketini yeniden USE="-X" kullanmadan derleyebilirsiniz, yada XFree'yi beraberinde yükleyin-- buda baya uzun sürebilir).
Şimdi sıradaki bölüm ile devam ediyoruz: Gentoo Kurulumunu Bitirmek
Unutmadan önce, root şifresini aşağıdaki komutu kullanarak ayarlayın:
Kod Listeleme 1.1: Root şifresi ayarlama |
# passwd
|
Eğer root'un seri konsola bağlanabilmesini istiyorsanız, /etc/securetty dosyasına tts/0 ekleyin:
Kod Listeleme 1.2: /etc/securetty dosyasına tts/0 ekleme |
# echo "tts/0" >> /etc/securetty
|
Günlük Kullanım İçin Kullanıcı Eklemek
Bir Unix/Linux sistemde root olarak çalışmak tehlikelidir, ve olabildiğince bu şekilde kullanılmamalıdır. Bu sebeple günlük kullanım için bir kullanıcı oluşturmanız ısrarla tavsiye olunur.
Örnek olarak, whell (su komutuyla root olabilen), users (tüm kullanıcılar için öntanımlı) ve audio (ses aygıtlarını kullanabilen) gruplarına bağlı, ahmet adında bir kullanıcı oluşturmak için:
Kod Listeleme 1.3: Günlük kullanım için kullanıcı ekleme |
# useradd ahmet -m -G users,wheel,audio -s /bin/bash # passwd ahmet Password: (ahmet için şifreyi girin) Re-enter password: (aynı şifreyi tekrar girin) |
Eğer bir kullanıcının rootun yapabileceği bazı işleri yapması gerekiyorsa, su - (root izinlerine erişebilmek için) komutunu kullanabilir. Bir başka yolda eğer doğru olarak ayarlandıysa çok güvenli olan sudo paketini kullanmaktır.
Tebrikler! Gentoo sisteminiz şimdi hazır. Chroot işleminden geçmiş ortamdan çıkın ve bağlı bütün sabit disk bölümlerini ayırın. Sonra beklediğiniz büyülü komutu yazın: reboot.
Kod Listeleme 2.1: Sistemi yeniden başlatma |
# exit # cd / # umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo # reboot |
Tabiki başlatılabilir CD'yi çıkarmayı unutmayın, yoksa sistem Gentoo sisteminiz yerine tekrar CD'den başlar.
PPC kullanıcıları önyükleyiciyi yüklenmedikçe MacOS başlayacaktır. Bu kullanıcılar İsteğe Bağlı: BootX'i Ayarlamak bölümünü okumalıdır.MIPS kullanıcıları Gentoo'yu başlatabilmek için MIPS PROM da biraz oynama yapmalıdır. Bu kullanıcılar İsteğe Bağlı: Çalışmak için Gentoo/MIPS Edinmek bölümünü okumalıdır.
GRP kullanıcıları İsteğe Bağlı: GRP Paketlerini Yüklemek bölümünü okuyabilirler. Diğerleri Kurulum bitti, ya sonra ?bölümü ile devam edebilirler.
Önemli: Bu bölüm sadece BootX kullanmak isteyenonly for PPC kullanıcıları içindir. Tüm diğer okuyucular bu bölümü geçmelidir. |
Makineniz MacOS ile açıldıktan sonra, BootX kontrol panelini (Control Panel) açın. Seçenekler'i (Options) seçin ve "Used specified RAM disk" bölümünün işaretini kaldırın. BootX ana ekranına geri dönüğünüzde, artık makinenizin kök diski ve bölümü için bir seçenek bulacaksınız. Bu alanları sizin sisteminize göre doldurun.
BootX başlama sırasında Linux'un başlaması için ayarlanabilir. Eğer bunu yaptıysanız, makinenizin başlangıcı sırasında önce MacOS'u başladığını, sonra BootX'in Linux'u başlattığını göreceksiniz. Daha fazla bilgi için BootX anasayfasına göz atın: BootX home page
Eğer bir GRP kullanıcısıysanız İsteğe Bağlı: GRP Paketlerini Yüklemek bölümüyle devam edin, eğer değilseniz Kurulum bitti, ya sonra ? bölüme geçin.
İsteğe Bağlı: Çalışmak için Gentoo/MIPS Edinmek
Önemli: Bu bölüm sadece only for MIPS kullanıcıları içindir! Tüm diğer kullanıcılar bu bölümü geçmelidir. |
Yeniden başlattığınızda (reboot), System Maintenance Menu kısmına gidin ve Enter Command Monitor (5) seçin. Eğer Gentoo kurulumunuzu test etmek istiyorsanız, sadece boot -f <kernel name> komutunu çalıştırabilirsiniz. Gentoo'ya başlamak istiyorsanız, MIPS PROM içerisinde bazı değişkenleri ayarlamanız gerekir:
Kod Listeleme 2.2: PROM'u Gentoo'yu Bağlatması için Ayarlama |
1) Start System 2) Install System Software 3) Run Diagnostics 4) Recover System 5) Enter Command Monitor Option? 5 Command Monitor. Type "exit" to return to the menu. (<root device> = Gentoo's root partition, e.g. /dev/sda3) >> setenv OSLoadPartition <root device> (To list the available kernels, type "ls") >> setenv OSLoader <kernel name> >> setenv OSLoadFilename <kernel name> (Declare the kernel parameters you want to pass) >> setenv OSLoadOptions <kernel parameters> (Provide the location of the Volume Header) >> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8) (Automatically boot Gentoo) >> setenv AutoLoad Yes (Set the timezone) >> setenv TimeZone EST5EDT (Use the serial console - graphic adapter users should have "g" instead of "d1" (one)) >> setenv console d1 |
Şimdi Gentoo ile eğlenmeye hazırsınız!
İsteğe Bağlı: GRP Paketlerini Yüklemek
Önemli: Bu bölüm GRP kullanıcıları içindir. Diğer kullanıcılar bu bölümü geçipKurulum bitti, ya sonra ? bölümü ile devam etmelidir. |
Şimdi sisteminiz başladı, oluşturduğunuz kullanıcı olarak giriş yapın (örnek olarak, ahmet) ve su - (root yetkilerine sahip olmak için) komutunu kullanın:
Kod Listeleme 2.3: Root yetkilerine sahip olma |
$ su - Password: (Root şifrenizi girin) |
Şimdi ikinci CD (Gentoo Paketleri CD'si) hazırlanmış yapılara bakmak için Portage ayarlarını değiştirmemiz lazım. İlk Önce CD'yi bağlayalım:
Kod Listeleme 2.4: Paketler CD'sini bağlama |
# mkdir /mnt/cdrom (CD sürücüsüne Gentoo Paketleri CD'sini koyun) # mount /mnt/cdrom |
Şimdi Portage'i hazırlanmış paketler için /mnt/cdrom 'u kullanması için ayarlayın:
Kod Listeleme 2.5: Portage'i /mnt/cdrom kullanması için ayarlama |
# ls /mnt/cdrom (Eğer bir /mnt/cdrom/packages dizini varsa:) # export PKGDIR="/mnt/cdrom/packages" (Yoksa:) # export PKGDIR="/mnt/cdrom" |
Şimdi istediğiniz paketleri yükleyin. Paketler CD'si bir kaç hazırlanmış yapı bulundurur, örnek olarak KDE:
Kod Listeleme 2.6: KDE yükleme |
# USE="bindist" emerge --usepkg kde
|
XFree'yi (doğrudan ya da bağımlılık olarak) yüklerken USE="bindist" kullanmanız gerekiyor. Bu Microsoft'un çekirdek fontlarını (bunları LiveCD'ler içinde veremiyoruz) indirmek için yol gösteriyor.
Çalıştırılabilir yapıları yüklediğinizden şimdi emin olabilirsiniz. Portage'i güncellemek içinemerge sync uyguladığınızda (sonra öğreneceğiniz gibi), çalıştırılabilir yapılar güncellenmiş Portage'inizdeki dosya görüntüleriyle uymayabilir. Bunu engellemek içinemerge --usepkg yerine emerge --usepkgonly deneyebilrisiniz.
Tebrikler, sisteminiz şimdi tam olarak hazırlandı! Gentoo hakkında daha fazla şey öğrenmek için Kurulum bitti, ya sonra ? bölümünden devam edin.
Tebrikler! Artık çalışan bir Gentoo sisteminiz var. Fakat burdan nereye gidiyoruz? Seçenekleriniz nelerdir? İlk önce neyi keşfedebilirsiniz? Gentoo kullanıcılarına bolca ihtimal sunar ve bu sebeple bolca dökümanda sunar (ve dökümansız ihtimallerde).
Gentoo El Kitabının İkinci bölümü ( Gentoo Altında Çalışma ) size yazılımlarınızı nasıl güncel tutabileceğinizi, daha çok yazılımı nasıl yükleyeceğinizi, USE bayraklarının neler olduğunu, Gentoo Init sisteminin nasıl çalıştığını v.s. açıklar ve bu kısmı mutlaka okumalısınız.
Eğer sisteminizi masaüstü kullanım için uygunlaştırmak istiyorsanız, ya da sisteminizin tamamiyle masaüstü kullanım için nasıl ayarlanıcağını öğrenmek istiyorsanız, Masaüstü Ayarları Kılavuzu bölümüne göz atın.
Mevcut dökümanların tamamının listesi içinDökümantasyon Kaynak Sayfası (Documentation Resorce page) bakabilirsiniz.
Gentoo Online Gentoo Formumuza veya Gentoo IRC kanalımıza herzaman gelebilirsiniz.
Ayrıca tüm kullanıcılarımıza açık mail listemizde bulunmaktadır.
Biz şimdi sözü burda bağlıyor sizi Gentoo sisteminizle eğlenceye bırakıyoruz :-)
Gentoo kurarken, çalıştığınız ortama göre değişiklikler yaparsınız. Bir sunucunun kurulumuyla iş istasyonununki farklıdır. Oyun istasyonu ile 3D-render istasyonu farklıdır.
Bu sadece kurmak için seçeceğiniz paketler için değil, aynı zamanda, paketlerin hangi özellikleri destekleyeceği ile de ilgilidir. Eğer OpenGL'e ihtiyacınız yoksa, niye onu kurmak ve kurduğunuz paketlerde OpenGL desteğini eklemek için ugraşasınız? Eğer KDE kullanmak istemiyorsanız, paketler KDE desteği olmadan sorunsuz çalıştırabilecekken, neden KDE desteği ile kurmak için vakit kaybedesiniz?
Kullanıcıya, neyi kurması/aktivite-etmesi, neyi etmemesine yardım etmek için, kullanıcıdan,kurmak istediği sistemi belirtebilmesi için kolay bir yol olmasını istedik. Bu, kullanıcının gerçekte ne istediğine karar vermesini ister ve Portage'i kolaylaştırır. Portage bizim paket yönetim sistemimizdir.
Bir USE flag girin. Bu flag, belli bir konseptin destek ve bağımlılık bilgilerini meydana getiren anahtar kelimedir. Eğer belli bir USE flag tanımlarsanız, Portage seçilen anahtar kelimenin desteğinin istendiğini anlayacaktır. Bu tabiiki paketin bağımlılık bilgisini de değiştirir.
Şimdi bir öerneği inceleyelim: kde anahtarı. Eğer USE değişkeninde bu anahtar kelime yoksa, seçmeli (optional) KDE desteği bulunan tüm paketler, KDE desteği olmadan derlenir. Seçmeli KDE bağımlılıği olan paketler, bağımlılık olarak KDE kütüphaneleri kurulmadan derlenir ve kurulur.
Anahtar kelimeleri doğru tanımlayarak, ihtiyaçlarınıza göre bir sistem oluşturabilirsiniz.
Global (global) ve yerel (local) olmak üzere iki türlü USE-flag vardır.
Global USE-flag'larinin listesi, online veya /usr/portage/profiles/use.desc dosyasında mevcuttur. Bazı kısa ve önemli USE Flagsları şunları (tam liste değildir):
Kod Listeleme 1.1: USE-flaglarınden kısa bir bölüm |
gtk - x11-libs/gtk+ (The Gimp toolkit) desteği ekler. gtk2 - bi program her ikisini de destekliyorsa, gdk-1.2 yerine gtk-2 kullanır. gtkhtml - gnome-extra/gtkhtml desteği ekler. guile - dev-util/guile desteği ekler. icc - Paket destekliyorsa, intel C++ derleyicisini kullanır. icc-pgo - icc kullanılırken, PGO veri üretimini etkinleştirir veya kullanır. imap - IMAP desteği ekler. |
1.b. USE Flaglarının Kullanılışı
Kalıcı USE Flagsların Belirtilmesi
USE flaglarının ne kadar önemli olduğunu anladınız umuduyla, şimdi onların nasıl belirtileceğini açıklayalım.
Daha once belirtildii gibi, USE-flag'ları USE değiskenine tanımlanır. Kullanıcıların, USE-flaglarını araştırıp seçmesini kolaylaştırmak için, öntanımlı bir USE değişkeni hazırlanmıştır. Bu USE-flagları Gentoo kullanıcılarının en çok kullandıklarıdır. Öntanımlı USE değişkeni, /etc/make.profile/make.defaults dosyasında belirtilmiştir. Bu öntanımlı değişkenlere bir göz atalım:
Kod Listeleme 2.1: /etc/make.profile/make.defaults dosyasındaki USE değişkeni |
USE="x86 oss apm arts avi berkdb crypt cups encode foomaticdb gdbm gif gpm gtk
imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses nls
oggvorbis opengl pam pdflib png python qt quicktime readline sdl slang
spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
Gördüğnüz gibi, bu değişken epey fazla anahtar kelime içeriyor. Bu değişkeni kendinize göre düzenlemek için /etc/make.profile/make.defaults dosyasını kullanmayın. Bu dosya, Portage güncellemesi esnasında eski haline döner.
Öntanımlı değerleri değiştirmek için, USE değiskenine yeni anahtar kelimeler eklemeniz veya varolanları çıkarmanız gerekir. Bu işlem /etc/make.conf dosyasını değiştirerek global olarak yapılabilir. Bu değişkene, kullanmak istediğiniz USE-flag'larını ekliyebilir, istemediklerinizi çıkarabilirsiniz. Çıkarma işlemi, anahtar kelimenin başına "-" (eksi) isareti konularak yapılır:
Mesela, kde ve qt desteğini kaldırıp, ldap desteği eklemek için, /etc/make.conf dosyasındaki USE değişkeni şu şekilde olmalıdır:
Kod Listeleme 2.2: /etc/make.conf dosyasında örnek bir USE değişkeni |
USE="-kde -qt ldap" |
Bazen bir USE-flagı sadece bir kez kullanmak isteyebilirsiniz. Bunun için iki kere (derlemeden önce ve sonra)/etc/make.conf dosyasını değiştirmektense USE değişkenini ortam değişkeni olarak kullanabilirsiniz.
Örnek olarak, Mozilla kurulumunda java esteğini USE değiiskeninden geçici olarak çıkaralım.
Not: emerge komutu, Portage ve Yazılım bölümden detaylı olarak anlatılacaktır. |
Kod Listeleme 2.3: SE değişkenini ortam değişkeni olarak kullanılması. |
# USE="-java" emerge mozilla
|
USE Flaglarının Miras Olarak Kullanımı
Bazı paketler varolan USE Flagları dinleyip uygulamak ile kalmaz, kendileri bazı USE flag desteği verirler. Böyle bir paket eklediğinizde, bu paketin sağladığı USE-flagı USE değişkeninize eklenir. USE-flag sağlayan paketlerin listesini görmek için /etc/make.profile/use.defaults dosyasına göz atmanız yeterli olacaktır:
Kod Listeleme 2.4: /etc/make.profile/use.defaults dosyasındna bir par |
gnome gnome-base/gnome gtk x11-libs/gtk+ qt x11-libs/qt kde kde-base/kdebase motif x11-libs/openmotif |
Tabiki hangi ayarın USE değişkeninde önceliğe sahip olduğu bellidir. Sadece java'nın belirtildiğini görmek için USE="-java" demek istemezsiniz. USE ayarlarının öncelik sırası: (Birinci en düşük önceliğe sahiptir):
Portage tarafından kullanılan, tüm önceliklere göre ayarlanmış USE değişkenini görmek için emerge info komutunu kullanın. Bu komut Portage'n,n kullandığı tüm değişkenkenleri( USE değişkenide dahil) liste halinde sunar.
Kod Listeleme 2.5: 'emerge info' kullanılması |
# emerge info
|
Tüm Sistemi Yeni USE Flaglarına göre Ayarlamak
Eğer USE flagları değiştirdiyseniz ve tüm sistemi bu yeni USE değişkenine göre güncellemek isterseniz, aşağıdaki adımları izleyebilirsiniz. Bu adımlar uzun zaman alacaktır.
İlk olarak tüm sistemi yeni USE flaglarını kullanarak oluşturun:
Kod Listeleme 2.6: Tüm sistemin tekrar oluşturulması |
# emerge --emptytree world
|
İkinci olarak Portage depclean çalıştırılarak eski USE flaglarına göe bağımlılık sebebi ile kurulmuş ancak yeni USE flaglarına göre ihtiyaç olmayan paketleri kaldırın.
Uyarı: emerge depclean komutunu kullanmak tehlikeli olabilir. Oluşturulan eski paketlerin listesini iki defa kontrol edin ve kullanacağınız bir pakedin kaldırılmadıına(silinmediğine) emin olun. Sonraki örnekte -p anahtarı ekleyerek paketlerin önce listelenmesi sağlanmıştır. |
Kod Listeleme 2.7: Eski paketlerin kaldırılması |
# emerge -p depclean
|
depclean bittiğinde, yeni sistemimiz yeni USE flaglarını kullanıyor demektir
Kullanılabilen USE Flagları Görmek
Sonraki bölüm olan Portage ve Yazılım 'da kurulu paketleri nasıl yöneteceğiniz anlatılacak. Yinede emerge için ilk bilgileri, bir pakedin kullandığı USE flaglarının nasıl görebileceğinizi göstererek vermiş olalım.
Mesela mozilla pakedini örnek alalım: Hangi USE flaglarını kullanıyor? Bunu öğrenmek için emerge komutuna --pretend ve --verbose parametrelerini ekleyelim:
Kod Listeleme 3.1: Kullanılan USE flagların gösterilmesi |
# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild N ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft
|
emerge 'den başka yöntemler ilede bu işi yapabiliriz. Aslında sadece paket bilgilerinin görülmesinde kullanılmka üzere etcat adında bir program vardır. Bu program gentoolkit pakedinin içindedir. Yani ilk önce gentoolkit pakedini kurun, ancak o zaman etcat aracını kullanabilirsiniz:
Kod Listeleme 3.2: gentoolkit kurulumu |
# emerge --usepkg gentoolkit
|
Şimdi bir pakedin hangi USE flaglarını kullandığını görebilmek için etcat komutunu uses parametresi ile beraber kullanalım. Mesela gnumeric pakedi için bir örnek:
Kod Listeleme 3.3: Kullanılan USE flaglar için etcat kullanımı |
# etcat uses gnumeric [ Colour Code : set unset ] [ Legend : (U) Col 1 - Current USE flags ] [ : (I) Col 2 - Installed With USE flags ] U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ] - - libgda : Adds GNU Data Access (CORBA wrapper) support for gnumeric - - gnomedb : unknown + + python : Adds support/bindings for the Python language + + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces) |
Tüm Araçların Efendisi: emerge
Tüm kullanıcıların kullanacağı asıl Portage aracı emerge aracıdır. Gentoo kurulumu sırasında ve bir önceki bölümde emerge zaten kullanmıştık. Şimdi tam olarak nasıl kullanılacağını açıklayacağız. Bu bölüm ayrıntılı olarak emerge kullanmayı ve yazılım tabanlı tüm ihtiyaçlarınızı karşılamayı öğretecek.
emerge yazılım paketlerini yükleme, kaldırma, sorgulama ve korumaya yarayan bir komuttur. emerge , ebuild için bir ön işlemcidir; Gentoo profesyoneli olmakla ilgilenen kullanıcılar ebuild kullanımı hakkında detaylı bilgiyi sonra öğrenecekler. Şimdilik emerge ve ebuild üzerinde duracagız.
emerge gentoo kullanıcıları için en önemli araç olduğu sürece, geniş bir kılavuz sayfasına sahip olacaktır. man emerge veya emerge --help ile çok detaylı bilgi bulabilirsiniz.
Kod Listeleme 1.1: emerge için yardım almak |
# man emerge # emerge --help |
emerge kullanımına devam etmeden önce, Portage şemasına bir göz atalım./usr/portage dizinine gidin ve mevcut dizinleri listeleyin. Biz dizinlere "/" ekleyerek gösteren ls --classify komutunu kullanıyoruz.
Kod Listeleme 1.2: Portage şemasını görmek |
# cd /usr/portage; ls --classify
app-admin/ dev-ml/ gnome-libs/ net-print/
app-arch/ dev-perl/ gnome-office/ net-wireless/
app-benchmarks/ dev-php/ header.txt net-www/
app-cdr/ dev-python/ incoming/ net-zope/
app-crypt/ dev-ruby/ jython/ packages/
app-dicts/ dev-tcltk/ kde-apps/ profiles/
app-doc/ dev-tex/ kde-base/ releases/
app-editors/ dev-util/ kde-i18n/ scripts/
app-emacs/ distfiles/ kde-libs/ sec-policy/
app-emulation/ eclass/ licenses/ skel.ChangeLog
app-games/ experimental/ media-fonts/ skel.ebuild
app-gnustep/ files/ media-gfx/ skel.metadata.xml
app-i18n/ fresco-base/ media-libs/ snapshots/
app-misc/ games-action/ media-plugins/ sys-apps/
app-office/ games-arcade/ media-radio/ sys-build/
app-pda/ games-board/ media-sound/ sys-cluster/
app-portage/ games-emulation/ media-tv/ sys-devel/
app-sci/ games-engines/ media-video/ sys-fs/
app-shells/ games-fps/ metadata/ sys-kernel/
app-text/ games-kids/ net-analyzer/ sys-kmods/
app-vim/ games-misc/ net-apache/ sys-libs/
app-xemacs/ games-mud/ net-dialup/ unix2tcp/
berlin-base/ games-puzzle/ net-dns/ x11-base/
dev-ada/ games-roguelike/ net-firewall/ x11-libs/
dev-cpp/ games-rpg/ net-fs/ x11-misc/
dev-db/ games-server/ net-ftp/ x11-plugins/
dev-dotnet/ games-simulation/ net-im/ x11-terms/
dev-embedded/ games-sports/ net-irc/ x11-themes/
dev-games/ games-strategy/ net-libs/ x11-wm/
dev-haskell/ games-util/ net-mail/ xfce-base/
dev-java/ glep/ net-misc/ xfce-extra/
dev-lang/ gnome-apps/ net-nds/
dev-libs/ gnome-base/ net-news/
dev-lisp/ gnome-extra/ net-p2p/
|
Gördüğünüz gibi Portage şeması bolca alt dizin içermektedir. Bunların çoğu Gentoo paketlerinin ebuilds olarak adlandırılan kategorilerdir. Örnek olarak, app-office kategorisine bir göz atalım:
Kod Listeleme 1.3: Bir kategoriyi görmek |
# cd app-office; ls --classify
abiword/ gnotime/ kmymoney2/ ooodi/ plan/ timestamp.x
dia/ gnucash/ koffice/ oooqs/ qhacc/
dia2code/ gnumeric/ lxbank/ openoffice/ sc/
facturalux/ ical/ lyx/ openoffice-bin/ scribus/
gaby/ kbudget/ mdbtools/ openoffice-ximian/ siag/
gnofin/ khacc/ mrproject/ phprojekt/ texmacs/
|
Kategori içinde o kategoriye ait paketleri, paketi içeren klasörlerle bulacaksınız. openoffice paketine bir göz atalım:
Kod Listeleme 1.4: Paket gösterimi |
# cd openoffice; ls --classify
ChangeLog files/ openoffice-1.0.3-r1.ebuild openoffice-1.1.0-r2.ebuild
Manifest metadata.xml openoffice-1.1.0-r1.ebuild openoffice-1.1.0.ebuild
|
Size Gentoo paketlerinin ebulid olarak isimlendirildiğini söylediğimizi hatırladınız mı? Görüldüğü gibi örnek dizinde dört tane ebuild mevcut. İsimleri her zaman fikir verecek şekilde: sadece sürüm numaraları farklı. Paketlerin içeriğini görmekte özgürsünüz: onlar sadece betikler. Gentoo kullanmak için çok önemli bir şey olmadığından bu konunun detaylarına girmeyeceğiz şimdi.
Diğer dosyalar ChangeLog (ebuild'lerde yapılan tüm değişiklikleri içerir), Manifest (dizindeki tüm dosyaların boyutlarını ve checksumlarını içerir) ve metadata.xml (paketler hakkında geliştiricileri, açıklamalar gibi ayrıntılı bilgileri içerir).
files dizininde Portage'in ihtiyaç duyduğu bilgiler (checksum ve paketin ihtiyaç duyduğu diğer dosyaların yetkileri), paketler, örnek ayar dosyaları v.s.
Kod Listeleme 1.5: Özel paketleri görmek |
# cd files; ls --classify 1.0.3/ digest-openoffice-1.0.3-r1 digest-openoffice-1.1.0-r1 1.1.0/ digest-openoffice-1.1.0 digest-openoffice-1.1.0-r2 # cd 1.1.0; ls --classify fixed-gcc.patch ooffice-wrapper-1.3 newstlportfix.patch openoffice-1.1.0-linux-2.6-fix.patch no-mozab.patch openoffice-1.1.0-sparc64-fix.patch nptl.patch |
Eğer Prtage şemasının kök düzününe giderseniz (/usr/portage), orada katerogize edilmemiş dizinler olduğunu farkedeceksiniz. Bunların ayrıntılarını bu bölümde vereceğiz.
Eğer Gentoo Linux'da yeniyseniz, işleriniz için hangi aracı kullanacağınızı bilmiyor olabilirsiniz. Bir arama yapmak için, emerge sistemdeki mevcut paketleri aramak için bir yol sunuyor. Paket aramanın iki yolu var: isim ile arama, ya da isim ve açıklama ile arama.
Portage şemasında isim ile arama gerçekleştirmek için, emerge search kullanın. Örnek olarak, mozillahakkında daha çok şey bulmak için:
Kod Listeleme 1.6: mozilla hakkında bilgi görüntülemek |
# emerge search mozilla Searching... [ Results for search key : mozilla ] [ Applications found : 5 ] (Some output removed to improve readability) * net-www/mozilla Latest version available: 1.5-r1 Latest version installed: 1.4-r3 Size of downloaded files: 29,153 kB Homepage: http://www.mozilla.org Description: The Mozilla Web Browser * net-www/mozilla-firebird Latest version available: 0.7 Latest version installed: [ Not Installed ] Size of downloaded files: 37,850 kB Homepage: http://www.mozilla.org/projects/firebird/ Description: The Mozilla Firebird Web Browser (...) |
Eğer açıklamalarında aranmasını istiyorsanız --searchdesc argümanını kullanın:
Kod Listeleme 1.7: Açıklamalarıda aramak |
# emerge --searchdesc mozilla Searching... [ Results for search key : mozilla ] [ Applications found : 10 ] (Some output removed to improve readability) * dev-libs/nss-3.8 Latest version available: 3.8 Latest version installed: 3.8 Size of downloaded files: 2,782 kB Homepage: http://www.mozilla.org/projects/security/pki/nss/ Description: Mozilla's Netscape Security Services Library that implements PKI support |
Gördüşünüz gibi, emerge'in çıktısı size kategori, paket ismi, mevcut sürüm, yüklenmiş olan sürüm, indirilen dosyaların boyutları, internet sayfası ve küçük bir açıklama gibi bilgilerin hepsini size aktarmakta.
Yeni bir şey gördünüz mü? Evet, indirilmiş dosyalar. Portage'e bir paket yüklemesini söyleniz yeterli, tabiki gerekli kaynaklara sahip olmak zorunda (yada hazır paketler). Bu nedenle Portage /usr/portage/distfiles (kaynak kodlar için) veya /usr/portage/packages/All (hazır paketler için) içeriğini paketlerin mevcut olup olmadığını görmek için kontrol eder. Eğer mevcut değilse, gerekli dosyaları indirir ve bu dizinler içine yerleştirir.
Portage şemasını gezerken, paketler için bir ChangeLog olduğunu gördünüz. Mevcut sürüm ve yüklenmiş sürüm arasındaki ChangeLog girdilerini emerge ile görebilirsiniz. --pretend --changelog ( kısaca -pl ) seçeneğini kullanın. Bir örnek olarak gnumeric paketinin ChangeLog girdilerini göreceğiz:
Kod Listeleme 1.8: gnumeric için ChangeLog girdilerini görmek |
# emerge --pretend --changelog gnumeric (Some output removed to improve readability) *gnumeric-1.2.2 27 Nov 2003; foser <foser@gentoo.org> gnumeric-1.2.2.ebuild : New release, requested in #34492 updated deps 12 Nov 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.2.0.ebuild: Marked stable on sparc, fixes bug #32405. 14 Oct 2003; Jason Wever <weeve@gentoo.org> gnumeric-1.0.8.ebuild: Added ~sparc keyword. Fixes bug #31150. |
2.b. Portage Güncellemesi Yapmak
Portage ile arama yapmak güzel, fakat Portage'i güncellemezseniz sisteminizdeki mevcut paketler içinde sıkışırsınız. Bunun anlamı sisteminiz yakında eskiyecek ve bug yamaları, güvenlik problemleri gibi güncellemeleri kaçıracaksınız.
Portage şemasını güncellemenin bir kaç yolu var. En çok kullanılan yol rsync yansılarımızdan birini kullanmaktır. Diğer yol ise bir Protage görüntüsü kullanmak (güvenlik duvarı ya da yetersiz network izimleri gibi durumlar için).
Size en yakın yansıyı seçmek avantajlı olacaktır. Bunu el ile SYNC değişkeninin değiştirerek yapabilirsiniz (Bu değişken /etc/make.conf dosyasının içindedir) veya mirrorselect komutunu kullanarak onun bu işi sizin için yapmasınısağlayabilrisiniz. SYNC değişkeni üzerinde daha sonra duracağız. Şuanda sadece mirrorselect üzerinde duracağız. İlkönce mirrorselect aracını emerge ediyoruz:
Kod Listeleme 2.1: mirrorselect kurulumu |
# emerge --usepkg mirrorselect
|
Şimdi bize otomatik olarak yansı seçmesi için mirrorselect komutunu veriyoruz (bu aynı zamanda Portage'i kaynak kodlarını o yansıdan indirmesi içinde ayarlayacak):
Kod Listeleme 2.2: mirrorselect uygulaması |
# mirrorselect -a -s3
|
Portage'i rsync yoluyla güncellemek için, basitce emerge sync işlemini başlatın:
Kod Listeleme 2.3: Portage'i emerge sync ile güncellemek |
# emerge sync
|
Eğer bu çalışmazsa (bir ağ problemine ya da güvenlik duvarına bağlı olarak), emerge-webrsync komutunu deneyin. Bu işlem wget kullanarak Portage şemasının görüntüsünü indirecektir. Bu isterseniz proxyde kullanabileceğiniz anlamına geliyor. Gentoo kurulumu sırasında nasıl proxi ayarlayacağınızdan bahsetmiştik.
Kod Listeleme 2.4: emerge-webrsync kullanarak Portage güncellemek |
# emerge-webrsync
|
Hazırlamak mı Yoksa Hazır Kullanmak mı?
Gentoo isterseniz paketleri ebuild olarak sunar. Fakat bir ebuild gibi yüklemek isterseniz, paketi hazırlamak ya da hazırlanmış bir paket kullanmak arasında bir tercih yapabilirsiniz. Fakat bu iki seçim arasındaki avantajlar/dezavantajlar nerlerdir, ve biri diğerine tercih edilebilir mi?
Tahmin edeceğiniz gibi paket hazırlamak uzun zaman alacaktır (özellikle KDE, OpenOffice.org, gibi yapılarda). Bir paket hazırlayarak USE değişkeniyle paketin sizin sisteminize özgü olmasını sağlayabilirsiniz. Tabiki, sisteminize uyarlamak için yüksek seçeneklerde kullanabilirsiniz (CFLAGS ve CXXFLAGS değişkenleriyle).
Hazır bir paket kullanmak yükleme süresini kısaltacaktır (derlemeye gerek yoktur), fakat USE ayarları ve CFLAGS, CXXFLAGS değişkeni avantajlarını kaybedersiniz.
Hazır paketler /usr/portage/packages/All dizininde barındırılırlar. Kaynak kodları ise /usr/portage/distfiles altında toplanırlar. Eğer bir yazılım kurmayı bitirdiyseniz, paketi ya da kaynak kodunu bu dizinden silebilirsiniz. Fakat, istiyorsanız tekrar kurmanız gerekebilirse paket ya da kaynak kodunun son versiyonunu saklayabilirsiniz (bu sayede tekrar indirmeniz gerekmez).
Kaynak Kodundan Yazılım Kurmak
Tamam, bu kadar konuşma yeter. Bir paket yüklemek için emerge komutunu kullanacaksınız. Eğer hazır bir paket kullanmak istemiyorsanız, sadece emerge <paket_ismi> veya emerge <kategori>/<paket ismi> kullanabilirsiniz. Örnek olarak gnumeric yükleyelim:
Kod Listeleme 3.1: gnumeric derlenmesi |
# emerge gnumeric
|
Bu komut sisteminize dosyayı indirir, açar, derler ve yükler. Aynı zamanda bunu tüm bağımlılıklara yapar. Eğer paketle birlikte hangi bağımlılıkların yüklendiğini görmek isterseniz, --pretend seçeneğini kullanın ( kısaca -p olarak da kullanabilirsiniz):
Kod Listeleme 3.2: gnumeric bağımlılıklarını görmek |
# emerge --pretend gnumeric
|
Eğer bir paketin ve bağımlılıklarının kaynak kodlarını indirmek istiyor fakat kurmak istemiyorsanız, --fetchonly seçeneğini kullanın (kısaca -f kullanabilirsiniz):
Kod Listeleme 3.3: gnumeric kaynaklarını indirmek |
# emerge --fetchonly gnumeric
|
Eğer emerge kaynakları nerden indirdiğini görmek istiyorsanız, --fetchonly ve --pretend seçeneklerini kullanın:
Kod Listeleme 3.4: gnumeric kaynağının URL'sini görmek |
# emerge --fetchonly --pretend gnumeric
|
Aynı zamanda paketlerin detaylı sürümlerinide yükleyebilirsiniz. Örnek olarak, gnumeric'in 1.2 sürümünden eski bir sürümünü yüklemek istiyorsunuz ( herhangi garip bir sebeple :) ) şunu yazmalısınız:
Kod Listeleme 3.5: Detaylı gnumeric sürümü yüklemek |
# emerge "<gnumeric-1.2"
|
Diğer olasılıklar tabiki ">"(sonraki sürüm) ve "="(belirtilen sürüm).
Hazır paket yüklemek istediğiniz zaman --usepkg seçeneğini ( kısaca -k ) kullanabilirsiniz. Bu eğer paket ve sürüm uyuşuyorsa /usr/portage/packages/All dizini altındaki mevcut derlenmiş paketi kullanacak.
Kod Listeleme 3.6: gnumeric için hazır paket yüklemek |
# emerge --usepkg gnumeric
|
Eğer derlenmiş paket yüklemek istiyorsanız, buna karşılık sürüm uyuşmuyorsa, --usepkgonly (kısaca -K ) kullanabilrisiniz.
Kod Listeleme 3.7: gnumeric için hazır paket yüklemek |
# emerge --usepkgonly gnumeric
|
Eğer sisteminizde henüz hazır paket bulunmuyorsa emerge bu işi PORTAGE_BINHOST değişkennde belirtilmiş bir yansıdan indirerek yapabilir (değişken /etc/make.conf dosyasının içindedir).
Bu paket sisteminizde yoksa ve hazır paketi indirmek istiyorsanız --getbinpkg (kısaca -g ) kullanabilirsiniz:
Kod Listeleme 3.8: Downloading and installing a prebuilt package for gnumeric |
# emerge --getbinpkg gnumeric
|
Bu işlem paketi ve paket bilgilerini bağımlılıklarıyla beraber sisteminize indirecek ve kuracak. Eğer paketle birlikte hangi bağımlılıkların yüklendiğini görmek için, --pretend seçeneğini kullanın (kısaca -p):
Kod Listeleme 3.9: gnumeric için yüklenen bağımlılıkları görmek |
# emerge --getbinpkg --pretend gnumeric
|
Aynı zamanda sisteminizde bulunan hazır paketi kullanmadan ve yerel sisteminiz hakkında bilgi toplamadan bir hazır paket (ve paket bilgisi) indirmek için, --getbinpkgonly seçeneğini kullanabilirsiniz (kısaca -G):
Kod Listeleme 3.10: Yerel bilgileri kullanmadan hazır paket yüklemek |
# emerge --getbinpkgonly gnumeric
|
Özel paket sürümleride yükleyebilirsiniz. Örnek olarak, gnumeric'in 1.2 versiyonundan eski bir versiyonunu kullanmak istiyorsanız şunu yazmalısınız:
Kod Listeleme 3.11: Özel gnumeric sürümü yüklemek |
# emerge --usepkg "<gnumeric-1.2"
|
Diğer olasılıklar tabiki ">"(sonraki sürüm) ve "="(belirtilen sürüm).
Portage bağımlılıklarla başa çıkmak için geniş bir destek sunar. Aslında bunu düşünmenize pek gerek yok (bağımlılıklar otomatik olarak Portage tarafından halledilir) fakat bazı kullanıcılar bağımlılıklar için emerge ile nasıl çalışacaklarını bilmek isteyebilirler.
Örnek olarak, Portage'in bir paketle beraber yüklediği bağımlılıkları görmek için --emptytree seçeneğini kullanabilirsiniz (kısaca -e). Bir paketin bağımlılıklarını tam bir şema olarak görmek için --pretend seçeneğiniyle beraber kullanılması yararlıdır. --pretend seçeneği olmazsa emerge listelenen paketleri (yeniden) derler.
Kod Listeleme 3.12: gnumeric paketinin tüm bağımlılıklarını görmek |
# emerge --emptytree --pretend gnumeric
|
Bir başka argüman --nodeps seçeneğidir. Bu seçenek bağımlılıkları kurmadan paketi yüklemenizi sağlar.
Kod Listeleme 3.13: Bağımlılıklar olmaksızın gnumeric yüklemek |
# emerge --nodeps gnumeric
|
--nodeps seçeneğinin tersi --onlydeps seçeneğidir. Bu seçenek istediğini paketin tüm bağımlılıklarını yükler fakat paketin kendisini yüklemez:
Kod Listeleme 3.14: gnumeric paketinin bağımlılıklarını yüklemek |
# emerge --onlydeps gnumeric
|
Portage sistemi güncellemek için iki anahtar kelimeyi tanıyor: system ve world. Eğer stage3 kullanmadıysanız zaten bunlardan birini gördünüz. Bulunan şeyleri yenilemek için: system çalışan bir Gentoo sistemi için gereken core paketlerinin bir koleksiyonunu yapar.
world anahtar kelimesi ise sizin kurduğunuz system üzerine kurulmuş paketleri edinir. Diğer bir değişle, emerge <paket-ismi> şeklinde yüklediğiniz her paket, world dosyasına (/var/cache/edb/world) kaydedilir. Bağımlılıklar world dosyasının bir parçası değildir, fakat bunu daha sonra halledeceğiz.
Eğer sistem paketlerini güncellemek istiyorsanız, --update seçeneğini kullanın (kısaca -u):
Kod Listeleme 3.15: Sistem paketlerini güncellemek |
# emerge --update system
|
Aynı işlem world paketleri içinde kullanılabilir.
Kod Listeleme 3.16: Yüklediğiniz sistemi güncellemek |
# emerge --update world
|
Tekrar, eğer emerge'in güncelleyeceği dosyaları görmek istiyorsanız, --pretend seçeneğini --update seçeneğiyle beraber kullanabilirsiniz:
Kod Listeleme 3.17: Yüklediğiniz sistemi güncelleme sırasında yüklenecek dosyaları görmek |
# emerge --pretend --update world (Some output removed to improve readability) [ebuild U ] net-misc/wget-1.9-r1 [1.9] [ebuild UD] media-video/dvdauthor-0.5.0 [0.5.3] [ebuild U ] net-analyzer/ethereal-0.9.16 [0.9.14] |
Bu adımla bir harf (ya da harf kombinasyonları) farkedeceksiniz. Bu size paket hakkında daha fazla bilgi verecek:
Bazı sebeplerden dolayı, bir güncelleme eski paket yükleyek anlamına gelebilir. Eğer bunun olmasını istemiyorsanız, --upgradeonly seçeneğini kullanmalısınız (kısaca -u):
Kod Listeleme 3.18: Yüklediğiniz sistemi güncellemek |
# emerge --update --upgradeonly world
|
Tabiki biz system ve world paketleri hakkında konuşuyoruz, fakat aynı işlemi seçtiğiniz bir paket içinde kullanabilirsiniz.
Eğer sisteminizden bir yazılımı kaldırmak istiyorsanız, unmerge seçeneğini kullanabilirsiniz (kısaca -C ):
Kod Listeleme 3.19: Yazılım kaldırmak |
# emerge unmerge gnumeric
|
Eğer bir kaldırma işlemini test etmek ama uygulamak istemiyorsanız, gene --pretend seçeneğini kullanabilirsiniz:
Kod Listeleme 3.20: Yazılım kaldırma işlemini test etmek |
# emerge --pretend unmerge gnumeric
|
Uyarı: Portage, kaldırmak istediğiniz yazılım başka bir yazılımın bağımlılığıysa bunu farkedemez. Aynı zamanda sistemin bir parçasıysa da sizi uyarmaz, örn: sistemin doğru fonksiyonelliği için gerekli bir core uygulaması! |
unmerge işlemi başladığında pakete ait olan dosya isimlerinin yazıldığı uzun bir liste göreceksiniz. Bazı dosya isimlerinin sol tarafında işaretler göreceksiniz. Bu işaretler !mtime, !empty, ve cfgpro işaretleridir ve paket kaldırıldığı halde bu dosyaların nie kaldırılmadığının sebebini açıklar. Listede bulup bu işaretlerin bulunmadığı dosya isimleri sistemden başarıyla kaldırılmıştır. Bu iç işaret şu nedenleri açıklar:
Gentoo paketlerini ARCH ve ~ARCH adında iki olası biçime göre çağırır. Bu biçim kullandığınız mimariye bağlıdır. Diğer bir değişle, x86 temelli bir sistemde x86 ve ~x86, ppc temelli sistemdeppc ve ~ppc vb...
~ARCH biçimi paketin tam olarak test edilmediğini ve henüz ARCH kategorisine alınamayacağını belirtir. ~ARCH paketleri genellikle buglardan arındığında ve uzun süre bu şekilde devam edebildiğinde ARCH sınırına alınır.
Sisteminiz varsayılan olarak ARCH paketlerini kullanacaktır. Eğer sınırda yaşamayı seviyor, kırık paketleri kullanmayı kafaya takmıyorsanız ve bugs.gentoo.org, adresine bug raporu göndermekten hoşlanıyorsanız~ARCH seçeneğini kullanabilirsiniz. Eğer~ARCHkullanan bir sisteme geçmek istiyorsanız, ACCEPT_KEYWORDS değişkenini /etc/make.conf dosyasından değiştirin (tekrar: x86 temelli sistem için ~x86, vb.).
Şunu not alın; ARCH 'dan ~ARCHbiçimine dönmek abes olmaktan uzak.
Eğer sisteminizi şimdi güncellemek istiyorsanız, farkedeceğiniz üzere bir çok paket güncellenecek!
Bir paket yüklemek istediğiniz zaman aşağıdaki gibi bir mesajla karşılaşabilirsiniz:
Kod Listeleme 4.1: Maskelenmiş paketler hakkında mesaj |
Calculating dependencies !!! all ebuilds that could satisfy <your package> have been masked. |
Bir paket iki sebepten dolayı maskelenir:
Eğer paket birinci sebepten dolayı maskelenmişse ve siz bunu gerçekten kurmak istiyorsanız (neden ARCH sınıfında olmayışının sebebini bilerek), geçici olarak ~ARCH biçimini kullanabilirsiniz:
Kod Listeleme 4.2: Geçici olarak ~ARCH paketlerini kabul etmek |
# ACCEPT_KEYWORDS="~x86" emerge gnumeric
|
Bir paket /usr/portage/profiles/package.mask dosyasının içinde listelendiyse sabit maskelenmiştir. Eğer bu dosyayı okursanız breaberinde sabit maskelenmesinin sebebinide okuyabilirsiniz. Tüm bunlara rağmen paketi yüklemek istiyorsanız (sürekli "sisteminizi kırar", "diğer paketleri kırar", "ciddi olarak test edilmesi gerekli" diyerek başınızı ağrıtmamıza rağmen), /etc/portage/package.unmask dosyası oluşturun ve paketin ismini bu dosyaya listeleyin (aynı şekilde /usr/portage/profile/package.mask içindede yapın).
Portage şemasını güncellediğinizde /usr/portage/package.mask dosyasını değiştirmeyin. Eğer bir dosyayı sabit maskelemek isterseniz /etc/portage/package.mask dosyası oluşturun ve paketin ismini içine listeleyin (aynı işlemi tersi içinde yapabilirsiniz).
Eğer ekranda aşağıdaki hatayı görürdüğünüz bir durumla karşılaştınız:
Kod Listeleme 4.3: Blocking package |
[blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0) |
Bu verilen örnekte, bonobo-activation paketi libbonobo paketinin yüklenmesini blokluyor. Bu durumdan kurtulmak için, bonono-activation paketini kaldırıp devam edin:
Kod Listeleme 4.4: Bloklama durumundan kurtulmak |
# emerge unmerge bonobo-activation
|
distcc birden fazla birbirine uyumlu olmak zorunda olmayan bilgisayarların, ağ üzerinden derlemeyi dağıtan yazılımdır. Distcc istemcisi gereken tüm bilgileri ulaşabildiği DistCC-sunucularına yollar (distccd'nin çalıştığı makinalar) ve böylece kaynak kodların istemciler tarafından derlenmesini sağlar. Sonuçta bu yöntemle zaman kazanırız.
DistCC hakkında daha ayrıntılı bilgiye Gentoo Distcc Documentation adresinden ulaşabilrisiniz.
DistCC'nin beraberinde gelen monitörün vasıtasıyla bilgisayarın derlemek için gönderdiği işlemlerden haberdar olabilirsiniz. Eğer Gnome kullanıyorsanız USE- değişkenlerinde 'gnome' eklemelisiniz, Gnome kullanmıyorsanız ve DistCC'nin monitörünü kullanmak istiyorsanız 'USE- değişkenine 'gtk' seçeneğini eklemelisiniz. Tüm yazılımların Gentoo'nun Portage'i tarafından sunulduğundan DistCC'nin kurumuda dolaysıyla çok basit.
Not: Bu bölümden itibaren artık binary paketlerin nasıl kurulduğunu bildiğinizi var sayarak, --usepkg seçeneğini Gentoo elkitabının geri kalan bölümlerinde anlatmıyacağız. |
Kod Listeleme 1.1: Distcc kurulumu |
# emerge distcc
|
Portage Desteğini Aktifleştirmek
Kurumu basit olduğuna göre geri kalanıda kolay olmalı :-) Hemen distcc'nin Portage desteğini açalım o halde.
İlk önce /etc/make.conf dosyamızı bir editörle açıp FEATURES değişkenine distcc anahtar kelimesini ekliyelim. Sonra MAKEOPTS değişkenine -jX seçeneğini eklemeliyiz, X burda distccd'yi sunuma açık tutan makinaların işlemci sayılarının bir fazlasıdır ( ve ilaveten yazılımın yükleneceği makinanın işlemcisi):
Kod Listeleme 1.2: Possible MAKEOPTS setting in /etc/make.conf |
# distcc istemcisini iki adet tek işlemcili makinada çalıştığını farz edelim (sunucu makinayı saymadan):
MAKEOPTS="-j4"
|
Tekrardan /etc/make.conf dosyası içinde PORTAGE_TMPDIR satırının başındaki '#' işaretini kaldırarark, dosyamıza aşağıdaki satırı eklemelisiniz .
Kod Listeleme 1.3: Add an extra, distcc-specific variable to /etc/make.conf |
# PORTAGE_TMPDIR - değişkeninin önndeki # işaretini kaldırmayı unutmayınız
DISTCC_DIR=${PORTAGE_TMPDIR}/portage/.distcc
|
Şimdi distcc-config yazıyoruz ve enter yapıp mevcut DistCC sunucularının listesini görebilirsiniz. Basit bir örnek olarak ulaşabildiğiniz DistCC sunucuların 192.168.1.102 (yazılımın kurulacağı makina), 192.168.1.103 ve 192.168.1.104 (uzaktaki sunucular) olduğunu var sayalım:
Kod Listeleme 1.4: DistCC'nin ulaşabildiği 3 adet DistCC sunucusu |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Elbetteki DistCC demonunu (distccd ) çalıştırmayı unutmuyoruz:
Kod Listeleme 1.5: DistCC demonunu çalıştırmak |
# /etc/init.d/distccd start
|
Hayırlı olsun, sisteminiz artık derleme işlemini dağıtabilecek. Daha derin bilgi almak için Gentoo DistCC Rehberini okuyun: Gentoo DistCC Documentation.
ccache hızlı bir derleyici arabirimidir. Bir yazılımı derlerken ara sonuçlar cache edilir, bu yazılıma re-derleme yaptığınızda 5 ve 10 katı arasında bir derleme hızına ulaşabilirsiniz.
Eğer ccache programının beraberinde getirdiği avantaj ve dezavantajları merak ediyorsanız, ccache anasayfasını ziyaret edin: ccache web sayfası.
Gentoo linux'nuza ccache programını kurmak çok basit; sadece bir emerge ccache komutu yeterli.:)
Kod Listeleme 2.1: ccache kurulumu |
# emerge ccache
|
Portage Desteğini Aktifleştirmek
İlk önce /etc/make.conf dosyasını bir editörle açıp FEATURES değişkenine ccache anahtar kelimesini eklemelisiniz:
Kod Listeleme 2.2: /etc/make.conf dosyasından FEATURES değişkenini düzenlemek |
FEATURES="ccache" |
Sonra CCACHE_SIZE değişkenini cache yapması için ccache yazılımına vermek istediğiniz sabit disk hacmini eklemelisiniz (Eğer CCACHE_SIZE değişkeni yoksa /etc/make.conf dosyasında bunu eklemek zorundasınız):
Kod Listeleme 2.3: CCACHE_SIZE değişkeninin /etc/make.conf dosyasından düzenlenmesi |
CCACHE_SIZE="2G" |
Bu işlemden itibaren Portage derleme işleminde ccache yazılımını kullanacaktır, ve her mümkün olduğunda derleme işlemini hızlandıracaktır. Ccache'in çalıştığına emin olmak için, ccache -s seçeneğiyle beraber çalıştırın. Böylece ccache yazılımının istatiklerine bakabilirsiniz:
Kod Listeleme 2.4: ccache istatistiklerine bakmak |
# ccache -s
|
Önceki bölümlerde binary paketlerle nasıl çalışacağınızı anlatmıştık. Peki kendimiz nasıl binary paketleri oluşturabiliriz?
Eğer binary paketini oluşturmak istediğiniz yazılım makinanıza yüklüyse, quickpkg komutuyla yüklü dosyalardan bir Tarball oluşturabilirsiniz. Bu yöntem yedekleme ilemleri için çok faydalı bir yöntemdir (Oluşan dosyalar /usr/portage/packages/ALL dizini altında kaydolur).
Kod Listeleme 3.1: quickpkg kullanmak |
# quickpkg gnumeric
|
Eğer gnumeric yazılımı makinanızda yüklü değilse bunu hemen emerge edebilirsiniz. Yüklerken aynı zamanda binary paketide oluşturabilirsiniz. emerge --buildpkg komutu (kısaltılması -b kullanılabilir) çalıştırmak yeterli olacaktır:
Kod Listeleme 3.2: Gnumeric programını yüklemek ve aynı işlem içinde binary paketini oluşturmak |
# emerge --buildpkg gnumeric
|
Portage'in bunu devamlı olarak yapmasını dilerseniz, /etc/make.conf dosyasında bulunan FEATURES değişkenine buildpkg anahtarsözcüğünü eklemeniz gerekir.
Kod Listeleme 3.3: Binary paketlerin otomatik olarak oluşturulması |
FEATURES="buildpkg" |
Yazılımın sadece biner paketini oluşturmak ve sisteme yüklemek için emerge ederken --buildpkgonly seçeneğini kullanmalısınız (kısa yazılımı -B ).
Kod Listeleme 3.4: Gnumeric yazılımının sadece biner paketlerini oluşturmak |
# emerge --buildpkgonly gnumeric
|
3.d. Güvenlik İle İlgili Özellikler
Portage paketleri yüklediğinde ve oluşturduğunda Live sisteminizi korumak için bir sandbox kullanır. Bunun anlamı bir paketin kurulumunun tamamıyle sonuna kadar sistemdeki hiçbir dosyaya sandbox dışında erişemesi. Böylece Portage'in hangi dosyanın hangi paketten alındığını yada hangi paket tarafından değiştirildiğini bilmesi mümkün olur.
Bir paketin derlenmesi bittiğinde, portage tarafından ilk önce Sandbox'da ön-kurulum yapılır. Bu işlem esnasında hangi dosyanın nereye taşındığı not alınır. Sonraki aşamada bu dosyalar Sandbox tarafından Live-sisteminize taşınır.
Portage kullanıcı tarafından paket oluşturulmasını destekliyor (daha doğrusu kullanıcı "portage" ve grub "portage"). Böylece paket oluşumundaki güvenlik artmış oluyor. Kullanıcı ayrıcalıklarını sandbox'lu yada sandbox'suz kullanmakta özgürsünüz. Genelde ama kullanıcı ayrıcalıkları ve Sandbox beraber kullanılır.
Sandbox İle Kullanıcı Ayrıcalıklarını Etkinleşirmek
Öntanımlı olarak portage tarafından sandbox kullanır. Eğer userpriv kullanmak isterseniz bunu FEATURES değişkenine eklemelisiniz. Dikkat edilmesi gereken bir olay, userpriv özelliğini aktif ettikten sonra sandbox'un deaktif hale geçmesi. Tabi bu olay usersandbox'u aktif ederseniz gerçekleşmez:
Kod Listeleme 4.1: Userpriv ve usersandbox'u etkinleştirmek |
FEATURES="userpriv usersandbox" |
Uyarı: sandbox'u katiyen FEATURES değişkeninden çıkarmayınız. |
Portage'e tehlikeli şartlara karşı sıkı önlem alması söylenebilir (örn. Eksik yada hatalı manifest - dosyaları için). Bu sıkı kontrolü açmak için FEATURES değişkenine strict seçeneğini ekleyin:
Kod Listeleme 4.2: Sıkı kontrolü açmak |
FEATURES="strict" |
Portage'e otomatik olarak potansiyel tehlikeli dosya haklarını değiştirmesi söylenebilir. Bu işlem sırasında "grub(group)" ve "diğer(other)" okunabilir bit'lerin setuid dosyaları ve "diğer(other)" okunabilir bit'lerin setgid dosyaları kurum öncesi aşamada silinir. Akıllı dosya sistemi haklarını kullanmak için FEATURES değişkenine sfperms seçeneğini eklemek gerekir:
Kod Listeleme 4.3: Akıllı dosya sistemi haklarını kullanmak |
FEATURES="sfperms" |
FEATURES değişkenine ekliyebileceğiniz daha çok anahtar kelimesi var. Genelde bir çoğu yapılandırıcılar tarafından kullanılmakta. Bu özellikler hakkında (yada Portage hakkında genel) bilgi edinmek isterseniz make.conf klavuz sayfasını okumayı ihmal etmeyin.
Kod Listeleme 5.1: Portage hakkında daha fazla bilgi |
# man make.conf
|
4.a. Ayar Dosyalarının Korunması
Portage'a "korunan dosyalar" konsepti eklenmiştir. Bunun anlamı , bir yazılımı güncellediğinizde belirli dosyaların yeni sürümlerini hemen eskisinin üstüne yazmak yerine kullanıcıyı yeni bir sürümün olduğuna dair uyarmasıdır. Bu , ayar dosyaları için ( /etc içinde duranlar) tabii ki çok kullanışlıdır. .
Bu dosyaların üstüne yazılmak yerine , yerine orjinal dosyanın adı gelecek şekilde ._cfg0000_<name> adında dosyalar. Bundan sonra dosyaların arasındaki farkları düzeltmek kullanıcıya kalmış olur. Ayrıca işlemi kolaylaştırmak için etc-update komutu da kullanılabilir. etc-update üstünde daha sonra duracağız.
Portage , dosya tabanlı değil de klasör tabanlı bir koruma sunar. CONFIG_PROTECT , tüm korunan dosyaların listesini verir. Listeki dizinlerdeki tüm alt-dizinlerde aynı zamanda korunur. CONFIG_PROTECT , /etc/make.globals içinde tanımlanmıştır ama değiştirmek isterseniz , /etc/make.conf içinde tanımlama yapmanız gerekir( tutarlı olmak için tüm portage ayarlamalarında /etc/make.conf kullanılır).
Kod Listeleme 1.1: CONFIG_PROTECT ayarı örneği |
CONFIG_PROTECT="/etc /usr/share/config /usr/kde/3.1/share/config" |
Sadece belirli bir dizini koruyup alt dizinlerini korumak istemiyorsanız , bu dizinleri CONFIG_PROTECT_MASK değişkeninde belirtebilirsiniz. Bu değişken de aynı şekilde /etc/make.globals içinde tanımlanmış ama değişiklik yapabilmek için /etc/make.conf dosyasında tanımlanması gerekli :
Kod Listeleme 1.2: CONFIG_PROTECT_MASK ayarı örneği |
CONFIG_PROTECT_MASK="/etc/init.d" |
Ayar dosyalarının korunması hakkında daha çok bilgi , emerge'in online yardımında bulunabilir:
Kod Listeleme 1.3: Dosya Koruması Hakkında Bilgi Alım örneği |
# emerge --help config
|
etc-update aracı ,._cfg0000_<name> dosyalarının birleştirmesinde yardı eder.Etkileşimli bir birleştirme işlemi sunmasının yanında önemsiz değişiklikleri de otomatik yapar.
etc-update 'i çalıştırmak oldukça basit bir iş:
Kod Listeleme 1.4: etc-update kullanımı |
# etc-update
|
Önemsiz değişiklikler yapıldıktan sonra , güncellenmeyi bekleyen korunan dosyaların bir listesiyle ve en altta da geçerli seçeneklerle karşılaşacaksınız:
Kod Listeleme 1.5: etc-update options |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
Eğer -1 girerseniz, etc-update hiçbir değişiklik yapmadan doğrudan çıkar. -3 veya -5 seçimlerinde ise, listelenmiş bütün ayar dosyalarının üstüne yenileri yazılır. O yüzden otomatik olarak güncellenmemesini istediğiniz ayar dosyalarını seçmek çok önemli. Bu iş te , ilgili ayar dosyasının sol tarafındaki numarasını girmekten ibaret.
Örnek olarak biz /etc/pear.conf dosyasını seçtik:
Kod Listeleme 1.6: Belirli bir ayar dosyasını güncellemek |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
[...]
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
Artık iki dosyanın arasındaki farkları görebilirsiniz. Eğer güncellenmiş ayar dosyasının sorunsuz olarak çalışacağından eminseniz 1 seçin. Eğer güncellenmiş dosyanın gereksiz veya herhangi yeni, kullanışlı bilgi sağladığını düşünmüyosanız 2 seçin. Eğer şu anki ayar dosyasını etkileşimli olarak güncellemek isterseniz 3 seçin.
Etkileşimli birleştirmeyi çok detaylandırmaya gerek yok. Tam olması için , dosyaları etkileşimli olarak birleştirirken gerekli olan tüm komutları listeleyeceğiz. İki satır (orjinal dosya , teklif edilen dosya) ve aşağıdaki komutları girebileceğiniz bir komut satırı ile karşılaşacaksınız:
Kod Listeleme 1.7: Commands available for the interactive merging |
ed: Edit then use both versions, each decorated with a header. eb: Edit then use both versions. el: Edit then use the left version. er: Edit then use the right version. e: Edit a new version. l: Use the left version. r: Use the right version. s: Silently include common lines. v: Verbosely include common lines. q: Quit. |
Önemli dosyaların güncellenmesini bitirdikten sonra artık diğer tüm dosyaları otomatik olarak güncelleyebilirsiniz. Eğer etc-update güncellenebilecek başka bir dosya bulamazsa , çıkar.
Gentoo hızlanarak popüler hale geldikçe , yansıları kullanmakta önem kazanıyor. Portage , yansılar için üç değişken kullanır : bir tane rsync yansıları için (Portage Ağacınızı senkronize etmek için), bir tane distfiles için (Kaynak kodu için), ve bir tanede önceden hazırlanmış paketler için.
Varolan tüm distfiles yansılarGentoo mirrors page adresnde bulunabilir.Sisteminizdeki yansı işlemlerini kolaylaştırmak için mirrorselect komutunuda kullanabilirsiniz. Ama önce değişkenleri bir görelim...
Kullanmak istediğiniz syncs aslında SYNC değişkeninin içinde tutulur. Örneğin rsync://rsync.namerica.gentoo.org/gentoo-portage adresini kullanmak için bunu /etc/make.conf içinde tanımlamamız gereklidir:
Kod Listeleme 2.1: /etc/make.conf için SYNC'i tanımlamak |
SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage
rsync://rsync.samerica.gentoo.org/gentoo-portage"
|
GENTOO_MIRRORS değişkeninde , kullanmak isteyebileceğiniz distfiles yansıları tutulur. Örneğin ftp://ibiblio.org/pub/Linux/distributions/gentoo adresini ilk seçenek ve http://www.gtlib.cc.gatech.edu/pub/gentoo adresini ikinci seçenek olarak kullanmak isterseniz bunu /etc/make.conf içinde tanımlamanız gerekir :
Kod Listeleme 2.2: /etc/make.conf içinde GENTOO_MIRRORS'ı tanımlamak |
GENTOO_MIRRORS="ftp://ibiblio.org/pub/Linux/distributions/gentoo
http://www.gtlib.cc.gatech.edu/pub/gentoo"
|
PORTAGE_BINHOST eğişkeninde , kullanmak isteyebileceğiniz önceden derlenmiş paketler tutulur. Örneğin , ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp, adresini kullanmak isterseniz bunu/etc/make.conf dosyasında tanımlamanız gereklidir:
Kod Listeleme 2.3: etc/make.conf içinde PORTAGE_BINHOST'u tanımlamak |
PORTAGE_BINHOST="ftp://login:pass@grp.mirror.site/pub/grp/i686/athlon-xp" |
mirrorselect kullanmak istiyorsanız önce kurmalısınız (tabii daha önce kurmadıysanız).
Kod Listeleme 2.4: mirrorselect kurulması |
# emerge mirrorselect
|
Artık mirrorselect yansıları otomatik olarak seçmesi veya sizin bir listeden elle seçmeniz gibi iki seçeneğiniz mevcut. Mirrorselect'in nasıl kullanılacağı hakkında bilgi için , komut satırından mirrorselect'i çalıştırın - kısa bir bakış sunar.
Kod Listeleme 2.5: mirrorselect çalıştırmak |
# mirrorselect
|
Portage'ın arşivleri hangi programla indireceğini FETCHCOMMAND ve RESUMECOMMAND ayarlarında belirtebilirsiniz. /etc/make.conf ve /etc/make.globals dosyaların birkaç örnek mevcut. Portage'da varsayılan olarak wget kullanılır :
Kod Listeleme 2.6: Varsayılan FETCHCOMMAND & RESUMECOMMAND |
FETCHCOMMAND="/usr/bin/wget -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget -c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
|
${DISTDIR} değişkeni , indirilen dosyaların saklanacağı dizin adıyla değiştirilirken (/usr/portage/distfiles), ${URI} değişkeni Portage'ın indirmesi gerekn dosyanın adresi ile değiştirilir.
Portage, varsayılan olarak wget kullandığı için http_proxy ve ftp_proxy (küçkharf ile yazıldığına dikkat edin)tanımlanarak vekil sunucu (proxy) kullanılabilir. Bu işi /etc/make.conf dosyasının içindende yapabilrisiniz fakat http_proxy ve ftp_proxy değişkenleri başka programlar tarafından da kullanılılabiliyor. Bu yüzden /etc/make.conf yerine geneş bir yol kullanmanızı tavsiye ederiz. Sistem çapında değişkenleri nasıl tanımlayabileceğinizi öğrenmek için Ortam Değişkenleri bölümünü okuyun.
rsync , emerge sync tarafından Portage Ağacını güncellemek için kullanılır. Portage tarafından kullanılan ve Rsync'in çalışmasını değiştiren üç tane değişken var : RSYNC_EXCLUDEFROM, RSYNC_RETRIES ve RSYNC_TIMEOUT.
Ebuild'lerin portage tarafından otomatik olarak güncelleştirilip kaldırılmasını "engellemenin" bir yolu RSYNC_EXCLUDEFROM değişkenidir. rsync belirli dosyaları dışarıda bırakmak için kullandığı dosyalardan birine yazılabilir ve varsayılan olarak /etc/portage/rsync_excludes dosyasındadır.Dikkatli olunmadığında bağımlılıkları bozabilecek bir yol olduğundan kullanılması tavsiye *edilmez*. Tavsiye edilen yol olan PORTDIR_OVERLAY değişkeninden daha sonra bahsedeceğiz. Daha çok bilgi için lütfen rsync man sayfasını okuyun.
Kod Listeleme 2.7: RSYNC_EXCLUDEFORM değişkeni |
RSYNC_EXCLUDEFROM="/etc/portage/rsync_excludes" |
"rsync" başarılı olamadığında , varolan diğer sunucuya geçmeden önce birkaç kere deneme yapar. Bu sayı RSYNC_RETRIES tanımlıdır ve varsayılan olarak3'tür:
Kod Listeleme 2.8: RSYNC_RETRIES="3" |
RSYNC_RETRIES="3" |
Eğer (çok) yavaş bir rsync sunucusu kullanıyorsanız, rsync ver akışı durursa zaman aşımı (time-out) verebilir. Zaman aşımını bekleme süresi RSYNC_TIMEOUT değişkeninde tanımlıdır ve varsayılan olarak 180 değeri atanmıştır:
Kod Listeleme 2.9: RSYNC_TIMEOUT değişkeni |
RSYNC_TIMEOUT="180" |
Değişik işlemler için kullanılan dizinler ve Portage'ın ihtiyacı olduğu dosyalarda dahil olmak üzere Portage hakkındaki herşey ayarlanabilir. Varsayılan yolları (/etc/make.globals dosyasında tanımlandığı üzere) değiştirmek için /etc/make.conf dosyasında - başka nerede olabilir ki? :) - doğru değişkenleri tanımlamalısınız.
Uyarı: Eğer herhangi bir değişkeni değiştiriyorsanız yazdığınız yolun sonuna *kesinlikle* / eklemeyin! |
Portage Ağacının yolu PORTDIR değişkeninde tanımlıdır. Varsayılan olarak /usr/portage yolu tanımlanmıştır:
Kod Listeleme 3.1: PORTDIR değişkeni |
PORTDIR="/usr/portage" |
Yerel bir Portage ağacını , "resmi" sürüme yakın tutmak istiyorsanız PORTDIR_OVERLAY değişkenini tanımlamalısınız. Bu değişkende listelenen dizin(ler) , emerge sync olayından etkilenmezler : buralardaki ebuildler güncellenmez veya kaldırılmazlar ama Portage Ağacına dahildir.
Kod Listeleme 3.2: PORTDIR_OVERLAY değişkeni |
PORTDIR_OVERLAY="/usr/local/portage" |
İndirilen kaynak kodlarının (distfiles denen) yolları DISTDIR değişkeninde tanımlıdır. Varsayılan olarak ${PORTDIR}/distfiles yolunu gösterir :
Kod Listeleme 3.3: DISTDIR değişkeni |
DISTDIR="${PORTDIR}/distfiles"
|
Önceden derlenmiş paketlerin yolları ise PKGDIR değişkeninde tanımlıdır. Varsayılan olarak ${PORTDIR}/packages olarak belirlenmiştir:
Kod Listeleme 3.4: PKGDIR değişkeni |
PKGDIR="${PORTDIR}/packages"
|
RPMlerin (evet , bazı paketler RPM olarak mevcut) yolları ise RPMDIR değişkeni sorumludur. Varsayılan olarak ${PORTDIR}/rpm belirtilmiştir:
Kod Listeleme 3.5: RPMDIR değişkeni |
RPMDIR="${PORTDIR}/rpm"
|
Portage , ebuildleri oluşturmak için geçici bir dizin kullanır. Bu dizinin yolu PORTAGE_TMPDIR değişkeninde tanımlıdır ve varsayılan olarak /var/tmp yoludur:
Kod Listeleme 3.6: PORTAGE_TMPDIRdeğişkeni |
PORTAGE_TMPDIR="/var/tmp" |
Portage varsayılan olarak , PORTAGE_TMPDIR içinde bir portage dizini oluşturur. Bu ise BUILD_PREFIX değişkeninde tanımlıdır:
Kod Listeleme 3.7: BUILD_PREFIX değişkeni |
BUILD_PREFIX="${PORTAGE_TMPDIR}/portage"
|
Bu yolu değiştirmeye karar verirseniz , geçici dizini yeterli disk alanına sahip bir yere koyduğunuzdan emin olun : büyük yazılım paketlerini derlerken dizin , 2GB+ olabiliyor.
PORT_LOGDIR özel bir değişken olmakla birlikte varsayılan olarak tanımlı değildir. Eğer tanımlarsanız Portage , her ebuild için verilen dizinde bir kayıt dosyası oluşturur :
Kod Listeleme 3.8: PORT_LOGDIR değişkeni |
PORT_LOGDIR="/var/log/portage" |
Portage , caziplik değerine (Önceliğe benzer bir değer) derlemeyi destekliyor. Eğer Portage'ın paketleri daha yüksek caziplik-değerinde derlemesini (derleme sırasında sistemin ulaşılbilirliğini arttırır fakat derleme süresini uzatır) istiyorsanız PORTAGE_NICENESS değişkenini pozitif bir sayı olarak tanımlayın :
Kod Listeleme 4.1: PORTAGE_NICENESS değişkeni |
PORTAGE_NICENESS="3" |
SLOT'lanmış Paketler ve Otomatik Temizlik
Bazı durumlarda bir paketin(kütüphaneler dahil olmak üzere) birden çok sürümünün sistemde varolmasını isteyebilirsiniz. Portage bunu , ebuildlerdeki SLOT değişkeni ile destekler. Bir kullanıcı olarak SLOT'lamanın nasıl çalıştığını bilmek zorunda değilsiniz ama bunun desteklendiğini bilmeniz önemli.
Eğer bir paketin daha yeni bir sürümünü kuruyorsanız , Portage bu paket için tanımlı olan SLOT değerine bakar. Eğer bu değer her iki pakette (eski ve yeni) farklıysa , eski pakete dokunulmaz.
Bununla birlikte SLOT değişkeni aynıysa (genellikle olan durum) , varsayılan olarak eski paket kaldırılır. Bu kaldırma işleminin kullanıcı tarafından kesilebilir bir hale getirilmesi için Portage , belli bir sayıdan geriye doğru sayar. Bu değer CLEAN_DELAY değişkeninde tanımlıdır ve varsayılan olarak 5 saniyedir:
Kod Listeleme 4.2: CLEAN_DELAY değişkeni |
CLEAN_DELAY="5" |
Eğer Portage'nin otomatik olarak eski sürümleri silmesini İSTEMİYORSANIZ AUTOCLEAN değişkenine no değerini atayın:
Kod Listeleme 4.3: AUTOCLEAN değişkeni |
AUTOCLEAN="no" |
Buraya kadar birçok değişken gördük ama daha bitmedi. Gentoo kuranlar , derleyicinin paketleri derleyip optimize etmesi için kullanılan CHOST, CFLAGS ve CXXFLAGS değişkenlerini bilir.
Bu değişkenler hakkında daha çok bilgi gcc bilgi sayrafından veya GCC Online Manuals sayfasında online olara bulunabilir.
Kod Listeleme 4.4: CHOST,CFLAGS ve CXXFLAGS bilgilerini almak |
# info gcc (Select "Invoking gcc") (Select "Optimize options") |
Eğer DEBUGBUILD tanımlıysa Portage , debug işini kolaylaştırmak için yapılan tüm binary kütüphanelerin gösterilmesini gerçekleştirmez. Bu sisteminizi yavaşlatıp , dosya boyutunu büyütür.
Kod Listeleme 4.5: DEBUGBUILD değişkeni |
# Do not set this to "false"; instead remove the line. Portage does not # check the value, it just checks if the variable is defined. DEBUGBUILD="true" |
MAKEOPTS değişkeni make tarafından bir paketin derlenmesini kolaylaştırmak için kullanılır. Genellikle make birkaç derlemeyi aynı anda yapmasını söylemek için ayarlıdır (özellikle çok işlemcili bir makine veya distcc kullanıyorsanız).
"make" üç tane derlemeyi aynı anda yapmasını sağlamak için MAKEOPTS değişkenini -j3ayarlayın:
Kod Listeleme 4.6: MAKEOPTS değişkeni |
MAKEOPTS="-j3" |
ROOT değişkeni /etc/make.conf yerine ortam değişkeni olarak tanımlanmalıdır. Portage bu değişkeni , bir paketin nereye kurulacağını öğrenmek için kontrol eder. Tabiiki varsayılan olarak / dir. Örnek olarak , gnumeric yazılımının çalışan sistem yerine nasıl /mnt/gentoo altına kurulacağını gösteriyoruz:
Kod Listeleme 4.7: ROOT değişkeni |
# ROOT="/mnt/gentoo" emerge gnumeric
|
Varsayılan olarak Portage , çıktısını okunabilirliğini arttımak için renklendirir. Bunu istemiyorsanız NOCOLOR değişkenini true yapın:
Kod Listeleme 4.8: NOCOLOR değişkeni |
NOCOLOR="true" |
Eğer tüm değişkenleri çabucak görebileceğiniz bir yer gerekiyorsa , lütfen make.conf man page sayfalarına göz atmayı unutmayın
Kod Listeleme 5.1: Make.conf man dosyasına göz atmak |
# man make.conf
|
/etc/make.conf dosyasında sizinde ilginç bulabileceğiniz birçok örnek mevcut. Bununla birlikte birçok kişi/etc/make.conf dosyalarını güncellemedikleri için bu dosyaya yapılan değişiklikleri göremiyorlar. /etc/make.conf dosyasının son halini Online ViewCVS Repository depomuzda bulabilirsiniz.
5.a. Çalışma Seviyeleri(run levels)
Sisteminizi önyüklediğinizde, birçok kayan yazıyı farkedersiniz. Eğer dikkatlice takip ederseniz, bu yazıların sisteminizi her açtığınızda aynı olduğunu görürsünüz. Bu işlemler dizisinin tamamına açılış dizisi denir ve (az ya da çok) statik olarak belirtilir.
Önce, açılış yöneticisi, ayar dosyasında belirttiğiniz kerneli hafızaya yükler, sonra da işlemciye kerneli çalıştırmasını söyler. Kernel yüklenip çalıştırıldığında, kernele özgü yapı ve görevleri başlatır ve init sürecini çalıştırır.
Bu süreç, daha sonra (/etc/fstab içinde tanımlı) bütün dosya sistemlerinin bağlanıp kullanıma hazır olduğundan emin olur. Sonra da /etc/init.d içinde bulunan, sisteminizin başarılı bir şekilde açılması için gerekli servisleri başlatacak çeşitli betikleri çalıştırır.
Son olarak, bütün betikler çalıştırıldığında, init süreci, agetty adındaki özel süreci bağlayarak terminalleri (genellikle ALT-F1, ALT-F2, ... altındaki sanal konsolları) aktifleştirir. Bu süreç daha sonra login'i çalıştırarak terminallere bağlanabileceğinizden emin olur.
Açılış Betikleri (Init Scripts)
Buradainit , /etc/init.d ,çindeki betikleri rastgele çalıştırmaz. Hatta /etc/init.d içindeki her betiği değil, sadece çalıştırması söylenenleri çalıştırır. Hangi betikleri çalıştırması gerektiğine /etc/runlevels içine bakarak karar verir.
Önce init , /etc/runlevels/boot içinde sembolik bağlantısı olan /etc/init.d betiklerini çalıştırır. Genellikle, betiklere alfabetik sırada başlar, ama bazı betikler bağımlılık bilgisi içerir ve çalışmadan önce başka hangi betiklerin çalıştırılması gerektiğini sisteme söyler.
/etc/runlevels/boot içinde referansı bulunan her betik çalıştırıldıktan sonra init, /etc/runlevels/default içinde sembolik bağlantısı olan betikleri çalıştırır. Tekrar, hangi betiğin önce çalışacağına, düzgün bir başlangıç süreci sağlamak için içerisinde bağımlılık bilgisi içermediği sürece alfabetik sırayı kullanarak karar verir.
Elbette init bunların hepsini kendisi düşünmez. Hangi işlemlerin yapılacağını belirten bir konfigürasyon dosyasına ihtiyaç duyar. Bu konfigürasyon dosyası /etc/inittab'dir.
Eğer size biraz önce açıkladığımız açılış dizisini hatırlarsanız, init'in ilk işi dosya sistemlerini bağlamaktır. Bu, /etc/inittab içindeki şu satır ile belirtilmiştir:
Kod Listeleme 1.1: /etc/inittab içindeki sistem başlangıcı satırı |
si::sysinit:/sbin/rc sysinit |
Bu satır init'e, sistemi başlatmak için /sbin/rc sysinit komutunu çalıştırması gerektiğini söyler. /sbin/rc betiği, başlangıç işlemlerini halleder, bu yüzden init'in çok iş yapmadığını -- sistem başlangıç işlemlerinin yapılması işini başka süreçlere aktarır.
İkinci olarak init, /etc/runlevels/boot içinde sembolik bağlantısı buşunan bütün betikleri çalıştırır. Bu, aşağıdaki satır ile tanımlanmıştır:
Kod Listeleme 1.2: Sistem başlangıcı, devamı |
rc::bootwait:/sbin/rc boot |
Yine rc betiği, gerekli işlemleri gerçekleştirir. Dikkat ederseniz, rc'ye verilen parametre (boot), /etc/runlevels altındaki altdizin ile aynıdır.
Şimdi init, hangi çalışma seviyesinin kullanılacağını görmek için konfigürasyon dosyasını kontrol eder. Buna karar vermek için, /etc/inittab'deki aşağıdaki satırı okur:
Kod Listeleme 1.3: initdefault satırı |
id:3:initdefault: |
Bu durumda (Gentoo kullanıcılarının çoğunun kullanacağı) çalışma seviyesi (runlevel) 3'tür. Bu bilgiyi kullanarak init, 3 numaralı çalışma seviyesi için neyi çalıştırması gerektiğini kontrol eder:
Kod Listeleme 1.4: Çalışma seviyeleri tanımlamaları |
l0:0:wait:/sbin/rc shutdown l1:S1:wait:/sbin/rc single l2:2:wait:/sbin/rc nonetwork l3:3:wait:/sbin/rc default l4:4:wait:/sbin/rc default l5:5:wait:/sbin/rc default l6:6:wait:/sbin/rc reboot |
TSeviye 3'ü tanımlayan satır, servisleri çalıştırmak için tekrar rc betiğini (default argümanını ile) kullanır. Tekrar, rc'nin argümanının /etc/runlevels içindeki altdizin ile aynı olduğuna dikkat edin.
rc bittiğinde, init hangi sanal konsolları aktifleştirmesi ve her konsolda hangi komutları çalıştırması gerektiğine karar verir:
Kod Listeleme 1.5: Sanal konsol tanımlaması |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux c2:12345:respawn:/sbin/agetty 38400 tty2 linux c3:12345:respawn:/sbin/agetty 38400 tty3 linux c4:12345:respawn:/sbin/agetty 38400 tty4 linux c5:12345:respawn:/sbin/agetty 38400 tty5 linux c6:12345:respawn:/sbin/agetty 38400 tty6 linux |
Init'in hangi çalışma seviyesini aktifleştireceğine karar vermesi için bir numaralandırma yöntemi kullandığını gördünüz. Bir çalışma seviyesi, sisteminizin hangi durumda çalıştığıdır ve bir çalışma seviyesine girdiğinizde çalıştırılması gereken betik topluluğunu (çalışma seviyesi betikleri ya da init betikleri) içerir.
Gentoo'da, yedi çalışma seviyesi tanımlanmıştır: üç dahili çalışma seviyesi ve dört kullanıcı tanımlı çalışma seviyesi. Dahili çalışma seviyeleri sysinit, shutdown ve reboot'tur ve isimlerinin ima ettiği işleri yaparlar: sistemi başlat, sistemi kapat, sistemi yeniden başlat.
Kullanıcı tanımlı çalışma seviyeleri de /etc/runlevels içinde altdizini bulunan boot, default, nonetwork ve single'dır. boot çalışma seviyesi, diğer tüm çalışma seviyelerinin kullandığı, sisteme gereken tüm servisleri çalıştırır. Geri kalan üç çalışma seviyesi de, çalıştırdıkları servislere göre farklılık gösterirler: default, günlük yapılan işler için kullanılır; nonetwork, ağ bağlantısı gerekmediğinde kullanılır; single ise sistemi onarmak istediğinizde kullanılır.
rc sürecinin başlattığı betiklere init betikleri denir. /etc/init.d içindeki her betik start, stop, restart, pause, zap, status, ineed, iuse, needsme, usesme veya broken argümanları ile çalıştırılabilir.
Bir servisi (ve bağlı tüm servisleri) başlatmak, durdurmak ya da yeniden başlatmak için, start, stop ve restart kullanılır:
Kod Listeleme 1.6: Postfix'i başlatma |
# /etc/init.d/postfix start
|
Not: Sadece belirtilen servise ihtiyaç duyan servisler durdurulur yada yeniden başlatılır. Diğer bağımlı servislere (servisi kullanan ama ihtiyaç duymayanlara) dokunulmaz. |
Eğer bir servisi durdurmak istiyorsanız, ama ona bağlı servisleri durdurmak istemiyorsanız, pause argümanını kullanabilirsiniz:
Kod Listeleme 1.7: Postfix'i durdurma ve bağlı servisleri çalışır durumda bırakma |
# /etc/init.d/postfix pause
|
Eğer bir servisin durumunu öğrenmek istiyorsanız (başlamış, durmuş, bekletilmiş), status argümanını kullanabilirsiniz:
Kod Listeleme 1.8: Postfix'in durum bilgisi |
# /etc/init.d/postfix status
|
Eğer durum bilgisi size servisin çalıştığını gösteriyorsa, ancak öyle olmadığını biliyorsanız, servisin durum bilgisini zap argümanı ile "durdurulmuş" konuma sıfırlayabilirsiniz:
Kod Listeleme 1.9: Postfix'in durum bilgisini sıfırlama |
# /etc/init.d/postfix zap
|
Servisin hangi bağımlılıklara sahip olduğunu öğrenmek için iuse ve ineed argümanlarını kullanabilirsiniz. ineed ile servisin çalışması için hangi servislerin bulunması gerektiğini görebilirsiniz. Diğer taraftan, iuse ile servis tarafından kullanılabilen, ancak çalışması için bulunması zorunlu olmayan servislerin listesini görebilirsiniz.
Kod Listeleme 1.10: Postfix'in ihtiyaç duyduğu servislerin listesini isteme |
# /etc/init.d/postfix ineed
|
Benzer olarak, servise ihtiyaç duyan servislerin (needsme) ve servisi kullanabilen servislerin (usesme) listesini öğrenebilirsiniz:
Kod Listeleme 1.11: Postfix'e ihtiyaç duyan servislerin listesini isteme |
# /etc/init.d/postfix needsme
|
Son olarak, servis için gerekli olan kayıp servislerin listesini de öğrenebilirsiniz:
Kod Listeleme 1.12: Postfix'in ihtiyaç duyduğu kayıp servislerin listesini isteme |
# /etc/init.d/postfix broken
|
Gentoo'nun init sistemi hangi servislerin önce çalıştırılması gerektiğine karar veren bir bağımlılık ağacı kullanır. Bu can sıkıcı iş yüzünden kullanıcılarımızın bunu el ile yapmalarını istemiyorduk, çalışma seviyeleri ve init betiklerinin yönetimini kolaylaştırmak için bazı araçlar hazırladık.
rc-update sayesinde, bir çalışma seviyesine init betiği ekleyip çıkarabilirsiniz. Sonra rc-update aracı otomatik olarak depscan.sh betiğinden bağımlılık ağacını oluşturmasını ister.
Daha önce, Gentoo kurulumu sırasında init betiklerini "default" çalışma seviyesine eklediniz. O zamanda, "default"un ne için olduğu hakkında bilginiz yoktu, ama şimdi olmalı. rc-update betiği bir argümana ihtiyaç duyar: add (eklemek için), del (silmek için) veya show (göstermek için).
Init betiği eklemek ya da çıkarmak için, rc-updatekomutuna add veya del argümanlarını verin, ardından init betiğini ve çalışma seviyesini yazın. Mesela:
Kod Listeleme 2.1: default çalışma seviyesinden Postfix'i çıkarma |
# rc-update del postfix default
|
rc-update show komutu size bütün init betiklerini ve hangi çalışma seviyesinde çalıştıklarını gösterir:
Kod Listeleme 2.2: Init betiği bilgisini alma |
# rc-update show
|
Fazladan Ayarlamaya Olan İhtiyaç Neden?
Init betikleri oldukça karmaşık olabilir. Bu yüzden kullanıcıların init betiklerini doğrudan düzenlemesi çekici olmayabilir, ayrıca betikleri hata eğilimli hale getirebilir. Bununla beraber, herhangi bir servis ayarlamasını yapabilmek önemlidir. Mesela bir servisin kendisine daha fazla opsiyon eklemek isteyebilirsiniz.
Bu konfigürasyonu init betiğinin dışından yapmak için ikinici bir sebep, konfigürasyon değişikliklerinizin yapılmamış olmasından korkmadan güncelleme yapabilmektir.
Gentoo, bir servisi konfigüre etmek için kolay bir yol sunar: konfigüre edilebilen her init betiği /etc/conf.d içinde bir dosyaya sahiptir. Mesela, apache2 init betiği (/etc/init.d/apache2), Apache 2 sunucusu başlatılırken verilecek opsiyonları içeren /etc/conf.d/apache2 içinde bir konfigürasyon dosyasına sahiptir:
Kod Listeleme 3.1: /etc/conf.d/apache2 içinde tanımlanmış değişken |
APACHE2_OPTS="-D PHP4" |
Böyle bir konfigürasyon dosyası değişkenleri ve yalnız olan değişkenleri (tıpkı /etc/make.conf gibi) içerir, servisleri konfigüre etmeyi çok kolay hale getirir. Ayrıca (yorumlar ile) değişkenler hakkında daha fazla bilgi vermeyi de sağlar.
Hayır. Gentoo, sunulan servisler için kullanıma hazır init betikleri sunduğundan, init betikleri yazmak çoğu zaman gerekli değildir. Ancak, Portage kullanmadan bir servis kurduğunuzda, muhtemelen kendi init betiğinizi yaratmanız gerekebilir.
Açık şekilde Gentoo için yazılmamışsa, bir servis ile sunulan init betiğini kullanmayın: Gentoo'nun init betikleri diğer dağıtımların kullandığı init betikleri ile uyumlu değildir!
Bir init betiğinin temel yapısı aşağıda gösterilmiştir:
Kod Listeleme 4.1: Bir init betiğinin temel yapısı |
#!/sbin/runscript
depend() {
(Dependency information)
}
start() {
(Commands necessary to start the service)
}
stop() {
(Commands necessary to stop the service)
}
restart() {
(Commands necessary to restart the service)
}
|
Her init betiğinde start() fonksiyonunun tanımlı olması gerekir. Diğerleri ihtiyaca göre değişebilir.
Tanımlayabileceğiniz iki bağımlılık vardır: use ve need. Daha önce belirttiğimiz gibi, need bağımlılığı use bağımlılığından daha katıdır. Bu bağımlılık tipini takip ederek, bağımlı olduğunuz servise, ya da sanal bağımlılığa girersiniz.
Sanal bağımlılık, bir servisin sağladığı, ancak yalnızca o servis tarafından sağlanmayan bir bağımlılıktır. Sizin init betiğiniz sistem kayıt edicisine bağlı olabilir, ancak pek çok sistem kayıt edicisi (metalogd, syslog-ng, sysklodg, ...) vardır. Her birine tek tek ihtiyaç duymayacağınız (need) için (hiçbir mantıklı sistemde bütün bu sistem kayıt edicilerin hepsi yüklü ve çalışır durumda değildir), biz bütün bu servislerin sanal bağımlılık sağladığından (provide) emin olduk.
Postfix servisine ait bağımlılık bilgisine bakalım:
Kod Listeleme 4.2: Postfix için bağımlılık bilgisi |
depend() {
need net
use logger dns
provide mta
}
|
Gördüğünüz gibi, postfix servisi:
Birçok durumda, bir servise ihtiyaç duymazsınız ama servisinizin, bu servis sisteminizde varsa, ondan önce (before) ya da sonra (after) çalışması gerekebilir (şarta dikkat edin - bu artık bağımlılık değildir), ve aynı çalışma seviyesinde çalışır (şarta dikkat edin - sadece aynı çalışma seviyesindeki servisler birbirine bağlanabilir). Bu bilgiyi before ve after ayarları ile sağlayabilirsiniz.
Örnek olarak Portmap servisinin ayarlarına bakalım:
Kod Listeleme 4.3: Portmap servisinin depend() fonksiyonu |
depend() {
need net
before inetd
before xinetd
}
|
Ayrıca "*" işaretini kullanarak çalışma seviyesindeki tüm servisleri temsil edebilirsiniz, ancak bu tavsiye edilmez.
Kod Listeleme 4.4: Bir init betiğini çalışma seviyesinde ilk çalıştırma |
depend() {
before *
}
|
depend() işlevselliğinden sonra, bir de start() fonksiyonunu tanımlamalısınız. Bu, servisinizi başlatmak için gerekli tüm komutları içerir. ebegin ve eend fonksiyonlarını kullanarak kullanıcıya ne olup bittiği konusunda bilgilendirmek tavsiye edilir:
Kod Listeleme 4.5: Örnek start() fonksiyonu |
start() {
ebegin "Starting my_service"
start-stop-daemon --start --quiet --exec /path/to/my_service
eend $?
}
|
Eğer start() fonksiyonu ile ilgili daha fazla örnek görmek istiyorsanız, lütfen /etc/init.d dizininizdeki init betiklerinin kaynak kodlarını okuyun. Daha fazla bilgiye ihtiyaç duyarsanız, start-stop-daemon için mükemmel bir klavuz sayfası (man sayfası) bulunmaktadır:
Kod Listeleme 4.6: start-stop-daemon hakkındaki man sayfasını okuma |
# man start-stop-daemon
|
Tanımlayabileceğiniz diğer fonksiyonlar şunlardır: stop() ve restart(). Bu fonksiyonları tanımlamaya zorlanmamaktasınız! Bizim init sistemimiz bu fonksiyonları kendisi dolduracak kadar zekidir, tabi start-stop-daemon kullanırsanız.
Eğer kendi init betiklerinizin, daha önce karşılaştığımız seçeneklerden daha fazlasını desteklemesini istiyorsanız, istediğiniz seçeneği opts değişkenine eklemeli, ve aynı isimde bir fonksiyon yaramalısınız. Örneğin, restartdelay adında bir seçenek eklemek için:
Kod Listeleme 4.7: restartdelay seçeneğini ekleme |
opts="${opts} restartdelay"
restartdelay() {
stop()
sleep 3 # Başlatmadan önce 3 saniye bekle
start()
}
|
/etc/conf.d içinde bir konfigürasyon dosyası kullanmak için yapmanız gereken ek birşey yoktur. Init betiğiniz çalıştırıldığında, aşağıdaki dosyalar otomatik olarak okunur (örneğin kullanılabilir değişkenler):
Ayrıca, eğer init betiğiniz sanal bir bağımlılık ( net gibi), ağlıyorsa, ilişkilendirilen bağımlılığa ait konfigürasyon da (/etc/conf.d/net gibi) okunur.
5.e. Çalışma Seviyesi Davranışını Değiştirme
Birçok dizüstü bilgisayar kullanıcısı bu durumu bilir: evdeyken net.eth0 'ı çalıştırmanız gerekir, ancak yoldayken (mevcut bir ağ olmadığında)net.eth0 'ı çalıştırmanız gerekmez. Gentoo ile, çalışma seviyesi davranışını isteğinize göre değiştirebilirsiniz.
Örneğin, başka init betiklerinin bulunduğu ikinci bir "default" çalışma seviyesi yaratabilirsiniz. Açılış anında hangisini çalıştıracağınızı seçebilirsiniz.
Herşeyden önce, ikinci "default" çalışma seviyeniz için bir dizin yaratın. Örnek olarak offline çalışma seviyesi yaratalım:
Kod Listeleme 5.1: Çalışma seviyesi dizini yaratma |
# mkdir /etc/runlevels/offline
|
Gerekli init betiklerini yeni yaratılan çalışma seviyesine ekleyin. Mesela, mevcut default çalışma seviyenizin net.eth0'ı içermeyen bir kopyasını yaratmak istiyorsanız:
Kod Listeleme 5.2: Gerekli init betiklerini ekleme |
# ls /etc/runlevels/default acpid domainname local net.eth0 netmount postfix syslog-ng vcron # rc-update add acpid offline # rc-update add domainname offline # rc-update add local offline # rc-update add syslog-ng offline # rc-update add vixie-cron offline |
Şimdi açılış yöneticinizin ayarlarını değiştirerek, offline çalışma seviyesi için bir kayıt ekleyin. Örneğin /boot/grub/grub.conf dosyasının içine:
Kod Listeleme 5.3: offline çalışma seviyesi için bir kayıt ekleme |
title Gentoo Linux Offline Usage
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
İşte yaptınız. Eğer sisteminizi açarken yeni eklediğiniz kaydı seçerseniz, default çalışma seviyesi yerine offline çalışma seviyesi kullanılır.
bootlevel kullanmak softlevel kullanmaya çok benzer. ek fark, ikinci "default" çalışma seviyesi tanımlamak yerine ikinci "boot" çalışma seviyesi tanımlamanızdır.
Ortam değişkenleri , bir veya daha çok uygulamanın kullandığı bilgiyi saklayan isimlendirilmiş nesnelerdir. Birçok kullanıcı (özellikle Linux'a yeni olanlar) bunu garip ve kullanışsız bulabilir. Fakat bu yanlış : ortam değişkenleri yardımıyla bir veya daha çok uygulamanın ayarı çok kolay değiştirilebilir.
Aşağıdaki tabloda Linuxta kullanılan birçok değişkenin ismi ve ne işe yaradıkları yazıyor. Örnek değerler tablodan sonra veriliyor.
| Değişken | Açıklama |
| PATH | Sistemin çalıştırılabilir dosyalar için bakacağı yerlerin listesi , iki nokta üstüste ile ayrılmış şekilde burada saklanır. Eğer bir komut verirseniz (mesela ls, rc-update veya emerge) ve bu komut listelenmiş dizinlerin hiçbirinde mevcut değilse , sistem bunu çalıştırmaz. (/bin/ls gibi tam yolu yazmadığınız sürece) |
| ROOTPATH | Bu değişken de PATH gibidir fakat sadece root olan kullanıcı bir komut verdiğinde bakılacak dizinleri içerir. |
| LDPATH | Bu değişken dinamik linker'in bir kütüphaneyi bulmak için bakacağı dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar. |
| MANPATH | Man komutunun man dosyaları için bakacağı yerlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar. |
| INFODIR | Info komutunun info dosyaları için bakacağı yerlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar. |
| PAGER | Bu değişkende dosya içeriklerinin gösterilmesi için kullanılacak programların (less ve more gibi) yerleri saklanır. |
| EDITOR | Dosya içeriklerinin değiştirilmesi için kullanılacak programların (nano ve vi gibi) yerleri bu değişkende saklanır. |
| KDEDIRS | KDE'ye ait şeylerin olduğu dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde saklar. |
| CLASSPATH | ava Class(sınıf)larının olduğu dizinlerin listesini iki nokta üstüste ile ayrılmış biçimde içerir. |
| CONFIG_PROTECT | Portage ile güncelleme yapılırken korunması gereken dizinlerin adreslerini "boşluk-ters kesme" işaretleriyle ayrılmış biçimde saklar. |
| CONFIG_PROTECT_MASK | Portagela güncelleme yapılırken korunması gerekmeyen dizinlerin adreslerini "boşluk-ters kesme" işaretleriyle ayrılmış biçimde saklar. |
Aşağıda , tüm bu değişkenler için örnek tanımlamaları bulabilirsiniz:
Kod Listeleme 1.1: Örnek Tanımlamar |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf
|
6.b. Değişkenleri Global olarak tanımlamak
Değişkenlerin tanımlarının bir merkezde toplanması için Gentoo , /etc/env.d dizinini yarattı. Bu dizinde 00basic, 05gcc vb. gibi isimlerinde belirtilen uygulama için gerekli olan değişkenleri taşıyan dosyaları bulabilirsiniz. Örneğin gcc 'yi kurduğunuzda ; ismi 05gcc olan ve aşağıdaki değişkenleri taşıyan bir dosya , ebuild tarafından yaratılır:
Kod Listeleme 2.1: /etc/conf.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" |
Diğer dağıtımlar sizden /etc/profile veya başka yerlerdeki ortam değişkeni tanımlarını değiştirmenizi isterler. Fakat Gentoo , ortam değişkenlerini taşıyan birçok dosya ile uğraşılmasını engelleyerek , hem bu değişkenlerin bakımını hemde yönetimini sizin (ve Portage) için çok kolaylaştırıyor.
Örneğin gcc güncellendiğinde , hiçbir kullanıcı müdahalesine gerek kalmadan /etc/env.d/05gcc dosyasıda güncelleniyor. Bu sadece Portage'a değil ama bir kullanıcı olarak size de yarar sağlıyor. Bazen bir değişkeni sistem çapında ayarlamanız istenebilir. Mesela http_proxy değişkenini ele alalım. /etc/profile ile uğraşmaktansa artık sadece bir dosya (/etc/env.d/99local) yaratıp tanımlamaları onun içine girebilirsiniz :
Kod Listeleme 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080" |
Tüm değişkenler için aynı dosyayı kullanarak , kendi tanımladıklarınıza kolayca bakabilirsiniz.
/etc/env.d dizinindeki bazı dosyalar PATH değişkenini belirler. env-update çalıştırıldığında ortam değişkenlerini güncellemeden önce , bazı tanımalamarı eklemek suretiyle varolan değişkenleri ellemeden kendininkileri eklemeyi , paketler (veya kullanıcılar) için daha kolay hale gertiriyor. env-update scripti , değerleri /etc/env.d deki dosyaların alfabetik sıralamasına göre ekler. İşte bu yüzden , /etc/env.d deki birçok dosyanın adı bir rakamla başlar.
Kod Listeleme 2.3: env-update 'in güncelleme sırası |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
env-update çalıştırıldığında , tüm ortam değişkenleri oluşturulup /etc/profile.env (/etc/profile tarafındanda kullanılan) dosyasına konulur. Ayrıca LDPATH değişkenindeki bilgiler okunup /etc/ld.so.conf dosyasının oluşturulmasında kullanılır.Bundan sonra , dinamik linker tarafından kullanılan /etc/ld.so.cache dosyasının oluşturulması için ldconfig çalıştırılır.
Eğer env-update komutunun etkilerini çalıştırdıktan hemen sonra görmek istiyorsanız , ortamı güncellemek için aşağıdaki komutu kullanın. Gentoo'yu kendileri kuran kullanıcılar bu komutu hatırlayacaklardır :
Kod Listeleme 2.4: Ortam değişkenlerini güncellemek |
# env-update && source /etc/profile
|
6.c. Değişkenleri Yerel Olarak Tanımlamak
Bir değişkeni her zaman global olarak tanımlamak istemeyebilirsiniz. Örneğin , /home/kullanici/bin dizinini PATH'e ekleyip sistemdeki diğer kullanıcıların PATH değişkenlerinde bunun olmasını istemiyor olabilirsiniz. Bir değişkeni yerel olarak tanımlamak istiyorsanız ~/.bashrc veya ~/.bash_profile dosyalarını kullanmalısınız( ~ işareti /home/kullanıcı_ismi dizinine eşittir) :
Kod Listeleme 3.1: Yerel kullanım için PATH değişkenini ~/.bashrc de genişletmek |
PATH="${PATH}:/home/kullanıcı_ismi/bin"
|
Kullanıcı ile tekrar giriş yaptığınızda PATH değişkeni güncellenmiş olur.
Bazen çok daha sıkı tanımlamalar istenebilir. Birkaç dakikalığına ihtiyacınız olan binaryleri ~/.bashrc dosyasını değiştirmeden veya gerçek binaryleri kullanmadan , geçici bir dizinden çalıştırmak isteyebilirsiniz.
Bu durumda export komutuyla , sadece geçerli oturumdaki PATH değişkenini tanımlayabilirsiniz. Çıkış yapmadığınız sürece , geçici PATH değişkeni geçerliliğini sürdürür.
Kod Listeleme 3.2: Oturuma özel bir ortam değişkeni tanımlamak |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
Bu belgenin içeriği Creative Commons Attribution / Share Alike altında lisanslanmıştır