sj26 / mailcatcher

Catches mail and serves it through a dream.

Home Page:http://mailcatcher.me

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Doesn't work on rhel8-like distr in docker with arm arch

dolgovas opened this issue · comments

Really strange error in docker based on quay.io/centos/centos:stream8
On ARM It seems like

[root@b05b6af9c21b /]# cat /etc/centos-release
CentOS Stream release 8
[root@b05b6af9c21b /]# mailcatcher
Starting MailCatcher v0.8.2
<internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/sqlite3-1.6.0-aarch64-linux/lib/sqlite3.rb:6:in `rescue in <top (required)>'
	from /usr/local/share/gems/gems/sqlite3-1.6.0-aarch64-linux/lib/sqlite3.rb:2:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher/mail.rb:6:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher/smtp.rb:5:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:183:in `block (2 levels) in run!'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:233:in `rescue_port'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:182:in `block in run!'
	from /usr/local/share/gems/gems/eventmachine-1.0.9.1/lib/eventmachine.rb:193:in `run_machine'
	from /usr/local/share/gems/gems/eventmachine-1.0.9.1/lib/eventmachine.rb:193:in `run'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:180:in `run!'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/bin/mailcatcher:6:in `<top (required)>'
	from /usr/local/bin/mailcatcher:25:in `load'
	from /usr/local/bin/mailcatcher:25:in `<main>'
<internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require': /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /usr/local/share/gems/gems/sqlite3-1.6.0-aarch64-linux/lib/sqlite3/3.0/sqlite3_native.so) - /usr/local/share/gems/gems/sqlite3-1.6.0-aarch64-linux/lib/sqlite3/3.0/sqlite3_native.so (LoadError)
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/sqlite3-1.6.0-aarch64-linux/lib/sqlite3.rb:4:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher/mail.rb:6:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher/smtp.rb:5:in `<top (required)>'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from <internal:/usr/share/rubygems/rubygems/core_ext/kernel_require.rb>:85:in `require'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:183:in `block (2 levels) in run!'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:233:in `rescue_port'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:182:in `block in run!'
	from /usr/local/share/gems/gems/eventmachine-1.0.9.1/lib/eventmachine.rb:193:in `run_machine'
	from /usr/local/share/gems/gems/eventmachine-1.0.9.1/lib/eventmachine.rb:193:in `run'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/lib/mail_catcher.rb:180:in `run!'
	from /usr/local/share/gems/gems/mailcatcher-0.8.2/bin/mailcatcher:6:in `<top (required)>'
	from /usr/local/bin/mailcatcher:25:in `load'
	from /usr/local/bin/mailcatcher:25:in `<main>'
[root@b05b6af9c21b /]# ruby --version
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [aarch64-linux]
[root@b05b6af9c21b /]# mailcatcher --version
MailCatcher v0.8.2
[root@b05b6af9c21b /]# gem list

*** LOCAL GEMS ***

abbrev (default: 0.1.0)
base64 (default: 0.1.0)
benchmark (default: 0.1.1)
bigdecimal (3.0.0)
bundler (2.2.33)
cgi (default: 0.2.1)
csv (default: 3.1.9)
daemons (1.4.1)
date (3.3.3, default: 3.1.3)
dbm (default: 1.1.0)
debug (default: 0.2.1)
delegate (default: 0.2.0)
did_you_mean (default: 1.5.0)
digest (default: 3.0.0)
drb (default: 2.0.5)
english (default: 0.7.1)
erb (default: 2.2.0)
etc (default: 1.3.0)
eventmachine (1.0.9.1)
fcntl (default: 1.0.1)
fiddle (default: 1.0.8)
fileutils (default: 1.5.0)
find (default: 0.1.0)
forwardable (default: 1.3.2)
gdbm (default: 2.1.0)
getoptlong (default: 0.1.1)
io-console (0.5.7)
io-nonblock (default: 0.1.0)
io-wait (default: 0.2.0)
ipaddr (default: 1.2.2)
json (2.5.1)
logger (default: 1.4.3)
mail (2.8.0.1)
mailcatcher (0.8.2)
matrix (default: 0.3.1)
mini_mime (1.1.2)
mutex_m (default: 0.1.1)
net-ftp (default: 0.1.2)
net-http (default: 0.1.1)
net-imap (0.3.4, default: 0.1.1)
net-pop (0.1.2, default: 0.1.1)
net-protocol (0.2.1, default: 0.1.1)
net-smtp (0.3.3, default: 0.2.1)
nkf (default: 0.1.0)
observer (default: 0.1.1)
open-uri (default: 0.1.0)
open3 (default: 0.1.1)
openssl (default: 2.2.1)
optparse (default: 0.1.1)
ostruct (default: 0.3.1)
pathname (default: 0.1.0)
pp (default: 0.2.1)
prettyprint (default: 0.1.1)
prime (default: 0.1.2)
pstore (default: 0.1.1)
psych (3.3.2)
racc (default: 1.5.2)
rack (1.6.13)
rack-protection (1.5.5)
rdoc (6.3.3)
readline (default: 0.0.2)
readline-ext (default: 0.1.1)
reline (default: 0.2.5)
resolv (default: 0.2.1)
resolv-replace (default: 0.1.0)
rinda (default: 0.1.1)
securerandom (default: 0.1.0)
set (default: 1.0.1)
shellwords (default: 0.1.0)
sinatra (1.4.8)
singleton (default: 0.1.1)
skinny (0.2.4)
sqlite3 (1.6.0 aarch64-linux)
stringio (default: 3.0.1)
strscan (default: 3.0.1)
syslog (default: 0.1.0)
tempfile (default: 0.1.1)
thin (1.5.1)
tilt (2.0.11)
time (default: 0.1.0)
timeout (0.3.1, default: 0.1.1)
tmpdir (default: 0.1.2)
tracer (default: 0.1.1)
tsort (default: 0.1.0)
un (default: 0.1.0)
uri (default: 0.10.1)
weakref (default: 0.1.1)
yaml (default: 0.1.1)
zlib (default: 2.0.0)
[root@b05b6af9c21b /]# rpm -qa|grep glibc
glibc-common-2.28-224.el8.aarch64
glibc-2.28-224.el8.aarch64
glibc-headers-2.28-224.el8.aarch64
glibc-devel-2.28-224.el8.aarch64
glibc-langpack-en-2.28-224.el8.aarch64
glibc-gconv-extra-2.28-224.el8.aarch64
glibc-minimal-langpack-2.28-224.el8.aarch64

however on x86 It works with the same version of main libs ...

[root@4396f81f9875 /]# mailcatcher
Starting MailCatcher v0.8.2
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.
[root@4396f81f9875 /]# cat /etc/centos-release
CentOS Stream release 8
[root@4396f81f9875 /]# ruby --version
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]
[root@4396f81f9875 /]# mailcatcher --version
MailCatcher v0.8.2
[root@4396f81f9875 /]# gem list

*** LOCAL GEMS ***

abbrev (default: 0.1.0)
base64 (default: 0.1.0)
benchmark (default: 0.1.1)
bigdecimal (3.0.0)
bundler (2.2.33)
cgi (default: 0.2.1)
csv (default: 3.1.9)
daemons (1.4.1)
date (3.3.3, default: 3.1.3)
dbm (default: 1.1.0)
debug (default: 0.2.1)
delegate (default: 0.2.0)
did_you_mean (default: 1.5.0)
digest (default: 3.0.0)
drb (default: 2.0.5)
english (default: 0.7.1)
erb (default: 2.2.0)
etc (default: 1.3.0)
eventmachine (1.0.9.1)
fcntl (default: 1.0.1)
fiddle (default: 1.0.8)
fileutils (default: 1.5.0)
find (default: 0.1.0)
forwardable (default: 1.3.2)
gdbm (default: 2.1.0)
getoptlong (default: 0.1.1)
io-console (0.5.7)
io-nonblock (default: 0.1.0)
io-wait (default: 0.2.0)
ipaddr (default: 1.2.2)
json (2.5.1)
logger (default: 1.4.3)
mail (2.8.0.1)
mailcatcher (0.8.2)
matrix (default: 0.3.1)
mini_mime (1.1.2)
mutex_m (default: 0.1.1)
net-ftp (default: 0.1.2)
net-http (default: 0.1.1)
net-imap (0.3.4, default: 0.1.1)
net-pop (0.1.2, default: 0.1.1)
net-protocol (0.2.1, default: 0.1.1)
net-smtp (0.3.3, default: 0.2.1)
nkf (default: 0.1.0)
observer (default: 0.1.1)
open-uri (default: 0.1.0)
open3 (default: 0.1.1)
openssl (default: 2.2.1)
optparse (default: 0.1.1)
ostruct (default: 0.3.1)
pathname (default: 0.1.0)
pp (default: 0.2.1)
prettyprint (default: 0.1.1)
prime (default: 0.1.2)
pstore (default: 0.1.1)
psych (3.3.2)
racc (default: 1.5.2)
rack (1.6.13)
rack-protection (1.5.5)
rdoc (6.3.3)
readline (default: 0.0.2)
readline-ext (default: 0.1.1)
reline (default: 0.2.5)
resolv (default: 0.2.1)
resolv-replace (default: 0.1.0)
rinda (default: 0.1.1)
securerandom (default: 0.1.0)
set (default: 1.0.1)
shellwords (default: 0.1.0)
sinatra (1.4.8)
singleton (default: 0.1.1)
skinny (0.2.4)
sqlite3 (1.6.0 x86_64-linux)
stringio (default: 3.0.1)
strscan (default: 3.0.1)
syslog (default: 0.1.0)
tempfile (default: 0.1.1)
thin (1.5.1)
tilt (2.0.11)
time (default: 0.1.0)
timeout (0.3.1, default: 0.1.1)
tmpdir (default: 0.1.2)
tracer (default: 0.1.1)
tsort (default: 0.1.0)
un (default: 0.1.0)
uri (default: 0.10.1)
weakref (default: 0.1.1)
yaml (default: 0.1.1)
zlib (default: 2.0.0)
[root@4396f81f9875 /]# rpm -qa|grep glibc
glibc-common-2.28-224.el8.x86_64
glibc-minimal-langpack-2.28-224.el8.x86_64
glibc-headers-2.28-224.el8.x86_64
glibc-2.28-224.el8.x86_64
glibc-langpack-en-2.28-224.el8.x86_64
glibc-gconv-extra-2.28-224.el8.x86_64
glibc-devel-2.28-224.el8.x86_64

My dockerfile

FROM quay.io/centos/centos:stream8

RUN dnf -y module enable ruby:3.0 && \
    dnf install -y gcc-c++ ruby-devel make && \
    gem install mailcatcher --no-document

It works with manual install sqlite3:1.4.4.
It seems like sqlite3 prebuild (after 1.5.0) doesn't work on Centos8_aarch

Sorry! This sounds like it's an issue with upstream and we can't solve that here. Sounds like you've got a workaround, though. 🙏

Looks like the same thing here:

sparklemotion/sqlite3-ruby#372

Doing one of these before installing mailcatcher seems to work:

gem install sqlite3 --version="~> 1.3" --platform=ruby

and is what I'm doing to build working arm64 docker images:

68188f1