Provided by:
manpages-tr_1.0.5.1-2_all 
ISIM
patch - bir yama dosyasini orjinaline uygular
KULLANIM
patch [se,cenekler] [orjinal [yama]]
genellikle soyle kullanilir:
patch -psayi <yama
A,CIKLAMA
patch, diff(1) ile uretilmis bir fark listesi iceren bir yama dosyasi
alir ve bu yama dosyasindaki farklari bir veya daha fazla orjinal
dosyaya uygulayarak orjinallerin yamali surumlerini uretir. Normalde
yamali surumler orjinal dosyalara yazilarak olusturulur. Yedekler
olusturulabilir; -b ve --backup seceneklerine bakiniz. Yamanacak
dosyalarin isimleri normalde yama dosyasindan alinir, ancak eger sadece
bir yamanacak dosya varsa ismi komut satirinda orjinal olarak
belirtilebilir.
patch calistirildiginda fark listesinin turu -c (--context), -e (--ed),
-n (--normal) veya -u (--unified) secenekleri ile belirtilmemisse once
fark listesinin turunu saptamaya calisir. ed fark dosyalari bir
boruhatti ile ed(1) metin duzenleyicisi uzerinden uygulanirken,
baglamsal fark dosyalari (eski, yeni ve birlesik) ve normal fark
dosyalari dogrudan patch tarafindan uygulanir.
patch yama dosyasindaki olasi bozuk alanlari atlayarak yamayi
uygulamaya calisir. Bu ozelliginden yararlanarak yama dosyasi icine bir
aciklama yerlestirebilirsiniz ve buna ragmen yama uygulanir. Eger diff
dosyasinin icerigi surekli ayni bicimde girintilenmisse veya bir
baglamsal fark dpsyasinda satirlar CRLF ile bitiyorsa ya da Internet
RFC 934'de "-" icin belirtildigi gibi "-" ile baslayan satirlar varsa
bunlar hesaba katilir.
Baglamsal fark dosyalari ile ve bir daha az genisletme yapan normal
fark dosyalari ile patch, yama icindeki satir numaralari yanlis
oldugunda bunu saptayabilir ve yama listesinin her elemaninin
uygulanacagi dogru yeri bulmaya calisir. Once listedeki her eleman ile
ilgili satir numaralarini alir ve yamanin uygulanmasinda kullanilan
arti ve eksi ile belirlenmis satirlara bakar. Eger satir numaralari
dogru yeri belirtmiyorsa, eksi ile belirtilmis satirlari bulmak uzere
metni ileri ve geri her iki yonde tarar. patch ilk taramada
degistirilecek satirlarin tamami icin bir eslesme arar. Boyle bir
eslesme bulamazsa, yama dosyasi bir baglamsal yama dosyasi ise ve
belirsizlik faktoru de 1 ise degistirilecek satirlarin ilkini ve
sonuncusunu yok sayarak bir arama daha yapar. Bulamazsa ve belirsizlik
faktoru 2 veya 2 den buyukse bu kez ilk ve son iki satiri yok sayarak
bir arama daha yapar. (Ontanimli belirsizlik faktoru 2'dir.) patch
yamanin uygulanacagi yeri bulamazsa, uygulayamadigi bolumu bir red
dosyasina yazar. Bu dosyanin ismi normalde yama dosyasinin ismine .rej
eklenerek elde edilir. Eger .rej eki cok uzun bir dosya ismi
olusturacaksa dosya isminin sonuna # eklenir, bu karakter de fazla
geliyorsa dosya isminin son karakteri # ile degistirilir. (Rededdilen
kisim yamanin biciminden bagimsiz olarak siradan baglamsal fark
biciminde ciktilanir. Eger girdi bir normal fark dosyasi ise baglamin
cogu basitce bos olur.) Red dosyasindaki reddedilen kisimlarla ilgili
satir numaralari yama dosyasindaki satir numaralarindan farkli
olabilir: yeni satir numaralari yamanin eski dosyada degil de yeni
(yamanmis) dosyada bulunabilecegi yaklasik yeri belirtecek sekilde
olusturulur.
Her yama parcasi tamamlandiginda, eger parcanin uygulanmasi basarisiz
olmussa (yeni dosyadaki) hangi satirdan itibaren devam edecegini size
bildirilir. Eger yama parcasi fark dosyasinda belirtilen satirdan
farkli numarali bir satira uygulanmissa size yeni konumu bildirir. Yeni
konumun cok farkli olmasi parcanin yanlis yeri yamamakta kullanildigini
belirtebilir. Bir eslesme bulunurken belirsizlik faktoru kullanmak
gerekmisse, biraz kusku duyasiniz diye bu da ayrica bildirilir.
--verbose secenegini belirtmisseniz basariyla uygulanan yama parcalari
hakkinda da bilgi verilir.
Komut satirinda orjinal dosya belirtilmemisse patch, yama dosyasindaki
yama olarak uygulanabilecek alanlarin disindaki alanlari
degerlendirerek asagidaki kurallara bagli olarak yamanin uygulanacagi
dosyanin ismini tespit etmeye calisir.
Once, aday dosya isimlerinin listesini elde etmeye calisir. Bunu soyle
yapar:
. Baslik bir baglamsal fark dosyasi basligi ise, patch eski ve yeni
dosya isimlerini basliktan alir. Eger isimdeki bolu cizgilerinin
sayisi -psayi veya --strip=sayi secenekleri ile belirtilen kadar
degilse bu isim yoksayilir. /dev/null ismi de ayrica yoksayilir.
. Yama olarak uygulanacak alanlarin disinda Index: ile baslayan
satirlar varsa ve hem yeni hem de eski dosya isimleri
belirtilmemisse veya patch POSIX uyumlu ise, patch dosya isimlerini
Index: ile baslayan satirlardan alir.
. Bundan sonraki kurallara uygun olmak uzere, aday dosya isimlerinin,
baslikta gorundukleri siraya bakilmaksizin, (eski, yeni, Index)
duzeninde olacaklari varsayilir.
patch bir dosya ismini aday dosya listesinden su kurallara gore secer:
. Bazi isimli dosyalar mevcutsa, patch POSIX uyumluysa ilk dosya ismi
degilse eniyi isim secilir.
. Eger patch RCS, ClearCase ve SCCS'yi yoksaymiyorsa (-g sayi veya
--get=sayi seceneklerine bakiniz) ve isimli bir dosya mevcut degilse
ama bir RCS, ClearCase veya SCCS ana dosyasi varsa patch ilk isimli
dosyayi RCS, ClearCase veya SCCS ana dosyasi ile secer.
. Isimli dosya mevcut degilse, bir RCS, ClearCase veya SCCS ana
dosyasi da yoksa ama bazi dosya isimleri verilmisse, patch POSIX
uyumlu degilse ve yamanin bir dosya olusturmasi gerekiyorsa, patch
en az dizin olusturulacak sekilde en iyi dosya ismini secer.
. Simdiye dek bahsedilen kurallarla hal bir dosya ismi secilememisse,
yamanacak dosyanin ismi size sorulur ve patch dosya ismini buna gore
secer.
Isimli dosyalar listesinden "eniyi" dosya ismi soyle secilir: once en
az sayida dizini dosya yolu olarak alir, bundan sonra, uzantisiz en
kisa dosya isimleri, bundlardan sonra en kisa isimlerin tumu ve son
olarak da kalan ilk isim alinir.
Ek olarak, Yama olarak uygulanacak alanlarin disinda Prereq: ile
baslayan bir satir varsa, patch bu ongereklilikler satirindaki ilk
sozcugu (normalde bir surum numaraasidir) alir ve orjinal dosyaya bu
sozcuk var mi diye bakar. Yoksa patch isine devam etmeden once bir
dogrulama istegi yapar.
Tum bunlarin nihayetinde, soyle bir bildirim de yapabilirsiniz:
| patch -d /usr/src/local/blurfl
ve, blurfl dizinindeki bir dosya yama dosyasiyla yamanir.
Eger yama dosyasi bir yamadan fazlasini iceriyorsa patch onlarin
herbirini farkli birer yama dosyasindan geliyormuscasina uygular. Yama
olarak uygulanabilecek her satir grubundan once gelen satirlarda
bulunan dosya isimleri ve surum numaralarindan yukarida bahsedildigi
gibi yamanacak dosyanin ismi saptanarak bu islem gerceklestirilir.
SE,CENEKLER
-b, --backup
Dosyalarin yedegini olusturur. Bir dosya yamanirken orjinal dosya
silinmez, ya baska bir yere kopyalanir ya da ismi degistirilir.
Mevcut olmayan bir dosyanin yedegi yapilirken, olmayan dosyayi
belirtmek icin sadece ismi olan cismi olmayan (bos) bir dosya
olusturulur. Yedek dosya isimlerinin nasil olusturuldugu -V veya
--version-control seceneklerinin aciklamalarinda bulunabilir.
--backup-if-mismatch
Yama bir dosya ile tam uyusmazsa ve yedekleme istenmese de dosya
yedeklenir. patch POSIX uyumlu degilse bu secenek ontanimli olarak
uygulanir.
--no-backup-if-mismatch
Yama bir dosya ile tam uyusmazsa ve yedekleme istense de dosya
yedeklenmez. patch POSIX uyumlu degilse bu secenek ontanimli olarak
uygulanir.
-B "onek, --prefix="onek
Basit yedek dosya ismi olusturulurken dosya isminin onune "onek
getirilir. Ornegin, -B /junk/ ile dosya ismi src/patch/util.c olan
bir dosyanin basit yedegi yapilirken dosya ismi
/junk/src/patch/util.c yapilir.
--binary
Standart cikti veya /dev/tty disinda tum dosyalar icin okuma ve
yazma islemleri iklik kipte yapilir. Bu secenek POSIX uyumlu
sistemlerde etkisizdir. DOS benzeri sistemlerde ise bu secenegin bir
fark olusturmasi icin yama diff -a --binary ile uretilmis olmalidir.
-c, --context
Yama dosyasi siradan bir baglamsal fark dosyasi olarak yorumlanir.
-d dizin, --directory=dizin
Hicbir sey yapmadan, hemen dizin dizinine gecilir.
-D tanim, --ifdef=tanim
Degisiklikleri isaretlemede #ifdef ... #endif yapisi tanim
farklilastirma sembolu ile kullanilir.
--dry-run
Hicbir dosyada degisiklik yapmaksizin uygulanan yamalarin sonuclari
basilir.
-e, --ed
Yama dosyasi bir ed betigi olarak yorumlanir.
-E, --remove-empty-files
Yama uygulandiktan sonra bosalan dosyalar silinir. Aslinda, bu
secenek gereksizdir, cunku patch yamadiktan sonra dosyanin varolup
olmayacagini saptamak icin basliktaki tarih damgasini inceler. Buna
ragmen, girdi bir baglamsal fark dosyasi degilse ya da patch POSIX
uyumlu ise, patch bu secenek verilmedikce yamandiktan sonra bosalan
dosyalari silmez. patch boyle bir dosyayi sildikten sonra bosalmissa
dosyanin bulundugu dizini de silmeye calisir.
-f, --force
Kullanicinin ne yaptigini tam olarak bildigi varsayilir ve
kullaniciya herhangi bir soru yoneltilmez. Hangi dosyalarin
yamanacagini belirtmeyen basliklar iceren yamalar atlanir; Prereq:
ile baslayan satirlarda yanlis surum bilgisi olsa bile dosya
yamanir; eski ve yeni dosyalarin yer degistirilmesi gerekse bile
yamalarin bu islem yapilmadan uygulanacagi varsayilir. Bu secenek
aciklamalari engellemez, bunun icin -s secenegine bakiniz.
-F sayi, --fuzz=sayi
En buyuk belirsizlik faktorunu belirtmekte kullanilir. Bu secenek
sadece baglamsal fark dosyalarina uygulanir ve patch yamanacak yeri
bulurken yama olarak kullanilacak satirlarin bastan ve sondan bu
kadarini yoksayar. Cok buyuk belirsizlik faktorlerinin yamanin
basarisizligini arttiracagini unutmayin. Ontanimli belirsizlik
faktoru 2'dir ve baglamsal fark dosyalarinda baglamsal satir
sayisindan daha yuksek bir deger (genelde 3'tur) atanmamalidir.
-g sayi, --get=sayi
Bir dosya RCS veya SCCS denetimindeyken, boyle bir dosya yoksa veya
salt-okunursa ya da ontanimli surumuyle eslesiyorsa; veya ClearCase
denetimindeyken, boyle bir dosya yoksa, bu secenek, patch'in
eylemlerini denetlemekte kullanilir. sayi pozitifse, patch dosyayi
surum denetim sisteminden alir; sifirsa, RCS, SCCS veya ClearCase
yoksayilir ve dosya alinmaz; negatifse dosyanin alinip alinmayacagi
kullaniciya sorulur. Bu secenegin ontanimli degeri eger atanmissa,
PATCH_GET ortam degiskeninden alinir; atanmamissa ve patch POSIX
uyumluysa ontanimli deger sifir, aksi takdirde negatiftir.
--help
Seceneklerin bir ozetini basar ve cikar.
-i yamadosyasi, --input=yamadosyasi
Yama yamadosyasi dosyasindan okunur. yamadosyasi olarak - verilmisse
ontanimli olarak standart girdi okunur.
-l, --ignore-whitespace
Yamanacak dosyalarin icindeki sekmeler ve bosluklar icin yama
icindeki bosluklarla birebir eslesme aranmaz, ancak herhangi bir
uzunlukta boslugun her iki dosyada da karsilikli varligi sarttir,
satir sonlarindaki bosluklar eslesme acisindan yoksayilir. Normal
karakterler tam olarak eslestirilir. Baglamsal her satir yamanacak
dosyadaki satirlarla daima eslestirilir.
-n, --normal
Yama dosyasi normal bir yama dosyasi olarak yorumlanir.
-N, --forward
Eski ve yeni dosyalarin yer degistirilecegi gorunen veya zaten
uygulanmis yamalar yoksayilir. -R secenegine de bakiniz.
-o ,ciktidosyasi, --output=,ciktidosyasi
Dosyalarin yerinde yamanmasi yerine cikti, ,ciktidosyasi dosyasina
gonderilir.
-p sayi, --strip=sayi
Yama dosyasinda bulunan her dosya isminin basindan sayi ile
belirtilen sayida bolu cizgisi iceren dizge yoksayilir. Birden fazla
yanyana bolu cizgisi varsa bunlar tek bir bolu cizgisi sayilir. Yama
dosyasinin yamanacak dosyalardan farkli bir dizinde tutulmasi
durumunda yamanacak dosyalarin nasil bulunacagini belirtmek amaciyla
kullanilir. Ornegin, yama dosyasinda yamanacak dosya isminin soyle
verildigini varsayalim:
/u/howard/src/blurfl/blurfl.c
Secenek -p0 olarak verilirse bu dizge oldugu gibi ele alinir, -p1
verilirse,
u/howard/src/blurfl/blurfl.c
bastaki bolu cizgisi atilir, -p4 verilirse,
blurfl/blurfl.c
olur. -p hic belirtilmezse sonuc blurfl.c olacaktir. Bu durumda
dosya yamanin bulundugu dizinde aranacagindan dosya daha farkli bir
yerdeyse bu da -d secenegi ile belirtilebilir.
--posix
POSIX standardina kesinlikle uyulur:
. Fark dosyasi basliklarindan dosya isimleri ogrenilirken,
listedeki (eski, yeni, birlesik) ilk mevcut dosya alinir.
. Yamandiktan sonra bosalan dosyalar silinmez.
. RCS, ClearCase veya SCCS'deki dosyalar icin alinacak mi diye
sormaz.
. Komut satirinda seceneklerin dosyalardan once verilmesi gerekir.
. Eslesmeyen dosyalarin yedeklemesi yapilmaz.
--quoting-style=s"ozc"uk
Ciktilanan isimler sarmalanirken s"ozc"uk ile belirtilen tarz
kullanilir. s"ozc"uk sunlardan biri olabilir:
literal
Isimler oldugu gibi ciktilanir.
shell Isimler kabuk metakarakterleri iceriyorsa kabuk icin
sarmalanir yoksa anlami belirsiz ciktilama yapilir.
shell-always
Normalde sarmalanmalari gerekmese bile isimler daima kabuk
icin sarmalanir.
c Isimler C dilinde dizgelere uygulandigi gibi sarmalanir.
escape Isimler cevreleyen cifttirnaklarin ihmal edilmesi disinda c
tarzindaki gibi sarmalanir.
--quoting-style secenegi icin ontanimli degeri QUOTING_STYLE ortam
degiskeninde belirtebilirsiniz. Bu ortam degikeni atanmamissa
ontanimli deger shell'dir.
-r reddosyasi, --reject-file=reddosyasi
Bu yamanin eski ve yeni dosyalar yer degistirilerek uygulanacagi
varsayilir. Yama olarak kullanilacak her bolumdeki eski ve yeni
satirlar yer degistirilerek uygulanmaya calisilir. Yer
degistirildiginde anlamsiz olan kisimlar reddedilir. -R secenegi ed
fark betikleri ile calismaz, cunku yer degistirme islemini
gerceklestirmek icin cok az bilgi icerirler.
Yama icindeki kisimlardan ilkinin uygulanmasi basarisiz olursa,
patch bu kismin eski ve yeni satirlarini yer degistirerek boyle
uygulanabiliyor mu diye bakar. Boyle uygulanabiliyorsa kullaniciya
-R seceneginin uygulanmasini isteyip istemedigini sorar.
Uygulanamiyorsa, patch normal olarak uygulamaya devam eder. (Bilgi:
Eger yama bir normal yama ise ve bos bir icerik bile daima
esleseceginden ilk komut yamanin bir ek uygulanacagini belirtiyorsa
bu yontem yer degistirmeli yamayi saptayamaz. Tesadufen, cogu yama
bir satirin tamamen silinmesini degil ya bir ek ya da bir degisiklik
yapilmasini gerektirir, bu durumda yer degistirmeli normal fark
dosyalarindan silme islemi ile baslayanlar basariyi arttiran
kurallarin uygulanmasina bagli olarak basarisiz olur.)
-s, --silent, --quiet
Bir hata olusmadikca bilgilendirici hicbir sey ciktilanmaz.
-t, --batch
-f seceneginde oldugu gibi sorular engellenir ama bu biraz farkli
kabulllerle yapilir: basliklarinda dosya isimlerini icermeyen
yamalar atlanir (-f ile ayni); yamanin Prereq: satirinda yanlis
surum belirtilen dosyalar icin yamalar atlanir; ve yer degistirme
uygulanmasi gerekliligi saptanan yamalarin yer degistirme ile
uygulanacagi varsayilir.
-T, --set-time
Yamanmis dosyalarin erisim ve degistirme zamanlari, baglamsal fark
dosyalarinin basliklarindaki zaman bilgisinin yerel zamani
gosterdigi varsayimiyla bu zamana ayarlanir. Bu secenegin
kullanilmasi onerilmez, cunku yerel zaman kullanilarak uygulanan
yamalari diger zaman dilimlerindeki kulanicilar kolayca
kullanamazlar, ayrica yaz saati uygulamasindan dolayi yerel zaman
damgalari yamanin gecmiste uygulanmasi gibi tuhafliklara sebep
olabilir. Bu secenek yerine -Z veya --set-utc seceneklerini
kullanarak zamani UTC'ye gore belirtmeyi tercih edin.
-u, --unified
Yama dosyasi birlesik baglamsal fark dosyasi olarak yorumlanir.
-v, --version
patch'in surum basligini ve ama seviyesini basar ve cikar.
-V y"ontem, --version-control=y"ontem
Yedek dosya isimleri saptanirken y"ontem kullanilir. Bu yontem ayrica
bu secenek ile gerektiginde degistirilmek uzere
PATCH_VERSION_CONTROL (veya bu atanmamissa VERSION_CONTROL) ortam
degiskeni ile atanabilir. Burada bir yontemin atanmasi yedekleme
yapilacagi anlamina gelmez, sadece yedekleme yapilacaksa yedek
dosyalarinin ismi bu yontem kullanilarak saptanir.
y"ontem degeri GNU Emacs'in `version-control' degiskeni gibidir;
farkli olarak patch daha aciklayici olan esanlamlilarini da tanir.
Gecerli y"ontem degerleri sunlardir (essiz kisaltmalar da kabul
edilir):
existing, nil
Zaten varolan dosyalarin numarali yedekleri yapilir, aksi
takdirde basit yedekleme yapilir. Bu ontanimlidir.
numbered, t
Numarali yedekleme yapilir. F dosyasinin yedek dosyasi N
surum numarasini belirtmek uzere F.~N~ biciminde
isimlendirilir.
simple, never
Basit yedekleme yapilir. -B (--prefix), -Y
(--basename-prefix) ve -z (--suffix) secenekleri ile basit
yedek dosyasi ismi belirtilebilir. Bu seceneklerin hicbiri
belirtilmemisse, basit yedekleme soneki kullanilir; sonek
degeri SIMPLE_BACKUP_SUFFIX ortam degiskeni ile
belirtilmemisse ontanimli olarak .orig soneki kullanilir.
Numarali ve basit yedeklemede dosya ismi cok uzun olursa bunlar
yerine sonek olarak ~ kullanilir, bu islem de dosya isminin cok uzun
olmasina sebep oluyorsa dosya ismindeki son karakter ~ karakteri ile
degistirilir.
--verbose
Yapilan islem hakkinda daha ayrintili bilgi verilir.
-x sayi, --debug=sayi
Sadece patch yamacilarini ilgilendiren hata ayiklama seceneklerini
belirtmek icin kullanilir.
-Y "onek, --basename-prefix="onek
Basit yedek dosyasi ismi olusturulurken dizinlerden arindirilmis
dosya isminin onune "onek getirilir. Ornegin basit yedek dosya ismi
-Y .del/ ile belirtilmisse src/patch/util.c dosyasinin ismi
src/patch/.del/util.c yapilir.
-z sonek, --suffix=sonek
Basit yedek dosyasi ismi olusturulurken dosya isminin sonuna sonek
getirilir. Ornegin basit yedek dosya ismi -z - ile belirtilmisse
src/patch/util.c dosyasinin ismi src/patch/util.c- yapilir.
Yedekleme soneki gerektiginde bu secenek ile degistirilmek uzere
SIMPLE_BACKUP_SUFFIX ortam degiskeni ile de atanabilir.
-Z, --set-utc
Yamanmis dosyalarin erisim ve degistirme zamanlari, baglamsal fark
dosyalarinin basliklarindaki zaman bilgisinin koordinatli evrensel
zamani (UTC; GMT olarak da bilinir) gosterdigi varsayimiyla bu
zamana ayarlanir. Ayrica -T veya --set-time seceneklerinin
aciklamasina da bakiniz.
Dosyanin orjinal zamani yama basliginda belirtilen zamanla
eslesmezse ya da onun icerigi yama ile tam olarak eslesmezse, -Z
(--set-utc) ve -T (--set-time) secenekleri bir dosyanin zamanini
ayarlamaktan kacinir. Buna ragmen -f (--force) secenegi
belirtilmisse dosyanin zamani ne olursa olsun ayarlanir.
diff cikti biciminin sinirlamalarindan dolayi, dosyalari icerigi
degistirilmeyecekse, bu seceneklerle bu dosyalarin zamani
guncellenemez. Ayrica, bu secenekleri kullandiginiz takdirde,
zamanlari guncellenmis dosyalara bagimli dosyalari kaldirmalisiniz
(make clean gibi). Boylece sonraki make cagrilarinda yamanmis
dosyalarin zamanlarindan dolayi hatalarla/uyarilarla
karsilasmazsiniz.
ORTAM DEGI,SKENLERI
PATCH_GET
Eksik ya da salt-okunur dosyalarin RCS, ClearCase veya SCCS'den
ontanimli olarak alinip alinmayacagini belirtmek icin kullanilir. -g
(--get) seceneginin aciklamasina bakiniz.
POSIXLY_CORRECT
Bu degisken atanmissa patch ontanimli olarak POSIX standardina
uyumlu davranir. --posix seceneginin aciklamasina bakiniz.
QUOTING_STYLE
--quoting-style seceneginin ontanimli degeridir.
SIMPLE_BACKUP_SUFFIX
Bu ortam degiskeninin degeri basit yedekleme dosyalarinda .orig
soneki yerine kullanilacak sonektir.
TMPDIR, TMP, TEMP
Gecici dosyalari konulacagi dizindir. patch bu listeden atanmis
degerlerden ilkinin degeri kullanir. Hicbiri atanmamissa sisteme
bagli ontanimli deger kullanilir. Unix makinalar icin bu deger
normalde /tmp dizinidir.
VERSION_CONTROL, PATCH_VERSION_CONTROL
Surum denetim tarzini belirtir. -v (--version-control) seceneginin
aciklamasina bakiniz.
ILGILI DOSYALAR
/dev/tty
denetim ucbirimi; kullaniciya sorulan sorularin yanitlarini almak
icin kullanilir.
$TMPDIR/p*
gecici dosyalar
ILGILI BELGELER
diff(1), ed(1).
Marshall T. Rose ve Einar A. Stefferud, Proposed Standard for Message
Encapsulation,
Internet RFC 934 <URL: ftp://ftp.isi.edu/innotes/rfc934.txt> (1985-01).
YAMA G"ONDERENLER I,CIN
Yama gondermeye hazirlaniyorsaniz, hatirlamaniz gereken bir suru sey
olacaktir.
Yamanizi sistemli olarak olusturmalisiniz. Iyi bir yontem
diff -Naur eski yeni komutunu kullanmaktir. Burada eski ve yeni ile
eski ve yeni dizin isimleri belirtilir. Bu isimler herhangi bir bolu
cizgisi icermemelidir. diff komutunun basliklari yama uygulayicilarin
yamayi -Z (--set-utc) secenegi ile uygulayabilecekleri sekilde Evrensel
Zamanda geleneksel Unix tarih ve zaman biciminde icermelidir. Bu
ornekte, komut Bourne kabugu (bash) sozdizimiyle yazilmistir:
LC_ALL=C TZ=UTC0 diff -Naur gcc-2.7 gcc-2.8
Yamanizi uygulayacak olanlara hangi dizine gecip hangi patch secenegini
kullanacagini soyleyin. Secenek dizgesi olarak -Np1 onerilir.
Yaptiginiz yamayi kendinizi yamayi alacaklarin yerine koyarak deneyin,
yani orjinal dosyalarin bir kopyasina bu yamayi uygulayin.
Ilk diff'e gore yama seviyesini arttirmak icin yamanmis bir
patchlevel.h dosyasi tutmaktan dolayi cok uzgun kisileri gonderdiginiz
yama sayesinde kazanabilirsiniz. Yama icine bir Prereq: satiri
koyarsaniz onlarin siradisi yamalari uygularken bazi uyarilar
almamasini saglamis olursunuz.
Bir dosyanin yama uygulanirken olusturulmasini isterseniz,
olusturulacak dosyayi /dev/null ile ya da zaman damgasi Unix cag
baslangicina (Epoch: 1970-01-01 00:00:00 UTC) ayarlanmis bos bir dosya
ile karsilastirilarak yapilmis bir fark dosyasi ile bunu
saglayabilirsiniz. Bu sadece, olusturulacak dosya hedef dizinde yoksa
calisir. Tersine, yama uygulaniren mevcut bir dosyanin silinmesini
isterseniz, silinecek dosyayi yine zaman damgasi Unix cag baslangicina
ayarlanmis bos bir dosya ile karsilastirilarak yapilmis bir fark
dosyasi ile bunu saglayabilirsiniz. Silinmesini istediginiz dosya,
patch POSIX uyumlu degilse ve -E (--remove-empty-files) secenegi
verilmisse, silinecektir. Dosyalari olusturan ya da silen yamalar
uretmenin kolay bir yolu GNU diff'in -N (--new-file) secenegini
kullanmaktir.
Alicilarin -pN secenegini kullanacagini varsayiyorsaniz, bunun gibi bir
ciktiya sahip yama gondermeyin:
diff -Naur v2.0.29/prog/README prog/README
--- v2.0.29/prog/README Mon Mar 10 15:13:12 1997
+++ prog/README Mon Mar 17 14:58:22 1997
Cunku burada eski ve yeni dosya isimleri farkli sayida bolu cizgisi
icermektedir ve patch'in farkli surumleri dosya isimlerini farkli
yorumlarlar. Karisikligi onlemek icin boyle bir cikti ureten yamalar
gonderin:
diff -Naur v2.0.29/prog/README v2.0.30/prog/README
--- v2.0.29/prog/README Mon Mar 10 15:13:12 1997
+++ v2.0.30/prog/README Mon Mar 17 14:58:22 1997
README.orig gibi yedek dosya ismi olarak kullanilabilecek bir dosya
ismi ile karsilastirilarak uretilmis yamalar gondermekten kacinin.
Boyle bir yama patch'in gercek dosyayi degil yedekleme dosyasini
yamamasina yol acabilir. Bunun yerine old/README ve new/README gibi
farkli dizinlerde bulunan ayni isimli iki dosyayi karsilastirin.
Yer degistirmeli yamalar gondermemeye calisin. Boyle bir yama zaten
uygulanmis bir yama gibi goruneceginden insanlari sasirtir.
Yamanizin turetilerek elde edilen dosyalari yamamasina dikkat edin
(makefile'inizin icinde configure: configure.in diye bir satir var diye
configure dosyasini yamamak gibi.). Alicilar bu tur turetilerek elde
edilen dosyalari zaten kendileri turetebilmelidir. Turetilen dosyalar
icin fark dosyalari gondermek zorundaysaniz, fark dosyalarini UTC
kullanarak uretin. Boylece alicilar yamayi -Z (--set-utc) secenegi ile
uygulayip yamanmis dosyalara bagimli yamanmamis dosyalari kaldirmak
zorunda kalirlar (make clean yapmak gibi).
Besyuzbilmemkac farklik bir listeyi tek bir dosyaya koymaktan kacinmak
iyi olurdu. Birbiriyle ilgileri nedeniyle gruplanabilen dosyalarla
ilgili yamalari farkli dosyalara koymak akillica olur.
TANI ILETILERI
Tani iletilerinin varligi genellikle patch'in yama dosyanizi
cozumleyemedigini belirtir.
--verbose secenegi verilmisse bir Hmm... iletisi, yama dosyasinda
islenemeyen bir metinin varligini ve patch'in bu metin icinde bir yama
var mi acaba, varsa bu ne tur bir yamadir acaba diye bir saptama
yapmaya calistigini gosterir.
patch'in cikis durumu 0 ise, listedeki yamalarin hepsi basariyla
uygulanmis demektir. 1 ise bazilari uygulanamamistir. 2 ise biraz daha
fazla sorun vardir. Bir dongu icinde cok sayida yama uyguluyorsaniz her
seferinde bu cikis durumuna bakmaniz icabeder, boylece kismen yamanmis
dosyalara sonraki yamayi uygulamamis olursunuz.
YETERSIZLIKLER
Baglamsal fark dosyalari bos dosyalarin ve bos dizinlerin ya da
sembolik bag gibi ozel dosyalarin olusturulmasi ve silinmesi icin
guvenilir bir icerik sunamazlar. Sahiplik, dosya izinleri gibi
dosyalarin temel verilerinde bir degisiklik bilgisi sunamadiklari gibi
bir dosyanin baska bir dosyaya sabit bag mi olacagi gibi bilgileri de
iceremezler. Bu tur degisiklikler gerekliyse, bunlari gerceklestirecek
bir betik yamaya eslik etmelidir.
patch, bir ed betiginde olmayan satir numaralari hakkinda birsey
soyleyemedigi gibi, bir normal fark dosyasinda da sadece bir degisiklik
ya da silme islemi bulursa hatali satir numaralarini saptayabilir.
Belirsizlik faktoru olarak 3 verildiginde baglamsal fark dosyalari da
sorun yaratabilir. Elverisli bir etkilesimli arayuz eklenene kadar, bir
baglamsal fark dosyasinin boyle bir durumda sorun cikarip
cikarmayacagini kendiniz saptamalisiniz. Suphesiz, hatasiz gerceklesen
bir derleme islemi yamanin hatasiz uygulandigini gosteriyor gibi
gorunse de bu daima boyle olmaz.
patch, bazan biraz fazla tahmin yapmasi gerekse bile genellikle dogru
sonuclar uretir. Yine de, yamanin uretildigi dosya ile yamanin
uygulandigi dosya ayni surume ait oldugu zaman sonuclarin dogru olacagi
garanti edilmistir.
UYUMLULUK BILGILERI
POSIX standardi, patch'in geleneksel davranisindan farkli davranislar
belirtir. patch'in POSIX uyumlulugu olmayan 2.1 ve daha onceki
surumleri ile calismak zorundaysaniz bu farklardan haberdar olmaniz
gerekir.
. Geleneksel patch'de -p seceneginin terimi istege baglidir. Yalniz
basina -p secenegi -p0'a esdegerdir. Simdiki durumda ise -p
seceneginin bir terime sahip olmasi zorunludur ve -p 0 secenegi -p0
secenegine esdegerdir. En yuksek derecede uyumluluk adina secenegi
-p0 ve -p1 gibi kullanin.
Ayrica, geleneksel patch dosya yolunu saptarken bolu cizgilerinin
sayisina bakarken yeni surumleri dosya yolunu olusturan elemanlarin
sayisina bakmaktadir. Bundan dolayi, birden fazla yanyana bolu
cizgisi tek bir bolu cizgisi olarak ele alinmaktadir. En yuksek
derecede uyumluluk adina gonderilen yamalarin icindeki dosya
isimlerinde // olmamasina dikkat edin.
. Geleneksel patch'de yedekleme ontanimli olarak etkindir. Bu davranis
simdi sadece -b (--backup) secenegi ile etkin kilinabilmektedir.
Bunun tersine, POSIX patch'de bir eslesmeme olsa bile yedekleme asla
yapilmaz. GNU patch'de bu davranis --posix secenegi kullanilarak
yahut POSIXLY_CORRECT ortam degiskeninin varligi sayesinde POSIX
uyumlulugu saglanarak aksi takdirde --no-backup-if-mismatch secenegi
ile etkinlestirilir.
Geleneksel patch'in -b sonek secenegi ile GNU patch'in -b -z sonek
secenekleri esdegerdir.
. Geleneksel patch yama basligindan yamanacak dosyanin ismini ogrenmek
icin karmasik (ve iyi belgelenmemis) bir yontem kullanir. Bu yontem
POSIX ile uyumlu olmadigi gibi, birkac yanlis gibi gorunmeyen yanlis
icerir. Simdi patch ayni karmasiklikta (ama daha iyi belgelenmis) ve
istege bagli olarak POSIX uyumlu olabilen bir yontem kullanmaktadir;
onun artik daha az yanlis gibi gorunmeyen yanlis icerdigini
dusunuyoruz. Baglamsal fark dosyasinin basliginda ve Index:
satirinda dosya isimlerinden onek ayirmasi yapildiktan sonra kalan
dosya isimleri ayni ise bu iki yontem birbiriyle uyumludur. Yamaniz,
her basliktaki dosya isimleri esit sayida bolu cizgisi iceriyorsa,
normal olarak uyumludur.
. Geleneksel patch kullaniciya bir soru yoneltecegi zaman soruyu
standart hataya gonderir ve yaniti bir ucbirim olarak sirayla su
dosyalarda arar: standart hata, standart cikti, /dev/tty ve standard
girdi. Simdi ise patch soruyu standart citiya gonderip yaniti
/dev/tty'den okur. Bazi sorularin ontanimli yanitlari
degistirilmistir, boyle ontanimli yanitlari olan sorularda patch
artik sonsuz bir donguye girip yanit beklememektedir.
. Geleneksel patch gercek bir hata durumunda 1 ile donerken,
uygulanamayan yamalar oldugunda bunlarin sayisini belirten bir cikis
degeri ile doner. Simdi ise patch uygulanamayan yamalar oldugunda 1
ile, gercek bir sorun olmasi durumunda 2 cikis degeri ile doner.
. GNU patch, geleneksel patch ve POSIX uyumlu patch icin ortak olan
seceneklerle kendinizi sinirlarsaniz iyi olur. Bu secenekler asagida
listelenmistir. Terimli seceneklerde terimler zorunludur ve terim
ile secenek arasindaki boslugun olup olmamasi onemlidir.
-c
-d dizin
-D tanim
-e
-l
-n
-N
-o ,ciktidosyasi
-psayi
-R
-r reddosyasi
YAZILIM HATALARI
Yazilim hatalarini lutfen eposta ile <bug-gnu-utils (at) gnu.org>
adresine bildiriniz.
patch kismi eslesmelerde, asiri kaymis baslangic konumlarinda ve yer
degistirmelerde daha cevik olmaliydi ama bu islemler ek bir gecis
gerektiriyor.
Kod eger yinelenmisse (ornegin, #ifdef ESKIKOD ... #else ... #endif
ile) patch her iki surumude yamayamayacatir ve bu her ikisi icin de
uygulanabiliyorsa, yanlis surum yamanabilecek ve size islemin basarili
oldugunu soylececektir.
Evvelce uygulanmis bir yamayi uygularsaniz, patch yamanin yer
degistirmeli yama olarak uygulanacagini varsayabilir ve size bu yamayi
uygulamamayi teklif eder. Bu bir ozellik olarak yorumlanabilirdi.
KOPYALAMA
Telif Hakki (C) 1984, 1985, 1986, 1988 Larry Wall.
Telif Hakki (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
1997, 1998 Free Software Foundation, Inc.
Bu kilavuzun harfi harfine kopyalanmasina ve dagitilmasina telif hakki
uyarisinin ve bu izin uyarisinin tum kopyalarinda bulunmasi sartiyla
izin verilmistir.
Bu kilavuzun degistirilmis kopyalarinin kopyalanmasi ve dagitilmasi,
turetilmis calismanin sonuclarinin tamami, harfi harfine kopyalamanin
kosullarini icererek ve buna esdeger bir izin uyarisi da saglandigi
takdirde izin verilmistir.
Bu kilavuzun diger dillere cevirilerinin kopyalanmasi ve dagitilmasina,
bu izin uyarisinin bulundugu orjinal ingilizce surumdeki telif hakki
sahipleri tarafindan onaylanmis bir ceviri degilse, yukarida aciklanan
degistirilmis surumlerinin kosullari saglandigi takdirde izin
verilmistir.
COPYING
Copyright 1984, 1985, 1986, 1988 Larry Wall.
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998
Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this
manual into another language, under the above conditions for modified
versions, except that this permission notice may be included in
translations approved by the copyright holders instead of in the
original English.
YAZARLAR
patch'in orjinal surumu Larry Wall tarafindan yazilmistir. Paul Eggert
patch'in keyfi sinirlarini kaldirdi; ikilik dosyalarin desteklenmesi,
dosya zamanlarinin ayarlanmasi, dosyalari silinmesi ozelliklerini
ekledi; ve daha iyi POSIX uyumlulugu sagladi. Diger destekleyicilerden
Wayne Davison unidiff destegini, David MacKenzie yapilandirma ve
yedekleme desteklerini sagladi.
,CEVIREN
Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Agustos 2004