jekyll_picture_tag icon indicating copy to clipboard operation
jekyll_picture_tag copied to clipboard

Can't use with github workflow: libvips.so.42: cannot open shared object file: No such file or directory

Open callebtc opened this issue 2 years ago • 2 comments

Hi,

I know this is only a remotely related issue since it's not directly related to jekyll_picture_tag. I can perfectly use it on my local macOS computer by installing libvips as it is described in the docs.

However, I'm running into problems when using it as a github workflow to build a github page.

Installing jekyll_picture_tag 2.0.3
Bundle complete! 9 Gemfile dependencies, 43 gems now installed.
Bundled gems are installed into `./vendor/bundle`
Building Jekyll site...
bundler: failed to load command: jekyll (/github/workspace/vendor/bundle/ruby/2.6.0/bin/jekyll)
/github/workspace/vendor/bundle/ruby/2.6.0/gems/ffi-1.15.5/lib/ffi/library.rb:145:in `block in ffi_lib': Could not open library 'vips.so.42': vips.so.42: cannot open shared object file: No such file or directory. (LoadError)
Could not open library 'libvips.so.42': libvips.so.42: cannot open shared object file: No such file or directory
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ffi-1.15.5/lib/ffi/library.rb:99:in `map'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ffi-1.15.5/lib/ffi/library.rb:99:in `ffi_lib'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ruby-vips-2.0.17/lib/vips.rb:528:in `<module:Vips>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ruby-vips-2.0.17/lib/vips.rb:525:in `<top (required)>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ruby-vips-2.0.17/lib/ruby-vips.rb:1:in `require'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/ruby-vips-2.0.17/lib/ruby-vips.rb:1:in `<top (required)>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag/images/generated_image.rb:1:in `require'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag/images/generated_image.rb:1:in `<top (required)>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag/images.rb:2:in `require_relative'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag/images.rb:2:in `<top (required)>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag.rb:5:in `require_relative'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll_picture_tag-2.0.3/lib/jekyll_picture_tag.rb:5:in `<top (required)>'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:[60](https://github.com/bitcoinsozial/bitcoinsozial.github.io/runs/5083944895?check_suite_focus=true#step:6:60):in `require'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:60:in `block (2 levels) in require'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:55:in `each'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:55:in `block in require'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:44:in `each'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/runtime.rb:44:in `require'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler.rb:1[76](https://github.com/bitcoinsozial/bitcoinsozial.github.io/runs/5083944895?check_suite_focus=true#step:6:76):in `require'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll-4.2.1/lib/jekyll/plugin_manager.rb:53:in `require_from_bundler'
	from /github/workspace/vendor/bundle/ruby/2.6.0/gems/jekyll-4.2.1/exe/jekyll:11:in `<top (required)>'
	from /github/workspace/vendor/bundle/ruby/2.6.0/bin/jekyll:23:in `load'
	from /github/workspace/vendor/bundle/ruby/2.6.0/bin/jekyll:23:in `<top (required)>'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli/exec.rb:58:in `load'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli/exec.rb:58:in `kernel_load'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli/exec.rb:23:in `run'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli.rb:4[84](https://github.com/bitcoinsozial/bitcoinsozial.github.io/runs/5083944895?check_suite_focus=true#step:6:84):in `exec'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli.rb:31:in `dispatch'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/vendor/thor/lib/thor/base.rb:4[85](https://github.com/bitcoinsozial/bitcoinsozial.github.io/runs/5083944895?check_suite_focus=true#step:6:85):in `start'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/cli.rb:25:in `start'
	from /usr/local/bundle/gems/bundler-2.3.6/exe/bundle:48:in `block in <top (required)>'
	from /usr/local/bundle/gems/bundler-2.3.6/lib/bundler/friendly_errors.rb:[103](https://github.com/bitcoinsozial/bitcoinsozial.github.io/runs/5083944895?check_suite_focus=true#step:6:103):in `with_friendly_errors'
	from /usr/local/bundle/gems/bundler-2.3.6/exe/bundle:36:in `<top (required)>'
	from /usr/local/bundle/bin/bundle:23:in `load'
	from /usr/local/bundle/bin/bundle:23:in `<main>'

I tried everything I could think of:

  • installed libvips using sudo -E apt-get install libvips
  • ran ldconfig -v which seems to find libvips.so.42
  • found libvips.so.42 in /usr/lib/x86_64-linux-gnu/ and added that to LD_LIBRARY_PATH
  • copied libvips.so.42 to /usr/lib/ just to be sure and added that to LD_LIBRARY_PATH as well

Have you managed to get it to run in a github workflow?

callebtc avatar Feb 06 '22 15:02 callebtc

I have the same issue on Mac Silicon.

ngocsangyem avatar Mar 11 '22 06:03 ngocsangyem

On Ubuntu/Debian the name of the package you need is libvips-tools — that will not only install the proper libvips library, but it also installs the necessary command line stuff and sets the proper paths. Installed this way, there’s no need to mess with LD_LIBRARY_PATH.

Here’s an excerpt of the workflow I use — the important part is line 6:

jobs:
  jekyll:
    runs-on: ubuntu-latest
    steps:
    - name: Install dependencies
      run: sudo apt-get install libvips-tools

    - name: Checkout
      uses: actions/checkout@v2

    - name: 💎 setup ruby
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: 2.7
        bundler-cache: true

    - name: Jekyll build
      run: bundle exec jekyll build
      env:
        JEKYLL_ENV: production

Happy JPT-ing!

elstudio avatar Mar 19 '22 09:03 elstudio