Saya ingin membuat file DEB secara manual. Saya hanya ingin menyediakan folder yang berisi data untuk menginstal, dan skrip yang akan dieksekusi setelah instalasi.
Apakah ini mungkin?
Saya ingin membuat file DEB secara manual. Saya hanya ingin menyediakan folder yang berisi data untuk menginstal, dan skrip yang akan dieksekusi setelah instalasi.
Apakah ini mungkin?
Jawaban:
Rekomendasi saya adalah membuat paket sumber. Instal build-essential , debhelper , dh-make . Ubah ke direktori tempat file yang ingin Anda instal (nama direktori harus dalam bentuk $PACKAGE-$VERSION
, misalnya myapp-4.2-1
untuk upaya pertama Anda mengemas Myapp V4.2), dan jalankan dh_make --createorig
. Jawablah pertanyaan. Debhelper akan membuat infrastruktur dasar yang diperlukan untuk membangun sebuah paket dengan membuat file dalam subdirektori bernama debian
, baik beberapa file wajib dan templat untuk file opsional. Anda mungkin perlu memodifikasi beberapa file ini:
debian/rules
untuk membangun apa yang perlu dibangun dan instal file di tempat yang tepat. Jika Anda hanya perlu menyalin beberapa file dan tidak untuk mengkompilasi barang, cukup edit file debian/install
untuk menentukan file mana yang harus diinstal di mana.debian/copyright
untuk menambahkan informasi lisensi tentang paket Anda dan informasi di mana mendapatkan versi terbaru (jika relevan).debian/changelog
untuk menghapus referensi ke ITP (itu hanya relevan jika Anda bekerja untuk proyek Debian). Ubah nama debian/postinst.ex
menjadi debian/postinst
dan tambahkan perintah pasca-instalasi Anda di sana. Jika nanti Anda memperbarui paket Anda, jalankan debchange -i
untuk menambahkan entri changelog atau mengedit file dalam Emacs (dengan dpkg-dev-el diinstal).Jalankan dpkg-buildpackage -rfakeroot -us -uc
untuk membangun .deb
paket (hapus -us -uc
jika Anda ingin menandatangani paket dengan kunci PGP Anda).
Jika Anda memutuskan untuk membuat paket biner secara langsung tanpa membangunnya dari paket source, yang sebenarnya tidak mudah karena tidak ada banyak alat untuk memfasilitasi prosesnya, Anda akan memerlukan sedikit pengetahuan dasar tentang format paket deb. Ini dijelaskan dalam Manual Kebijakan Debian , khususnya bab. 3 (format paket biner) , ch. 5 (mengontrol file) , ch. 6 (skrip instalasi) dan lampiran B (manipulasi paket biner) .
Anda memastikan bahwa paket Anda menginstal file yang diharapkan /usr/share/doc/copyright
(berisi lisensi isi paket, serta di mana menemukan versi terbaru paket) dan /usr/share/doc/changelog.Debian.gz
(berisi changelog paket deb). Anda tidak memerlukan ini jika Anda hanya akan menggunakan paket di rumah, tetapi lebih baik memilikinya.
Jika Anda memiliki alat Debian yang tersedia, gunakan dpkg-deb
untuk membuat paket. Di direktori yang berisi data untuk menginstal, tambahkan direktori yang disebut DEBIAN
di tingkat atas, yang berisi file kontrol dan skrip pengelola.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Jika Anda tidak memiliki alat Debian, buat arsip file yang ingin Anda paketkan disebut data.tar.gz
, arsip terpisah dari file kontrol yang disebut control.tar.gz
(tanpa subdirektori), dan file teks dipanggil debian-binary
dan mengandung teks 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
Anda memerlukan setidaknya control file dengan bidang Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, dan apapun yang diperlukan ketergantungan deklarasi.
Script yang akan dieksekusi setelah instalasi dipanggil postinst
. Pastikan untuk membuatnya dapat dieksekusi. Ini berjalan berdampingan control
.
Jika Anda sudah memiliki paket biner dari distribusi lain, Anda bisa menggunakan alien untuk mengubahnya.
dch -i
.
ar
melakukan itu tar
bukan?
dh_make --createorig
digunakan, Anda harus export DEBEMAIL="me@example.com"
dan export DEBFULLNAME="Firstname Lastname"
sebelumnya.
Pertama, Anda perlu membuat folder build dan arsip file Anda: tar czvf data.tar.gz files
Kemudian dalam folder build Anda harus membuat file kontrol dengan beberapa informasi yang diinginkan:
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
Kemudian Anda dapat menambahkan skrip shell preinst, postint, prerm, dan postrm secara independen untuk mengontrol pra dan post instal dan pra dan post menghapus perilaku file .deb dan kemudian Anda dapat membuat arsip kontrol dengan tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Kemudian Anda perlu file debian-biner: echo 2.0 > debian-binary
. Dalam membangun Anda folder Anda harus memiliki sekarang file-file ini: debian-binary
control.tar.gz
dan data.tar.gz
.
Akhirnya Anda perlu ar
paket untuk membuat file deb.:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
hal itu, layak untuk menekankan urutan itu penting: kontrol harus dilakukan sebelum data.
Saya melakukan banyak paket, dan melakukan yang penuh bukanlah hal yang sepele. Pada catatan positif, file dan skrip kurang berfungsi. Anda dapat membuat paket seperti itu, sangat sederhana, dengan alat yang dikenal sebagai debreate .
Debreate adalah GUI yang sangat sederhana, hanya untuk membuat paket DEB sederhana. Anda bisa menentukan file mana, ke mana mereka pergi, dan jika / apa yang harus dijalankan pada post / pra instal / uninstall. Saya dulu hanya melakukan semua paket saya dengan cara standar, tetapi setelah saya mulai menggunakan alat ini, saya hanya akan kembali jika diperlukan.
Lihat Wiki Debian di Kemasan , mungkin equivs
(lihat tautan) sudah memenuhi persyaratan Anda.
Halaman Wikipedia tentang deb
format file juga mencakup banyak tautan bermanfaat.
Periksalah ini dengan Zimbra 7 di Debian menggunakan paket Ubuntu-nya. (Saya keras kepala, saya suka Debian> bUbuntu meskipun Zimbra hanya merilis untuk Ubuntu.) Tidak yakin bagaimana saya mengatasi ini sebelumnya, saya yakin saya tidak perlu melakukan ini ketika saya menginstal ini sebelumnya!
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
Semua file .deb Anda yang baru akan masuk new/
.
Catatan : ini sedang ditekan - dpkg pada wheezy memiliki --force-bad-version sekarang.
Untuk pembuatan paket yang cepat, Anda dapat menggunakan program checkinstall. Ia melakukan instalasi program, menonton perubahan - dan membuat paket deb atau rpm-nya.
$ 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