Как управлять локальными патчами в дереве портов FreeBSD?

1848

Каков предпочтительный способ управления локальными патчами в дереве портов FreeBSD? В качестве примера рассмотрим textproc/urlview. Этот порт устанавливает url_handler.shскрипт. Этот скрипт определяет приложения, которые будут использоваться для разных типов URL. Приложения по умолчанию не соответствуют моей системе.

Так что делать? В прошлом я использовал два довольно неудовлетворительных способа:

  1. Создайте и установите ванильный порт и отредактируйте `/ usr / local / bin / url_handler.sh` напрямую. Это портит удаление установленного порта, поскольку контрольная сумма изменилась. Этого можно избежать, напрямую связавшись с файлами в `/ var / db / pkg`, но это настолько хакерски, насколько это возможно.
  2. Создайте файл патча в `/ usr / ports / textproc / urlview / files`, который соответствующим образом исправит скрипт в фазе` patch`. Однако это не работает, если вы используете `portsnap`, поскольку он очищает каталог перед обновлением дерева портов.

Как вы, ребята, справляетесь с такими вещами?

5
возможно это стоит спросить по вине сервера. Я также заинтересован после обновления нескольких пакетов сам. Andrew Cox 14 лет назад 0
Проверьте порт из AnonCVS, затем вы можете добавить локальные файлы в ваш порт. arved 12 лет назад 0

3 ответа на вопрос

2
jyap

Вариант 2. У меня есть несколько патчей для определенных портов. Если у вас более новая версия, обновите дерево портов, затем скопируйте измененные патчи и вручную запустите «make patch», чтобы посмотреть, будут ли они корректно исправлены. Затем «сделать», чтобы увидеть, если сборки.

2
Dave Hayes

I would say option 2 but use a script to copy your patches. A script helps document a procedure, which really helps when you go back in a year and try to figure out what you did.

Although you could write something fancy which "overlays" a directory structure onto the ports tree, I find that simpler is better:

#/bin/sh PORTSTREE="/usr/ports" MYPATCHDIR="/wherever/you/put/these" # my textproc/urlview patch cp $/myurlview.patch $/textproc/urlview/files 

Now you can list all your modifications in one file, and have all your patches in one directory. Run the script after you portsnap or (nowdays) svn a new ports tree.

2
Peter

Я начал использовать репозиторий git ( https://github.com/freebsd/freebsd-ports.git ), а затем создал локальную ветку с нужными мне изменениями. Я также использую это, когда создаю свои собственные порты, которые не доступны в дереве портов.