Bug #21774
closedjammy/bookworm FUSE packages have incorrect FUSE dependency
Description
test-provision-ubuntu2204: #1 /console
09:30:37 2024-05-15T13:30:28.174537954Z crunch-run Using FUSE mount: Traceback (most recent call last): 09:30:37 2024-05-15T13:30:28.174537954Z crunch-run File "/usr/bin/arv-mount", line 6, in <module> 09:30:37 2024-05-15T13:30:28.174537954Z crunch-run import arvados_fuse.command 09:30:37 2024-05-15T13:30:28.174537954Z crunch-run File "/usr/lib/python3-arvados-fuse/lib/python3.10/site-packages/arvados_fuse/__init__.py", line 58, in <module> 09:30:37 2024-05-15T13:30:28.174537954Z crunch-run import llfuse 09:30:37 2024-05-15T13:30:28.174537954Z crunch-run ImportError: libfuse.so.2: cannot open shared object file: No such file or directory
This happens because the package declares it depends on fuse
but that now gets you libfuse.so.3
. We need to specify libfuse2
instead.
We have code in the package testing scripts to catch this, but we only run it in debug mode. That seems weird. I feel like we should always run it.
Related issues
Updated by Brett Smith 6 months ago
- Blocks Support #21664: Add test provision ubuntu 22.04 & make sure it passes added
Updated by Brett Smith 6 months ago
- Blocks Support #21663: Add test provision debian 12 & make sure it passes added
Updated by Brett Smith 6 months ago
- Subject changed from jammy/bookworm FUSE packages have correct FUSE dependency to jammy/bookworm FUSE packages have incorrect FUSE dependency
Updated by Brett Smith 6 months ago
Brett Smith wrote:
This happens because the package declares it depends on
fuse
but that now gets youlibfuse.so.3
. We need to specifylibfuse2
instead.
This doesn't seem to be right. It works in my manual testing, at least on Ubuntu 22.04. Need to dig further into what caused the failure.
Updated by Brett Smith 6 months ago
Okay, the problem is our dependency isn't specific enough. "fuse" is a virtual package that can be provided by fuse3. You can have that installed without libfuse2 installed, and in this case all the package dependencies will be satisfied but arv-mount won't work. Testing with the package-test-ubuntu2204 Docker image, here's a successful flow:
root@4f8d2a84ef02:/# dpkg -i /mnt/python3-arvados-fuse_2.8.0~dev20240510171531-1_amd64.deb [it installs but is missing dependencies] root@4f8d2a84ef02:/# apt --fix-broken install [...] The following additional packages will be installed: fuse libcurl3-gnutls libexpat1 libfuse2 libmpdec3 libpython3.10-minimal libpython3.10-stdlib media-types python3.10 python3.10-minimal Suggested packages: python3.10-venv python3.10-doc binutils binfmt-support The following NEW packages will be installed: fuse libcurl3-gnutls libexpat1 libfuse2 libmpdec3 libpython3.10-minimal libpython3.10-stdlib media-types python3.10 python3.10-minimal 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. 1 not fully installed or removed. [succeeds] root@4f8d2a84ef02:/# arv-mount --version /usr/bin/arv-mount 2.8.0.dev20240510171531
And here's a failed flow:
root@a7ba2c68c9d5:/# apt-get install -y fuse3 python3.10 libcurl3-gnutls [...] The following additional packages will be installed: libexpat1 libfuse3-3 libmpdec3 libpython3.10-minimal libpython3.10-stdlib media-types python3.10-minimal Suggested packages: python3.10-venv python3.10-doc binutils binfmt-support The following NEW packages will be installed: fuse3 libcurl3-gnutls libexpat1 libfuse3-3 libmpdec3 libpython3.10-minimal libpython3.10-stdlib media-types python3.10 python3.10-minimal 0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. [succeeds] root@a7ba2c68c9d5:/# dpkg -i /mnt/python3-arvados-fuse_2.8.0~dev20240510171531-1_amd64.deb Selecting previously unselected package python3-arvados-fuse. (Reading database ... 9125 files and directories currently installed.) Preparing to unpack .../python3-arvados-fuse_2.8.0~dev20240510171531-1_amd64.deb ... Unpacking python3-arvados-fuse (2.8.0~dev20240510171531-1) ... Setting up python3-arvados-fuse (2.8.0~dev20240510171531-1) ... root@a7ba2c68c9d5:/# arv-mount --version Traceback (most recent call last): File "/usr/bin/arv-mount", line 6, in <module> import arvados_fuse.command File "/usr/lib/python3-arvados-fuse/lib/python3.10/site-packages/arvados_fuse/__init__.py", line 58, in <module> import llfuse ImportError: libfuse.so.2: cannot open shared object file: No such file or directory
Updated by Brett Smith 6 months ago
21774-package-dependencies @ 9a68b3ef3bcfae2c8d064b573230870bfad1d19b - build-packages-multijob: #4196
TBH if this gets the test-provision jobs passing I will just merge it without review. At its core the bugfix is one word and "obvious."
Updated by Brett Smith 6 months ago
Brett Smith wrote:
We have code in the package testing scripts to catch this, but we only run it in debug mode. That seems weird. I feel like we should always run it.
This was not quite right. Made #21775 with the real issue.