DEB dosyası manuel olarak nasıl oluşturulur?


46

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ü?


Çok iyi değil cevabını seçtin mi?
Gigamegs,

@David, aslında "dpkg-deb" ile yaptım, çok daha kolay, bu yüzden Gilles'i seçtim, dosyaları paket klasöründe listeleyerek bana oraya yerleştirecek dosyanın net bir görüntüsünü verdim. Yani cevabını daha iyi olduğunu düşünüyorum ..
papatya

Ben de paketteki tüm dosyaları listeledik.
Gigamegs,

11
@David Demek istediğim, cevabının türev olduğunu savunarak bir şey var, ama "çok iyi bir cevap değil"? Gilles'un cevabı mükemmel; Cevabınız ilk olursa, onun çok daha eksiksiz olması önemli değil. Ve mevcut bir cevabı alıp genişlemede yanlış olan bir şey yoktur; bu iyi bir şey
Michael Mrozek

Yanıtlar:


57

Kaynak paket yapmak

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-1Myapp V4.2'yi paketlemeye ilk girişmeniz için formda olmalıdır ) ve çalıştırın dh_make --createorig. Soruları cevapla. Debhelper, debianbazı 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:

  • Düzenleme debian/rulesbina gerekenleri inşa etmek ve doğru yerde dosyalarını kurun. Yalnızca bazı dosyaları kopyalamanız ve bir şeyler derlemeniz debian/installgerekmiyorsa, hangi dosyaların nereye yükleneceğini belirtmek için dosyayı düzenleyin .
  • Düzenleme debian/copyrightPaketinizin ve (eğer uygunsa) son sürümü almak için nereye bilgilerle ilgili lisans bilgileri eklemek için.
  • Düzen 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.exburaya debian/postinstekleyin. Paketinizi daha sonra güncellerseniz, debchange -ideğ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 -ucoluşturmak için çalıştırın .deb( -us -ucpaketi PGP anahtarınızla imzalamak istiyorsanız kaldırın ).

Doğrudan bir ikili paket yapmak

İ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 ve türevleri hakkında

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

Zor yol

Debian araçlarına sahip değilseniz, paketlemek istediğiniz dosyaların bir arşivini, çağrılan data.tar.gzkontrol dosyalarının ayrı bir arşivini control.tar.gz(alt dizin yok) ve adı verilen debian-binaryve 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.

İkili bir paketi farklı bir formattan dönüştürme

Zaten başka bir dağıtımdan gelen ikili bir paketiniz varsa, dönüştürmek için yabancı kullanabilirsiniz .


3
IMO benim telesekreterin kopyası mı? Ne düşünüyorsun?
Gigamegs,

1
Cevap, OP'nin emacs'ın nasıl kullanılacağını bildiğini varsayar. Emacs burada gerçekten gerekli mi? Değişiklikleri düzenlemek için birinin kullanabileceğini düşünüyorum dch -i.
Faheem Mitha

Nedir aro yapıyor tardeğil mi?
mmstick Hazi

@ mmstick Bu farklı bir format. Neden deb formatındaki tasarımcıların burada kullanmayı seçtiğini bilmiyorum.
Gilles 'SO- kötü olmayı bırak'

1
Kullanılan adı ve e-postayı değiştirmek istiyorsanız dh_make --createorig, önce export DEBEMAIL="me@example.com"ve sonra yapmanız gerekir export DEBFULLNAME="Firstname Lastname".
Ryan,

10

Ö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.gzve 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


1
Bu ar -r xxx.deb debian-binary control.tar.gz data.tar.gzkonuda strese değer olabilir, sipariş önemlidir: kontrol verilerden önce gelmelidir.
Hibou57

@Bytemain, en çok oylanan cevap, metninize dayanarak kısmen görünüyor, ancak buna ayrıntılar ekliyor ve daha iyi okunabiliyor. Kopyalayabildiğimiz / yapıştırabildiğimiz sıra onu daha da yakışıklı kılar.
mariotomo

3

Ç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.



1

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.


1

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.


Bu, kaynaktan yüklemeniz gereken paketleri izlemek için mükemmel bir seçenek gibi görünüyor. Daha fazla ayrıntı sunabilir misin? Örneğin, kurulum sırasında sembolik bağlantıları değiştirebilir, dosyaları silebilir, yapılandırma dosyalarını düzenleyebilir, günlükler ekleyebilir vb. Prerm ve postrm scriptleri eklemek için çıktılarını kolayca değiştirebilir misiniz?
AatG

wiki.debian.org/CheckInstall'a bakın Kurulum sırasında bir şeyleri değiştirmek istiyorsanız - en kolay yol, Makefile kurulumunu değiştirmek için değiştirmektir. prerm / postrm - değiştirmenin bir yolunu bulamadım. Sadece basit programların kaldırılmasına izin veren küçük programlar içindir.
undefine

-4
$ 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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.