суббота, 3 октября 2009 г.

makeinfo: not found

При очередном обновлении портов заметил странную вещь:
% portupgrade -ap
---> Upgrading 'libtool-2.2.6a' to 'libtool-2.2.6a_1' (devel/libtool22)
---> Building '/usr/ports/devel/libtool22'
===> Cleaning for libtool-2.2.6a_1
===> Extracting for libtool-2.2.6a_1
=> MD5 Checksum OK for libtool-2.2.6a.tar.gz.
=> SHA256 Checksum OK for libtool-2.2.6a.tar.gz.
===> Patching for libtool-2.2.6a_1
===> Applying FreeBSD patches for libtool-2.2.6a_1
/usr/bin/sed -i.bak -e 's|sed gsed|sed|g' /usr/obj/usr/ports/devel/libtool22/work/libtool-2.2.6/configure
===> Configuring for libtool-2.2.6a_1
## ------------------------- ##
## Configuring libtool 2.2.6 ##
## ------------------------- ##

checking for a BSD-compatible install... /usr/bin/install -c -o root -g wheel
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... libltdl/config/install-sh -c -d
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether subdir libobjs are useable... yes
.....
make all-recursive
test -f doc/.dirstamp || make doc/.dirstamp
restore=: && backupdir=".am$$" && am__cwd=`pwd` && cd . && rm -rf $backupdir && mkdir $backupdir && if (makeinfo --no-split --version) >/dev/null 2>&1; then for f in ./doc/libtool.info ./doc/libtool.info-[0-9] ./doc/libtool.info-[0-9][0-9] ./doc/libtool.i[0-9] ./doc/libtool.i[0-9][0-9]; do if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; done; else :; fi && cd "$am__cwd"; if makeinfo --no-split -I doc -I ./doc -o ./doc/libtool.info ./doc/libtool.texi; then rc=0; cd .; else rc=$?; cd . && $restore $backupdir/* `echo "././doc/libtool.info" | sed 's|[^/]*$||'`; fi; rm -rf $backupdir; exit $rc
makeinfo: not found
*** Error code 127

Stop in /usr/obj/usr/ports/devel/libtool22/work/libtool-2.2.6.
*** Error code 1

Stop in /usr/obj/usr/ports/devel/libtool22/work/libtool-2.2.6.
*** Error code 1

Stop in /usr/obj/usr/ports/devel/libtool22/work/libtool-2.2.6.
*** Error code 1

Stop in /usr/ports/devel/libtool22.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20091003-1547-1j96bj1-0 env UPGRADE_TOOL=portupgrade UPGRADE_PORT=libtool-2.2.6a UPGRADE_PORT_VER=2.2.6a make DEPENDS_TARGET=package
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! devel/libtool22 (libtool-2.2.6a) (unknown build error)


Оказывается, новый мир был собран с опцией WITHOUT_INFO=true в файле /etc/make.conf, а при очередной чистке устаревших библиотек система лишилась доступа к info-файлам установленных приложений.

Решение этой проблемы найдено очень быстро:
1) Убираем вредную строчку из /etc/make.conf (и из /etc/src.conf, если она там была);
2) Собираем и устанавливаем недостающие библиотеки мира
% cd /usr/src/gnu/usr.bin/texinfo/
% make && make depend && make install
===> libtxi (all)
===> makeinfo (all)
===> info (all)
===> infokey (all)
===> install-info (all)
===> texindex (all)
===> doc (all)
===> libtxi (depend)
===> makeinfo (depend)
===> info (depend)
===> infokey (depend)
===> install-info (depend)
===> texindex (depend)
===> doc (depend)
===> libtxi (install)
===> makeinfo (install)
===> info (install)
===> infokey (install)
===> install-info (install)
===> texindex (install)
===> doc (install)
% rehash


После этого апгред порта проходит нормально.