Saya memiliki aplikasi foobar
yang seseorang telah menulis tambalan untuk menambahkan fitur yang saya sukai. Bagaimana saya bisa menggunakan tambalan?
sumber
Saya memiliki aplikasi foobar
yang seseorang telah menulis tambalan untuk menambahkan fitur yang saya sukai. Bagaimana saya bisa menggunakan tambalan?
Patch biasanya terkandung dalam .diff
file, karena patch dibuat menggunakan diff
perintah.
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.1
dan cd foobar.0.1
. Selanjutnya, Anda perlu menjalankan patch
perintah. Ini membaca dari input standar, jadi Anda ingin memasukkan .diff
file ke dalam. Bagian yang sulit adalah menentukan apa yang akan digunakan untuk -p
opsi (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.c
adalah 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 -p
sakelar (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 -p1
untuk mengurangi path ke just plain comm.c
.
Anggapan comm.c
itu sebenarnya dalam direktori yang sama, yang akan menjadi petunjuk lain apakah penafsiran Anda benar. Jika kedua baris tersebut berada src/comm.c
, dan comm.c
sebenarnya berada di src
subdirektori dari build tree Anda, maka Anda perlu menggunakan -p0
- berhati-hatilah karena tidak menggunakan -p
sama 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 .diff
file, 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 foobar
merujuk ke versi baru Anda yang ditambal, dan bukan yang lama.