Recent linux client update changes

Reply

Recent linux client update changes

meahtenoha
Spotify
Spotify

Hi there!

 

We have a quick update for Linux users. 

 

We recently updated the signing key for Linux client upgrades. Linux users on recent version shouldn't notice anything--but users on older versions will need to manually add the new key.

 
Adding the key is as easy as performing step 1 described at https://www.spotify.com/se/download/linux/.
 

At that link you can find a build of Spotify for Linux. We are running this ourselves and we will try to make sure it keeps pace with its Mac and Windows siblings. However, this version is unsupported. You can tell us what you think and ask other users for help at The Spotify Community.

 

Spotify for Linux is released as a Debian package. Our aim is that it should work with the latest Long Term Support release of Ubuntu, but we will try to make it work for other releases of Ubuntu and Debian as well.

57 Replies

DanielE-D
Casual Listener

Spotify is available in 16.04 as a snap. Look in the Ubuntu Software application.

JSJB
Music Fan

"Spotify is available in 16.04 as a snap. Look in the Ubuntu Software application."

 

The problem is only the 64 bit version with libcurl4 is available as a snap. The 32 bit (i386 architecture) is not.

 

I got around this by creating my own spotify-client debian package, which combines the spotify-client from the distribution, the libcurl3 shared library and a script that prepends that libcurl3 to LD_LIBRARY_PATH before starting up spotify. 

 

That works perfectly  and no longer depends on spotify recompiling with libcurl4:

 

=> apt-cache policy spotify-client
spotify-client:
  Installed: 1:1.0.72.117.g6bd7cc73-35-js
  Candidate: 1:1.0.72.117.g6bd7cc73-35-js
  Version table:
 *** 1:1.0.72.117.g6bd7cc73-35-js 400
        400 copy:/usr3/Installs/DEB ./ Packages
        100 /var/lib/dpkg/status
     1:1.0.72.117.g6bd7cc73-35 500
        500 http://repository.spotify.com stable/non-free i386 Packages
        500 http://repository.spotify.com testing/non-free i386 Packages

tokkopako
Regular

Could you elaborate how to do this or maybe provide the package? I'm currently trying to get spotify working on i386 machine.

JSJB
Music Fan

@tokkopako wrote:

Could you elaborate how to do this or maybe provide the package? I'm currently trying to get spotify working on i386 machine.


Not sure exactly what you're referring to, but if it's regarding my post from

 JSJB Regular ‎2018-07-22 11:41 PM  to create a spotify package independent of libcurl3 package:

1. create a tmp directory named spotify client

2.  ar xvf  <orig spotify-client package>    # will create subdirs DEBIAN and usr

3. extract contents of orig libcurl3 package to:

spotify-client => /bin/ls usr/lib/i386-linux-gnu/spotify/
libcurl.so.3 libcurl.so.4 libcurl.so.4.5.0

4.  create the script spotify.sh in usr/share/spotify/spotify.sh

#!/bin/bash -x
export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/spotify
exec /usr/share/spotify/spotify

[/usr/bin/spotify will be a symlink to this script]

5. edit DEBIAN/control with a new version for your spotify-client

6. run  debuild to build your new spotify-client debian package, which will now include a private copy of the libcurl3 library and a script that makes spotify use that instead of libcurl4.

 

Further details on creating your own debian package:

https://debian-administration.org/article/336/Rolling_your_own_Debian_packages_part_1

tokkopako
Regular
Thanks for the instructions though I used dpkg-deb to extract and build the packages as I was more familiar with it. I still faced a problem: Despite setting the LD_LIBRARY_PATH Spotify still tries to seek CURL_OPENSSL_3 from libcurl.so.4 in the normal library path. Any idea how to get around it?

JSJB
Music Fan
export LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/spotify

 


@tokkopako wrote:
... Despite setting the LD_LIBRARY_PATH Spotify still tries to seek CURL_OPENSSL_3 from libcurl.so.4 in the normal library path. Any idea how to get around it?

Did you export LD_LIBRARY_PATH, as above, and set it to just that one dir?

I didn't have any problem with this. Perhaps there's another setting to find the shared libraries that I'm not using in my system but maybe yours is.

tokkopako
Regular


Did you export LD_LIBRARY_PATH, as above, and set it to just that one dir?

I didn't have any problem with this. Perhaps there's another setting to find the shared libraries that I'm not using in my system but maybe yours is.


Yes, I copied the script straight from your post. Even tried typing it manually before the command and launching spotify without the script but no luck. Just to be sure, could you tell your spotify version?

JSJB
Music Fan
I made my changes off the 1:1.0.72.117.g6bd7cc73-35  spotify-client version.
CCan you check your shared library path to see how this is finding libcurl4?

FFrom the ld.so man page:

o Using the environment variable LD_LIBRARY_PATH, unless the executable is being run in secure-execution mode (see below), in which case this vari-
able is ignored.

 



=> apt-cache policy spotify-client spotify-client: Installed: 1:1.0.72.117.g6bd7cc73-35-js Candidate: 1:1.0.72.117.g6bd7cc73-35-js Version table: *** 1:1.0.72.117.g6bd7cc73-35-js 400 400 copy:/usr3/Installs/DEB ./ Packages 100 /var/lib/dpkg/status 1:1.0.72.117.g6bd7cc73-35 500 500 http://repository.spotify.com stable/non-free i386 Packages 500 http://repository.spotify.com testing/non-free i386 Packages

 

tokkopako
Regular

Alright, case closed. I was stupid and downloaded amd64 package for libcurl3. Now to build a new package which hopefully works... Thanks for the help!

RJVB
Regular
You mean you are actually building the client from source?

