«/usr/ports/Mk/bsd.port.mk» Malformed conditional

Если вдруг при установке порта начали валится ошибки

Unknown modifier 't'
Unknown modifier 't'
"/usr/ports/Mk/bsd.port.mk", line 1775: Malformed conditional (defined(USE_LDCONFIG) && ${USE_LDCONFIG:tl} == "yes")
Unknown modifier 't'
Unknown modifier 't'
Unknown modifier 't'
"/usr/ports/Mk/bsd.sites.mk", line 957: Malformed conditional (!empty(_PERL_CPAN_ID) && ${_PERL_CPAN_FLAG:tl} == "cpan")
Unknown modifier 't'
Unknown modifier 't'
"/usr/ports/Mk/bsd.port.mk", line 2929: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 2929: Unexpected end of file in for loop.
"/usr/ports/Mk/bsd.port.mk", line 6708: Unclosed conditional/for loop
"/usr/ports/Mk/bsd.port.mk", line 6708: Unexpected end of file in for loop.
make: fatal errors encountered -- cannot continue

то скорее всего у вас слишком старая ОС и слишком новые порты. Выход напрашивается очевидный — обновить ОС. Но не всегда это возможно, а установить что-то хочется, причём свежее да и из портов. Есть один грязный хак (успешно протестирован в боевых условиях только 1 раз!!!), который позволяет собирать новые порты на очень старой ОС.

Тестовый стенд: FreeBSD 7.4 amd64 Release

Причина кроется в обновлении мета-файлов в папке /usr/port/Mk именно 20.01.2014. Поэтому, если вы хотите собирать новые порты на старой ОС, очень важно иметь все файлы из этой папки до указанной даты. Любые новые файлы, датированные позже 20.01.2014 в папке /usr/port/Mk будут генерировать разного рода ошибки и не давать собираться НИКАКИМ портам. Скорее всего у вас они уже затёрлить новыми. Тогда выход один — искать машину со старой ОС и вытягивать нужные файлы оттуда. Я собственно так и сделал. После этого никаких ошибок не появлялось и порты успешно собрались:

# uname -r
7.4-RELEASE-p12
# pkg_info | grep salt
py27-salt-2014.1.5  Distributed remote execution and configuration management s
# ls -la /usr/ports/sysutils/py-salt
total 172
drwxr-xr-x     3 root  wheel    512 Jun 20 13:11 .
drwxr-xr-x  1071 root  wheel  22016 Jun 20 12:56 ..
-rw-r--r--     1 root  wheel   2455 Jun 20 07:22 Makefile
-rw-r--r--     1 root  wheel    135 Jun 20 07:22 distinfo
drwxr-xr-x     2 root  wheel    512 Jun 20 12:56 files
-rw-r--r--     1 root  wheel    271 Aug 17  2013 pkg-descr
-rw-r--r--     1 root  wheel  51719 May  5 21:28 pkg-plist

Примечание.

Но такое помогает не всегда. Вот еще пару советов, которые нашёл в сети:

a) https://svnweb.freebsd.org/ports?view=revision&revision=352986
b)

В 8.3 достаточно обновить make, взяв sources от 8.4, и перейти на pkg.
В шестерке, насколько я понимаю, глухой номер (bad system call).
В семерке возможно, но непросто: https://raw.githubusercontent.com/yaneurabeya/scratch/master/docs/cheatsheets/freebsd

«/usr/ports/Mk/bsd.port.mk» Malformed conditional: 1 комментарий

  1. Serge3leo

    Хм. Достаточно заменить в двух или трёх файлах иерархии /usr/port/Mk подстановки переменных «:tl» на «:L», а «:tu» на «:U». Подробности смотрите man make, например, для FreeBSD 8.3(и ниже) и FreeBSD 8.4 (и выше).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *