foobar
Birisi benim gibi bir özellik eklemek için bir yama yazmış bir uygulama var . Yamayı nasıl kullanabilirim?
foobar
Birisi benim gibi bir özellik eklemek için bir yama yazmış bir uygulama var . Yamayı nasıl kullanabilirim?
Yanıtlar:
Yamalar genellikle .diff
dosyalarda bulunur, çünkü yamalar diff
komut kullanılarak oluşturulur .
Yama, kaynak koduna bir dizi ekleme ve silme işlemidir. Bu nedenle, yamayı kullanmak için, yamayı uyguladıktan sonra uygulamayı (örn., "Foobar") kaynağından oluşturmanız gerekir. Yani, adımlarla:
1. foobar için kaynak paketi edinin .
Çoğu linux dağıtımının (nb yaması linux'a özgü değildir) bu amaçla kullanabileceğiniz "kaynak paketleri" vardır, ancak bunlar heterojen olduğundan, yalnızca orijinal kaynağın biçimine atıfta bulunacağım. Orijinal kaynak dağıtımın bir parçası değildir ve bulunması zor olabilir. Başlamak için iyi bir yer, birçok popüler uygulama için makaleleri olan wikipedia'dır ve makale, bir kaynak indirme ile bir ana sayfaya bir bağlantı içermelidir. Ayrıca kendiniz de google yapabilirsiniz. Kaynak pakete benzer bir ad verilecektir foobar.0.1.tar.bz2
. Bunu paketinden çıkarın - artık adlı bir dizininiz var foobar.0.1
.
2. Yamayı ekleyin.
Bazen yamalar tek dosyadır, bazen de birkaç dosya kümesidir. Bunları foobar.0.1
ve içine kopyalayın cd foobar.0.1
. Ardından, patch
komutu çalıştırmanız gerekir . Bu, standart girişten okur, bu nedenle dosyayı içeri aktarmak istersiniz .diff
. Zor kısım, -p
seçenek için ne kullanacağını belirler (yamada herhangi bir talimat yoksa). Bunu yapmak için yama dosyasının başına bakmanız gerekir. Örneğin:
--- old/comm.c 2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c 2006-07-07 02:39:24.000000000 +0000
Bu durumda, comm.c
değiştirilecek kaynak dosyanın adıdır. Ancak, buna bir dizin eklendiğine dikkat edin. Bunlar aynı dizin olmadığından ("eski" ve "yeni"), bu yolun bu bölümünün önemsiz olduğuna dair büyük bir ipucudur (bizim için). -p
Anahtarın amacı (bkz. man patch
) Bu öneki ortadan kaldırmaktır. Aradaki /
her şeyle, ortadan kaldırmak için eğik çizgi ( ) sayısı olan bir sayı alır ; bu durumda -p1
, sadece ovaya giden yolu azaltmak için kullanırdık comm.c
.
Bu varsayımlar comm.c
aslında aynı dizinde, bu da yorumunuzun doğru olup olmadığı konusunda başka bir ipucu olacak. Her iki satır da yapıysa src/comm.c
ve comm.c
aslında src
yapı ağacınızın alt dizinindeyse, kullanmanız gerekir -p0
- hiç kullanmamanın -p
TÜM eğik çizgileri kaldıracağına dikkat edin . Yol mutlaksa (yani, ile başlarsa /
), muhtemelen istediğiniz şey budur. Şimdi yamayı uygulayın:
patch -p1 < patch.diff
Kaynak değiştirildi. Daha fazla .diff
dosya varsa, bunları aynı şekilde uygulayın.
3. Oluşturun ve yükleyin.
Bu kaynaktan inşa şeye geçip gidebilir, normal bir süreçtir - ilk ./configure
, sonra make
, make check
, make install
. Sonuncuyu yapmadan önce, zaten kurulu bir kurulumunuz foobar
varsa, kaldırmak veya üzerine yazmak isteyip istemediğinize veya adlandırma çakışmasıyla nasıl başa çıkacağınıza karar verin. Muhtemelen foobar
eskisine değil, yeni yamalı sürümünüze başvurmak istersiniz .