You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I need to install the keyring Gem on a Linux Machine running Ruby 2.3.8 but it fails with
$ gem install keyring
Fetching corefoundation-0.2.0.gem
Fetching keyring-0.4.1.gem
Fetching ffi-1.13.1.gem
Fetching ruby-keychain-0.3.2.gem
Fetching slop-3.6.0.gem
Building native extensions. This could take a while...
Successfully installed ffi-1.13.1
Successfully installed corefoundation-0.2.0
Successfully installed ruby-keychain-0.3.2
Successfully installed slop-3.6.0
Building native extensions. This could take a while...
ERROR: Error installing keyring:
ERROR: Failed to build gem native extension.
current directory: /home/zinga/.rvm/gems/ruby-2.3.8@keyring-test/gems/keyring-0.4.1/ext
/usr/share/rvm/rubies/ruby-2.3.8/bin/ruby mkrf_conf.rb
*linux: installing gir_ffi-gnome_keyring...
rake failed, exit code 1
Gem files will remain installed in /home/zinga/.rvm/gems/ruby-2.3.8@keyring-test/gems/keyring-0.4.1 for inspection.
Results logged to /home/zinga/.rvm/gems/ruby-2.3.8@keyring-test/extensions/x86_64-linux/2.3.0/keyring-0.4.1/gem_make.out
This is because
the gir_ffi-gnome_keyring dependency with version constraint ~> 0.0.3 is
currently resolved to gir_ffi-gnome_keyring version 0.0.11 which in turn
requires gir_ffi version ~> 0.15.1 which
requires Ruby version >= 2.5
So, the installation of the gir_ffi-gnome_keyring dependency fails and thus the installation of keyring itself too.
Notes:
I am aware that Ruby 2.3.8 is EOL but I'd expect that an install of a Gem which worked "yesterday" on a machine should work "today" as well (when using the exact same version).
The versioning policy of gir_ffi-gnome_keyring to me seems to be a bit "loose" here and I filed a bug for that as well.
In general in the past (with other Gems) I was able to resolve such problems by installing a version of the problematic dependency which fulfilled the version constraint and worked on my platform. When installing the Gem then the dependency was already satisfied and the gem install worked.
With keyring this doesn't work though because it manages the dependency by itself via the extension build mechanism (instead of letting it be resolved by the gem tool) and that kind of forces an installation of the most recent version of the dependency (which satisfies the version constraint).
To make dependency handling of keyring conform a bit more to the "normal behaviour" it could install the dependency/ies only if necessary, like the gem install command with --conservative option, i.e. do something like
name, version = ["gir_ffi-gnome_keyring", '~> 0.0.3']
inst.install name, version if Gem::Dependency.new(name, version).matching_specs.empty?
i.e. install the dependency only if there is none (satisfying the version constraint) already.
Then my workaround with "nailing down" certain dependency versions would work and installation of keyring on older Ruby versions (2.3, 2.4) would work again too.
The text was updated successfully, but these errors were encountered:
Hi,
I need to install the
keyring
Gem on a Linux Machine runningRuby 2.3.8
but it fails withThis is because
gir_ffi-gnome_keyring
dependency with version constraint~> 0.0.3
isgir_ffi-gnome_keyring
version0.0.11
which in turngir_ffi
version~> 0.15.1
whichRuby
version>= 2.5
So, the installation of the
gir_ffi-gnome_keyring
dependency fails and thus the installation ofkeyring
itself too.Notes:
Ruby 2.3.8
is EOL but I'd expect that an install of a Gem which worked "yesterday" on a machine should work "today" as well (when using the exact same version).gir_ffi-gnome_keyring
to me seems to be a bit "loose" here and I filed a bug for that as well.In general in the past (with other Gems) I was able to resolve such problems by installing a version of the problematic dependency which fulfilled the version constraint and worked on my platform. When installing the Gem then the dependency was already satisfied and the
gem install
worked.With
keyring
this doesn't work though because it manages the dependency by itself via the extension build mechanism (instead of letting it be resolved by thegem
tool) and that kind of forces an installation of the most recent version of the dependency (which satisfies the version constraint).To make dependency handling of
keyring
conform a bit more to the "normal behaviour" it could install the dependency/ies only if necessary, like the gem install command with --conservative option, i.e. do something likei.e. install the dependency only if there is none (satisfying the version constraint) already.
Then my workaround with "nailing down" certain dependency versions would work and installation of keyring on older Ruby versions (
2.3
,2.4
) would work again too.The text was updated successfully, but these errors were encountered: