summaryrefslogtreecommitdiff
path: root/doc/bugs/PREFIX_not_honoured_for_underlaydir.mdwn
blob: 11557c822f73d70635e1c1fb4637e3e957424f0b (plain)

I built ikiwiki using

% perl Makefile.PL PREFIX=/home/ed % make % make install

This installs the files under /home/ed, for example one of the lines it prints is

cp -a basewiki/* /home/ed/share/ikiwiki/basewiki

However when I try to run ikiwiki I get an error as follows:

% ikiwiki --verbose ~/wikiwc/ ~/public_html/wiki/ --url=http://membled.com/wiki/ Can't stat /usr/share/ikiwiki/basewiki: No such file or directory at /home/ed/lib/perl5/site_perl/5.8.7/IkiWiki/Render.pm line 349

The PREFIX specified at build time should also affect the share directory - it shouldn't try to use /usr/share here.

Actually, the PREFIX, no matter where you specify it, is only intended to control where files are installed, not where they're looked for at runtime.

There's a good reason not to make PREFIX be used to actually change the program's behavior: Most packaging systems use PREFIX when building the package, to make it install into a temporary directory which gets packaged up.

This is not the case. That is the difference between PREFIX and DESTDIR.

DESTDIR does what you describe; it causes the files to be installed into some directory you specify, which may not be the same place you'd eventually run it from.

PREFIX means build the software to run under the location given. Normally it will also affect the location files are copied to, so that 'make install' installs a working system.

At least, that's the way I've always understood it; the MakeMaker documentation isn't entirely clear (perhaps because ordinary Perl modules do not need to be configured at build time depending on the installation directory). It does mention that DESTDIR is the thing used by packaging tools.

Thanks for clarifying that. [[bugs/done]] --[[Joey]]