badaix / snapcast

Synchronous multiroom audio player
GNU General Public License v3.0
6.22k stars 455 forks source link

Missing dependencies, unable to install snapserver #1143

Closed iamhai closed 1 year ago

iamhai commented 1 year ago

Hello everyone,

I have 2 devices running armbian:

Welcome to Armbian 23.08.0-trunk Bookworm with Linux 6.1.36-ophub

pi@armbian:~$ sudo apt install "/home/pi/snapserver_0.27.0-1_armhf.deb"
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'snapserver:armhf' instead of '/home/pi/snapserver_0.27.0-1_armhf.deb'
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 snapserver:armhf : Depends: libasound2:armhf (>= 1.0.18) but it is not installable
                    Depends: libatomic1:armhf (>= 4.8) but it is not installable
                    Depends: libavahi-client3:armhf (>= 0.6.16) but it is not installable
                    Depends: libavahi-common3:armhf (>= 0.6.16) but it is not installable
                    Depends: libc6:armhf (>= 2.28) but it is not installable
                    Depends: libexpat1:armhf (>= 2.0.1) but it is not installable
                    Depends: libflac8:armhf (>= 1.3.0) but it is not installable
                    Depends: libgcc1:armhf (>= 1:3.5) but it is not installable
                    Depends: libogg0:armhf (>= 1.0rc3) but it is not installable
                    Depends: libopus0:armhf (>= 1.1) but it is not installable
                    Depends: libsoxr0:armhf (>= 0.1.0) but it is not installable
                    Depends: libstdc++6:armhf (>= 7) but it is not installable
                    Depends: libvorbis0a:armhf (>= 1.1.2) but it is not installable
                    Depends: libvorbisenc2:armhf (>= 1.1.2) but it is not installable
E: Unable to correct problems, you have held broken packages.
pi@armbian:~$ apt-cache madison libasound2
libasound2 | 1.2.6.1-1ubuntu1 | http://ports.ubuntu.com/ jammy/main arm64 Packages
pi@armbian:~$ apt-cache madison libatomic1
libatomic1 | 12.1.0-2ubuntu1~22.04 | http://ports.ubuntu.com/ jammy-security/main arm64 Packages
libatomic1 | 12.1.0-2ubuntu1~22.04 | http://ports.ubuntu.com/ jammy-updates/main arm64 Packages
libatomic1 | 12-20220319-1ubuntu1 | http://ports.ubuntu.com/ jammy/main arm64 Packages
pi@armbian:~$ apt-cache madison libavahi-client3
libavahi-client3 | 0.8-5ubuntu5.1 | http://ports.ubuntu.com/ jammy-security/main arm64 Packages
libavahi-client3 | 0.8-5ubuntu5.1 | http://ports.ubuntu.com/ jammy-updates/main arm64 Packages
libavahi-client3 | 0.8-5ubuntu5 | http://ports.ubuntu.com/ jammy/main arm64 Packages
pi@armbian:~$ apt-cache madison libc6
     libc6 | 2.35-0ubuntu3.1 | http://ports.ubuntu.com/ jammy-updates/main arm64 Packages
     libc6 | 2.35-0ubuntu3 | http://ports.ubuntu.com/ jammy/main arm64 Packages
pi@armbian:~$ apt-cache madison libstdc++6
libstdc++6 | 12.1.0-2ubuntu1~22.04 | http://ports.ubuntu.com/ jammy-security/main arm64 Packages
libstdc++6 | 12.1.0-2ubuntu1~22.04 | http://ports.ubuntu.com/ jammy-updates/main arm64 Packages
libstdc++6 | 12-20220319-1ubuntu1 | http://ports.ubuntu.com/ jammy/main arm64 Packages
pi@armbian:~$ apt-cache madison libvorbisenc2
libvorbisenc2 | 1.3.7-1build2 | http://ports.ubuntu.com/ jammy/main arm64 Packages

pi@armbian:~$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
kingosticks commented 1 year ago

