Internet Erişimi Olmayan Debian Makinemizi Güncel Tutabilmek

(Offline Apt)

Yazan : Serdar Aytekin - serdar~aytekin.web.tr
Versiyon : 1.0.0
Son Güncellenme Tarihi : 31-10-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-up-to-date.html adresinden ulaşabilirsiniz.

Uyarı :

Belgede verilen örneklerin Testing Sürüm için olduğuna dikkat ediniz. Örnekleri kendi sisteminiz için uygun hale getirerek deneyiniz.

Amaç :

Özellikle yeterli hızda ve sürekli bir internet erişimine sahip olmayan ev kullanıcıları için sistemi en azından belli aralıklarla güncel tutabilmenin yöntemleri üzerinde durulacak.

Hem evde hem işyerinde Debian Gnu/Linux kullanıyor olalım. Ayrıca, evimizde yeterli hızda bir internet erişiminin hatta hiçbir şekilde internet erişiminin olmadığını, fakat işyerimizdeki makinemizde (veya bizimle aynı sürüme sahip debian kullanan bir arkadaşımızın) yeterli ve sürekli internet erişimimizin olduğu durumu ele alıp çözüm yöntemleri üzerinde duracağız.

Bu belgenin konusu "Jigdo (Jigsaw Download)" konulu belge ile bire-bir örtüşmekte ve birbirini tamamlamaktadır. Bu bakımdan söz konusu belgeye de buradan erişip göz atmanızı tavsiye ederim.

İki adımda yapılacak işlemleri özetlemeye çalışalım.

1. Adım :

apt-get update ile oluşturduğumuz, sources.list'deki apt kaynaklarına bağlı olarak oluşan index dosyaları "/var/lib/apt/lists/" altında yer alır. Buradaki dosyalarımız ne kadar güncel ise sources.list dosyamız ile oluşturduğumuz index o kadar güncel demekdir.

Öyleyse, işe ilk önce internet bağlantısı olmayan veya yeterli hızda ve süreklilikte olmayan makinedeki "/var/lib/apt/lists/" dosyaları güncel hale getireceğiz. Şayet az seviyede de olsa internet bağlantımız varsa sources.list dosyamızı kullandığımız sisteme uygun hale getirip internet üzerindeki apt kaynaklarından, "apt-get update" ile güncelleme yapabiliriz.

Mesela Testing sürüme sahip bir makinede /etc/apt/sources.list dosyamızın aşağıdaki şekilde veya benzeri şekilde olması uygun olabilir.

deb http://security.debian.org testing/updates main contrib non-free

deb http://ftp.tr.debian.org/debian testing main contrib
deb http://ftp.tr.debian.org/debian-non-US testing/non-US main contrib non-free

Şayet hiç bir şekilde internet bağlantımız yoksa, B-planını uygulamaya geçireceğiz :) ve kullandığımız sistem için gerekli son index bilgilerini içeren dosyaları bir şekilde (usb disk, cdrom vb.) sistemimize taşıyacağız. Peki bu dosyalar neler? Yine Testing sürüm için aşağıdaki veya kullanılan apt kaynağının ismine göre değişebilecek dosyalar şunlar (/var/lib/apt/lists/):

ftp.tr.debian.org_debian_dists_testing_contrib_binary-i386_Packages
ftp.tr.debian.org_debian_dists_testing_contrib_binary-i386_Release


ftp.tr.debian.org_debian_dists_testing_contrib_source_Release
ftp.tr.debian.org_debian_dists_testing_contrib_source_Sources

ftp.tr.debian.org_debian_dists_testing_main_binary-i386_Packages
ftp.tr.debian.org_debian_dists_testing_main_binary-i386_Release

ftp.tr.debian.org_debian_dists_testing_non-free_binary-i386_Packages
ftp.tr.debian.org_debian_dists_testing_non-free_binary-i386_Release

ftp.tr.debian.org_debian-non-US_dists_testing_non-US_contrib_binary-i386_Packages
ftp.tr.debian.org_debian-non-US_dists_testing_non-US_contrib_binary-i386_Release


ftp.tr.debian.org_debian-non-US_dists_testing_non-US_main_binary-i386_Packages
ftp.tr.debian.org_debian-non-US_dists_testing_non-US_main_binary-i386_Release

