Manuel olarak bir DEB dosyası oluşturmak istiyorum. Yüklenecek verileri içeren bir klasör ve kurulumdan sonra yürütülecek bir komut dosyası sağlamak istiyorum.
Mümkün mü?
Manuel olarak bir DEB dosyası oluşturmak istiyorum. Yüklenecek verileri içeren bir klasör ve kurulumdan sonra yürütülecek bir komut dosyası sağlamak istiyorum.
Mümkün mü?
Yanıtlar:
Benim tavsiyem kaynak paket yapmak. Build-essential , debhelper , dh-make uygulamasını yükleyin . Kurmak istediğiniz dosyaların bulunduğu dizine geçin (dizin adı $PACKAGE-$VERSION
, örneğin myapp-4.2-1
Myapp V4.2'yi paketlemeye ilk girişmeniz için formda olmalıdır ) ve çalıştırın dh_make --createorig
. Soruları cevapla. Debhelper, debian
bazı zorunlu dosyalar ve isteğe bağlı dosyalar için şablonlar adı verilen bir alt dizinde dosyalar oluşturarak bir paket oluşturmak için gereken temel altyapıyı oluşturacaktır . Bu dosyalardan bazılarını değiştirmeniz gerekebilir:
debian/rules
bina gerekenleri inşa etmek ve doğru yerde dosyalarını kurun. Yalnızca bazı dosyaları kopyalamanız ve bir şeyler derlemeniz debian/install
gerekmiyorsa, hangi dosyaların nereye yükleneceğini belirtmek için dosyayı düzenleyin .debian/copyright
Paketinizin ve (eğer uygunsa) son sürümü almak için nereye bilgilerle ilgili lisans bilgileri eklemek için.debian/changelog
(Debian projesi için eğer ediyoruz çalışma sadece alakalı) bir ITP başvurusunu kaldırın. Kurulum sonrası komutlarınızı yeniden adlandırın ve debian/postinst.ex
buraya debian/postinst
ekleyin. Paketinizi daha sonra güncellerseniz, debchange -i
değiştirici bir giriş eklemek için dosyayı çalıştırın veya dosyayı Emacs'ta düzenleyin ( dpkg-dev-el yüklü).Paketi dpkg-buildpackage -rfakeroot -us -uc
oluşturmak için çalıştırın .deb
( -us -uc
paketi PGP anahtarınızla imzalamak istiyorsanız kaldırın ).
İkili bir paketi doğrudan bir kaynak paketinden oluşturmadan yapmaya karar verirseniz, süreci kolaylaştıracak çok fazla araç olmadığı için gerçekten kolay değildir, deb paketlerinin formatına ilişkin temel bir aşinalık gerekir. Bu anlatılan Debian Policy Manual özellikle ch. 3 (ikili paketlerin formatı) , ch. 5 (kontrol dosyaları) , ch. 6 (kurulum komut dosyaları) ve ek B (ikili paket manipülasyonu) .
Paketinizin beklenen dosyaları /usr/share/doc/copyright
(paket içeriğinin lisansını ve ayrıca paketin en son sürümünü nerede bulacağınızı içeren) yüklediğini ve /usr/share/doc/changelog.Debian.gz
(deb paketinin değişimini içeren) emin olun. Paketleri yalnızca şirket içinde kullanacaksanız, bunlara ihtiyacınız yoktur, ancak bunların olması daha iyidir.
Debian araçlarına sahipseniz dpkg-deb
, paketi oluşturmak için kullanın . Yüklenecek verileri içeren dizine DEBIAN
, kontrol dosyalarını ve koruyucu komut dosyalarını içeren en üst düzeyde adı verilen bir dizin ekleyin .
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Debian araçlarına sahip değilseniz, paketlemek istediğiniz dosyaların bir arşivini, çağrılan data.tar.gz
kontrol dosyalarının ayrı bir arşivini control.tar.gz
(alt dizin yok) ve adı verilen debian-binary
ve metni içeren bir metin dosyasını oluşturun 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
En az bir ihtiyaç kontrol dosyası alanları ile Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, ve gerekli bağımlılık beyanı.
Kurulumdan sonra yürütülecek komut dosyası çağrılır postinst
. Çalıştırılabilir olduğundan emin olun. Yanına gider control
.
Zaten başka bir dağıtımdan gelen ikili bir paketiniz varsa, dönüştürmek için yabancı kullanabilirsiniz .
dch -i
.
ar
o yapıyor tar
değil mi?
dh_make --createorig
, önce export DEBEMAIL="me@example.com"
ve sonra yapmanız gerekir export DEBFULLNAME="Firstname Lastname"
.
Öncelikle bir derleme klasörü ve dosyalarınızın bir arşivi oluşturmanız gerekir: tar czvf data.tar.gz files
Sonra derleme klasöründe bazı bilgiler içeren bir kontrol dosyası oluşturmalısınız:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Daha sonra bağımsız bir şekilde preinst, postint, prerm ve postrm kabuk komut dosyalarını, kurulum öncesi ve sonrası ve .deb dosyasının kaldırma davranışını kontrol etmek için ekleyebilir ve daha sonra tar ile kontrol arşivini oluşturabilirsiniz: tar czvf control.tar.gz control preinst postinst prerm postrm
Sonra bir debian-ikili dosyasını gerekir: echo 2.0 > debian-binary
. Derleme klasörünüzde şu dosyalara sahip olmalısınız: debian-binary
control.tar.gz
ve data.tar.gz
.
Sonunda ar
, .deb dosyasını oluşturmak için pakete ihtiyacınız var :ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
konuda strese değer olabilir, sipariş önemlidir: kontrol verilerden önce gelmelidir.
Çok fazla paket yapıyorum ve dolu bir tane yapmak önemsiz bir mesele değil. Olumlu bir kayda göre, dosyalar ve komut dosyaları daha az iş. Böyle bir paket oluşturabilirsiniz, çok basit bir şekilde, borçsuz olarak bilinen bir araçla .
Debreate, basit DEB paketleri oluşturmak için gerçekten basit bir GUI'dir. Hangi dosyaları, nereye gideceklerini ve sonra / yükleme sonrası / kaldırma işleminde neyin çalışması gerektiğini belirtebilirsiniz. Tüm paketleri sadece standart yoldan yapardım, ancak bu aracı kullanmaya başladıktan sonra sadece gerektiğinde geri döneceğim.
Ambalaj hakkında Debian Wiki'ye bakın , belki equivs
(bkz. Bağlantı) gereksinimlerinizi zaten karşılar.
Wikipedia'nın deb
dosya biçimindeki sayfası da pek çok faydalı bağlantı içeriyor.
Ubuntu paketlerini kullanarak Debian'daki Zimbra 7 ile bu konuya rastladım. (İnatçıyım, Zimbra'nın sadece Ubuntu için yayınlanmasına rağmen Ben Debian> bUbuntu'yu severim.) Bunu daha önce nasıl yürüttüğümden emin değilim, bunu daha önce kurduğumda yapmak zorunda olmadığımdan eminim!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Tüm yeni .deb dosyalarınız içeride olacak new/
.
Not : Bu sıkıştı - şimdi wheezy'deki dpkg - force-bad-version.
Hızlı paket oluşturma için, kullanıcının checkinstall programını kullanabilirsiniz. Programın bir instalasyonunu yapar, değişiklikleri izler - ve onun deb veya rpm paketini oluşturur.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage