Bagaimana cara memodifikasi paket deb?

7

Apa yang telah saya lakukan sejauh ini

  • Saya mengunduh sumber paket deb resmi dari repositori ubuntu.
  • Saya menerapkan tambalan.
  • Menjalankan konfigurasikan dan buat berhasil.
  • Menguji program.

Apa yang ingin saya lakukan

  • Saya ingin membuat paket deb dari itu menggunakan semua informasi (dependensi dll) dari paket lama.

Pertanyaan saya adalah (Mereka terkait erat)

  1. Apakah ada cara mudah (= kebanyakan otomatis) untuk melakukan itu?
  2. Bisakah saya menyalin binari ke file deb lama?
  3. Apakah perubahan saya akan ditimpa setelah paket asli diperbarui dalam repo?
  4. Jika demikian, bagaimana cara menghindarinya?
  5. Apakah ada cara untuk menandainya sebagai versi "alternatif" yang memenuhi semua dependensi "masuk" dari paket asli?

informasi tambahan

  • Saya menjalankan Ubuntu 9.04, 32bit, saya tidak peduli tentang lengkungan / versi lain saat ini.
  • Paket yang dimaksud adalah compiz-gnome.
  • Perubahannya sangat kecil dan tidak menambah ketergantungan apa pun.
Kim
sumber
Pertanyaan-pertanyaannya jelas sangat berkaitan erat, sehingga diskusi terpisah dari masing-masing tidak masuk akal.
Kim
Pertanyaan yang diedit seperti yang disarankan.
Kim
+ 1 Pertanyaan bagus
joe

Jawaban:

4

Saya menemukan panduan berikut di forum Ubuntu untuk membangun kembali paket manajer jaringan di sini

Re: cara menambal sumber deb

Quote: Awalnya Diposting oleh kabel

Saya pada dasarnya ingin membangun kembali paket manajer jaringan dengan semacam custom patch untuk menguji sesuatu. Jadi saya ingin: 1. mendapatkan kode sumber untuk "versi" ubuntu dari pengelola jaringan

Kode:

sudo apt-get source network-manager

Quote: 2. tambalan dengan tambalan saya File sumber akan diunduh ke direktori kerja. Lihat ini untuk informasi lebih lanjut.

Kutipan: 3. buat file deb yang bisa saya instal di tempat manajer jaringan saat ini.

Kode Eksekusi:

dpkg-buildpackage -rfakeroot -uc -b
dalam direktori yang dibuat.

Juga temukan artikel ini: Panduan Pemeliharaan Baru Debian Bab 6 - Membangun paket


Adapun perubahan Anda hilang oleh pembaruan dari repositori resmi saya tidak yakin. Anda selalu bisa hanya mengirim patch Anda kembali hulu ke compiz-gnome paket pengelola atau membuat repositori Anda sendiri untuk paket diperbarui.

kayu lyar
sumber
2
Salah satu cara untuk menghindari paket pribadi Anda musnah adalah dengan menambahkan entri ke atas debian/changelogdengan nomor versi yang lebih tinggi, lalu buat paket Anda.
Chris Jester-Young
1
Tambalan kemungkinan besar tidak akan diterima di hulu, karena sudah tersedia untuk beberapa waktu sekarang. Membuat repo saya sendiri tampaknya berlebihan untuk perubahan 20-baris. Mungkin saya akan mencoba dan melihat apa yang terjadi. Terima kasih atas jawaban anda.
Kim
4

Prosedur yang saya gunakan adalah ini:

Dapatkan sumbernya (via apt-get src).

Terapkan tambalan, atau lakukan apa pun yang perlu diubah.

jalankan debchange --nmudan ketikkan deskripsi perubahan yang Anda buat. Ini akan secara otomatis meningkatkan nomor versi sehingga sistem tidak akan mencoba untuk "meningkatkan" paket kustom Anda kembali ke yang standar.

Lari debuild.

Nikmati file deb Anda.

Ryan Thompson
sumber
3

