MusicPlayerPlus
MusicPlayerPlus copied to clipboard
[BUG] Arch package's included beets man pages conflict with the official beets package if said package is already installed
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 theconflicts
andprovides
array in the PKGBUILD file; - refraining from
cp
'ing the beet man files in thepackage()
function of the PKGBUILD - or probably the cleanest solution: just adding
beets
as a dependency for the package (and removing the beet man pages frompackage()
) .
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:
- install
beets
package through pacman - Download Arch package from Releases
- 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 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.
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
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.
No problem, I'll play around with it a bit and see if encounter any issues