İçeriğe atla

patch (Unix)

patch
Orijinal yazar(lar)Larry Wall
Geliştirici(ler)Paul Eggert, Wayne Davison, David MacKenzie, Andreas Grünbacher
İlk yayınlanma24 Mayıs 1985
İşletim sistemiUnix ve Unix-like, MSX-DOS, Microsoft Windows
TürKomut (bilgi işlem)
Kod deposu Bunu Vikiveri'de düzenleyin

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 orijinal ve güncel dosya karşılaştırılacak oluşturulur. Patch programı ile dosyaları güncellemeye yamayı uygulamak veya basitçe dosyaları yamamak denir.

Tarihçe

Patch programı ilk kez Larry Wall (kendisi daha sonra Perl programlam dilini geliştirmiştir) tarafından yazıldı ve mod.sources grubuna gönderildi.[1] (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 FSF 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. Patch dosyaları gereksiz metinler biriktirmez, bu da bazı insanların kelimenin İngilizce anlamına göre algıladığı şeydir; patch, eklediği kadar metni de kaldırabilir.

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

Düzeltme ekine girdi işlevi gören diff dosyaları okunabilir metin dosyalarıdır; bu, kullanılmadan önce insanlar tarafından kolayca gözden geçirilebileceği veya değiştirilebileceği anlamına gelir.

"Diff" programına ek olarak, diff'ler Subversion, CVS, RCS, Mercurial ve Git gibi diğer programlar tarafından da üretilebilir.

Yamalar, CVS dahil birçok kaynak kontrol sisteminin önemli bir bileşeni olmuştur.

Gelişmiş diff (fark) formatları

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ışarıdan 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 unified diff kullanılmasını belirtir

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

 $ patch < degisiklikler.diff

This tells patch to apply the changes to the specified files described in mods.diff. Patches to files in subdirectories require the additional -pnumber option, where number is 1 if the base directory of the source tree is included in the diff, and 0 otherwise.

Patches can be undone, or reversed, with the '-R' option:

 $ patch -R < mods.diff

If the file is not identical to the version the diff was generated against, the patch will not be able to be applied cleanly. For example, if lines of text are inserted at the beginning, the line numbers referred to in the patch will be incorrect. patch is able to recover from this, by looking at nearby lines to relocate the text to be patched. It will also recover when lines of context (for context and unified diffs) are altered; this is described as fuzz.

Diğer Platformlarda patch

Originally written for Unix and Unix-like systems, patch has also been ported to Windows and many other platforms. Windows ports of patch are provided by GnuWin32 and UnxUtils.

Ayrıca bakınız

  • diff
  • Patch (computing)
  • quilt
  • rsync
  • Unix yazılımları listesi
  • IBM Mainframe utility IEBUPDTE a mainframe patch program, created about 20 years earlier (circa ~1964).

Kaynakça

  1. ^ Larry Wall (24 Mayıs 1985). "patch version 1.3". 24 Ocak 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Temmuz 2010. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">İşletim sistemi</span> bilgisayar donanım kaynaklarını yöneten yazılım

İşletim sistemi ya da işletim dizgesi, bir bilgisayarın donanım kaynaklarını yöneten ve uygulama yazılımlarına hizmet sağlayan yazılımların bir bütünüdür. İşletim sistemleri, bilgisayarın donanımı ile uygulama yazılımları arasında bir köprü görevi görerek kullanıcıların sistemle etkileşim kurmasını sağlar. Öne çıkan örnekler arasında Microsoft Windows, macOS, GNU/Linux dağıtımları, Android ve iOS yer alır.

Bilgisayar virüsü, kullanıcının izni ya da bilgisi dahilinde olmadan bilgisayarın çalışma şeklini değiştiren ve kendini diğer dosyaların içerisinde gizlemeye çalışan aslında bir tür bilgisayar programıdır.

<span class="mw-page-title-main">GNU Genel Kamu Lisansı</span>

GNU Genel Kamu Lisansı yaygın kullanılan bir özgür yazılım lisansı. İlk sürümü 1989 yılında Richard Stallman tarafından GNU Tasarısı için kaleme alınmıştır. Üçüncü ve son sürüm ise Richard Stallman'ın yöneticisi olduğu Özgür Yazılım Vakfı (FSF), Eben Moglen ve Yazılım Özgürlüğü Hukuk Merkezi tarafından kaleme alındı ve özgür yazılım topluluklarının çeşitli itiraz ve katkılarıyla son hâlini aldı.

<span class="mw-page-title-main">AWK</span>

AWK, Alfred Aho, Peter Weinberger ve Brian Kernighan tarafından 1977 yılında geliştirilmiş ve ilk olarak Unix Version 7 ile yayınlanmış bir programlama dilidir. C gibi derlenen dillerden farklı olarak yorumlanan bir betik dilidir ve günümüzde özellikle sed ve Kabuk programlamada kullanılmaktadır.

<span class="mw-page-title-main">Emacs</span> genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin editörlerinin genel adı

Emacs, özellikle genişletilebilirlik yönünden birbirine benzeyen ve ilişkili metin düzenleyicilerin genel adıdır. Bu metin düzenleyicilerin en yaygını GNU Emacs olduğundan, sıklıkla GNU Emacs yerine kullanılır.

Yama, bilgisayar programlarında oluşan bir hatayı ya da programın içeriğindeki hatalı bir fonksiyonu düzelten bir programcıktır. Genelde bilgisayarlardaki en büyük güvenlik sorunlarından olan yazılım açıklarına müdahale amacıyla kullanılır.

diff

diff, bilgisayar ile hesaplamada dosya karşılaştırmaya yarayan bir yardımcı programdır. Program düz metin dosyalarındaki her bir satırda yapılan değişiklikleri gösterir. Modern gerçeklemeleri ikili dosyaları da destekler. Diff programının çıktısı diff ya da bir Unix komutu olan patch olarak adlandırılır.

<span class="mw-page-title-main">Sanal konsol</span>

Sanal konsol, bilgisayar işlemede ve Unixware, Linux ve BSD gibi bazı işletim sistemlerinde, klavye ve ekran arasında yaratılmış kavramsal bir bağ arayüzüdür. Sistem konsolu kullanıcının birbirinden bağımsız arayüzleri görebilmek için sanal konsolları değiştirmesine olanak sağlayan tek bir konsoldur. Sanal konsollar en az 1980'lerdeki Xenix'e kadar uzanır.

<span class="mw-page-title-main">Notepad++</span>

Notepad++, Windows işletim sistemi içerisine gömülü olarak gelen Notepad yazılımının yerine kullanılmak üzere C++ ile saf Win32 API ve STL ile geliştirilmiş GPL ile dağıtılan açık kaynak kodlu bir kaynak kod düzenleyicisidir. Scintilla düzenleyicisi temel alınarak geliştirilen Notepad++, birçok yazılımlama diline ait kodu görüntüleyip uygun olarak renklendirebilir. Türkçe dâhil birçok konuşma diline destek veren bir arabirimi vardır.

cat (Unix) komut satırı programı

cat, dosyaları sırasıyla okuyan ve standart çıktıya yazan POSIX standartlı bir Unix komutudur.

comm

comm, Unix ve Unix Benzeri sistemlerde iki düz metin dosyası arasında karşılaştırma yapmak için kullanılan bir Unix komut satırı programı'dır.

<span class="mw-page-title-main">GNU Projesi</span> Özgür yazılım projesi

GNU Tasarısı, toplu işbirliğini temel alan bir özgür yazılım tasarısıdır. Richard Stallman tarafından Massachusetts Teknoloji Enstitüsü'nde 27 Eylül 1983 tarihinde kamuoyuna duyurulmuştur. Tasarının hedefi işbirliği yoluyla özgür yazılımlar geliştirip dağıtarak bilgisayar kullanıcılarının bilgisayarlarını ve benzeri araçlarını kendi istekleri doğrultusunda özgürce kullanmalarını sağlamaktır. Bu tasarının temelinde kullanıcıların yazılımı çalıştırma, paylaşma, inceleme ve değiştirme konularında özgür olmaları yatar. GNU yazılımları bu özgürlükleri dağıtıldıkları lisans ile yasal olarak güvence altına alır, dolayısıyla GNU yazılımları özgür yazılımlardır.

John the Ripper, C programlama dili ile yazılmış özgür bir parola çözme yazılım aracıdır. Başlangıçta Unix işletim sistemi için geliştirilen bu araç, şimdi 15 farklı platformda çalışmaktadır.. Parola çözücüleri tek paket içinde bir araya getiren, parola test eden ve çözen en popüler programlardan biridir. Hash parola tiplerini tanır ve özelleştirilebilir çözücüler içerir. Çeşitli şifreli parola biçimlerine karşı, çeşitli Unix sürümlerinde bulunan, Kerberos AFS ve Windows NT/2000/XP/2003 LM aralarında olmak üzere birkaç hash türü içerir. İlave modüllerde MD4-tabanlı parola hash'lerinin ve LDAP, MySQL ve diğer saklanan parolaların bulunmasıyla kabiliyeti genişletilmiştir. John aracı ücretsiz ve açık kaynaklı olmasının yanı sıra 'pro' sürümü de mevcuttur. Kullanımı terminalden gerçekleşse de son yıllarda diğer geliştiriciler tarafından GUI versiyonu da çıkartılmıştır.

Özel mülk yazılım ya da sahipli yazılım, yazılımın yaratıcısının, yayıncısının veya diğer hak sahibi ortaklarının fikrî mülkiyet hakkını ve telif hakkını kendi elinde tuttuğu bilgisayar yazılımıdır. Yazılımın alıcılarına, yazılımı özgürce paylaşma veya değiştirme hakkı vermez. Özel mülk yazılımlar, mülk sahipleri tarafından ücretli ya da ücretsiz olarak yayınlanabilir.

<span class="mw-page-title-main">GNU C Library</span>

GNU C Library, bilinen adıyla glibc, GNU Tasarısı'nın C standart kütüphanesi uyarlamasıdır. Adına rağmen artık doğrudan C++ desteği bulunur. 1990'ların başında Özgür Yazılım Vakfı tarafından GNU işletim sistemi için geliştirilmeye başlanmıştır.

<span class="mw-page-title-main">Metin tabanlı kullanıcı arayüzü</span> bir metin ekranına çıktı vermeye veya onu kontrol etmeye dayalı arabirim türü

Metin tabanlı kullanıcı arayüzü, metinsel kullanıcı arayüzü veya terminal kullanıcı arabirimi olarak da adlandırılır, grafik kullanıcı arayüzlerinin (GUI) icadından bir süre sonra ortaya çıkan ve onu grafik kullanıcı arayüzünden ayırt etmek için türetilen yeni bir terimdir. TUI'de bilgisayar grafikleri metin kipinde görüntülenir. Gelişmiş bir TUI, GUI'ler gibi tüm ekran alanını kullanabilir ve fare ve diğer girişleri kabul edebilir.

Bilgi işlemde gettext, Unix benzeri bilgisayar işletim sistemlerinde çok dilli programlar yazmak için yaygın olarak kullanılan bir uluslararasılaştırma ve yerelleştirme sistemidir. Gettext'in temel faydalarından biri, programlamayı çevirmekten ayırmasıdır. Gettext'in en sık kullanılan uygulaması, 1995 yılında GNU Projesi tarafından yayınlanan GNU gettext'idir .Çalışma zamanı kitaplığı libintl'dir. Gettext, çok sayıda isim türü için farklı dizeler kullanma seçeneği sunar, ancak dilbilgisel cinsiyet için desteği yoktur.

<span class="mw-page-title-main">Kernel panic</span>

Bir kernel panic, bir işletim sisteminin çekirdeği tarafından, güvenli bir şekilde kurtarılamadığı veya sistemi çalıştırmaya devam etmenin büyük veri kaybı yaşanabilmesinin yüksek bir riske sahip olacağı dahili bir kritik hata tespit edildiğinde alınan bir güvenlik önlemidir. Terim büyük ölçüde Unix ve Unix benzeri sistemlere özgüdür. Microsoft Windows işletim sistemlerindeki eşdeğeri, genellikle "mavi ekran" olarak adlandırılan bir durdurma hatasıdır.

<span class="mw-page-title-main">Meld (yazılım)</span>

Meld, geliştiricilerin kullanımını hedefleyen görsel fark ve birleştirme aracıdır. Kullanıcıların iki veya üç dosya veya dizini görsel olarak karşılaştırmasına ve farklı satırları renklerle kodlamasına olanak tanır.

file (komut) Standart Unix programı

​file​ komutu, Unix ve Unix benzeri işletim sistemlerinde standart bir program'dır. Bir bilgisayar dosyası içinde bulunan veri türünü tanımak için kullanılır.