FS#30681 - Files moved from symlinked dir to another cause conflict on upgrade
Attached to Project:
Pacman
Opened by Marti (intgr) - Saturday, 14 July 2012, 23:08 GMT
Last edited by Allan McRae (Allan) - Friday, 14 December 2012, 02:47 GMT
Opened by Marti (intgr) - Saturday, 14 July 2012, 23:08 GMT
Last edited by Allan McRae (Allan) - Friday, 14 December 2012, 02:47 GMT
|
Details
Summary and Info:
When a package upgrade moves some file from one directory to another, where the directories are symlinks to the same place, then pacman thinks this upgrade has file conflicts. But actually there's no conflict -- the old file would disappear when uninstalling the earlier version. This is problematic for e.g. packages moving their files from /lib to /usr/lib. Case in point, openct: https://aur.archlinux.org/packages.php?ID=10155 Steps to Reproduce: ==== PKGBUILD v1 ==== pkgname=foo pkgver=1 pkgrel=1 arch=(any) build() { mkdir -p $pkgdir/lib touch $pkgdir/lib/foo } ==== PKGBUILD v2 ==== pkgname=foo pkgver=2 pkgrel=1 arch=(any) build() { mkdir -p $pkgdir/usr/lib touch $pkgdir/usr/lib/foo } ==== example ==== 1. Build and install foo v1 2. Build foo v2 3. Install breaks: # pacman -U foo-2-1-any.pkg.tar.gz Targets (1): foo-2-1 (1/1) checking for file conflicts [############################################################] 100% error: failed to commit transaction (conflicting files) foo: /usr/lib/foo exists in filesystem Errors occurred, no packages were upgraded. # pacman -Ql foo foo /lib/ foo /lib/foo |
This task depends upon
Closed by Allan McRae (Allan)
Friday, 14 December 2012, 02:47 GMT
Reason for closing: Fixed
Additional comments about closing: git commit 948f135a
Friday, 14 December 2012, 02:47 GMT
Reason for closing: Fixed
Additional comments about closing: git commit 948f135a
And it's a generic problem with directory symlinks, not specific to /lib. We'll have another round of problems soon as we start to migrate out of /bin.