А вот вопрос: можно ли в Calculate с помощью Portage ставить патчи, например на wine, krusader и т.п.? И как это корректно делать?
Я так понял первый вариант - положить патч в /usr/portage/app-emulation/wine/files (это на примере wine) и править ebuild. Затем - как обычно при установке пакета. Но писать ebuild-ы я не умею и как туда всобачить патчи не знаю. (((
Второй вариант - установка вручную (взято вот отсюда: http://www.calculate-linux.ru/main/ru/using_ebuild):
-
Извлечение исходных кодов и проверка контрольных сумм
ebuild путь/к/файлу-ebuild fetch
2. Распаковка исходных кодов в /var/tmp/portage
ebuild путь/к/файлу-ebuild unpack
Пы.Сы. У меня распаковался не в /var/tmp/portage, а в /var/calculate/tmp/portage
3. Вот тут и надо накладывать патчи (я так думаю):
Переходим в распакованный каталог
cd /var/calculate/tmp/portage/app-emulation/wine-1.3.24/work/wine-1.3.24
(опять на примере wine), и применяем патч
patch -p1 < /path/to/the/patch/mypatch.patch
4. Компиляция исходных кодов
ebuild путь/к/файлу-ebuild compile
5. Установка файлов во временное место:
ebuild путь/к/файлу-ebuild install
6. Помещение файлов в рабочую файловую систему
ebuild путь/к/файлу-ebuild qmerge
7. Очистка временного каталога
ebuild путь/к/файлу-ebuild clean
Так вот это правильно? И насколько корректно?
Нашел, как вписывать патчи в .ebuild:
В разделе src_unpack() в конце добавляем
epatch "${FILESDIR}"/mypatch.patch || die
(Все это лучше делать в локальном оверлее /usr/local/portage и добавлять патчи тоже туда - положить патч в /usr/local/portage/app-emulation/wine/files)
В Calculate есть свой механизм накладывания патчей без правки ebuild-файлов.
Поместите свой файл с патчем по следующему пути:
/var/lib/layman/calculate/profiles/patches/${CATEGORY}/${PN}-${PV}-${название патча}.patch
Патч будет применен к исходному коду пакета перед его компиляцией.
-
CATEGORY
- категория пакета -
PN
- название пакета -
PV
- версия пакета
Пример:
* Патч для пакета net-p2p/bittorrent-5.2.2
:
/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2.2-unicode.patch
* Патч для пакета net-p2p/bittorrent
с версиями 5.2.x:
/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2-unicode.patch
* Патч для пакета net-p2p/bittorrent
с версиями 5.2.2, 5.2.3 и 5.2.4:
/var/lib/layman/calculate/profiles/patches/net-p2p/bittorrent-5.2.2-4-unicode.patch
Круто!
Спасибо!
То-есть если поместить по этому пути патч, он будет автоматически накладываться при установке/переустановке пакета?
А если у патча расширение другое, например mypatch.diff?
А если патчей несколько, как можно настроить очередность их применения?
Можно ли в названии патча использовать тире, например так: wine-1.3-my-patch.patch?
Можно ли в названии патча использовать тире, например так: wine-1.3-my-patch.patch?
Лучше использовать подчеркивание wine-1.3-my_patch.patch.
А если патчей несколько, как можно настроить очередность их применения?
Порядок можно организовать следующим образом
# wine-1.3-00_my_patch.patch
# wine-1.3-01_my_patch.patch
# wine-1.3-02_my_patch.patch
То-есть если поместить по этому пути патч, он будет автоматически накладываться при установке/переустановке пакета?
Да. Во время установки вы увидите строчку Trying to apply <название патча>
, справа отобразится наложился патч или будет пропущен (ок
или !!
).
А если у патча расширение другое, например mypatch.diff?
Расширение должно быть "patch"
, "diff"
или "sh"
. В случае использования "sh"
, будет выполнен bash-скрипт. Только прежде, чем поместить скрипт, просмотрите в каталоге /var/lib/layman/calculate/profiles/patches
примеры sh-патчей. Дело в том, что sh скрипты запускаются не только один раз, поэтому в них важно указывать проверку ${EBUILD_PHASE}
.
Спасибо!
Собираю астериск с поддержкой карты yeastar. На сайте производителя лежит патч ystdm-dahdi-2.4.1.patch.tar.gz
Следуя советам, кладу его по адресу
/var/lib/layman/calculate/profiles/patches/net-misc/dahdi-2.4.1-ystdm.patch
запускаю
ebuild dahdi-2.4.1.ebuild prepare
и ничего не вижу про применение патча. Или я что-то не так делаю?
P.S.
точнее, упоминание-то я вижу, а вот применение, что-то нет.
ну не знаю насчет ‘prepare’, а у меня после пересборки вайна патчи наложились, смотрел лог с помощью elogv