Bagaimana cara saya menerapkan tambalan perangkat lunak?

15

Saya memiliki aplikasi foobaryang seseorang telah menulis tambalan untuk menambahkan fitur yang saya sukai. Bagaimana saya bisa menggunakan tambalan?

goldilocks
sumber

Jawaban:

21

Patch biasanya terkandung dalam .difffile, karena patch dibuat menggunakan diffperintah.

Patch adalah serangkaian penyisipan dan penghapusan ke dalam kode sumber. Untuk alasan ini, untuk menggunakan tambalan, Anda harus membuat aplikasi (mis., "Foobar") dari sumber setelah menerapkan tambalan. Jadi, dalam langkah-langkah:

1. Dapatkan paket sumber untuk foobar .

Sebagian besar distribusi linux (nb patching tidak unik untuk linux) memiliki "paket sumber" yang dapat Anda gunakan untuk tujuan ini, tetapi karena ini heterogen, saya hanya akan merujuk ke format sumber asli di sini. Sumber asli bukan bagian dari distro dan mungkin sulit ditemukan. Tempat yang baik untuk memulai adalah wikipedia, yang memiliki artikel untuk banyak aplikasi populer, dan artikel tersebut harus berisi tautan ke beranda dengan unduhan sumber. Anda juga dapat google sendiri, jelas. Paket sumber akan dipanggil sesuatu seperti foobar.0.1.tar.bz2. Buka paket ini - Anda sekarang memiliki direktori bernama foobar.0.1.

2. Tambahkan tambalan.

Terkadang tambalan adalah file tunggal dan kadang-kadang tatanan beberapa file. Salin itu ke foobar.0.1dan cd foobar.0.1. Selanjutnya, Anda perlu menjalankan patchperintah. Ini membaca dari input standar, jadi Anda ingin memasukkan .difffile ke dalam. Bagian yang sulit adalah menentukan apa yang akan digunakan untuk -popsi (jika tidak ada instruksi dengan tambalan). Untuk melakukan itu, Anda perlu melihat di awal file tambalan. Sebagai contoh:

--- old/comm.c  2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c  2006-07-07 02:39:24.000000000 +0000

Dalam hal ini, comm.cadalah nama file sumber yang akan diubah. Namun, perhatikan bahwa ada direktori yang ditambahkan padanya. Karena ini bukan direktori yang sama ("lama" vs "baru"), ini adalah petunjuk besar bahwa bagian dari jalur ini adalah sampah (untuk tujuan kita). Tujuan -psakelar (lihat man patch) adalah untuk menghilangkan awalan ini. Dibutuhkan angka, yang merupakan jumlah garis miring ( /) untuk dihilangkan, dengan segala sesuatu di antaranya; dalam hal ini kita akan gunakan -p1untuk mengurangi path ke just plain comm.c.

Anggapan comm.citu sebenarnya dalam direktori yang sama, yang akan menjadi petunjuk lain apakah penafsiran Anda benar. Jika kedua baris tersebut berada src/comm.c, dan comm.csebenarnya berada di srcsubdirektori dari build tree Anda, maka Anda perlu menggunakan -p0- berhati-hatilah karena tidak menggunakan -psama sekali akan menghapus SEMUA garis miring. Jika jalan itu absolut (yaitu, dimulai dengan /), itu mungkin yang Anda inginkan. Sekarang terapkan tambalan:

patch -p1 < patch.diff

Sumber sekarang telah dimodifikasi. Jika ada lebih banyak .difffile, terapkan dengan cara yang sama.

3. Bangun dan pasang.

Ini adalah proses normal yang akan Anda lalui untuk membangun sesuatu dari sumber - pertama ./configure, lalumake , make check, make install. Sebelum Anda melakukan yang terakhir, jika Anda sudah memiliki instalasi foobar, putuskan apakah Anda ingin menghapus atau menimpa itu atau bagaimana Anda akan berurusan dengan konflik penamaan. Anda mungkin ingin foobarmerujuk ke versi baru Anda yang ditambal, dan bukan yang lama.

goldilocks
sumber