(only it's arm64 and not armhf).

Those are different architectures. This project doesn't provide an arm64 binary release.

You can either build an arm64 package yourself, or setup multiarch to use the armhf binary on your arm64 system. See https://wiki.debian.org/Multiarch/HOWTO for a Debian version of this. it'll be very similar for Ubuntu

iamhai commented 1 year ago

Thanks for quick responding, but I think my issue is: installing snapserver require depedencies armhf (which I'm not able to download) while the installed packages are arm64. Please check the log.

kingosticks commented 1 year ago

so what's the output of uname -a on your "Android TV box" ?

iamhai commented 1 year ago

Here is the out put: Linux armbian 6.1.36-ophub #1 SMP Fri Jun 30 11:58:19 EDT 2023 aarch64 GNU/Linux

kingosticks commented 1 year ago

So it's exactly as I said in my first reply, You have an aarch64 (also known as arm64) system. This system utilises packages built for arm64 and these are the ones you have available to install, as per your log.

But you are trying to install an armhf package. You are trying to install a binary package that is not compatible with the other software on your system. You cannot do that unless you go down the multiarch route. I hope this makes more sense this time.

iamhai commented 1 year ago

I've got it now, I'll try to build an arm64 package.

iamhai commented 1 year ago

Hi kingosticks, I'm trying to build arm64 package, following this tutorial https://www.linuxfordevices.com/tutorials/debian/build-packages-from-source to the build step I got this error: pi@armbian:~/snapcast-0.27.0$ sudo dpkg-buildpackage -b -uc -us dpkg-buildpackage: error: cannot open file debian/changelog: No such file or directory pi@armbian:~/snapcast-0.27.0$ sudo debuild -b -uc -us debuild: fatal error at line 679: cannot find readable debian/changelog anywhere! Are you in the source code tree? list of directory: pi@armbian:~/snapcast-0.27.0$ ls changelog.md cmake common control LICENSE README.md test client CMakeLists.txt CONTRIBUTING.md doc Makefile server TODO.md pi@armbian:~/snapcast-0.27.0$ ls -a . .clang-format cmake CONTRIBUTING.md doc LICENSE server .. .clang-tidy CMakeLists.txt control .github Makefile test changelog.md client common .devcontainer .gitignore README.md TODO.md Can you please give instruction for this newbie issue. Thank you.

badaix commented 1 year ago

I'm about to remove the legacy makefiles and to update the readme. I will also add a section on how to build debian packages. Will try to do this tomorrow.

Btw: there are official debian packages available. Just try to apt-get install snapclient

iamhai commented 1 year ago

After trying: dpkg --add-architecture armhf , now when try apt-get install snapclient I got this:

pi@armbian:~$ sudo apt-get install snapclient
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 snapserver:armhf : Depends: libasound2:armhf (>= 1.0.18) but it is not installable
                    Depends: libatomic1:armhf (>= 4.8) but it is not installable
                    Depends: libavahi-client3:armhf (>= 0.6.16) but it is not installable
                    Depends: libavahi-common3:armhf (>= 0.6.16) but it is not installable
                    Depends: libc6:armhf (>= 2.28) but it is not installable
                    Depends: libexpat1:armhf (>= 2.0.1) but it is not installable
                    Depends: libflac8:armhf (>= 1.3.0) but it is not installable
                    Depends: libgcc1:armhf (>= 1:3.5) but it is not installable
                    Depends: libogg0:armhf (>= 1.0rc3) but it is not installable
                    Depends: libopus0:armhf (>= 1.1) but it is not installable
                    Depends: libsoxr0:armhf (>= 0.1.0) but it is not installable
                    Depends: libstdc++6:armhf (>= 7) but it is not installable
                    Depends: libvorbis0a:armhf (>= 1.1.2) but it is not installable
                    Depends: libvorbisenc2:armhf (>= 1.1.2) but it is not installable
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
pi@armbian:~$ sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following packages will be REMOVED:
  snapserver:armhf
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
1 not fully installed or removed.
After this operation, 4,179 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 59506 files and directories currently installed.)
Removing snapserver:armhf (0.27.0-1) ...
Processing triggers for man-db (2.10.2-1) ...

so I'll wait for you udpate :)

badaix commented 1 year ago

ok, please try to follow the updated guide:

https://github.com/badaix/snapcast/blob/develop/doc/build.md

You need to install the dependencies for debian and continue with Build packages / debian packages

iamhai commented 1 year ago

After following your instruction until here: https://github.com/badaix/snapcast/blob/develop/doc/build.md#debian-packages

pi@armbian:~/snapcast$ fakeroot make -f debian/rules CMAKEFLAGS="-DBOOST_ROOT="/home/pi/boost_1_82_0/" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_WITH_PULSE=OFF" binary

I got this error:

[ 40%] Building CXX object server/CMakeFiles/snapserver.dir/server.cpp.o
cd /home/pi/snapcast/build/server && /usr/bin/c++ -DBOOST_ASIO_NO_TS_EXECUTORS -DBOOST_ERROR_CODE_HEADER_ONLY -DHAS_ALSA -DHAS_AVAHI -DHAS_DAEMON -DHAS_EXPAT -DHAS_FLAC -DHAS_OGG -DHAS_OPUS -DHAS_SOXR -DHAS_TREMOR -DHAS_VORBIS -DHAS_VORBIS_ENC -DVERSION=\"0.27.0\" -I/home/pi/snapcast -I/home/pi/snapcast/include -I/home/pi/boost_1_82_0 -I/home/pi/snapcast/server -I/usr/include/opus -O3 -DNDEBUG -Wall -Wextra -pedantic -Wno-unused-function -MD -MT server/CMakeFiles/snapserver.dir/server.cpp.o -MF CMakeFiles/snapserver.dir/server.cpp.o.d -o CMakeFiles/snapserver.dir/server.cpp.o -c /home/pi/snapcast/server/server.cpp
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[3]: *** [server/CMakeFiles/snapserver.dir/build.make:149: server/CMakeFiles/snapserver.dir/snapserver.cpp.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[3]: Leaving directory '/home/pi/snapcast/build'
make[2]: *** [CMakeFiles/Makefile2:190: server/CMakeFiles/snapserver.dir/all] Error 2
make[2]: Leaving directory '/home/pi/snapcast/build'
make[1]: *** [Makefile:139: all] Error 2
make[1]: Leaving directory '/home/pi/snapcast/build'
dh_auto_build: error: cd build && make -j3 VERBOSE=1 returned exit code 2
make: *** [debian/rules:11: binary] Error 2
pi@armbian:~/snapcast$
badaix commented 1 year ago

Look like you're running out of resources and the compiler is getting killed by the OOM killer. You can try to set parallel=1 in line 6 in debian/rules

iamhai commented 1 year ago

The task has been completed successfully. Thank you very much. Please allow me to close this issue.