Closed taniwallach closed 4 years ago
Bundler itself is for managing (finding, resolving, listing, and installing) dependencies. If you run bundle install
the first time you will get a new "Gemfile.lock" file with all dependencies (recursive all the way down) but this file depends on the platform(os) and ruby version itself. bundle install
if working prints...
$ bundle install
The latest bundler is 1.16.2, but you are currently running 1.15.3.
To update, run `gem install bundler`
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using concurrent-ruby 1.1.6
Using minitest 5.14.0
Using thread_safe 0.3.6
Using arel 9.0.0
Using logutils 0.6.1
Using bundler 1.15.3
Using iniparser 0.1.0
Using rubyzip 1.3.0
Using gli 2.19.0
Using liquid 4.0.3
Using sqlite3 1.3.13 (x86-mingw32)
Using i18n 1.8.2
Using tzinfo 1.2.6
Using activityutils 0.1.2
Using fetcher 0.4.5
Using props 1.2.0
Using activesupport 5.2.4.1
Using pakman 1.1.0
Using activemodel 5.2.4.1
Using textutils 1.4.0
Using activerecord 5.2.4.1
Using feedfilter 1.1.1
Using feedparser 2.1.2
Using activerecord-utils 0.4.1
Using logutils-activerecord 0.2.1
Using props-activerecord 0.2.0
Using pluto-models 1.5.6
Using pluto-merge 1.1.0
Using pluto-feedfetcher 0.1.4
Using pluto-update 1.6.3
Using pluto-tasks 1.5.3
Using pluto 1.3.4
Bundle complete! 4 Gemfile dependencies, 32 gems now installed.
and the Gemfile.lock
reads:
GEM
remote: https://rubygems.org/
specs:
activemodel (5.2.4.1)
activesupport (= 5.2.4.1)
activerecord (5.2.4.1)
activemodel (= 5.2.4.1)
activesupport (= 5.2.4.1)
arel (>= 9.0)
activerecord-utils (0.4.1)
activerecord
logutils
activesupport (5.2.4.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
activityutils (0.1.2)
logutils (>= 0.6.1)
arel (9.0.0)
concurrent-ruby (1.1.6)
feedfilter (1.1.1)
textutils (>= 1.0.1)
feedparser (2.1.2)
logutils (>= 0.6.1)
textutils (>= 1.0.0)
fetcher (0.4.5)
logutils (>= 0.6)
gli (2.19.0)
i18n (1.8.2)
concurrent-ruby (~> 1.0)
iniparser (0.1.0)
liquid (4.0.3)
logutils (0.6.1)
logutils-activerecord (0.2.1)
activerecord
logutils (>= 0.6.1)
minitest (5.14.0)
pakman (1.1.0)
fetcher (>= 0.4.5)
liquid (>= 4.0.0)
logutils (>= 0.6.1)
pluto (1.3.4)
gli (>= 2.12.2)
pluto-merge (>= 1.1.0)
pluto-models (>= 1.5.4)
pluto-tasks (>= 1.5.3)
pluto-update (>= 1.6.3)
sqlite3
pluto-feedfetcher (0.1.4)
fetcher (>= 0.4.5)
pluto-models (>= 1.5.4)
pluto-merge (1.1.0)
fetcher (>= 0.4.4)
pakman (>= 0.5.0)
pluto-models (>= 1.2.2)
pluto-models (1.5.6)
activerecord
activerecord-utils (>= 0.4.0)
activityutils (>= 0.1.1)
feedfilter (>= 1.1.1)
feedparser (>= 2.1.2)
logutils (>= 0.6.1)
logutils-activerecord (>= 0.2.1)
props (>= 1.2.0)
props-activerecord (>= 0.2.0)
textutils (>= 1.4.0)
pluto-tasks (1.5.3)
pluto-models (>= 1.4.0)
pluto-update (>= 1.6.0)
pluto-update (1.6.3)
pluto-feedfetcher (>= 0.1.4)
pluto-models (>= 1.5.4)
props (1.2.0)
iniparser (>= 0.1.0)
props-activerecord (0.2.0)
activerecord
props (>= 1.2.0)
rubyzip (1.3.0)
sqlite3 (1.3.13-x86-mingw32)
textutils (1.4.0)
activesupport
logutils (>= 0.6.1)
props (>= 1.1.2)
rubyzip (>= 1.0.0)
thread_safe (0.3.6)
tzinfo (1.2.6)
thread_safe (~> 0.1)
PLATFORMS
x86-mingw32
DEPENDENCIES
activerecord (= 5.2.4.1)
pluto
rubyzip (= 1.3.0)
sqlite3 (= 1.3.13)
BUNDLED WITH
1.15.3
Is that what you're looking for? What bundle install output / errors do you get?
A tip - I personally do NOT use bundler - all dependencies are listed in the pluto gem itself (see https://rubygems.org/gems/pluto).
As a simpler alternative for installation try:
$ gem install pluto
and than for testing:
$ pluto about
Does this work for you? If that's working (better) I will remove the bundle machinery from the setup / readme doc.
Sorry, I meant requirements below the level handled by bundle
. The approach using bundle
was quite quick and easy other than the need to determine dependencies to install to get the build to work. I was missing some header files needed.
I did not record the original error messages, but could recreate them by testing an install in a very minimal Docker container based on Debian I made with very few packages installed ahead of time. Details on the Docker image at the bottom.
Bottom line: The following seems to be a sufficient set of packages for Debian (above a slim base image) to allow the bundle install
to succeed:
docker run --rm -it debian-ruby-bundle bash
developer@d4e810b832fd:~$ cd pluto.starter/
developer@d4e810b832fd:~/pluto.starter$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Following files may not be writable, so sudo is needed:
/usr/local/bin
/var/lib/gems/2.5.0
Fetching concurrent-ruby 1.1.6
Installing concurrent-ruby 1.1.6
Fetching i18n 1.8.2
Installing i18n 1.8.2
Fetching minitest 5.14.0
Installing minitest 5.14.0
Fetching thread_safe 0.3.6
Installing thread_safe 0.3.6
Fetching tzinfo 1.2.6
Installing tzinfo 1.2.6
Fetching zeitwerk 2.2.2
Installing zeitwerk 2.2.2
Fetching activesupport 6.0.2.1
Installing activesupport 6.0.2.1
Fetching activemodel 6.0.2.1
Installing activemodel 6.0.2.1
Fetching activerecord 6.0.2.1
Installing activerecord 6.0.2.1
Fetching logutils 0.6.1
Installing logutils 0.6.1
Fetching activerecord-utils 0.4.1
Installing activerecord-utils 0.4.1
Fetching activityutils 0.1.2
Installing activityutils 0.1.2
Using bundler 1.17.3
Fetching iniparser 0.1.0
Installing iniparser 0.1.0
Fetching props 1.2.0
Installing props 1.2.0
Fetching rubyzip 2.2.0
Installing rubyzip 2.2.0
Fetching textutils 1.4.0
Installing textutils 1.4.0
Fetching feedfilter 1.1.1
Installing feedfilter 1.1.1
Fetching feedparser 2.1.2
Installing feedparser 2.1.2
Fetching fetcher 0.4.5
Installing fetcher 0.4.5
Fetching gli 2.19.0
Installing gli 2.19.0
Fetching liquid 4.0.3
Installing liquid 4.0.3
Fetching logutils-activerecord 0.2.1
Installing logutils-activerecord 0.2.1
Fetching pakman 1.1.0
Installing pakman 1.1.0
Fetching props-activerecord 0.2.0
Installing props-activerecord 0.2.0
Fetching pluto-models 1.5.6
Installing pluto-models 1.5.6
Fetching pluto-merge 1.1.0
Installing pluto-merge 1.1.0
Fetching pluto-feedfetcher 0.1.4
Installing pluto-feedfetcher 0.1.4
Fetching pluto-update 1.6.3
Installing pluto-update 1.6.3
Fetching pluto-tasks 1.5.3
Installing pluto-tasks 1.5.3
Fetching sqlite3 1.4.2
Installing sqlite3 1.4.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /tmp/bundler20200213-6-tlwpxosqlite3-1.4.2/gems/sqlite3-1.4.2/ext/sqlite3
/usr/bin/ruby2.5 -r ./siteconf20200213-6-15c4e1p.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /tmp/bundler20200213-6-tlwpxosqlite3-1.4.2/gems/sqlite3-1.4.2 for inspection.
Results logged to /tmp/bundler20200213-6-tlwpxosqlite3-1.4.2/extensions/x86_64-linux/2.5.0/sqlite3-1.4.2/gem_make.out
An error occurred while installing sqlite3 (1.4.2), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.4.2' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
pluto was resolved to 1.3.4, which depends on
sqlite3
Next install the libsqlite3-dev
package and try again:
developer@d4e810b832fd:~/pluto.starter$ sudo apt-get install -y --no-install-recommends --no-install-suggests libsqlite3-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libc-dev-bin libc6-dev linux-libc-dev
Suggested packages:
glibc-doc manpages-dev sqlite3-doc
Recommended packages:
manpages manpages-dev
The following NEW packages will be installed:
libc-dev-bin libc6-dev libsqlite3-dev linux-libc-dev
0 upgraded, 4 newly installed, 0 to remove and 9 not upgraded.
Need to get 5068 kB of archives.
After this operation, 27.3 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 libc-dev-bin amd64 2.28-10 [275 kB]
Get:2 http://deb.debian.org/debian buster/main amd64 linux-libc-dev amd64 4.19.98-1 [1314 kB]
Get:3 http://deb.debian.org/debian buster/main amd64 libc6-dev amd64 2.28-10 [2691 kB]
Get:4 http://deb.debian.org/debian buster/main amd64 libsqlite3-dev amd64 3.27.2-3 [787 kB]
Fetched 5068 kB in 1s (5156 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libc-dev-bin.
(Reading database ... 12403 files and directories currently installed.)
Preparing to unpack .../libc-dev-bin_2.28-10_amd64.deb ...
Unpacking libc-dev-bin (2.28-10) ...
Selecting previously unselected package linux-libc-dev:amd64.
Preparing to unpack .../linux-libc-dev_4.19.98-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.19.98-1) ...
Selecting previously unselected package libc6-dev:amd64.
Preparing to unpack .../libc6-dev_2.28-10_amd64.deb ...
Unpacking libc6-dev:amd64 (2.28-10) ...
Selecting previously unselected package libsqlite3-dev:amd64.
Preparing to unpack .../libsqlite3-dev_3.27.2-3_amd64.deb ...
Unpacking libsqlite3-dev:amd64 (3.27.2-3) ...
Setting up linux-libc-dev:amd64 (4.19.98-1) ...
Setting up libc-dev-bin (2.28-10) ...
Setting up libc6-dev:amd64 (2.28-10) ...
Setting up libsqlite3-dev:amd64 (3.27.2-3) ...
developer@d4e810b832fd:~/pluto.starter$
developer@d4e810b832fd:~/pluto.starter$
developer@d4e810b832fd:~/pluto.starter$
developer@d4e810b832fd:~/pluto.starter$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using concurrent-ruby 1.1.6
Following files may not be writable, so sudo is needed:
/usr/local/bin
/var/lib/gems/2.5.0
/var/lib/gems/2.5.0/build_info
/var/lib/gems/2.5.0/cache
/var/lib/gems/2.5.0/doc
/var/lib/gems/2.5.0/extensions
/var/lib/gems/2.5.0/gems
/var/lib/gems/2.5.0/specifications
Using i18n 1.8.2
Using minitest 5.14.0
Using thread_safe 0.3.6
Using tzinfo 1.2.6
Using zeitwerk 2.2.2
Using activesupport 6.0.2.1
Using activemodel 6.0.2.1
Using activerecord 6.0.2.1
Using logutils 0.6.1
Using activerecord-utils 0.4.1
Using activityutils 0.1.2
Using bundler 1.17.3
Using iniparser 0.1.0
Using props 1.2.0
Using rubyzip 2.2.0
Using textutils 1.4.0
Using feedfilter 1.1.1
Using feedparser 2.1.2
Using fetcher 0.4.5
Using gli 2.19.0
Using liquid 4.0.3
Using logutils-activerecord 0.2.1
Using pakman 1.1.0
Using props-activerecord 0.2.0
Using pluto-models 1.5.6
Using pluto-merge 1.1.0
Using pluto-feedfetcher 0.1.4
Using pluto-update 1.6.3
Using pluto-tasks 1.5.3
Fetching sqlite3 1.4.2
Installing sqlite3 1.4.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /tmp/bundler20200213-527-16x4gbpsqlite3-1.4.2/gems/sqlite3-1.4.2/ext/sqlite3
/usr/bin/ruby2.5 -r ./siteconf20200213-527-n2bnz2.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /tmp/bundler20200213-527-16x4gbpsqlite3-1.4.2/gems/sqlite3-1.4.2 for inspection.
Results logged to /tmp/bundler20200213-527-16x4gbpsqlite3-1.4.2/extensions/x86_64-linux/2.5.0/sqlite3-1.4.2/gem_make.out
An error occurred while installing sqlite3 (1.4.2), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.4.2' --source 'https://rubygems.org/'` succeeds before bundling.
In Gemfile:
pluto was resolved to 1.3.4, which depends on
sqlite3
Next install the ruby-dev
package and try again:
developer@d4e810b832fd:~/pluto.starter$ sudo apt-get install -y --no-install-recommends --no-install-suggests ruby-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libgmp-dev libgmpxx4ldbl ruby2.5-dev
Suggested packages:
gmp-doc libgmp10-doc libmpfr-dev
Recommended packages:
ruby2.5-doc
The following NEW packages will be installed:
libgmp-dev libgmpxx4ldbl ruby-dev ruby2.5-dev
0 upgraded, 4 newly installed, 0 to remove and 9 not upgraded.
Need to get 1076 kB of archives.
After this operation, 2665 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 libgmpxx4ldbl amd64 2:6.1.2+dfsg-4 [22.9 kB]
Get:2 http://deb.debian.org/debian buster/main amd64 libgmp-dev amd64 2:6.1.2+dfsg-4 [628 kB]
Get:3 http://deb.debian.org/debian buster/main amd64 ruby2.5-dev amd64 2.5.5-3+deb10u1 [415 kB]
Get:4 http://deb.debian.org/debian buster/main amd64 ruby-dev amd64 1:2.5.1 [10.2 kB]
Fetched 1076 kB in 1s (1121 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libgmpxx4ldbl:amd64.
(Reading database ... 13877 files and directories currently installed.)
Preparing to unpack .../libgmpxx4ldbl_2%3a6.1.2+dfsg-4_amd64.deb ...
Unpacking libgmpxx4ldbl:amd64 (2:6.1.2+dfsg-4) ...
Selecting previously unselected package libgmp-dev:amd64.
Preparing to unpack .../libgmp-dev_2%3a6.1.2+dfsg-4_amd64.deb ...
Unpacking libgmp-dev:amd64 (2:6.1.2+dfsg-4) ...
Selecting previously unselected package ruby2.5-dev:amd64.
Preparing to unpack .../ruby2.5-dev_2.5.5-3+deb10u1_amd64.deb ...
Unpacking ruby2.5-dev:amd64 (2.5.5-3+deb10u1) ...
Selecting previously unselected package ruby-dev:amd64.
Preparing to unpack .../ruby-dev_1%3a2.5.1_amd64.deb ...
Unpacking ruby-dev:amd64 (1:2.5.1) ...
Setting up libgmpxx4ldbl:amd64 (2:6.1.2+dfsg-4) ...
Setting up libgmp-dev:amd64 (2:6.1.2+dfsg-4) ...
Setting up ruby2.5-dev:amd64 (2.5.5-3+deb10u1) ...
Setting up ruby-dev:amd64 (1:2.5.1) ...
Processing triggers for libc-bin (2.28-10) ...
developer@d4e810b832fd:~/pluto.starter$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Using concurrent-ruby 1.1.6
Following files may not be writable, so sudo is needed:
/usr/local/bin
/var/lib/gems/2.5.0
/var/lib/gems/2.5.0/build_info
/var/lib/gems/2.5.0/cache
/var/lib/gems/2.5.0/doc
/var/lib/gems/2.5.0/extensions
/var/lib/gems/2.5.0/gems
/var/lib/gems/2.5.0/specifications
Using i18n 1.8.2
Using minitest 5.14.0
Using thread_safe 0.3.6
Using tzinfo 1.2.6
Using zeitwerk 2.2.2
Using activesupport 6.0.2.1
Using activemodel 6.0.2.1
Using activerecord 6.0.2.1
Using logutils 0.6.1
Using activerecord-utils 0.4.1
Using activityutils 0.1.2
Using bundler 1.17.3
Using iniparser 0.1.0
Using props 1.2.0
Using rubyzip 2.2.0
Using textutils 1.4.0
Using feedfilter 1.1.1
Using feedparser 2.1.2
Using fetcher 0.4.5
Using gli 2.19.0
Using liquid 4.0.3
Using logutils-activerecord 0.2.1
Using pakman 1.1.0
Using props-activerecord 0.2.0
Using pluto-models 1.5.6
Using pluto-merge 1.1.0
Using pluto-feedfetcher 0.1.4
Using pluto-update 1.6.3
Using pluto-tasks 1.5.3
Fetching sqlite3 1.4.2
Installing sqlite3 1.4.2 with native extensions
Fetching pluto 1.3.4
Installing pluto 1.3.4
Bundle complete! 2 Gemfile dependencies, 32 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
Success so run a test:
developer@d4e810b832fd:~/pluto.starter$ bundle exec pluto help
NAME
pluto - another planet generator (lets you build web pages from published web feeds)
SYNOPSIS
pluto [global options] command [command options] [arguments...]
VERSION
1.3.4
GLOBAL OPTIONS
-c, --config=PATH - Configuration Path (default: /home/developer/.pluto)
--help - Show this message
-q, --quiet, -w, --warn - Only show warnings, errors and fatal messages
--quieter, --err, --error - Only show errors and fatal messages
--verbose, --debug - (Debug) Show debug messages
--version - Display the program version
COMMANDS
about, a - (Debug) Show more version info
build, b - Build planet
fetch, f - Fetch feeds
help - Shows a list of commands or help for one command
install, i - Install template pack
list, ls, l - List installed template packs
merge, m - Merge planet template pack
test - (Debug) Show global options, options, arguments for test command
update, up, u - Update planet feeds
The minimal Docker image was created using
Dockerfile:
FROM debian:buster-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends --no-install-suggests \
git ruby-bundler sqlite3 sudo gcc make
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
/usr/bin/passwd -d developer && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
chown -R developer:1000 /home/developer/
USER developer
ENV HOME /home/developer
WORKDIR /home/developer
RUN git clone https://github.com/feedreader/pluto.starter.git ; chown -R developer pluto.starter
CMD ["/bin/bash"]
docker-compose.yml:
version: '3.5'
services:
app:
image: debian-ruby-bundle
build: .
and then running docker-compose build
I see. Wow thanks for all the detailed examples. I will try to work it all into the readme / docs in the next days.
Hello, if you scroll down on the readme to the Q&A there's now a new entry "Q: What packages for Debian (above a slim base image) allow the bundle install to succeed?". I added all info as far as I understand (along with credit). Thanks. Cheers.
Please add a section on install dependencies needed for
bundle install
to work (and build pluto and the dependencies).Debian dependencies: git ruby-bundler sqlite3 sudo gcc make libsqlite3-dev ruby-dev
(These are above a very minimal base system - see the longer post below.)