Score:1

How do I install musikcube in 20.04 without having dependency troubles with libavcodec-extra58?

in flag

I'm trying to install musikcube on focal. It complains about not being able to install libavcodec-extra, which in turn complains about libavcodec-extra58.

When I try to manually install libavcodec-extra58, I get a large list of things to remove, which can't be right:

The following packages were automatically installed and are no longer required:
  glib-networking:i386 gstreamer1.0-plugins-base:i386 gstreamer1.0-plugins-good:i386 gstreamer1.0-x:i386 libaa1:i386 libaom0:i386 libasn1-8-heimdal:i386 libavahi-client3:i386
  libavahi-common-data:i386 libavahi-common3:i386 libavc1394-0:i386 libavutil56:i386 libbrotli1:i386 libcaca0:i386 libcairo-gobject2:i386 libcairo2:i386 libcap2:i386
  libcapi20-3:i386 libcdparanoia0:i386 libcodec2-0.9:i386 libcups2:i386 libcurl3-gnutls:i386 libdatrie1:i386 libdv4:i386 libexif12:i386 libfontconfig1:i386 libfreetype6:i386
  libfribidi0:i386 libgd3:i386 libgdbm-compat4:i386 libgdbm6:i386 libgdk-pixbuf2.0-0:i386 libglib2.0-0:i386 libglu1-mesa:i386 libgmp10:i386 libgnutls30:i386 libgomp1:i386
  libgphoto2-6:i386 libgphoto2-port12:i386 libgraphite2-3:i386 libgsm1:i386 libgssapi-krb5-2:i386 libgssapi3-heimdal:i386 libgstreamer-plugins-base1.0-0:i386
  libgstreamer-plugins-good1.0-0:i386 libgstreamer1.0-0:i386 libgudev-1.0-0:i386 libharfbuzz0b:i386 libhcrypto4-heimdal:i386 libheimbase1-heimdal:i386
  libheimntlm0-heimdal:i386 libhogweed5:i386 libhx509-5-heimdal:i386 libicu66:i386 libiec61883-0:i386 libieee1284-3:i386 libjbig0:i386 libjpeg-turbo8:i386 libjpeg8:i386
  libk5crypto3:i386 libkeyutils1:i386 libkrb5-26-heimdal:i386 libkrb5-3:i386 libkrb5support0:i386 liblcms2-2:i386 libldap-2.4-2:i386 libltdl7:i386 libmp3lame0:i386
  libmpg123-0:i386 libmysqlclient21:i386 libnettle7:i386 libnghttp2-14:i386 libnuma1:i386 libodbc1:i386 libopenal1:i386 libopenjp2-7:i386 libopus0:i386 liborc-0.4-0:i386
  libosmesa6:i386 libp11-kit0:i386 libpango-1.0-0:i386 libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpcap0.8:i386 libpci3:i386 libperl5.30:i386 libpixman-1-0:i386
  libpng16-16:i386 libproxy1v5:i386 libpsl5:i386 libraw1394-11:i386 libroken18-heimdal:i386 librsvg2-2:i386 librsvg2-common:i386 librtmp1:i386 libsane:i386 libsasl2-2:i386
  libsasl2-modules:i386 libsasl2-modules-db:i386 libsdl2-2.0-0:i386 libshine3:i386 libshout3:i386 libslang2:i386 libsnappy1v5:i386 libsndio7.0:i386 libsnmp35:i386
  libsoup2.4-1:i386 libsoxr0:i386 libspeex1:i386 libsqlite3-0:i386 libssh-4:i386 libssl1.1:i386 libstb0:i386 libswresample3:i386 libtag1v5:i386 libtag1v5-vanilla:i386
  libtasn1-6:i386 libthai0:i386 libtheora0:i386 libtiff5:i386 libtwolame0:i386 libusb-1.0-0:i386 libv4l-0:i386 libv4lconvert0:i386 libva-drm2:i386 libva-x11-2:i386
  libvdpau1:i386 libvisual-0.4-0:i386 libvkd3d1:i386 libvpx6:i386 libwavpack1:i386 libwayland-cursor0:i386 libwayland-egl1:i386 libwebp6:i386 libwebpmux3:i386
  libwind0-heimdal:i386 libx264-155:i386 libx265-179:i386 libxcb-render0:i386 libxcomposite1:i386 libxcursor1:i386 libxdamage1:i386 libxi6:i386 libxkbcommon0:i386
  libxml2:i386 libxpm4:i386 libxrandr2:i386 libxrender1:i386 libxslt1.1:i386 libxv1:i386 libxvidcore4:i386 libzvbi0:i386 mesa-vdpau-drivers:i386 ocl-icd-libopencl1:i386
  vdpau-driver-all:i386
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libvo-amrwbenc0
The following packages will be REMOVED
  libavcodec58 libavcodec58:i386 libfaudio0:i386 libwine:i386 wine32:i386
The following NEW packages will be installed
  libavcodec-extra58 libvo-amrwbenc0
0 to upgrade, 2 to newly install, 5 to remove and 25 not to upgrade.

Note that if I run apt autoremove normally, there is nothing to remove - the large list of autoremoveable packages is a direct result of running this command. What is further surprising about this output is that it wants to remove libavcodec58, despite the fact that libavcodec-extra58 explicitly provides libavcodec58.

apt show libavcodec-extra58 gives:

