error: Checkout unixODBC-2.3.7-5.fc31.i686: Hardlinking
Closed this issue · 15 comments
Host system details
$ cat /etc/yum.repos.d/winehq.repo
[WineHQ]
name=WineHQ packages
type=rpm-md
baseurl=https://dl.winehq.org/wine-builds/fedora/29
gpgcheck=1
gpgkey=https://dl.winehq.org/wine-builds/winehq.key
enabled=1
$ rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree://fedora:fedora/31/x86_64/silverblue
Version: 31.20191031.0 (2019-10-31T00:35:49Z)
BaseCommit: 1f77b254e196f244b20f14e0bac895ca151dd90dd18e0431e716ee1dbbe3f06e
GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
LocalPackages: rpmfusion-free-release-31-1.noarch
rpmfusion-nonfree-release-31-1.noarch
ostree://fedora:fedora/31/x86_64/silverblue
Version: 31.1.9 (2019-10-23T21:44:48Z)
BaseCommit: c4bf7a6339e6be97d0ca48a117a1a35c9c5e3256ae2db9e706b0147c5845fac4
GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
LocalPackages: rpmfusion-free-release-31-1.noarch
rpmfusion-nonfree-release-31-1.noarch
Expected vs actual behavior
$ rpm-ostree install winehq-staging
Checking out tree 1f77b25... done
Enabled rpm-md repositories: WineHQ updates-testing rpmfusion-free rpmfusion-nonfree updates rpmfusion-free-updates rpmfusion-nonfree-updates fedora
rpm-md repo 'WineHQ' (cached); generated: 2019-10-19T12:40:05Z
rpm-md repo 'updates-testing' (cached); generated: 2019-10-30T01:12:10Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2019-10-22T10:21:36Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2019-10-22T10:43:47Z
rpm-md repo 'updates' (cached); generated: 2019-10-30T00:50:26Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2019-10-28T08:13:05Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2019-10-28T08:34:09Z
rpm-md repo 'fedora' (cached); generated: 2019-10-25T01:48:20Z
Importing rpm-md... done
Resolving dependencies... done
Checking out packages... done
error: Checkout unixODBC-2.3.7-5.fc31.i686: Hardlinking 3d/796dd72b604bcabb0d6a8738cbc4b973f84a3bc5ce7e32dedd3ebf5ebd5b6b.file to dltest: File exists
Expected:
$ rpm-ostree install lutris
Checking out tree 1f77b25... done
Enabled rpm-md repositories: WineHQ updates-testing rpmfusion-free rpmfusion-nonfree updates rpmfusion-free-updates rpmfusion-nonfree-updates fedora
rpm-md repo 'WineHQ' (cached); generated: 2019-10-19T12:40:05Z
rpm-md repo 'updates-testing' (cached); generated: 2019-10-30T01:12:10Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2019-10-22T10:21:36Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2019-10-22T10:43:47Z
rpm-md repo 'updates' (cached); generated: 2019-10-30T00:50:26Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2019-10-28T08:13:05Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2019-10-28T08:34:09Z
rpm-md repo 'fedora' (cached); generated: 2019-10-25T01:48:20Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 2 packages (72.1 MB)
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 2.5 GB (pkgcache branches: 353)
Added:
SDL2-2.0.10-1.fc31.x86_64
cabextract-1.9-3.fc31.x86_64
elfutils-libelf-0.177-1.fc31.i686
expat-2.2.8-1.fc31.i686
glibc-2.30-5.fc31.i686
libFAudio-19.09-1.fc31.x86_64
libX11-1.6.8-3.fc31.i686
libX11-xcb-1.6.8-3.fc31.i686
libXau-1.0.9-2.fc31.i686
libXdamage-1.1.4-17.fc31.i686
libXext-1.3.4-2.fc31.i686
libXfixes-5.0.3-10.fc31.i686
libXxf86vm-1.1.4-12.fc31.i686
libdrm-2.4.99-2.fc31.i686
libedit-3.1-28.20190324cvs.fc31.i686
libffi-3.1-23.fc31.i686
libgcc-9.2.1-1.fc31.i686
libglvnd-1:1.1.1-5.fc31.i686
libglvnd-glx-1:1.1.1-5.fc31.i686
libpciaccess-0.15-2.fc31.i686
libselinux-2.9-5.fc31.i686
libsepol-2.9-2.fc31.i686
libstdc++-9.2.1-1.fc31.i686
libva-2.6.0-0.1.fc31.x86_64
libvkd3d-1.1-3.fc31.x86_64
libwayland-client-1.17.0-2.fc31.i686
libxcb-1.13.1-3.fc31.i686
libxshmfence-1.3-5.fc31.i686
llvm-libs-9.0.0-1.fc31.i686
lutris-0.5.3-1.fc31.x86_64
mesa-dri-drivers-19.2.0-1.fc31.i686
mesa-filesystem-19.2.0-1.fc31.i686
mesa-libGL-19.2.0-1.fc31.i686
mesa-libOSMesa-19.2.0-1.fc31.x86_64
mesa-libglapi-19.2.0-1.fc31.i686
mesa-vulkan-drivers-19.2.0-1.fc31.i686
ncurses-libs-6.1-12.20190803.fc31.i686
pcre2-10.33-14.fc31.i686
python3-evdev-1.1.2-4.fc31.x86_64
python3-pyyaml-5.1.2-1.fc31.x86_64
spirv-tools-libs-2019.4-0.1.20190715.gitaa9e8f5.fc31.x86_64
unixODBC-2.3.7-5.fc31.x86_64
vulkan-loader-1.1.114.0-1.fc31.i686
wine-core-4.18-1.fc31.x86_64
wine-filesystem-4.18-1.fc31.noarch
xorg-x11-server-Xephyr-1.20.5-7.fc31.x86_64
zlib-1.2.11-19.fc31.i686
Run "systemctl reboot" to start a reboot
Steps to reproduce it
Refer to section "Host system details"
Would you like to work on the issue?
I am fully aware of the issues for Fedora Silverblue not supporting 32bit libraries going forward, but this is serious roadblock for users who wish to use Wine to play games such as Battlefield 3-5 via Origin on Linux. Unsure if WineHQ will attempt to flatpak the winehq-staging package any time soon...
I would love to help contribute but do not know where to start or how... feel free to contact me directly for further information.
rpm-ostree itself does support multilib, so I suspect there's something going wrong in that logic.
(That said, I agree this would be cleaner overall as a flatpak. A quick search returned https://ramsdenj.com/2018/03/26/packaging-pathofexile-with-flatpak.html... might be worth a try?).
Thanks for the bug label! I'll follow up with the winepak and report back if needed!
Hello! Not sure if it makes sense to add here or to open another but, but there is the same problem with SilverBlue 32, w/o additional repostories. After a 'rpm-ostree install wine' the transaction fails with:
error: Checkout unixODBC-2.3.7-6.fc32.i686: Hardlinking 2f/9ea67391201811f709a7df399ad598139277a71e4abf00e41327e6d81005c2.file to dltest: File exists
On fedora Silverblue 33, installing 'libstdc++.i686' fails with error:
error: Checkout libstdc++-10.2.1-3.fc33.i686: Hardlinking ea/d62955df283cbfca2597e94bc41073a81c61ff118e48a2ff7afa81cb1020e9.file to __init__.cpython-39.opt-1.pyc: File exists
$ rpm-ostree --version
rpm-ostree:
Version: '2020.3'
Git: 108d19beadadcc7d2a05689d95d43ff48fa83546
Features:
- compose
- rust
I can now install libstdc++.i686, but, still, cannot install wine.
Fedora Silverblue 33 and this error still persists
Also present on Silverblue 34
[willdrick@vega ~]$ rpm-ostree --version
rpm-ostree:
Version: '2021.3'
Git: 577501cf749131d077a73926ac9acf930ed638d2
Features:
- compose
- rust
- fedora-integration
Found this while trying to layer gamehub, which pulls Wine
[willdrick@vega ~]$ rpm-ostree install gamehub
Checking out tree 7b99463... done
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-02-23T00:49:00Z
rpm-md repo 'updates' (cached); generated: 2021-06-07T01:11:58Z
rpm-md repo 'fedora' (cached); generated: 2021-04-23T10:47:57Z
Importing rpm-md... done
Resolving dependencies... done
Will download: 211 packages (351,3 MB)
Downloading from 'fedora'... done
Downloading from 'updates'... done
Importing packages... done
Checking out packages... done
error: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: El fichero ya existe
Before this entirely leaves my brain: I looked at this some time back and started hacking on a patch, but didn't push through.
The base issue IIRC is that handle_file_dispositions
in the core knows how to handle file colouring between packages in the base vs packages in the layer. But it doesn't correctly handle different file colouring coming from layered packages, as is the case here (we're layering both unixODBD.x86_64
and unixODBC.i686
). I.e. it tries to check out both of them instead of letting the x86_64 version of the file win (and skipping the i686 version), hence why we get the checkout error.
It has been working for me in SB32 and SB33, but it's now back in SB34. Is there a workaround (besides not using wine) available for this issue?
rpm-ostree[3515]: Txn Upgrade on /org/projectatomic/rpmostree1/fedora failed: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: File exists
Same for me when installing Lutris on SB34:
error: Checkout unixODBC-2.3.9-2.fc34.i686: Hardlinking b0/e4e85e6dd01f72e42b8200143a560c22dfaf80fcd5282edc6925f730777009.file to dltest: File exists
Most prominently (I presume) this affects Lutris since it introduced a weak-dependency to wine-core (32-bit).
https://bugzilla.redhat.com/show_bug.cgi?id=1974116
A workaround is to grab the latest version which came without the weak-dependency from Koji, which is: 0.5.8.3-4
As Lutris is steadily developed this workaround will get less and less feasible. @cgwalters Is this an issue that needs further discussion/concept work or is it ready to be implemented/getting fixed?
EDIT: Two options come to mind: Fixing the underlying Hardlinking issue or allow skipping weak-dependencies either manually or as an error handler for when the Hardlinking error is thrown. Skipping weak-dependecies will introduce further issues as the 32-bit runners of Lutris will fail if wine-core (32-bit) is not present, as that was the original reason the weak dep was introduced for the package.
The workaround is no longer applicable for SB35. The fc34 package is incompatible as it has a hard requirement to python3.9 and the .fc35 packages start after the introduction of the weak-dep to wine-core (32-bit): https://koji.fedoraproject.org/koji/search?terms=lutris*.fc35&type=build&match=glob
This problem has resurfaced in SB40.