Bazen bir programın belirli bir sürümünü kullanmak zorunda kalabiliriz. Bu sürüme ait bir Debian paketi mevcut değil ise, programı kaynak kodundan derleyerek kendimiz kurarız. Fakat paket yönetim sistemi bu durumda şaşırabilir. Mesela kullandığınız eposta sunucu yazılımının yeni bir sürümünü derlediğinizi düşünün. Burada problem yok, ancak pek çok Debian paketi sistemde bir MTA (Mail Transport Agent) yazılımı olmasını gerektirir. Eposta sunucunuzu kendiniz derleyerek kurduğunuz için paket yönetim sistemi bundan haberdar değildir ve bağımlılık hataları oluşur.
Burada equivs paketi devreye girmektedir. Paketi kurmak için aynı isimli paketi sisteminize kurmalısınız. Bu program ile boş bir paket yaratıp, bağımlılık problemlerini çözebilir ve paket yönetim sisteminin içini rahatlatabilirsiniz.
Başlamadan önce hatırlatmak isteriz ki, Debian için zaten paketi hazırlanmış bir programı farklı derleme seçenekleriyle derlemenin daha güvenli ve uygun yolları vardır. Eğer ne yaptığınızı tam olarak bilmiyorsanız
equivs kullanmayınız. Ayrıntılı bilgi için bkz.
Kaynak paketlerle çalışma.
MTA örneğimize kaldığımız yerden devam edelim. Yeni derlemiş olduğunuz postfix paketini sisteminize kurdunuz ve ardından mutt paketini kurmak istediniz. Fakat mutt paketinin başka bir MTA kurulmasını gerektirdiğini gördünüz ama zaten sisteminizde bir MTA var!
Herhangi bir dizine geçip (örneğin /tmp) aşağıdaki komutu çalıştırın:
isim değerini oluşturmak istediğiniz control dosyasının adı ile değiştiriniz. Ardından dosya aşağıdaki şekilde oluşturulacaktır:
Section: misc
Priority: optional
Standards-Version: 3.0.1
Package: <enter package name; defaults to equivs-dummy>
Version: <enter version here; defaults to 1.0>
Maintainer: <your name and email address; defaults to username>
Pre-Depends: <packages>
Depends: <packages>
Recommends: <packages>
Suggests: <package>
Provides: <(virtual)package>
Architecture: all
Copyright: <copyright file; defaults to GPL2>
Changelog: <changelog file; defaults to a generic changelog>
Readme: <README.Debian file; defaults to a generic one>
Extra-Files: <additional files for the doc directory, commaseperated>
Description: <short description; defaults to some wise words>
long description and info
.
second paragraph
Bu dosyayı kendi isteğimize göre değiştirebiliriz. Tüm alanları açıklamaya şimdilik burada gerek yok, hemen amacımızı gerçekleştirelim:
Section: misc
Priority: optional
Standards-Version: 3.0.1
Package: mta-local
Provides: mail-transport-agent
Evet, hepsi bundan ibaret. mutt paketi sistemde mail-transport-agent paketi olmasını gerektirir. Bu sanal bir pakettir ve tüm MTA'lar tarafından sağlanır. Aynı davranış için paket ismi olarak doğrudan mail-transport-agent seçebilirdik, ancak sanal paket kavramını ve Provides alanını kullanarak bunu gerçekleştirdik.
Şimdi yapmanız gereken paketi oluşturmaktır:
# equivs-build paket_ismi
dh_testdir
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
# Add here commands to install the package into debian/tmp.
touch install-stamp
dh_testdir
dh_testroot
dh_installdocs
dh_installchangelogs
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
dpkg-deb: building package `paket_ismi' in `../paket_ismi_1.0_all.deb'.
The package has been created.
Attention, the package has been created in the current directory,
Ve sonra üretilen .deb paketini sisteminize kurmalısınız.
Gördüğünüz gibi equivs programının kullanılabileceği pek çok durum vardır. Örneğin favorilerim adlı bir paket oluşturabilir ve bu paketin sıklıkla kullandığınız paketlere bağımlı olmasını sağlayabilirsiniz (Depends alanı ile). Ardından bu paketi sisteminize kurup, bağımlılık verdiğiniz diğer tüm paketlerin de kurulmasını sağlamış olursunuz.
Örnek control dosyaları için /usr/share/doc/equivs/examples dizini altına bakabilirsiniz.