5

Каков предпочтительный способ управления локальными патчами в дереве портов 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`, поскольку он очищает каталог перед обновлением дерева портов.

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

3 ответа3

2

Я бы сказал вариант 2, но используйте скрипт для копирования ваших патчей. Сценарий помогает документировать процедуру, которая действительно помогает, когда вы возвращаетесь через год и пытаетесь выяснить, что вы сделали.

Хотя вы могли бы написать что-то необычное, которое "накладывает" структуру каталогов на дерево портов, я считаю, что проще будет лучше:

#/bin/sh
PORTSTREE="/usr/ports"
MYPATCHDIR="/wherever/you/put/these"

# my textproc/urlview patch
cp ${MYPATCHDIR}/myurlview.patch ${PORTSTREE}/textproc/urlview/files

Теперь вы можете перечислить все ваши изменения в одном файле, и все ваши патчи в одном каталоге. Запустите скрипт после того, как у вас будет portsnap или (сейчас) svn новое дерево портов.

2

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

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .