Yerel Debian Deposu Oluşturmak

Debian Türkiye sitesinden

Melen (Mesaj | katkılar) tarafından oluşturulmuş 12:30, 14 Mayıs 2008 tarihli sürüm (Yeni sayfa: Yerel ağınızda veya diskinizde debian yansısı oluşturmak için kullanılabilecek iki yöntem örneklerle izah edilmeye çalışılmıştır. Yerel Debian Deposu Oluşturmak (Yere...)

(fark) ← Önceki hâli | en güncel halini göster (fark) | Sonraki hâli → (fark)

Yerel ağınızda veya diskinizde debian yansısı oluşturmak için kullanılabilecek iki yöntem örneklerle izah edilmeye çalışılmıştır.

Yerel Debian Deposu Oluşturmak

(Yerel Debian Yansısı) Yazan : Serdar Aytekin - serdar~aytekin.web.tr Versiyon : 1.0.0 Son Güncellenme Tarihi : 07 -12-2004

Güncelleme :

Yerel yansılama için debmirror aracını kullanan bir betik eklendi. 07-12-2004

Giriş :

Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan -son sürümdeki- lisans içeriğine bağlı kalmak koşulu ile aynen yada kısmen dağıtılabilir, yayınlanabilir.

Bu belgenin son sürümüne;

http://www.serdaraytekin.com/docs/os/debian/debian-local-repository.html adresinden ulaşabilirsiniz.

Yerel Debian Depo'su Oluşturmak :

Yerel debian yansısı oluşturulması hususunda birbirine çok yakın, aynı işi gören iki yöntemi izah etmeye çalışacağım.

Birinci yöntem debian'ın standart dizin yapısına uygun şekilde depo oluşturmak ki bunu debian'ın resmi depolarının yapısının aynısın sizin diskinize taşınmış hali olarak düşünebilirsiniz.

İkinci yöntem ise, elinizdeki tüm .deb paketlerini bir dizin içinde (dizin, mimari gözetmeksizin) veya dizin, mimari yapısı gözeterek yukarıdaki standartlardan çok az bir sapma ile oluşturulacak yerel depo olacak.

Aslında en temel farklılık, birincisinde apt-ftparchive, diğerinde ise dpkg-scanpackages ve dpkg-scansources kullanılması. Her iki yöntemde de istenilirse standartlara uygun yapı oluşturulabilir. Sadece apt-ftparchive yöntemi buna bizi biraz daha zorluyor. Daha iyi anlaşılabilmesi isin ilgili kısımlara göz atınız.

Debian Standartlarına En Uygun Şekilde Yerel Depoyu Oluşturmak:

Elimizde Sarge'ye veya başka bir Debian sürümüne ait kurulum cd'lerinin bulunduğunu, ve bunları yerel ağımızdaki bir makineye veya kendi makinemizdeki diskimize aktararak yerel depomuzu oluşturmak istediğimizi farzedelim.

İlk önce bize depoluk yapacak dizinimizi oluşturalım, bu dizin "/depo" olsun (bu dizini dilediğiniz yerde ve dilediğiniz isimle açabilirsiniz).

   * mkdir /depo

aktarmak istediğimiz cd'yi sürücüye takıp, mount edelim.

   * mount /dev/cdrom /cdrom

Aktarma işlemi için ben rsync'yi tercih edeceğim, elinizdeki cd'ler resmi cd'ler değil veya belli bir düzende oluşturulmuş cd'ler değilse rsync kullanmanız size elinizdeki diğer disklerde de olabilecek aynı dosyaların hızlıca göz ardı edilmesini sağlar. Bu tür işlemler için rsync uygun bir araç olmakla birlikte, siz dilerseniz bu işlemi normal "cp" komutu ilede yapabilirsiniz.

   * apt-get install rsync

ile rsync'i kuralım. Daha sonra aşağıdaki komut ile /cdrom/ içindeki dists dizinini /depo/ içerisine taşıyalım.

   * rsync -avz /cdrom/dists /depo

Bu işlem bir miktar sürecek, bu işlem sonucunda "/depo/" dizini içerisine "/cdrom/dists" dizini taşınmış olacak. Dilerseniz bu işlemi şu şekilde de yapabilirsiniz.

   * cp -rf /cdrom/dists/ /depo/

Şimdide benzer şekilde "/cdrom/pool" dizinini "/depo" içerisine kopyalayalım.

   * rsync -avz /cdrom/pool /depo

rsync tercih etmiyorsanız,

   * cp -rf /cdrom/pool/ /depo/

Elinizdeki diğer cd'leri aynı şekilde aktarabilirsiniz. Aktarma işlemini tamamlamışşanız sırada paket listesinin elde edilmesi var.

   * cd /depo
   * apt-ftparchive packages dists/sarge/main/binary-i386/ | gzip -9c > dists/sarge/main/binary-i386/Packages.gz

Yukarıdaki satırda koyu renkle işretlenmiş kısımlara dikkat ediniz. "/depo/dists" dizini içerisinde sarge sürümünün "main" bölümündeki "i386" mimarisine ait "binary" dosyaların "Packages.gz" dosyası oluşturuluyor.

contrib ve non-free dizinleri için de benzer işlemi yapmak durumundayız;

   * apt-ftparchive packages dists/sarge/contrib/binary-i386/ | gzip -9c > dists/sarge/contrib/binary-i386/Packages.gz
   * apt-ftparchive packages dists/sarge/non-free/binary-i386/ | gzip -9c > dists/sarge/non-free/binary-i386/Packages.gz

Şayet "source" dizinleri varsa (kaynak kodlarıda aktarmışşak) , o dizinler içinde "Sources.gz" dosyasını oluşturacağız.

   * apt-ftparchive packages dists/sarge/main/source/ | gzip -9c > dists/sarge/main/source/Sources.gz
   * apt-ftparchive packages dists/sarge/contrib/source/ | gzip -9c > dists/sarge/contrib/source/Sources.gz
   * apt-ftparchive packages dists/sarge/non-free/source/ | gzip -9c > dists/sarge/non-free/source/Sources.gz

apt-archive.conf dosyası :

/depo/ içerisinde apt-ftparchive.conf dosyası oluşturup, aşağıdakine benzer şekilde düzenleyeceğiz. DIR { ArchiveDir "/depo"; } TREEDEFAULT { BinCacheDB "/depo/cache.db"; } TREE "dists/sarge" { Sections "main contrib non-free"; Architectures "i386 source"; }

Şimdi cache.db yi oluşturmaya geldi sıra,

   * cd /depo
   * apt-ftparchive generate apt-ftparchive.conf

Şayet yukarıdaki "apt-ftparchive.conf" dosyanızda bir hata varsa, bu komutu uygulayınca hatalarınızı da görebilirsiniz. apt-ftparchive.conf dosyasında, düzeltimesi, eklenilmesi veya çıkarılması gereken kısım varsa kolayca farkedebilirsiniz.

/etc/apt/sources.list tanımı :

Yukarıdaki işlemler başarıyla sonuçlanmışsa mutlu sona az kaldı demektir, /etc/apt/sources.list dosyanıza;

deb file:/depo sarge main contrib non-free

  1. kaynak (source) paketleri için;

deb-src file:/depo sarge main contrib non-free

kaydını girip;

"apt-get update" demeyi unutmayın. Şimdi kullanma zamanı :)