If so: if ever you notice that LD_LIBRARY_PATH doesn't have the intended effect for a given library, find out what component(s) link to that library and then make certain that those are linked with the `--enable-new-dtags` flag. That should be the default nowadays but surprises are possible.

tokkopako
Regular

@RJVB wrote:
You mean you are actually building the client from source?

No, just extracting the package contents and then adding libcurl3 to the mix and bash script to point to the libcurl3 and putting the package back together. Could be done manually in the system folders but this makes it easier to handle if one needs to update or remove it later.

Ash44092
Casual Listener

Snap didn't work for me. I tried using the software installer also but it doesnt even show in there. Thank you for your input on this!! Spotify on Ubuntu 16.04 works great so far.

 

Here is the system I am running:

Intel Core 2 Duo CPU @ 2.33GHz x 2

4GB Ram

(Its a Dell flat Opltiplex)

32bit OS UBUNTU 16.04

 

Now, to get Spotiify to run as an App vs using the web browser, this is what I did.

I used xTerm and typed:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90

 then

echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list

 then

sudo apt-get update

 then

sudo apt-get install spotify-client

That's what I typed from the Spotify for Linux page because its debian based. Hope this helps some one out there. Good Brother Ash----OUT

JSJB
Music Fan

@Ash44092 wrote:

32bit OS UBUNTU 16.04

 

Now, to get Spotiify to run as an App vs using the web browser, this is what I did.

I used xTerm and typed:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90

 then

echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list

 then

sudo apt-get update

 then

sudo apt-get install spotify-client

That's what I typed from the Spotify for Linux page because its debian based. Hope this helps some one out there. Good Brother Ash----OUT


This is quite obvious for how to setup spotify-client on a 32 bit debian-based linux system.

 

The real problem is:   the spotify-client package requires the libcurl3 shared library from the libcurl3 package. This package has been obsoleted by the libcurl4 package, which is not compatible with libcurl3. So, if you keep spotify-client, you cannot install libcurl4, which will prevent hundreds of other packages from being upgraded to their newest version.

 

The ideal solution would be to have a spotify-client built with libcurl4; this is available for 64 bit linux as a testing package but there is no version for 32 bit linux.

 

The alternative I used on my 32 bit system was to create a new spotify-client package, starting with the original spotify-client, adding to it the contents of libcurl3 (but in a special directory) and running spotify via a script that prepends that libcurl3 to LD_LIBRARY_PATH.

 

This allowed my 32 bit system to run spotify  AND  upgrade all the packages that need the latest libcurl4 shared library.

Vanadyel
Casual Listener

Has the key changed again ?

DaveMellor
Music Fan
No! Sorry but this overblown security system invented by programmers with
too much time on their hands defeats me!

I don't know what they think they are protecting (their reputations
probably) but most of it is **bleep**.

But let me know how you get on. Sorry I can't help.

Dave

Ash44092
Casual Listener

I found a way with ALOT of command line typing. No GUI or easy app installation was accessable but like I said, ALOT of command line typing from the Linux forum did the trick. Just type it PERFECTLY. Works like a charm. I REALLY am happy I took the time to find a way to install it on this system. CHEERS to my good brother & sisters of rock & roll and ALL music fans. I LOVE MUSIC!!

 

Look for my play list at:

https://open.spotify.com/user/ashlyquin123/playlist/7kVLR5fNSt4YcEC6qqPNn3?si=aQAPdiu2QBC3kfkDKsf4sQ

 

i0otc_-fifr6
Newbie

I want to thank the dev team for continuing Linux support. Great work, everything works well on Debian Buster running KDE 🙂

Rupertus
Regular

Spotify on Linux works great! Keep up the good work, I congratulate you.

JSJB
Music Fan

Recently libcurl3, used by the spotify-client, was replaced with libcurl4 which is incompatible. It is impossible to upgrade to libcurl4 without removing spotify client.

 

The change in libcurl is described in the changelog below; is there  any plan to rebuild the spotify-client with libcurl4 soon, so that one can upgrade all the other packages held back because they need libcurl4?

 

curl (7.60.0-2) unstable; urgency=medium

  [ Steve Langasek ]
  * Build-depend on libssl-dev instead of libssl1.0-dev.
  * Rename libcurl3 to libcurl4, because libcurl exposes an SSL_CTX via
    CURLOPT_SSL_CTX_FUNCTION, and this object changes incompatibly between
    openssl 1.0 and openssl 1.1.
  * debian/patches/03_keep_symbols_compat.patch: drop, since we are no longer
    claiming compatibility.
  * debian/patches/90_gnutls.patch: Retain symbol versioning compatibility for
    non-OpenSSL builds.  Closes: #858398.
  * Adjust libssl1.1 vs libssl1.0 Suggests/Conflicts; thanks, Adrian Bunk

 -- Alessandro Ghedini <*snip*>  Wed, 23 May 2018 20:25:39 +0100

billid
Newbie

Clean installed Ubuntu 18.04LTS and reinstalled from the Spotify repo. Spotify is having issues with sound control and device discovery.

Will try again with snap version and then again with Fedora or back to 17.10.

FWIW Spotify Linux client is the pick of the bunch.

Edit. https://community.spotify.com/t5/Desktop-Linux/libcurl4/m-p/4435771#M16040

JSJB
Music Fan
FWIW Spotify Linux client is the pick of the bunch.

Agreed, but the problem is for 32-bit linux only (i.e. i386 architecture) there is no updated version of the 32 bit linux client built with the new libcurl4. This means libcurl4 can't be installed without removing spotify-client.

 

Lack of libcurl4 is blocking about 300 packages so far from getting upgraded.

SUGGESTED POSTS