New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Debian Templates: libxen-4.4 broken dependency / not installable / causing follow up issues #1974

Closed
adrelanos opened this Issue May 7, 2016 · 6 comments

Comments

Projects
None yet
4 participants
@adrelanos
Member

adrelanos commented May 7, 2016

Qubes OS version (e.g., R3.1):

R3.1

Affected TemplateVMs (e.g., fedora-23, if applicable):

debian-8


Expected behavior:

libguestfs-tools should be installable as usual.

Actual behavior:

~ $ sudo apt-get install libguestfs-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libguestfs-tools : Depends: libguestfs0 (= 1:1.28.1-1) but it is not going to be installed
                    Depends: libguestfs-perl (= 1:1.28.1-1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
~ $ sudo apt-get install libguestfs-tools libguestfs0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libguestfs0 : Depends: qemu-system-x86 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
~ $ sudo apt-get install libguestfs-tools libguestfs0 qemu-system-x86
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 qemu-system-x86 : Depends: libxen-4.4 (>= 4.4.1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
~ $ sudo apt-get install libguestfs-tools libguestfs0 qemu-system-x86 libxen-4.4
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  crda cups cups-browsed cups-client cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-pk-helper cups-ppdc cups-server-common debugedit dns-root-data
  dnsmasq-base gir1.2-notify-0.7 gir1.2-packagekitglib-1.0 iputils-arping iw libcupscgi1 libcupsmime1 libcupsppdc1 libfontembed1 libgutenprint2 libndp0 libnetfilter-conntrack3
  libnm-glib-vpn1 libnm-gtk-common libnm-gtk0 libqpdf13 libqrexec-utils2 libqubes-rpc-filecopy2 libqubesdb librpm3 librpmbuild3 librpmio3 librpmsign1 libsqlite0 libteamdctl0
  mobile-broadband-provider-info network-manager network-manager-gnome printer-driver-gutenprint python-cups python-cupshelpers python-iniparse python-libxml2 python-rpm
  python-smbc python-sqlite python-sqlitecachec python-urlgrabber python-xdg python-xpyb qpdf rpm rpm-common rpm2cpio ssl-cert system-config-printer system-config-printer-udev
  tinyproxy wireless-regdb xenstore-utils xinit yum yum-utils
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  attr augeas-lenses btrfs-tools extlinux grub-common grub2-common hfsplus ipxe-qemu libaugeas0 libbrlapi0.6 libconfig9 libfdt1 libguestfs-hfsplus libguestfs-perl
  libguestfs-reiserfs libguestfs-xfs libhfsp0 libhivex0 libnuma1 libspice-server1 libstring-shellquote-perl libsys-virt-perl libusbredirparser1 libvdeplug2 libvirt0
  libwin-hivex-perl libxml-xpath-perl lsscsi lzop mdadm mtools os-prober qemu-system-common reiserfsprogs scrub seabios supermin syslinux syslinux-common xfsprogs zerofree
Suggested packages:
  augeas-doc multiboot-doc grub-emu xorriso desktop-base augeas-tools libguestfs-gfs2 libguestfs-jfs libguestfs-nilfs libguestfs-rescue libguestfs-rsync libguestfs-zfs floppyd
  samba vde2 sgabios ovmf xfsdump quota
The following packages will be REMOVED:
  libvchan-xen libxen-4.6 qubes-core-agent qubes-gui-agent qubes-utils qubesdb qubesdb-vm xen-utils-common
The following NEW packages will be installed:
  attr augeas-lenses btrfs-tools extlinux grub-common grub2-common hfsplus ipxe-qemu libaugeas0 libbrlapi0.6 libconfig9 libfdt1 libguestfs-hfsplus libguestfs-perl
  libguestfs-reiserfs libguestfs-tools libguestfs-xfs libguestfs0 libhfsp0 libhivex0 libnuma1 libspice-server1 libstring-shellquote-perl libsys-virt-perl libusbredirparser1
  libvdeplug2 libvirt0 libwin-hivex-perl libxen-4.4 libxml-xpath-perl lsscsi lzop mdadm mtools os-prober qemu-system-common qemu-system-x86 reiserfsprogs scrub seabios supermin
  syslinux syslinux-common xfsprogs zerofree
0 upgraded, 45 newly installed, 8 to remove and 1 not upgraded.
Need to get 24.0 MB of archives.
After this operation, 77.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] ^C~ $ 
~ $
~ $ sudo apt-get install libxen-4.4
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  crda cups cups-browsed cups-client cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-pk-helper cups-ppdc cups-server-common debugedit dns-root-data
  dnsmasq-base gir1.2-notify-0.7 gir1.2-packagekitglib-1.0 iputils-arping iw libcupscgi1 libcupsmime1 libcupsppdc1 libfontembed1 libgutenprint2 libndp0 libnetfilter-conntrack3
  libnm-glib-vpn1 libnm-gtk-common libnm-gtk0 libqpdf13 libqrexec-utils2 libqubes-rpc-filecopy2 libqubesdb librpm3 librpmbuild3 librpmio3 librpmsign1 libsqlite0 libteamdctl0
  mobile-broadband-provider-info network-manager network-manager-gnome printer-driver-gutenprint python-cups python-cupshelpers python-iniparse python-libxml2 python-rpm
  python-smbc python-sqlite python-sqlitecachec python-urlgrabber python-xdg python-xpyb qpdf rpm rpm-common rpm2cpio ssl-cert system-config-printer system-config-printer-udev
  tinyproxy wireless-regdb xenstore-utils xinit yum yum-utils
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  libvchan-xen libxen-4.6 qubes-core-agent qubes-gui-agent qubes-utils qubesdb qubesdb-vm xen-utils-common
The following NEW packages will be installed:
  libxen-4.4
0 upgraded, 1 newly installed, 8 to remove and 1 not upgraded.
Need to get 297 kB of archives.
After this operation, 3,814 kB disk space will be freed.
Do you want to continue? [Y/n] ^C~ $ 
~ 

Steps to reproduce the behavior:

sudo apt-get install libguestfs-tools

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek May 7, 2016

Member

QubesOS/qubes-vmm-xen@790a879

debian: prevent simultaneus installation of libxen-4.4 and libxen-4.6

While the package can be made to work that way, it isn't worth the
effort in Qubes VMs. For example libxenvchan have the same ABI for both
4.4 and 4.6, so would need a separate subpackage (to be installed only
once).

So I guess you say "it isn't worth the effort in Qubes VMs" is not true ;)