Yerel Depomuzdaki Paketleri Güncel Tutmak :

Bir müddet sonra /depo dizinindeki dosyaları internet üzerinden güncellemek isterseniz, "rsync" en yardımcı dostunuz olacaktır. Ayrıca debmirror aracı ile yapılabileceklere göz atmanızı tavsiye ederim.

   * cd /depo
   * rsync -avz ftp.tr.debian.org::debian/dists/ ./ ( aşağıdaki açıklamaları okumadan denemeyin :) )

gibi bir komut işlemi başlatmaya yetecektir ancak, yukarıdaki işlem ftp://ftp.tr.debian.org/debian/dists/ dizinindekilerin sizin diskinize doğru akması demektir ki, diskiniz ve bağlatı hızınız yeterlimidir bilemiyorum tabi. Çünkü bu yukarıdaki işlem tüm mimarideki paketlerin yansılanması demek. Sizin için i386 dışındaki mimarilerin yansılanmaması gerekebilir. Şayet bu şekilde deponuzu güncel tutmak gibi bir düşünceniz varsa, http://www.debian.org/mirror/ftpmirror adresine ve rsync kullanımına göz atmanız gerekecek.

Diğer bir alternatif de debmirror ile yansılama işlemi yapmak. Bu biraz daha basit ve zahmetsiz. Debmirror ile i386 mimarisine ait stable, testing ve unstable depoların yansılanması işlemini yapan hazır bir betik bulup bunu çok az bir değişiklikle biraz daha genel hale getirdim. Bu betiğe http://www.serdaraytekin.com/docs/os/debian/scripts/mirror adresinden ulaşabilirsiniz.