Jawaban untuk # 3 dan # 4 adalah Anda harus meletakkan paket dalam status ditahan setelah Anda menginstal versi Anda. Ini memberi tahu sistem manajemen paket Debian untuk "menahan" setiap perubahan di masa depan untuk paket ini, yang pada dasarnya memungkinkan Anda mengelola paket secara manual.

Dari FAQ Debian :

7.11 Apa yang dimaksud dengan tidak diketahui, menginstal, menghapus, membersihkan dan menahan status paket?

Bendera "ingin" ini memberi tahu apa yang ingin dilakukan pengguna dengan suatu paket (seperti yang ditunjukkan oleh tindakan pengguna di bagian "Pilih" pada dselect, atau dengan pemanggilan langsung pengguna dpkg).

Artinya adalah:

  • tidak diketahui - pengguna tidak pernah menunjukkan apakah ia menginginkan paket>

  • instal - pengguna ingin paket diinstal atau ditingkatkan

  • hapus - pengguna ingin paket dihapus, tetapi tidak ingin menghapus file konfigurasi yang ada.

  • purge - pengguna ingin paket dihapus sepenuhnya, termasuk file konfigurasinya.

  • tahan - pengguna ingin paket ini tidak diproses, yaitu, ia ingin menjaga> versi saat ini dengan status saat ini apa pun itu.

7.12 Bagaimana saya menahan paket?

Ada tiga cara untuk menahan paket, dengan dpkg, aptitude atau dengan dselect.

Dengan dpkg, Anda harus mengekspor daftar pilihan paket, dengan:

dpkg --get-choices *> choices.txt

Kemudian edit file hasil seleksi.txt, ubah baris yang berisi paket yang ingin Anda pegang, misalnya libc6, dari ini:

instal libc6

untuk ini:

tahan libc6

Simpan file, dan muat ulang ke dalam basis data dpkg dengan:

dpkg --set-selection <choices.txt

Dengan bakat, Anda dapat memegang paket menggunakan

aptitude tahan nama_paket

dan menghapus palka dengan

aptitude unhold package_name

Dengan dselect, Anda harus masuk ke layar pilihan [S], cari paket yang ingin Anda tahan> keadaannya sekarang, dan tekan =' key (orH '). Perubahan akan langsung ditayangkan> setelah Anda keluar dari layar pilihan [S].

Catatan: Orang-orang telah menemukan masalah dengan perintah aptitude hold , jadi sebaiknya Anda memilih perintah dpkg untuk menyimpan paket. Atau, Anda dapat memegang paket melalui antarmuka GUI manajer paket Synaptic (Package> Lock Version). Preferensi saya adalah menggunakan dpkg karena telah bekerja dengan baik untuk saya.

Anda sudah memiliki jawaban yang bagus untuk yang lain jadi saya tidak akan berani berpendapat tentang itu.

Nagul
sumber
Terima kasih atas info tambahannya! Saya pikir saya sudah membahas semuanya sekarang. :)
Kim
1

Jika Anda mengunduh sumber dari situs resmi, maka harus ada paket itu sendiri melalui apt. Jadi, Anda cukup mengunduh paket yang siap, modifikasi, dan kemas lagi:

apt-get download your_package
dpkg -x your_package_vesion.deb your_package_folder/
... making changes in your_package_folder/ ...
# extract all needed controles/scripts from existing deb to new
dpkg -e your_package_vesion.deb your_package_folder/DEBIAN
dpkg -b your_package_folder/ new_package_vesion.deb

Sumber dengan perincian: http://sysadm.pp.ua/linux/deb-creation-edit.html

mendongkrak
sumber
0

Ya, itu adalah kompilasi ulang. Jika Anda tidak ingin lingkungan pembuatan paket debian yang disetujui penuh (dengan cara yang benar) Saya cenderung menggunakan checkinstall untuk pembuatan paket yang cepat dan kotor (cara mudah) - ini bukan cara yang disarankan debian, tetapi jauh lebih sederhana daripada Jalan lain. konfigurasikan lalu buat, dan gantikan makeinstall dengan checkinstall. Kemudian instal paket baru Anda dengan sudo dpkg -i

Journeyman Geek
sumber