ftp.tr.debian.org_debian-non-US_dists_testing_non-US_non-free_binary-i386_Packages
ftp.tr.debian.org_debian-non-US_dists_testing_non-US_non-free_binary-i386_Release

security.debian.org_dists_testing_updates_contrib_binary-i386_Packages
security.debian.org_dists_testing_updates_contrib_binary-i386_Release

security.debian.org_dists_testing_updates_main_binary-i386_Packages
security.debian.org_dists_testing_updates_main_binary-i386_Release

security.debian.org_dists_testing_updates_non-free_binary-i386_Packages
security.debian.org_dists_testing_updates_non-free_binary-i386_Release

Mesela ilk satırdaki dosya ismini ele alalım,

ftp.tr.debian.org_debian_dists_testing_contrib_binary-i386_Packages

Bu dosyadan çıkarmamız gereken http://ftp.tr.debian.org/debian/dists/testing/contrib/binary-i386/Packages adresi olmalı. Yine benzer şekilde,

ftp.tr.debian.org_debian_dists_testing_contrib_binary-i386_Release

dosya isminden de bu dosyanın, http://ftp.tr.debian.org/debian/dists/testing/contrib/binary-i386/Release adresini işaret ettiğini anlıyoruz.

Bu şekilde ilgili dosyaları internet erişimi olan herhangi bir makine vasıtasıyla temin edip, evimizdeki makinemize ( güncellemek istediğimiz makinemize) getirip, "/var/lib/apt/lists/" içerisine bırakıyoruz.

2. Adım :

Şimdi elimizde güncel bir index var, bu index ile makinemizdeki dosyaları karşılaştırıp, bizim için gerekli olan güncel dosyaların listesini elde edeceğiz. Tahmin edeceğiniz gibi daha sonrada elde ettiğimiz bu listedeki paketleri yine internet erişimi olan başka bir makine vasıtasıyla temin edip, güncelleştirme için gerekli paketleri söz konusu makinemize taşıyacağız. İşte bu son adım olacak :)

Bu aşamada, güncellenmesi gereken paketlerin listesini alabilmek için;

  • apt-get -qq --print-uris dist-upgrade > up-to-date-list

komutu ile gerekli olan dosyaları "up-to-date-list" isimli dosyaya listeledik. Sonrada bu dosyadaki adresleri wget ile indirilebilecek hale (bir betik haline) getirmek için.

  • awk '{print "wget -O " $2 " " $1}' < up-to-date-list > ~/up-to-date-wget-script.sh

Evet, işte sistemimiz için gerekli olan güncel paketleri indirebileceğimiz scriptimiz hazır. "up-to-date-wget-script.sh" ismi ile kullanıcının home dizinine kaydedilmesini sağladığımız bu dosyayı alıp, internet bağlantısı olan başka bir makine vasıtasıyla bu dosyaları temin edelim.

Dosyaları indireceğimiz makinede, bir dizin açıp "up-to-date-wget-script.sh" isimli betiğimizi o dizine bırakalım ve betiği çalıştıralım. Gerekli dosyalar bu dizine gelecek. Tüm dosyaların indirilme işlemi bitince, son bir gayret ile o dizindeki tüm dosyaları yine bir medya (usb disk, cdrom vb.) ile güncellemeyi uygulayacağımız makinemize getirip "/var/cache/apt/archives/" dizinine aktaralım. Son ve sihirli komut geliyor hazır olun;

  • apt-get upgrade

Evet, sisteminiz başarı ile upgrade edilmiş olmalı.

İşlemler sırasında herhangi bir paket bağımlılığı problemi oluşmaması için, gerekli paketlerin listesinin doğru sürüm için oluşturulmasında ve gerekli dosyaların indirilmesinde dikkatli olmakta fayda var. Zaten dikkat gerektiren başka da pek bir işlem yok :)

Heralde hiçbir şekilde internet bağlantısı olmayan (dial-up bile) bir makine için bu işlemleri uygulamak biraz zahmetli gibi görünüyor. Ama gülü seven dikenine katlanır misali bu tür işlemler zaman zaman zevkli uğraşlar olabilir.

Daha detaylı bilgi için http://www.batmat.net/apt-offline/ belgesine bakabilirsiniz.

Referanslar :

  1. http://www.batmat.net/apt-offline/