On Fri, Jul 16, 2021 at 10:24:10PM +0000, Kent Watsen wrote: > I’ve spent a few hours on this and am lost. I have plenty experience moving > executables into a chroot environments, but `jq` is proving to be > exceptionally difficult. > > The executable is found when chrooted to ‘/‘ but not ' /var/www’. Yes, of > course I copied all the files referenced from `ldd` into the chroot, and set > their file permissions to 777 (and likewise all the parent directories): > > # pkg_add jq > > # chroot / /usr/local/bin/jq --version > jq-1.6 > > *** COPY `ldd /usr/local/bin/jq` DEPENDENCIES INTO /var/www/ HERE *** > > # chroot /var/www /usr/local/bin/jq --version > ld.so: jq: can't load library 'libonig.so.7.1’ > > > Any ideas?
It seems you copied libjq and libonig into usr/local/lib in the chroot. By default, ld.so only looks for shared objects in /usr/lib, so it can't find them. # env LD_LIBRARY_PATH=/usr/lib:/usr/local/lib chroot /var/www /usr/local/bin/jq --version should work. Chrooting to / works because rc(8) runs ldconfig(8) to add /usr/local/lib and /usr/X11R6/lib if they're present. You can copy all the libraries into /var/www/usr/lib, you can set LD_LIBRARY_PATH=/usr/local/lib:/usr/, or you can run ldconfig in the chroot. Read ld.so(1) and ldconfig(8) for more details.