Standartlara Çok Bağlı Kalmadan Biraz Daha Özelleştirilmiş Depo Oluşturmak :

Bu işlem yukarıdakine göre çok daha kolay ve zahmetsiz, ancak bu yöntemde oluşturduğunuz yapıya göre, güncel tutulamama gibi bir dezavantaj olabilir (yapıya göre farklılık arz eder, böyle bir dezavantajı siz ortadan kaldırmış da olabilirsiniz). Yinede en doğru seçim, her iki yöntemide inceleyip sisteminiz için en uygununu bulmak olacaktır. Bu iki farklı depo oluşturma uygulamasının, sizin kullanmak istediğiniz yere göre, birbirine tercih edilecebileceği durumlar olacaktır.

Yanlış anlaşılmaması gereken bir husus varki; bu yöntem ilede debian standartlarına uygun şekilde yapı kurabilmek mümkün ancak apt-ftparchive yöntemine nazaran daha özelleştirilebilir bir yapısı var. Öte yandan yazının başında da ifade etmeye çalıştığım gibi apt-ftparchive, standartlara uyma açısından bizi biraz daha zorluyor ve bunu daha uygun hale getiriyor denilebilir.

Yine depomuzu hangi dizinde oluşturacağımızı belirleyip, ilgili dizini oluşturuyoruz.

   * mkdir /depo

Birde /depo/ içinde "debs/binary" ve "debs/source" diye bir yapı oluşturup, daha düzgün bir yapı olmasını sağlayalım.

   * mkdir /depo/debs

Hepsi aynı sürüme ait olmak üzere, elinizdeki cd'lerdeki tüm binary .deb paketlerini /depo/debs/ içerisine aktarın. Sonra Packages.gz dosyasını oluşturacağız.

   * cd /depo
   * dpkg-scanpackages debs /dev/null | gzip -9c > debs/Packages.gz

Şayet kullanıyorsanız, source paketleri için /depo/debs içerisinde "source" diye bir dizin oluşturup, onunla ilgili paketleri ayırabilirsiniz. Yada yine aynı dizine *.dsc, *.diff.gz ve *.orig.tar.gz paketlerini aktarabilirsiz. Aynı dizini kullandığınızı varsayarak;

   * cd /depo
   * dpkg-scansources debs /dev/null | gzip -9c > debs/Sources.gz (Bu defa dpkg-scansources kullandığımıza dikkat ediniz.)

ile Sources.gz listesini oluşturuyoruz.

/etc/apt/sources.list dosyamıza ilgili depo'yu belirtip kullanmak kalıyor.

deb file:/depo debs/

  1. kaynak paketleri için;

deb-src file:/depo debs/

"apt-get update" ile index'imizi oluşturup kullanabiliriz.

Pool Dizinlerini Komple Diske Aktarmak :

Yukarıdaki işlemi, biraz daha hiyerarşiye uygun olarak yapmak isterseniz, "/depo/debs/" içerisinde de muhtelif dizinler oluşturarak daha uygun ve anlaşılır bir yapı oluşturabilirsiniz.

Elinizdeki cd'lerin "pool" dizinlerini "/depo/" içerisine cp ile veya rsync ile taşıyabilir ve yine Packages.gz yi oluşturmak süretiyle kullanabilirsiniz. Örnek olarak;

   * mount /dev/cdrom /cdrom
   * rsync -avz /cdrom/pool /depo

veya;

   * cp -rf /cdrom/pool/ /depo/ (yukarıdaki rsync yerine)
   * cd /depo
   * dpkg-scanpackages pool /dev/null | gzip -9c > pool/Packages.gz

Bunu /etc/apt/sources.list'de belirtmek için; deb file:/depo pool/

"apt-get update" ile index'imizi oluşturup kullanabiliriz.Görüldüğü üzere, son yapı biraz daha esnek ve özelleştirilebilir. İlk yapıda debian standartlarına bağımlılık daha ön planda tutulduğu için onun yapısı çok az farklılık arz ediyor. Tercih sizin.

Son yöntem ile ilgili kafanıza takılanlar veya biraz daha detay bilgi için göz atılması gereken ilk kaynak;

http://www.debian.org/doc/manuals/repository-howto/repository-howto.html

Ayrıca Apt-Nasıl belgesindeki "APT'nin yerel olarak kullanımı" kısmına bakabilirsiniz. İlgili bölüme buradan da ulaşabilirsiniz.