stayhomer.png

Treat without the trick!

Be brave and face your Redmine fears Horribly awesome discounts wait for you!

Halloween special offer has begun!

Wkhtmltopdf segnmenation fault

The problem itself is JavaScript not rendering / segmentation fault on FreeBSD with wkhtmltopdf). To fix it, please follow the steps below.

This can only be solved by using the Linux version (CentOS).

1. Enable Linux mode: `sudo /etc/rc.d/linux enable`

2. Start Linux mode: `sudo /etc/rc.d/linux start`

3. Install CentOS basic libraries: `sudo pkg install linux_base-c7` and verify mount.

sudo linux_mount linprocfs "/compat/linux/proc" -o nocover
sudo linux_mount linsysfs "/compat/linux/sys" -o nocover
sudo linux_mount devfs "/compat/linux/dev" -o nocover
sudo linux_mount fdescfs "/compat/linux/dev/fd" -o nocover,linrdlnk
sudo linux_mount tmpfs "/compat/linux/dev/shm" -o nocover,mode=1777
sudo mount

Note: Do not use /etc/fstab, Linux file systems will automatically be mounted on boot.

4. Extract the missing libraries from the file linux_libraries_update.tgz

`sudo tar -x --directory=/compat/linux -f linux_libraries_update.tgz`

This is for FreeBSD AMD64, alternatively just download all libraries to `/compat/linux/lib64`

5. Extract the CentOS 8 version from https://rubygems.org/gems/wkhtmltopdf-binary/

Normally, this gem is already installed.

`sudo gzip -dk /usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf_centos_8_amd64.gz`

`sudo mv /usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf_centos_8_amd64 /usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf_unknown`

`sudo chmod 755 /usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf_unknown`

6. Change Redmine configuration to use the new binary:

`config/configuration.yml` * `wkhtmltopdf_exe_path: '/usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf'`

7. Change wkhtmltopdf executable script to use the correct library path:

`/usr/local/lib/ruby/gems/2.7/gems/wkhtmltopdf-binary-0.12.6.6/bin/wkhtmltopdf`

Add:

`ENV['LD_LIBRARY_PATH'] = '/compat/linux/usr/lib64'` before `exec *$*.unshift(binary)`

If the Ruby interpreter path is not found, you can link it using:

`sudo ln -s /usr/local/bin/ruby /usr/bin/ruby`

Was this article helpful? Yes  No
322 from 372 found this helpful