[Bug 1974059] Re: hiera-eyaml fails to start
Patrik Lundin
1974059 at bugs.launchpad.net
Fri Jan 27 21:18:29 UTC 2023
Updated patch with (hopefully) correct version number, and appended SRU-
formatted data to the bug report. Re-subscribed ubuntu sponsors.
** Description changed:
Ever since upgrading to jammy eyaml fails completely. I thought it was
related to gpgme, ruby-gpg or my GPG keys. But then I tried in a lxc
container and it obviously doesn't work at all.
This also goes for both my laptop and my workstation after upgrading to
jammy. I used to use eyaml everyday in both hirsute and focal.
root at u1:~# eyaml edit foo.eyaml
/usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:37:in `block (2 levels) in find': undefined method `dependencies' for #<Gem::StubSpecification:0x000055b20761a738 @extension_dir=nil, @full_gem_path=nil, @gem_dir=nil, @ignored=nil, @loaded_from="/usr/lib/ruby/gems/3.0.0/specifications/default/abbrev-0.1.0.gemspec", @data=#<Gem::StubSpecification::StubLine:0x000055b2076197c0 @name="abbrev", @version=#<Gem::Version "0.1.0">, @platform="ruby", @extensions=[], @full_name="abbrev-0.1.0", @require_paths=["lib"]>, @name=nil, @spec=nil, @base_dir="/var/lib/gems/3.0.0", @gems_dir="/var/lib/gems/3.0.0/gems", @default_gem=true> (NoMethodError)
- from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `each'
- from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `block in find'
- from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `each'
- from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `find'
- from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/bin/eyaml:10:in `<top (required)>'
- from /usr/bin/eyaml:25:in `load'
- from /usr/bin/eyaml:25:in `<main>'
- root at u1:~# history
- 1 apt-get update
- 2 apt-get install hiera-eyaml
- 3 eyaml edit foo.eyaml
- 4 history
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `each'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `block in find'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `each'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `find'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/bin/eyaml:10:in `<top (required)>'
+ from /usr/bin/eyaml:25:in `load'
+ from /usr/bin/eyaml:25:in `<main>'
+ root at u1:~# history
+ 1 apt-get update
+ 2 apt-get install hiera-eyaml
+ 3 eyaml edit foo.eyaml
+ 4 history
root at u1:~#
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: hiera-eyaml 3.2.2-2
ProcVersionSignature: Ubuntu 5.15.0-30.31-generic 5.15.30
Uname: Linux 5.15.0-30-generic x86_64
ApportVersion: 2.20.11-0ubuntu82
Architecture: amd64
CasperMD5CheckResult: unknown
Date: Wed May 18 15:59:02 2022
PackageArchitecture: all
ProcEnviron:
- TERM=xterm-256color
- PATH=(custom, no user)
- LANG=C.UTF-8
+ TERM=xterm-256color
+ PATH=(custom, no user)
+ LANG=C.UTF-8
SourcePackage: hiera-eyaml
UpgradeStatus: No upgrade log present (probably fresh install)
+
+ ===
+
+ SRU-formatted update (added by Patrik Lundin)
+
+ [ Impact ]
+
+ The eyaml command is unusable as it stands, running it will lead to a
+ backtrace.
+
+ [ Test Plan ]
+
+ Running `eyaml` will result in a backtrace:
+ ```
+ $ eyaml
+ /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:37:in `block (2 levels) in find': undefined method `dependencies' for #<Gem::StubSpecification:0x000055f2972067c0 @extension_dir=nil, @full_gem_path=nil, @gem_dir=nil, @ignored=nil, @loaded_from="/usr/lib/ruby/gems/3.0.0/specifications/default/abbrev-0.1.0.gemspec", @data=#<Gem::StubSpecification::StubLine:0x000055f2972057a8 @name="abbrev", @version=#<Gem::Version "0.1.0">, @platform="ruby", @extensions=[], @full_name="abbrev-0.1.0", @require_paths=["lib"]>, @name=nil, @spec=nil, @base_dir="/var/lib/gems/3.0.0", @gems_dir="/var/lib/gems/3.0.0/gems", @default_gem=true> (NoMethodError)
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `each'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `block in find'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `each'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `find'
+ from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/bin/eyaml:10:in `<top (required)>'
+ from /usr/bin/eyaml:25:in `load'
+ from /usr/bin/eyaml:25:in `<main>'
+ ```
+
+ After installing the patched package it starts working again:
+ ```
+ $ sudo dpkg -i hiera-eyaml_3.2.2-2ubuntu0.1_all.deb
+
+ $ eyaml
+ Unknown subcommand
+
+ Usage: eyaml <subcommand>
+
+ Please use one of the following subcommands or help for more help:
+ createkeys, decrypt, edit, encrypt, recrypt, version
+ ```
+
+ At this point the edit command reported in the original report above works
+ again:
+ ```
+ $ eyaml createkeys
+ [hiera-eyaml-core] Created key directory: ./keys
+ [hiera-eyaml-core] Keys created OK
+
+ $ eyaml edit foo.eyaml
+ ```
+
+ Enter some example content in the editor:
+ ```
+ # | This is eyaml edit mode. This text (lines starting with # | at the top of
+ # | the file) will be removed when you save and exit.
+ # | - To edit encrypted values, change the content of the DEC(<num>)::PKCS7[]!
+ # | block.
+ # | WARNING: DO NOT change the number in the parentheses.
+ # | - To add a new encrypted value copy and paste a new block from the
+ # | appropriate example below. Note that:
+ # | * the text to encrypt goes in the square brackets
+ # | * ensure you include the exclamation mark when you copy and paste
+ # | * you must not include a number when adding a new block
+ # | e.g. DEC::PKCS7[]!
+ ---
+ foo: DEC::PKCS7[bar]!
+ ```
+
+ On save it returns:
+ ```
+ [hiera-eyaml-core] foo.eyaml doesn't exist, editing new file
+ ```
+
+ The file now contains an encrypted value:
+ ```
+ $ cat foo.eyaml
+ ---
+ foo: ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEh...]
+ ```
+
+ Re-running "eyaml edit foo.eyaml" will show the contents unencrypted
+ again.
+
+ [ Where problems could occur ]
+
+ The patch basically makes sure the returned spec is of the correct type and
+ changes it if necessary. I guess it could break if ruby objects stopped
+ supporting the ".respond_to?" method, but it seems unlikely since it is part of
+ the "default root of all Ruby objects" as defined in
+ https://ruby-doc.org/core-3.0.2/Object.html
--
You received this bug notification because you are a member of Ubuntu
Sponsors Team, which is subscribed to the bug report.
https://bugs.launchpad.net/bugs/1974059
Title:
hiera-eyaml fails to start
Status in hiera-eyaml package in Ubuntu:
Fix Released
Status in hiera-eyaml source package in Jammy:
Confirmed
Bug description:
Ever since upgrading to jammy eyaml fails completely. I thought it was
related to gpgme, ruby-gpg or my GPG keys. But then I tried in a lxc
container and it obviously doesn't work at all.
This also goes for both my laptop and my workstation after upgrading
to jammy. I used to use eyaml everyday in both hirsute and focal.
root at u1:~# eyaml edit foo.eyaml
/usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:37:in `block (2 levels) in find': undefined method `dependencies' for #<Gem::StubSpecification:0x000055b20761a738 @extension_dir=nil, @full_gem_path=nil, @gem_dir=nil, @ignored=nil, @loaded_from="/usr/lib/ruby/gems/3.0.0/specifications/default/abbrev-0.1.0.gemspec", @data=#<Gem::StubSpecification::StubLine:0x000055b2076197c0 @name="abbrev", @version=#<Gem::Version "0.1.0">, @platform="ruby", @extensions=[], @full_name="abbrev-0.1.0", @require_paths=["lib"]>, @name=nil, @spec=nil, @base_dir="/var/lib/gems/3.0.0", @gems_dir="/var/lib/gems/3.0.0/gems", @default_gem=true> (NoMethodError)
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `each'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `block in find'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `each'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `find'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/bin/eyaml:10:in `<top (required)>'
from /usr/bin/eyaml:25:in `load'
from /usr/bin/eyaml:25:in `<main>'
root at u1:~# history
1 apt-get update
2 apt-get install hiera-eyaml
3 eyaml edit foo.eyaml
4 history
root at u1:~#
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: hiera-eyaml 3.2.2-2
ProcVersionSignature: Ubuntu 5.15.0-30.31-generic 5.15.30
Uname: Linux 5.15.0-30-generic x86_64
ApportVersion: 2.20.11-0ubuntu82
Architecture: amd64
CasperMD5CheckResult: unknown
Date: Wed May 18 15:59:02 2022
PackageArchitecture: all
ProcEnviron:
TERM=xterm-256color
PATH=(custom, no user)
LANG=C.UTF-8
SourcePackage: hiera-eyaml
UpgradeStatus: No upgrade log present (probably fresh install)
===
SRU-formatted update (added by Patrik Lundin)
[ Impact ]
The eyaml command is unusable as it stands, running it will lead to a
backtrace.
[ Test Plan ]
Running `eyaml` will result in a backtrace:
```
$ eyaml
/usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:37:in `block (2 levels) in find': undefined method `dependencies' for #<Gem::StubSpecification:0x000055f2972067c0 @extension_dir=nil, @full_gem_path=nil, @gem_dir=nil, @ignored=nil, @loaded_from="/usr/lib/ruby/gems/3.0.0/specifications/default/abbrev-0.1.0.gemspec", @data=#<Gem::StubSpecification::StubLine:0x000055f2972057a8 @name="abbrev", @version=#<Gem::Version "0.1.0">, @platform="ruby", @extensions=[], @full_name="abbrev-0.1.0", @require_paths=["lib"]>, @name=nil, @spec=nil, @base_dir="/var/lib/gems/3.0.0", @gems_dir="/var/lib/gems/3.0.0/gems", @default_gem=true> (NoMethodError)
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `each'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:34:in `block in find'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `each'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/lib/hiera/backend/eyaml/plugins.rb:31:in `find'
from /usr/share/rubygems-integration/all/gems/hiera-eyaml-3.2.2/bin/eyaml:10:in `<top (required)>'
from /usr/bin/eyaml:25:in `load'
from /usr/bin/eyaml:25:in `<main>'
```
After installing the patched package it starts working again:
```
$ sudo dpkg -i hiera-eyaml_3.2.2-2ubuntu0.1_all.deb
$ eyaml
Unknown subcommand
Usage: eyaml <subcommand>
Please use one of the following subcommands or help for more help:
createkeys, decrypt, edit, encrypt, recrypt, version
```
At this point the edit command reported in the original report above works
again:
```
$ eyaml createkeys
[hiera-eyaml-core] Created key directory: ./keys
[hiera-eyaml-core] Keys created OK
$ eyaml edit foo.eyaml
```
Enter some example content in the editor:
```
# | This is eyaml edit mode. This text (lines starting with # | at the top of
# | the file) will be removed when you save and exit.
# | - To edit encrypted values, change the content of the DEC(<num>)::PKCS7[]!
# | block.
# | WARNING: DO NOT change the number in the parentheses.
# | - To add a new encrypted value copy and paste a new block from the
# | appropriate example below. Note that:
# | * the text to encrypt goes in the square brackets
# | * ensure you include the exclamation mark when you copy and paste
# | * you must not include a number when adding a new block
# | e.g. DEC::PKCS7[]!
---
foo: DEC::PKCS7[bar]!
```
On save it returns:
```
[hiera-eyaml-core] foo.eyaml doesn't exist, editing new file
```
The file now contains an encrypted value:
```
$ cat foo.eyaml
---
foo: ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEh...]
```
Re-running "eyaml edit foo.eyaml" will show the contents unencrypted
again.
[ Where problems could occur ]
The patch basically makes sure the returned spec is of the correct type and
changes it if necessary. I guess it could break if ruby objects stopped
supporting the ".respond_to?" method, but it seems unlikely since it is part of
the "default root of all Ruby objects" as defined in
https://ruby-doc.org/core-3.0.2/Object.html
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/hiera-eyaml/+bug/1974059/+subscriptions
More information about the Ubuntu-sponsors
mailing list