Saya ingin membuat file DEB secara manual. Saya hanya ingin menyediakan folder yang berisi data untuk menginstal, dan skrip yang akan dieksekusi setelah instalasi.
@ David, sebenarnya saya membuatnya dengan "dpkg-deb", itu jauh lebih mudah, itu sebabnya saya memilih Gilles, dengan mendaftar file dalam folder paket memberi saya pandangan yang jelas tentang file untuk ditempatkan di sana. Jadi saya pikir jawabannya lebih baik ..
daisy
Saya sudah mendaftarkan semua file dalam paket juga.
Gigamegs
11
@ David Maksudku, berpendapat bahwa jawabannya adalah turunan adalah satu hal, tetapi "bukan jawaban yang sangat bagus"? Jawaban Gilles luar biasa; tidak masalah jika jawaban Anda adalah yang pertama, jawabannya jauh lebih lengkap. Dan tidak ada yang salah dengan mengambil jawaban yang ada dan mengembangkannya; itu hal yang baik
Michael Mrozek
Jawaban:
57
Membuat paket sumber
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-1untuk 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:
Edit debian/rulesuntuk 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/installuntuk menentukan file mana yang harus diinstal di mana.
Edit debian/copyrightuntuk menambahkan informasi lisensi tentang paket Anda dan informasi di mana mendapatkan versi terbaru (jika relevan).
Edit debian/changeloguntuk menghapus referensi ke ITP (itu hanya relevan jika Anda bekerja untuk proyek Debian). Ubah nama debian/postinst.exmenjadi debian/postinstdan tambahkan perintah pasca-instalasi Anda di sana. Jika nanti Anda memperbarui paket Anda, jalankan debchange -iuntuk menambahkan entri changelog atau mengedit file dalam Emacs (dengan dpkg-dev-el diinstal).
Jalankan dpkg-buildpackage -rfakeroot -us -ucuntuk membangun .debpaket (hapus -us -ucjika Anda ingin menandatangani paket dengan kunci PGP Anda).
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.
Tentang Debian dan turunannya
Jika Anda memiliki alat Debian yang tersedia, gunakan dpkg-debuntuk membuat paket. Di direktori yang berisi data untuk menginstal, tambahkan direktori yang disebut DEBIANdi tingkat atas, yang berisi file kontrol dan skrip pengelola.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Cara yang sulit
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-binarydan 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.
Mengubah paket biner dari format yang berbeda
Jika Anda sudah memiliki paket biner dari distribusi lain, Anda bisa menggunakan alien untuk mengubahnya.
IMO itu salinan dari server saya? Bagaimana menurut anda?
Gigamegs
1
Jawabannya mengandaikan OP tahu bagaimana menggunakan emacs. Apakah emacs benar-benar diperlukan di sini? Untuk mengedit changelogs, saya pikir orang dapat menggunakannya dch -i.
Faheem Mitha
Apa yang armelakukan itu tarbukan?
mmstick
@ mmstick Ini format yang berbeda. Saya tidak tahu mengapa para perancang format deb memilih untuk menggunakan ar di sini.
Gilles 'SO- berhenti bersikap jahat'
1
Jika Anda ingin mengubah nama dan email yang dh_make --createorigdigunakan, Anda harus export DEBEMAIL="[email protected]"dan export DEBFULLNAME="Firstname Lastname"sebelumnya.
Ryan
10
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 <[email protected]>
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-binarycontrol.tar.gzdan data.tar.gz.
Akhirnya Anda perlu arpaket untuk membuat file deb.:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
Mengenai ar -r xxx.deb debian-binary control.tar.gz data.tar.gzhal itu, layak untuk menekankan urutan itu penting: kontrol harus dilakukan sebelum data.
Hibou57
@Bytemain, jawaban pilihan teratas terlihat memang sebagian berdasarkan pada teks Anda, tetapi menambahkan rincian untuk itu, dan itu lebih baik dibaca. urutan yang bisa kita salin / tempel membuatnya lebih tampan.
mariotomo
3
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.
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.
Ini terdengar seperti opsi yang bagus untuk melacak paket yang harus Anda instal dari sumber. Bisakah Anda menawarkan lebih banyak detail? Misalnya, dalam proses instalasi Anda dapat mengubah symlink, menghapus file, mengedit file config, menambahkan daemon, dll ... sampai sejauh mana peserta melacak dan membatalkan perubahan ini? Bisakah Anda dengan mudah memodifikasi outputnya untuk menambahkan skrip prerm dan postrm?
AatG
lihat wiki.debian.org/CheckInstall Jika Anda ingin mengubah sesuatu selama instalasi - cara termudah adalah memodifikasi Makefile untuk mengubah bagian instal. prerm / postrm - saya tidak menemukan cara untuk memodifikasinya. Hanya untuk program kecil yang memungkinkan penghapusan instalasi sederhana.
Jawaban:
Membuat paket sumber
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
, misalnyamyapp-4.2-1
untuk upaya pertama Anda mengemas Myapp V4.2), dan jalankandh_make --createorig
. Jawablah pertanyaan. Debhelper akan membuat infrastruktur dasar yang diperlukan untuk membangun sebuah paket dengan membuat file dalam subdirektori bernamadebian
, 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 filedebian/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 namadebian/postinst.ex
menjadidebian/postinst
dan tambahkan perintah pasca-instalasi Anda di sana. Jika nanti Anda memperbarui paket Anda, jalankandebchange -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).Membuat paket biner secara langsung
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.Tentang Debian dan turunannya
Jika Anda memiliki alat Debian yang tersedia, gunakan
dpkg-deb
untuk membuat paket. Di direktori yang berisi data untuk menginstal, tambahkan direktori yang disebutDEBIAN
di tingkat atas, yang berisi file kontrol dan skrip pengelola.Cara yang sulit
Jika Anda tidak memiliki alat Debian, buat arsip file yang ingin Anda paketkan disebut
data.tar.gz
, arsip terpisah dari file kontrol yang disebutcontrol.tar.gz
(tanpa subdirektori), dan file teks dipanggildebian-binary
dan mengandung teks2.0
.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 berdampingancontrol
.Mengubah paket biner dari format yang berbeda
Jika Anda sudah memiliki paket biner dari distribusi lain, Anda bisa menggunakan alien untuk mengubahnya.
sumber
dch -i
.ar
melakukan itutar
bukan?dh_make --createorig
digunakan, Anda harusexport DEBEMAIL="[email protected]"
danexport 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:
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
dandata.tar.gz
.Akhirnya Anda perlu
ar
paket untuk membuat file deb.:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
sumber
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.
sumber
Lihat Wiki Debian di Kemasan , mungkin
equivs
(lihat tautan) sudah memenuhi persyaratan Anda.Halaman Wikipedia tentang
deb
format file juga mencakup banyak tautan bermanfaat.sumber
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!
Semua file .deb Anda yang baru akan masuk
new/
.Catatan : ini sedang ditekan - dpkg pada wheezy memiliki --force-bad-version sekarang.
sumber
Untuk pembuatan paket yang cepat, Anda dapat menggunakan program checkinstall. Ia melakukan instalasi program, menonton perubahan - dan membuat paket deb atau rpm-nya.
sumber
sumber