What is the way to tell wrappers that PERL5LIB should include ~/bin directories?
Having this in the wiki.setup doesn't help anymore:
# environment variables
ENV => {
PATH => '/home/user/bin/bin:/usr/local/bin:/usr/bin:/bin:/usr/games:/home/user/ikiwiki/usr/bin/:/home/user/ikiwiki/usr/sbin/:/home/user/bin/bin/:~/bin/bin/',
PERL5LIB => '/home/user/bin/share/perl/5.10.0:/home/user/bin/lib/perl/5.10.0'
},
Or at least I get CGI errors and running ikiwiki.cgi manually fails too:
Use of uninitialized value $tainted in pattern match (m//) at /usr/share/perl5/IkiWiki.pm line 233.
Argument "" isn't numeric in umask at /usr/share/perl5/IkiWiki.pm line 139.
Undefined subroutine &IkiWiki::cgierror called at /home/user/bin/bin/ikiwiki line 199.
Server has an older ikiwiki installed but I'd like to use a newer version from git, and I don't have root access.
You can't set
PERL5LIBinENVin a setup file, because ikiwiki is already running before it reads that, and so it has little effect.That's fixed now for anything invoked through the generated wrappers: they put all the setup
ENVvalues into the real environment before starting Perl. (When runningikiwikiat the command line,PERL5LIBjust has to be in the environment, as it would normally be.)Your error messages do look like a new bin/ikiwiki is using an old version of
IkiWiki.pm.The thing to do is set
INSTALL_BASEwhen you're installing ikiwiki from source. Like so:
cd ikiwiki
perl Makefile.PL INSTALL_BASE=$HOME PREFIX=
make install
Then
$HOME/bin/ikiwikiwill have hardcoded into it to look for ikiwiki's perl modules in$HOME/lib/perl5/(This is documented in the README file by the way.) --JoeyOk, perl Makefile.PL INSTALL_BASE=$HOME/bin PREFIX= finally did it for me. I tried too many things with these paths so I wasn't sure which actually worked. After that I did $ ikiwiki --setup www.setup --wrappers --rebuild. Somehow in this update mess I seem to have lost the user accounts, maybe the --rebuild was too much.