Member

marmarek commented May 7, 2016

QubesOS/qubes-vmm-xen@790a879

debian: prevent simultaneus installation of libxen-4.4 and libxen-4.6

While the package can be made to work that way, it isn't worth the
effort in Qubes VMs. For example libxenvchan have the same ABI for both
4.4 and 4.6, so would need a separate subpackage (to be installed only
once).

So I guess you say "it isn't worth the effort in Qubes VMs" is not true ;)

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Aug 8, 2016

Member

Probably good idea to do it during switch to xen 4.7 for Qubes 4.0. Debian package must be updated for it anyway.

Member

marmarek commented Aug 8, 2016

Probably good idea to do it during switch to xen 4.7 for Qubes 4.0. Debian package must be updated for it anyway.

@marmarek marmarek added this to the Release 4.0 milestone Aug 8, 2016

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Aug 8, 2016

Member

@unman do you want to take care of it?

Member

marmarek commented Aug 8, 2016

@unman do you want to take care of it?

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Sep 7, 2016

Member

The task here is to properly package each of xen library into separate subpackage. As recommended by Debian policy:

Shared libraries are normally split into several binary packages. The SONAME symlink is installed by the runtime shared library package, and the bare .so symlink is installed in the development package since it's only used when linking binaries or shared libraries.

The run-time shared library must be placed in a package whose name changes whenever the SONAME of the shared library changes. This allows several versions of the shared library to be installed at the same time, allowing installation of the new version of the shared library without immediately breaking binaries that depend on the old version. Normally, the run-time shared library and its SONAME symlink should be placed in a package named librarynamesoversion, where soversion is the version number in the SONAME of the shared library.

Xen 4.7 Debian build is currently broken, exactly because of changed soversions, so it seems logical to split the package while fixing this.

Member

marmarek commented Sep 7, 2016

The task here is to properly package each of xen library into separate subpackage. As recommended by Debian policy:

Shared libraries are normally split into several binary packages. The SONAME symlink is installed by the runtime shared library package, and the bare .so symlink is installed in the development package since it's only used when linking binaries or shared libraries.

The run-time shared library must be placed in a package whose name changes whenever the SONAME of the shared library changes. This allows several versions of the shared library to be installed at the same time, allowing installation of the new version of the shared library without immediately breaking binaries that depend on the old version. Normally, the run-time shared library and its SONAME symlink should be placed in a package named librarynamesoversion, where soversion is the version number in the SONAME of the shared library.

Xen 4.7 Debian build is currently broken, exactly because of changed soversions, so it seems logical to split the package while fixing this.

@andrewdavidwong andrewdavidwong added task and removed bug labels Sep 8, 2016

@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Sep 25, 2016

Member

Some work has been done here: https://anonscm.debian.org/cgit/users/holger/xen.git/
Especially here: https://anonscm.debian.org/cgit/users/holger/xen.git/commit/?id=0fdf47cf865a855d309cc949af7b372386011e07

I think it could be easily integrated into our package.
Or, the other way around: make our package synced with Debian one. Warning, Debian package is based on just git checkout of xen repository, not full xen release tarball (which is composed from multiple repositories).

Member

marmarek commented Sep 25, 2016

Some work has been done here: https://anonscm.debian.org/cgit/users/holger/xen.git/
Especially here: https://anonscm.debian.org/cgit/users/holger/xen.git/commit/?id=0fdf47cf865a855d309cc949af7b372386011e07

I think it could be easily integrated into our package.
Or, the other way around: make our package synced with Debian one. Warning, Debian package is based on just git checkout of xen repository, not full xen release tarball (which is composed from multiple repositories).

marmarek added a commit to marmarek/old-qubes-vmm-xen that referenced this issue Oct 27, 2016

debian: reorganize libraries packaging for Xen 4.7
Xen 4.7 brings few new libraries. Now there are two types of libraries:
 - versioned with Xen version
 - intended to have stable API and ABI (versioned as "1.0")

Package them into separate debs, so different versions of the first type
could could be installed simultaneously (for applications linked with
particular version).
With Xen 4.7, libxenvchan migrated to the first type (previously was
versioned as "1.0"), which makes "Conflicts: libxen-4.4" not needed
anymore.

Fixes QubesOS/qubes-issues#1974
@marmarek

This comment has been minimized.

Show comment
Hide comment
@marmarek

marmarek Oct 27, 2016

Member

Done in xen-4.7 branch.

Member

marmarek commented Oct 27, 2016

Done in xen-4.7 branch.

@marmarek marmarek closed this Oct 27, 2016

@qubesos-bot qubesos-bot referenced this issue in QubesOS/updates-status Apr 2, 2017

Closed

vmm-xen v4.8.0-2 (r4.0) #23

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment