[Bug 1201730] New: Upgrade to LEAP 15.4 breaks installing official Vagrant package with vagrant-libvirt
http://bugzilla.opensuse.org/show_bug.cgi?id=1201730 Bug ID: 1201730 Summary: Upgrade to LEAP 15.4 breaks installing official Vagrant package with vagrant-libvirt Classification: openSUSE Product: openSUSE Distribution Version: Leap 15.4 Hardware: x86-64 OS: Other Status: NEW Severity: Major Priority: P5 - None Component: Virtualization:Other Assignee: virt-bugs@suse.de Reporter: markus.zimmermann@symflower.com QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- I just installed a new machine with LEAP 15.4. This is actually the first time I tried it on our development environment stack. One major part of our devenv is broken with 15.4: Vagrant with libvirt as its backend cannot be installed **This worked flawless with LEAP 15.3. We cannot upgrade because of this problem.** Here is a reproducer that works repeatedly for me on a newly installed 15.4 and on a machine where i upgraded from 15.3 to 15.4. We usually install the official version of Vagrant (so we can reproduce bugs for specific versions) and also install specific plugins: E.g.: # Remove everything related to Vagrant and building with bundler: rm -rf .vagrant/ ~/.vagrant.d/ ~/.bundle # Install Vagrant manually from the official source. sudo zypper --no-gpg-checks --non-interactive install https://releases.hashicorp.com/vagrant/2.2.19/vagrant_2.2.19_x86_64.rpm Create a directory "foobar", cd into it, and create a Vagrantfile ``` # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = '2' Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vagrant.plugins = { "vagrant-libvirt" => { "version" => "0.9.0" } } config.vm.box = 'generic/ubuntu2004' config.vm.box_version = '4.0.4' config.vm.box_check_update = false config.vm.hostname = 'foobar' config.vm.provider :libvirt do |libvirt| libvirt.cpus = 2 libvirt.memory = 2048 end end ``` # Create the VM with debugging output. Remember to press Y+ENTER when asked to install the libvirt plugin. vagrant --debug up What you will see is an error that we cannot compile ruby-libvirt (the libvirt dependency). The output references the log file ruby-libvirt-0.8.0/mkmf.log Which mainly failed with ``` "gcc -o conftest -I/opt/vagrant/embedded/include/ruby-2.7.0/x86_64-linux -I/opt/vagrant/embedded/include/ruby-2.7.0/ruby/backward -I/opt/vagrant/embedded/include/ruby-2.7.0 -I. -I/opt/vagrant/embedded/include -I/opt/vagrant/embedded/include -I/opt/vagrant/embedded/include -I./include -O3 -std=c99 -fPIC conftest.c -L. -L/opt/vagrant/embedded/lib -Wl,-rpath,/opt/vagrant/embedded/lib -L/opt/vagrant/embedded/lib -Wl,-rpath,/opt/vagrant/embedded/lib -L. -L/opt/vagrant/embedded/lib -L/opt/vagrant/embedded/lib64 -Wl,-rpath=/opt/vagrant/embedded/lib:/opt/vagrant/embedded/lib64 -fstack-protector-strong -rdynamic -Wl,-export-dynamic -L/opt/vagrant/embedded/lib -Wl,-rpath,/opt/vagrant/embedded/lib -Wl,-rpath,'/../lib' -Wl,-rpath,'/../lib' -lruby -lvirt -lm -lc" /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/libssh.so.4: undefined reference to `EVP_KDF_CTX_new_id@OPENSSL_1_1_1d' /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/libssh.so.4: undefined reference to `EVP_KDF_ctrl@OPENSSL_1_1_1d' /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/libssh.so.4: undefined reference to `EVP_KDF_CTX_free@OPENSSL_1_1_1d' /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: /usr/lib64/libssh.so.4: undefined reference to `EVP_KDF_derive@OPENSSL_1_1_1d' ``` As you can see. We cannot install vagrant-libvirt with LEAP 15.4. Mainly because we cannot compile ruby-libvirt. This worked flawless with LEAP 15.3. Now i was desperate so i looked a little closer and tried different scenarios. The only scenario i found that actually worked: When we add the repositories https://download.opensuse.org/repositories/devel:/languages:/ruby/15.4 and https://download.opensuse.org/repositories/Virtualization:/vagrant/15.4 We can install the the current version of "vagrant" which is 2.2.19 from the virtualization-vagrant repository. The package automatically installs "ruby3.1" (from the ruby repository) and some ruby3.1-* packages (from the virtualization-vagrant repository) AND also "vagrant-libvirt" in an completely outdated version. That we need to deinstall, so we can compile it on our own (please do not install this packages automatically, most users might not even want that package). After deinstalling "vagrant-libvirt". We need to install "ruby3.1-rubygem-ruby-libvirt", "ruby3.1-rubygem-fog-core" and "ruby3.1-rubygem-fog-libvirt" (from the virtualization-vagrant repository). The last one greets us with the problem that "ruby:3.1.0:nokogiri" cannot be found in any repository. We need to install it anyway. We can try again: # Remove everything related to Vagrant and building with bundler: rm -rf .vagrant/ ~/.vagrant.d/ ~/.bundle # Create the VM with debugging output. Remember to press Y+ENTER when asked to install the libvirt plugin. vagrant up This time, the compilation and installation works, even though we are breaking a reference. Conclusion: - We can compile+install+use the vagrant-libvirt plugin on our own. However, we are bound to the Vagrant version in the virtualization-vagrant repository. - Since we are bound to a specific Vagrant version, and we cannot simply install vagrant-libvirt, we cannot upgrade to 15.4. This is a major blocker for us. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=1201730 http://bugzilla.opensuse.org/show_bug.cgi?id=1201730#c1 --- Comment #1 from Markus Zimmermann <markus.zimmermann@symflower.com> --- To be complete, this is what we installed for LEAP 15.3: ``` zypper install -y gcc libreadline7 libvirt libvirt-client libvirt-devel libxml2 libxml2-devel qemu qemu-kvm readline-devel ruby-devel ruby2.5-rubygem-nokogiri virt-manager ``` (Additional to a compiler suite which is LLVM for us) Everything else in the scripts, is to set up LibVirt+KVM+QEMU, sudoers, firewall and NFS. I can share that too if needed but the reproducer in the first post is without the NFS setup. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=1201730 http://bugzilla.opensuse.org/show_bug.cgi?id=1201730#c2 --- Comment #2 from Markus Zimmermann <markus.zimmermann@symflower.com> --- (just saw that we have GCC in the package list, so i guess ruby-* vagrant-* is using GCC otherwise we wouldn't add it. For everything else we are using LLVM which hence is not an issue for this bug report) In any case, let me know what i should try. I have two machines where i can reproduce this problem. The goal would be to install the official Vagrant package with LEAP 15.4. If we need additional repositories, that is fine for me. However, since this worked out of the box with 15.3, i see the whole report as a regression. Especially since the only way of getting this to work (at least so far) is to install the vagrant package of a specialized repository in a very specific combination. Would be great if the next users that want to try vagrant-libvirt do not run into this problem. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=1201730 http://bugzilla.opensuse.org/show_bug.cgi?id=1201730#c4 --- Comment #4 from Markus Zimmermann <markus.zimmermann@symflower.com> --- I fully understand taking a long time to reply. No worries. Thanks for taking a look! We are currently in the process of finally upgrading to LEAP 15.4 and i can take another look at this. Unfortunately the situation is not much better. The problem (then and now) is that one cannot compile vagrant-libvirt or use it with that LEAP provides, at all. So if someone wants to use it, the latest version i mean, they have to specifically find out which packages need to be recompiled. E.g. i cannot simple run `vagrant plugin install --local` which installs the plugins of the Vagrantfile. Because then it does not find libvirt library. So the first thing i have to do by hand is run the following: `CONFIGURE_ARGS='with-libvirt-lib=/usr/lib64 with-libvirt-include=/usr/include/libvirt' vagrant plugin install --local` Now i can compile but when i do now a `vagrant up` I receive a trace with the following error ``` /opt/vagrant/embedded/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:83:in `require': /usr/lib64/libssh.so.4: undefined symbol: EVP_KDF_CTX_new_id, version OPENSSL_1_1_1d - /home/zimmski/symflower/.vagrant/plugins/gems/2.7.6/gems/ruby-libvirt-0.8.0/lib/_libvirt.so (LoadError) ``` So libssh.so.4 is missing that symbol i have never heard of and now as a user i need to compile OpenSSL/LibSSH just to get a package running for Vagrant so i can use KVM VMs over libvirt instead of VirtualBox VMs. That is what bugs me. I am happy to not have the Vagrant packages in the repository. But i cannot even install them out of the box. I have to compile notoriously hard to compile base projects to get there. I appreciate any help, even if it is just pinpointing me to the script on how you are compiling. Because i am out of ideas. This is really frustrating because we cannot upgrade to 15.4 (we now have to) so i have to either find a new way of dealing what Vagrant does (impossible) or recompile everything until i am there. -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@suse.com