>Уже обсуждалось:
>https://www.opennet.ru/openforum/vsluhforumID1/12387.html
>https://www.opennet.ru/openforum/vsluhforumID1/12711.html
>Проблема:
>да таже самая =(((
>su-2.05a# uname -a
>FreeBSD 4.5-RELEASE FreeBSD 4.5-RELEASE #0: Mon Jan 28 14:31:56 GMT
>
>su-2.05a#cvsup -g -L 2 /etc/cvsupfile.ports (японский городовой)
>
>su-2.05a#cd /usr/ports/graphics/ImageMagick/
>
>su-2.05a#make all install
>
>Patching for ImageMagick-5.4.6.2
>1 out of 1 hunks ignored--saving rejects to magick/Makefile.in.rej
>>> Patch patch-ak failed to apply cleanly.
>*** Error code 1
>
>more files/patch-ak
>--- magick/Makefile.in.orig Fri Jun 30 11:05:56 2000
>+++ magick/Makefile.in Sat Jul 15 10:01:31 2000
>@@ -248,7 +248,7 @@
>
>
> # Where modules are installed
>-pkgdir = $(libdir)/ImageMagick/modules/coders
>+@WITH_MODULES_TRUE@pkgdir = $(libdir)/ImageMagick/modules/coders
>
> # Architecture-dependent data files installed with modules
> pkg_DATA =
>
>
>и что, не понял. ну торможу я 2 дня уже. на пальцах
>обьясните хоть кто нибудь.
cd /usr/ports/category/name
make patch
смотришь с чем случилась беда - какие патчи не наложились и прошел reject
когда накладывается patch, создается копия оригинала:
файл.orig и что должно получится после правки - файл, если патч неверен
или в sources были изменения и патч написан для другой версии, то
он не может нормально изменить оригинальный файл и создается файл.rej
например берем оригинальный файл test.txt:
[unix1]~ > cat test.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
ccccccccccccccc
dddddddddddddd lllllllllllllllllll
[unix1]~ >
копируем в test.orig
[unix1]~ > cp test.txt test.orig
теперь у нас есть ПОКА два одинаковых файла, в один из которых - test.txt
мы внесем правки:
[unix1]~ > cat test.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ccccccccccccccc
dddddddddddddd lllllllllllllllllll
[unix1]~ >
теперь уточним: файл test.orig - в реалии это test.txt ДО внесения
изменений, но чтобы внести их, а потом получить различие, специалист
делает следующее:
1) копирует оригинал test.txt в test.orig
2) в test.txt вносит поправки
3) утилитой diff создает файл правки(разницы) - patch-test
В настоящее время самый распространенный формат diff - универсальный,
опция -u
Итак, делаем файл правки:
[unix1]~ > diff -u test.orig test.txt > patch-test
смотрим наш патч:
[unix1]~ > cat patch-test
--- test.orig Tue Jul 2 11:36:03 2002
+++ test.txt Tue Jul 2 11:36:17 2002
@@ -1,6 +1,7 @@
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ccccccccccccccc
dddddddddddddd lllllllllllllllllll
[unix1]~ >
разница выделена знаком "+", строки наверху, БАЗА+СМЕЩЕНИЕ
Ну чего здесь НЕПОНЯТНОГО
Идем далее, теперь у нас есть оригинал - test.orig(бывший test.txt),
файл с уже внесенными изменениями test.txt и файл правки patch-test
Для проверки переименовываем целевой файл test.txt в test.txt.last
[unix1]~ > mv test.txt test.txt.last
и возвращаем к оригиналу, каким он был до изменений:
[unix1]~ > mv test.orig test.txt
теперь у нас есть оригинал test.txt и файл с правками patch-test,
с помощью них можем получить целевой файл в котором будут последние
изменения:
[unix1]~ > patch < patch-test
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- test.orig Tue Jul 2 11:36:03 2002
|+++ test.txt Tue Jul 2 11:36:17 2002
--------------------------
Patching file test.txt using Plan A...
Hunk #1 succeeded at 1.
done
[unix1]~ > cat test.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
ccccccccccccccc
dddddddddddddd lllllllllllllllllll
[unix1]~ >
Если патчи не встают по какой-то причине, берешь оригинальный файл -
открываешь редактором и изучая в другом окне содержимое патчей, накладываешь их вручную.
Поэтому выше было написано что в данном случае надо лишь сделать
в портах
make patch
найти reject'ы - или взять в директории files оригинальные патчи и
по ним вручную произвести правки
ну или всосать свежие порты, в них однозначно могут встретиться ошибки
в отличии от тех что идут с RELEASE
Все.