Package: libavcodec-extra58
Version: 7:4.2.4-1ubuntu0.1
Priority: optional
Section: universe/libs
Source: ffmpeg
Origin: Ubuntu
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Debian Multimedia Maintainers <[email protected]>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 14.6 MB
Provides: libavcodec58 (= 7:4.2.4-1ubuntu0.1)
Depends: libaom0 (>= 1.0.0), libaribb24-0 (>= 1.0.3), libavutil56 (= 7:4.2.4-1ubuntu0.1), libc6 (>= 2.29), libcairo2 (>= 1.2.4), libcodec2-0.9, libglib2.0-0 (>= 2.12.0), libgsm1 (>= 1.0.18), liblzma5 (>= 5.1.1alpha+20120614), libmp3lame0 (>= 3.100), libopencore-amrnb0 (>= 0.1.5), libopencore-amrwb0 (>= 0.1.5), libopenjp2-7 (>= 2.0.0), libopus0 (>= 1.1), librsvg2-2 (>= 2.14.4), libshine3 (>= 3.1.0), libsnappy1v5 (>= 1.1.8), libspeex1 (>= 1.2~beta3-1), libswresample3 (= 7:4.2.4-1ubuntu0.1), libtheora0 (>= 1.0), libtwolame0 (>= 0.3.10), libva2 (>= 2.2.0), libvo-amrwbenc0 (>= 0.1.3), libvorbis0a (>= 1.1.2), libvorbisenc2 (>= 1.1.2), libvpx6 (>= 1.6.0), libwavpack1 (>= 4.40.0), libwebp6 (>= 0.5.1), libwebpmux3 (>= 0.6.1-2), libx264-155, libx265-179 (>= 3.2), libxvidcore4 (>= 1.2.2), libzvbi0 (>= 0.2.35), zlib1g (>= 1:1.2.0)
Conflicts: libavcodec58
Homepage: https://ffmpeg.org/
Download-Size: 4,880 kB
APT-Sources: http://gb.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages
Description: FFmpeg library with additional de/encoders for audio/video codecs
 FFmpeg is the leading multimedia framework, able to decode, encode, transcode,
 mux, demux, stream, filter and play pretty much anything that humans and
 machines have created. It supports the most obscure ancient formats up to the
 cutting edge.
 .
 This library provides a generic encoding/decoding framework and
 contains multiple decoders and encoders for audio, video and subtitle streams,
 and several bitstream filters.
 .
 The shared architecture provides various services ranging from bit stream I/O
 to DSP optimizations, and makes it suitable for implementing robust and fast
 codecs as well as for experimentation.
 .
 This package replaces the libavcodec58 package and contains the
 following additional codecs:
 .
  * ARIB STD-B24 Captions (Subtitle Decoder)
  * OpenCORE Adaptive Multi-Rate (AMR) Narrow-Band (Encoder/Decoder)
  * OpenCORE Adaptive Multi-Rate (AMR) Wide-Band (Decoder)
  * Android VisualOn Adaptive Multi-Rate (AMR) Wide-Band (Encoder)
 .
 Because this package links against libraries that are licensed under
 Apache License 2.0, the resulting binaries are distributed under the
 GPL version 3 or later.

Something is broken here. The question is, what is broken? And, is it on my end (and thus fixable), or is this the fault of the package maintainers?

Score:1
my flag

If you're encountering problems while installing from apt, try compiling it manually.

  1. Install the dependencies:

    sudo apt-get install build-essential git clang cmake libboost-thread1.67-dev libboost-system1.67-dev libboost-filesystem1.67-dev libboost-date-time1.67-dev libboost-atomic1.67-dev libboost-chrono1.67-dev libogg-dev libvorbis-dev libavutil-dev libavformat-dev libswresample-dev libncursesw5-dev libasound2-dev libpulse-dev pulseaudio libmicrohttpd-dev libmp3lame-dev libcurl4-openssl-dev libev-dev libssl-dev libtag1-dev libopenmpt-dev
    
  2. Clone the repository:

    cd $HOME/Downloads
    git clone https://github.com/clangen/musikcube.git -b 0.96.10 --recursive
    
  3. Build the package:

    cd musikcube
    cmake -G "Unix Makefiles" . && make -j$(nproc) && sudo make install
    musikcube
    
  4. Run force install:

    sudo apt -f install
    

Uninstallation is possible by:

cd $HOME/Downloads/musikcube && sudo make uninstall

You can always update it using:

cd $HOME/Downloads/musikcube 
make clean 
git pull 
make 
sudo make install
Score:1
zw flag

All this happens because of dependencies. Musikcube developer is a third-party who may not respect/know the dependency tree of Ubuntu desktop packages.

So to avoid Wine uninstallation you have to use Snap package with version 0.96.3 which is installable as simple as

snap install musikcube

or compile from source using other answer.

Note: Snap version will not be updated because of developer's decision.

jumbot avatar
in flag
I didn't say I was using `dpkg -i`. In fact, I've been using using `apt install` in exactly the way you specify in your answer.
jumbot avatar
in flag
as below, re: `apt autoremove` - if I run autoremove normally, it tells me nothing needs to be removed. The large list is a direct effect of trying to install `libavcode-extra58`.
N0rbert avatar
zw flag
All this happens because of dependencies. You are an administrator of this system, not me.
jumbot avatar
in flag
Ok, thank you @N0rbert. In that case, can you suggest ways in which I might be able to troubleshoot dependencies?
N0rbert avatar
zw flag
They will be automagically satisfied, I do not see any problems. Just tested on fresh VM.
jumbot avatar
in flag
I don't think you're understanding my problem here - there are packages that will be removed if I go through with the command. Sure, `musikbox` will work, but `wine` might stop working, and other things might break if `faudio` disappears. I realise they're the i386 versions, so perhaps not actually needed on my 86_64x system, but I have no way of knowing if they're needed until I uninstall them and things break.
N0rbert avatar
zw flag
Oh, I understood, finally. Then Snap package would be a solution. It will be a way to save Wine.
Someone avatar
my flag
@N0rbert What about compiling from source?
N0rbert avatar
zw flag
I see, good idea @Someone.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.