Saya memiliki sumber program (diambil dari cvs / svn / git / ...) dan saya ingin membuat paket Debian / Ubuntu untuknya. Paket ada di repositori, tetapi:
- Ini adalah versi yang lebih lama (tidak memiliki fitur yang saya butuhkan)
- Saya memerlukan opsi kompilasi yang sedikit berbeda dari default.
Apa cara termudah untuk melakukannya? Saya prihatin tentang beberapa hal
- Bagaimana cara memeriksa apakah saya telah mencantumkan semua dependensi dengan benar? (Saya bisa mendapatkan beberapa petunjuk dengan melihat apa yang bergantung pada versi yang lebih lama, tetapi dependensi baru mungkin telah ditambahkan.)
- Bagaimana saya dapat mencegah sistem pembaruan menginstal versi yang lebih lama di repo pada pembaruan?
- Bagaimana saya dapat mencegah sistem menginstal versi yang lebih baru (ketika sudah keluar), menimpa paket kustom saya?
Jawaban:
Anda dapat menggunakan paket khusus "checkinstall" untuk semua paket yang bahkan belum ada di debian / ubuntu.
Anda bisa menggunakan "uupdate" (
apt-get install devscripts
) untuk membuat paket dari sumber dengan sumber debian yang ada:Contoh untuk libdrm2:
sumber
libdrm-2.3.1
tepatnya? Juga dari manalibdrm-2.4.1.tar.gz
asalnya (asumsi awal saya adalah kompilasi biner dari aplikasi yang ingin kita paketkan dalam deb, tetapi mengganti versi yang sudah ada, apakah itu benar?)You must put some 'source' URIs in your sources.list
, hapus komentar baris deb-src di/etc/apt/sources.list
Pertama, pertanyaan judul: Dengan asumsi direktori debian sudah ada, masuklah ke direktori sumber (direktori yang berisi direktori debian) dan panggil dpkg-buildpackage. Saya suka menjalankannya dengan opsi ini:
yang artinya jangan menandatangani hasil dan jangan bersihkan.
Mendapatkan dependensi adalah seni hitam. Cara "resmi" adalah memeriksa ketergantungan build jika paket dibangun hanya dengan sistem dasar, paket "build-essential", dan dependensi build yang telah Anda tentukan. Tidak tahu jawaban umum untuk Dependensi biasa, masuk saja :)
Pengetahuan saya mungkin sudah ketinggalan zaman tentang yang satu ini, tetapi untuk membahas keduanya: Gunakan dpkg --set-selection. Dengan asumsi nullidentd adalah paket yang ingin Anda simpan, jalankan sebagai root
Bergantian, karena Anda membangun dari sumber, Anda dapat menggunakan epoch untuk menyetel nomor versi tinggi secara artifisial dan tidak pernah diganggu lagi. Untuk menggunakan epoch, tambahkan entri baru ke file debian / changelog, dan letakkan 99: di depan nomor versi. Diberikan contoh nullidentd saya, baris pertama changelog Anda yang diperbarui akan membaca:
Link Bernard bagus, terutama jika Anda harus membuat direktori debian sendiri - referensi developer dan halaman resource umum juga berguna . Tautan Adam juga terlihat bagus tetapi saya tidak terbiasa dengannya.
sumber
Untuk apa yang ingin Anda lakukan, Anda mungkin ingin menggunakan diff sumber debian, jadi paket Anda mirip dengan yang resmi selain versi upstream yang digunakan. Anda dapat mendownload source diff dari packages.debian.org , atau bisa mendapatkannya bersama dengan .dsc dan arsip sumber asli dengan menggunakan "apt-get source".
Kemudian Anda membongkar versi baru sumber upstream, mengubah ke direktori itu, dan menerapkan diff yang Anda unduh dengan melakukan
Kemudian buat perubahan yang Anda inginkan untuk mengkompilasi opsi, dan buat paket dengan melakukan
sumber
Contoh build berbasis Ubuntu untuk ccache:
Detail lebih lanjut: http://blog.aplikacja.info/2011/11/building-packages-from-sources-in-debianubuntu/
sumber
sumber
Saya percaya ini adalah 'bible' paket Debian.
Yah, ini adalah panduan pengelola baru Debian, jadi banyak di antaranya tidak akan berlaku, tetapi mereka mencakup apa yang terjadi di mana.
sumber
Jika Anda menggunakan Ubuntu, lihat proyek pkgcreator: http://code.google.com/p/pkgcreator
sumber
Berikut adalah tutorial untuk membuat paket Debian.
Pada dasarnya, Anda perlu:
Saya biasanya melakukan semua ini di Makefile saya jadi saya bisa mengetik make untuk memuntahkan biner dan mengemasnya sekaligus.
sumber
Ini
pbuilder
adalah alat yang sangat baik untuk memeriksa dependensi dan dependensi build dengan menyiapkan sistem dasar yang bersih dalam lingkungan chroot. Dengan mengompilasi paket dalam pbuilder, Anda dapat dengan mudah memeriksa dependensi build, dan dengan mengujinya dalam lingkungan pbuilder, Anda dapat memeriksa dependensi tersebut.sumber
Jika Anda menginginkan cara cepat dan kotor untuk menginstal dependensi build, gunakan:
Ini menginstal dependensi. Anda membutuhkan baris sumber di sources.list Anda untuk ini:
Jika Anda mem-backport paket dari pengujian ke stable, harap diperhatikan bahwa dependensi mungkin telah berubah. Perintah apt-get build-deb installs dependensi untuk paket sumber di repositori Anda saat ini.
Tetapi tentu saja, dpkg-buildpackage -us -uc akan menunjukkan kepada Anda semua dependensi yang dihapus instalasinya.
Jika Anda ingin mengkompilasi lebih sering, gunakan pembuat sapi.
Kemudian buat area build:
sudo DIST = peras ARCH = amd64 cowbuilder --create
Kemudian kompilasi paket sumber:
Perhatikan di mana pembuat sapi meletakkan paket yang dihasilkan.
Semoga berhasil!
sumber