[devel] %makeinstall и %make DESTDIR=%buildroot install в спеке

Eugene Prokopiev =?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Чт Июн 14 08:50:55 MSD 2007


Здравствуйте!

Собирая новую версию callweaver, столкнулся со следующей проблемой в 
инсталл-скриптах:

$ make DESTDIR=~/callweaver-install install

создает структуру каталогов с local:

$ ls ~/callweaver-install/usr/
local
$ ls ~/callweaver-install/usr/local/
bin  etc  include  lib  sbin  share  var

С такой проблемой я сталкивался, собирая dbmail, и решил ее 
использованием %makeinstall. Но если сказать (именно в это раскрывается 
%makeinstall):

$ make 'INSTALL=/bin/install -p' prefix=~/callweaver-install/usr 
exec_prefix=~/callweaver-install/usr bindir=~/callweaver-install/usr/bin 
sbindir=~/callweaver-install/usr/sbin 
sysconfdir=~/callweaver-install/etc 
datadir=~/callweaver-install/usr/share 
includedir=~/callweaver-install/usr/include 
libdir=~/callweaver-install/usr/lib 
libexecdir=~/callweaver-install/usr/lib 
localstatedir=~/callweaver-install/var/lib 
sharedstatedir=~/callweaver-install/usr/com 
mandir=~/callweaver-install/usr/share/man 
infodir=~/callweaver-install/usr/share/info install

То получим очень странное сообщение:

test -z "/usr/src/callweaver-install/usr/lib/callweaver" || /bin/mkdir 
-p "/usr/src/callweaver-install/usr/lib/callweaver"
  /bin/sh ../libtool --mode=install /bin/install -p  'libcallweaver.la' 
'/usr/src/callweaver-install/usr/lib/callweaver/libcallweaver.la'
libtool: install: error: cannot install `libcallweaver.la' to a 
directory not ending in /usr/local/lib/callweaver
make[4]: *** [install-opbxlibLTLIBRARIES] Error 1

Если задействовать %makeinstall в спеке, то ошибка будет другой:

/usr/bin/make  install-data-hook
make[3]: Entering directory `/usr/src/RPM/BUILD/callweaver-1.1.99.20070614'
for install_dir in 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/lib/callweaver 
/usr/src/tmp/callweaver-buildroot/usr/lib/callweaver/modules 
/usr/src/tmp/callweaver-buildroot/usr/lib/callweaver/modules/icd 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver/cdr-custom 
/usr/src/tmp/callweaver-buildroot/var/lib/log/callweaver/cdr-csv 
/usr/src/tmp/callweaver-buildroot/var/lib/run/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver/outgoing 
/usr/src/tmp/callweaver-buildroot/var/lib/spool/callweaver/voicemail 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/moh 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/keys 
/usr/src/tmp/callweaver-buildroot/usr/share/callweaver/images; \
         do \
                 if test ! -d "${install_dir}"; \
                 then \
                         mkdir -p ${install_dir}; \
                         chmod 0750 ${install_dir}; \
                 fi; \
                 if test -z ""; \
                 then \
                         chown callweaver:callweaver ${install_dir}; \
                 fi; \
         done
chown: `callweaver:callweaver': invalid user
...

Кажется, именно поэтому предыдущую версию callweaver я собирал с make 
DESTDIR=%buildroot install.

Что делать теперь?

-- 
С уважением, Прокопьев Евгений



Подробная информация о списке рассылки Devel