Yazılım yamalarını nasıl uygularım?


Yanıtlar:


21

Yamalar genellikle .diffdosyalarda bulunur, çünkü yamalar diffkomut 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.1ve içine kopyalayın cd foobar.0.1. Ardından, patchkomutu çalıştırmanız gerekir . Bu, standart girişten okur, bu nedenle dosyayı içeri aktarmak istersiniz .diff. Zor kısım, -pseç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.cdeğ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). -pAnahtarı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.caslı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.cve comm.caslında srcyapı ağacınızın alt dizinindeyse, kullanmanız gerekir -p0- hiç kullanmamanın -pTÜ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 .diffdosya 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 foobarvarsa, kaldırmak veya üzerine yazmak isteyip istemediğinize veya adlandırma çakışmasıyla nasıl başa çıkacağınıza karar verin. Muhtemelen foobareskisine değil, yeni yamalı sürümünüze başvurmak istersiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.