MusicPlayerPlus icon indicating copy to clipboard operation
MusicPlayerPlus copied to clipboard

[BUG] Arch package's included beets man pages conflict with the official beets package if said package is already installed

Open MadeOfMagicAndWires opened this issue 8 months ago • 4 comments

Describe the bug When trying to install the latest musicplayerplus package (either from the AUR the binary package from Releases) with the beets package installed, then pacman will fail with a conflicting files error for /usr/share/man/man1/beet.1.gz and /usr/share/man/man5/beetsconfig.5.gz as those files are already provided by the beets package.

There are a few ways to fix this:

  • Adding beets to the conflicts and provides array in the PKGBUILD file;
  • refraining from cp'ing the beet man files in the package() function of the PKGBUILD
  • or probably the cleanest solution: just adding beets as a dependency for the package (and removing the beet man pages from package()) .

All in all, I'm pretty sure the beets man pages at least are redundant regardless. From a quick look mppinit seems to install beets the pip package includes man pages itself.

Either way, installing packages through the distro's respective package manager seems preferable, or just installing leaving any dependencies up to the user.
Doing it that way is a lot more transparent to the user, and avoids or warns about such conflict issues. (I noticed that one of the packages that does get installed natively is pulseaudio for example, when most people have switched to pipewire-pulse as a drop-in replacement; which also conflicts).

That said, I'll leave the solution up to you, as I recognize that it's a lot of work to redo all of that.

To Reproduce Steps to reproduce the behavior:

  1. install beets package through pacman
  2. Download Arch package from Releases
  3. Try to install musicplayerplus package

Expected behavior the package should either trigger a conflicting packages warning by including beets in the conflicts array of the PKGBUILD, or resolve the conflicting files in some way.

Screenshots/Logs

% sudo pacman -U ~/Downloads/musicplayerplus-v3.0.1r3-1-any.pkg.tar.zst
loading packages...
resolving dependencies...
looking for conflicting packages...

Package (1)      New Version  Net Change

musicplayerplus  v3.0.1r3-1    32.24 MiB

Total Installed Size:  32.24 MiB

:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring                     [###################] 100%
(1/1) checking package integrity                   [###################] 100%
(1/1) loading package files                        [###################] 100%
(1/1) checking for file conflicts                  [###################] 100%
error: failed to commit transaction (conflicting files)
musicplayerplus: /usr/share/man/man1/beet.1.gz exists in filesystem (owned by beets)
musicplayerplus: /usr/share/man/man5/beetsconfig.5.gz exists in filesystem (owned by beets)
Errors occurred, no packages were upgraded.

Desktop (please complete the following information):

  • OS: Arch Linux
  • Version: n/a
  • Terminal: any

MadeOfMagicAndWires avatar Oct 30 '23 08:10 MadeOfMagicAndWires

@MadeOfMagicAndWires thanks for bringing this to my attention. I've updated the AUR with a revised PKGBUILD which does not copy in the beets man pages. This is not a very satisfactory resolution but hopefully will allow the package to install cleanly. Unfortunately, I got a job and will have to make time to address this in a more appropriate manner.

I agree with your suggestion to make beets a dependency but this will require changes to mppinit.

Let me know if musicplayerplus v3.0.1r3-2 in the AUR resolves this issue for you. I will try to get time to implement a cleaner solution as soon as possible.

doctorfree avatar Oct 30 '23 16:10 doctorfree

Thanks for the quick reply and yeah, we've all got busy lives, so I have sympathy for not wanting to completely overhaul some project simply to hunt down a system-and-user specific error.

The package from the AUR now installs successfully thanks a lot. I haven't ran mppinit yet because I'm not sure it plays nicely with my existing mpd and beets setup, but just trying out installing beets with just https://github.com/doctorfree/MusicPlayerPlus/blob/0077683b9ae0c880156198ce98b9749ff7f08a75/bin/mppinit#L327 silently fails and provides an externally-managed-environment error when not piping output to /dev/null because of PEP 668. I think that is because I do not have my system set up for pip; but that is the Arch default. As it is, it might just fail quietly but, for Arch at least, it might mean the user has to install those dependencies manually. Most of the installed pip packages have system or AUR packages so that might not be too difficult if the user is given a warning (only some of the beets plugins and calliope-music are missing, might write some PKGBUILD files for them if I find the time).

The short-term fix to make the script work would be to add the --break-system-packages flag since it installs in a user environment, though that might have some unintended consequences with versioning. A different alternative would be setting up a virtual environment, or a pip replacement like pipx or pipenv. That's more extra work though.

Since those are different issues though, I'll leave it up to you on whether to close this issue.

Cheers

MadeOfMagicAndWires avatar Oct 30 '23 22:10 MadeOfMagicAndWires

Good suggestions. I think I will keep this issue open as I am not satisfied with the interim workaround.

Feel free to open additional issues if you wish. Thanks for your feedback, it really helps.

doctorfree avatar Oct 31 '23 00:10 doctorfree

No problem, I'll play around with it a bit and see if encounter any issues

MadeOfMagicAndWires avatar Oct 31 '23 02:10 MadeOfMagicAndWires