Patch

Ubuntu Türkiye Wiki sitesinden
Gezinti kısmına atla Arama kısmına atla

patch, yama dosyası adı verilen farklı bir dosyada yer alan yönergelere göre metin dosyalarını güncelleyen bir Unix programıdır. Yama dosyası (kısaca yama olarak da anılır) bir liste halinde iki dosya arasındaki farklılıkları barındıran bir metin dosyasıdır, ve diff programı ile özgün ve yeni dosya karşılaştırılarak oluşturulur. Patch programı ile dosyaları güncelleme işlemine, yamayı uygulamak veya basitçe dosyaları yamamak denir.

Tarihçesi

Patch programı ilk kez Larry Wall (kendisi daha sonra Perl programlama dilini geliştirmiştir) tarafından yazıldı ve mod.sources grubuna gönderildi. Bu liste daha sonra Mayıs 1985'te comp.sources.unix) adını aldı. Bu programın daha yeni bir sürümü GNU Projesinin bir parçasıdır ve Özgür Yazılım Vakfı tarafından sürdürülmektedir.

Kullanım kapsamı

Patch, bir programcı tarafından diğer programcılar için geliştirildiğinden, çoğunlukla bir kaynak kodunu daha yeni bir sürüme güncellemek için kullanılır. Bu nedenle, aslında herhangi bir metin için kullanılabilecek olsalar da, çoğu kişi yamaları kaynak kodlarıyla ilişkilendirir. Yamalı dosyalar, bazı insanlar için İngilizce kelimenin ne anlama geldiğini belirten gereksiz metinleri barındırmazlar. Patch, eklenen metinleri kaldırma yeteneğidir.

Burada anlatılan yamalar, bilgisayar programlarınının ikili dosyalarını yeni sürüme güncellemek için dağıtılan ikili yamalarla konsept olarak benzer olsalar da karıştırılmamalıdır.

Yazılım geliştirmede yamalar

Yamalanacak diff dosyaları, okunabilir metin dosyalarıdır. İnsanlar tarafından kullanılmadan önce kolayca gözden geçirilebilirler ve düzenlenebilirler.

Yamalar, Eşzamanlı Sürümler Sistemi (CVS) de dahil birçok kaynak kontrol sistemlerinde çok önemli bileşenlerdir.

Gelişmiş diff (fark) biçimleri

Gelişmiş farklar kullanıldığında, yamalar eğer değiştirilen yerlerde bir çelişkili durum oluşmuyorsa, arada değiştirilmiş olan dosyalara bile uygulanabilmektedir. Bu, farkların olduğu kısımları bağlam denen, farkın önündeki ve ardındaki kısımları da içeren "bağlamlı farklar" ve "birleşik farklar" ("unidiff" olarak da bilinir) gibi biçimlerin kullanılmasıyla sağlanabilmektedir. Yama programı, daha sonra bu bağlam kısımlarını da kullanarak değişikliğin esas uygulanacağı kısmı, dosyanın içindeki yeri değişmiş olsa bile bulabilmektedir. Bu özelliklerinden dolayı, bağlam ve birleşik fark biçimleri, çoğu yazılım projesinde yamaların gönderilmesinde tercih edilmektedir.

Yukardaki özellikler fark (diff) ve yama (patch) programlarını özellikle özgür yazılımlarda değişikliklerin aktarılmasında popüler hale getirmiştir. Dış katılımcılar, kaynak kodunun son halini indirip, üzerinde değişiklikler yapabilir ve bunları fark biçiminde geliştirme takımına gönderebilirler. Fark dosyalarına bakarak geliştirme ekibi yamaları uygulamadan önce gözden geçirme yapabilir, veya kaynak kodunun daha da güncel bir sürümüne (belki dışardan erişimin olmadığı) yamayı uygulayabilirler.

Kullanım örnekleri

Yama oluşturmak için, aşağıdaki gibi bir komut çalıştırılabilir:


 $ diff -u eskiDosya yeniDosya > degisiklikler.diff

-u parametresi diff programına birleşik diff kullanılmasını belirtir.

Yamanın uygulanması için, aşağıdaki gibi bir komut çalıştırılabilir:


 $ patch < degisiklikler.diff

Bu kod patch'a mods.diff'de açıklanan dosyalardaki değişikliklerin uygulanacağını söyler. Ek -psayı seçeneği gerektiren alt dizinlerdeki dosyaları yamar. Eğer kaynak ağacının temel dizini diff'e eklenirse buradaki sayı 1, aksi taktirde 0'dır.

Yamalar '-R' seçeneği ile şöyle ihmal edilebilir:


 $ patch -R < mods.diff

Dosya eğer sürüm ile kimliklendirilmezse, patch tam olarak uygulanamaz. Örneğin, metnin satırları başlangıca yerleştirilmişse, satır umaraları patch'ın doğru olmayacağını ifade eder. Onu bu durumdan kurtarmak için, yamalı metin satırların yanına yerleştirilir.

Diğer Platformlarda patch

Özgün olarak Unix ve Unix benzer sistemler için yazılan patch, ayrıca Microsoft Windows ve diğer birçok platformlarda da kullanılabilir. Windows yama yuvaları GnuWin32 ve UnxUtils tarafından sağlanır.

Ayrıca bakınız

İlgili maddeler

Dış bağlantılar

Kaynakça

Türkçe Vikipedi patch maddesi