Valve’s Steam client for Linux

notifyFor people who visit this page – it was written a long time ago. The requirements to run Steam on Slackware are a lot lighter nowadays! Most important: PulseAudio is no longer required!
All you need is a package for OpenAL (to play audio) and flashplayer-plugin (in order to watch the videos in the Steam Store).
If you are running 64-bit multilib you will also have to create and install “compat32″ versions of the 32-bit OpenAL and flashplayer-plugin packages.
That’s all.

It was august 2012 when I wrote an article about the viability of commercial games on Linux. In particular, I was talking about the new Steam client for Linux which Valve Software was developing. Read that article now if you have not seen it yet, it will give insight as to where I stand with regard to the use of commercial software on Linux.

It took a while, and then Valve opened a limited Beta for their Steam client, inviting 1000 users at random, but targeting users of the Ubuntu distribution for obvious reasons: Valve wants to create a firm foothold in Linux now that they have “officially” denounced Windows 8 as a platform for which they will develop their software and games. Gabe Newell’s criticism of Windows 8 is well-known by now and in October of this year, Valve issued a similar statement during the Ubuntu Developer Summit.

And Ubuntu has the biggest potential user base for game fans – let’s face it, more people move from Windows to Ubuntu than to Slackware, so commercially Valve is doing the smart thing.

 

When the Beta program kicked off, people found out relatively fast that the Steam client had limited functionality, even for people who were not part of the initial beta. I quickly hacked together a set of instructions based on the tests I did.

Last week, the Steam for Linux Beta program opened up to a much wider audience and I received my invitation email as well (along with many more Slackers). It looks like there will not be any limitations at all after next week, so I decided to use a little of my holiday to properly package the Steam Client for Linux. Obviously, the client software is distributed as binary-only. Furthermore, it is 32-bit software and developed on Ubuntu. Nevertheless, it is not hard at all to run the Steam client on Slackware. I created a 32-bit package, see http://www.slackware.com/~alien/slackbuilds/steamclient/ , and added some additional instructions in a README.Slackware file:

The Steam client is primarily targeting Ubuntu, so in order to make it work
on Slackware, the package ships with a slightly modified steam startup script.

You will also have to install several dependencies:
  - pulseaudio
  - speex
  - json-c
  - OpenAL
  - flashplayer-plugin
These are all available as SlackBuild scripts on http://slackbuilds.org,
while OpenAL and flashplayer-plugin packages can be found in my own repository
at http://slackware.com/~alien/slackbuilds/ too.

Note that the Steam client currently is 32-bit only. If you are running a
64-bit Slackware you must add multilib capability to it first.
Then, you need to add several more 'compat32' packages. In addition to
'compat32' versions of the aforementioned dependencies, you also need to
install 'compat32' packages for:
  - flac
  - libogg
  - libvorbis
  - oxygen-gtk2

Note that before building pulseaudio, its README instructs you to create
a "pulse" user and group:
  # groupadd -g 216 pulse
  # useradd -u 216 -g pulse -d /var/lib/pulse -m pulse
However, there is no need to actually _start_ the pulseaudio server. You can
prevent this by running:
  # chmod -x /etc/rc.d/rc.pulseaudio
The Steam client is dynamically linked against pulseaudio libraries, but my
modification to the steam startup script will actually force it to use
Slackware's ALSA for audio output. Pulseaudio will not be used.

In order to run the Steam client you will probably need a Nvidia or Ati card
with proprietary drivers. I would like to hear from people who are able to
start Steam and play a game using open source drivers.

I have added the required dependency packages (including those required for multilib) in a separate “deps” directory of that steamclient package. Note that my old hacks of creating a symlink to the “/sbin/pidof” binary and exporting several variables is no longer needed, the steam start-up script does all of that now.

Installing the steamclient package, will get you a “Steam” icon in your desktop menu. Alternatively you can type “steam” in a terminal to start the client.You will see it downloading updates first, and then it allows you to connect to your Steam account.

 

When you are connected to your Steam account you will see the Steam Store and a “Linux” menu which is exclusive to the Linux client. You can of course do anything (purchases, community chat etc) which you would also do in the Windows client or the web interface.

You can then check out your own virtual “Library” which will contain the games you have purchased or which you could add because they are free to play. The Linux Beta shows two games here, the “Team Fortress Beta” which is an online shooter and “World of Goo Demo”, both of which are free.

Note that I modified the steam startup script to use ALSA as audio output. The pulseaudio libraries are required because the Steam binaries link against them but PulseAudio is not used for sound. Also note that if your default ALSA soundcard is not “hw:0,0” you may have to add one more variable. The AUDIODEV variable defines which audiodevice ALSA should use instead of “default”. You can set additional environment variables in a file” ~/.steam4slackware “. This is what I have in that file:

$ cat ~/.steam4slackware
export AUDIODEV=hw

This tells ALSA to use the first “hw” device available. The default value for AUDIODEV is “default”.

One more quirk was that I had to stop any program which was playing audio (like VLC) before starting the Steam client, or else the Steam games would not have sound…

Cheers, Eric

32 thoughts on “Valve’s Steam client for Linux


  1. Interesting. Not sure if I’ll use the Linux client, since I can’t use pulseaudio–it’s not recommended for real time/low-latency computer audio work. Plus all the games I own via Steam are Windows/WINE. I’m more inclined to go the route of Humble Bundle for Linux-native games. I’ll definitely toss more money Steam’s way, though. I like supporting people who support Linux or are Linux-friendly.

    It’s a different world now than back in the late 90’s, early 2000’s. Back then Loki games seemed like the last hope of linux gaming. I’m glad it wasn’t. (That I remember Loki games makes me feel like an old fart.)


  2. Pingback: Steam on Slackware - Page 9

  3. Thanks Eric.

    I’m currently running the Steam beta on Ubuntu 12.04, but it’s not exactly my favorite distro, so when I get home I will install Slackware instead and give your packages a whirl.

    And yea, playing TF2 natively on my Linux box is just plain amazing. Times sure have changed.

    Valve = Awesome.




  4. First of all, congrats on your job Eric. Although I ain’t running slackware on my lappy anymore, I can assure you Steam here runs pretty well on my Intel HD 4000 GPU.


  5. I’ve got a minor issue, which I’m not sure is due to Slackware or the Steam application: I can’t create shortcuts to games on the desktop. Steam tells mere there already is a shortcut, despite the fact that there are none. The only desktop icon there is is for Steam itself.

    Other than that all seems to work pretty well.


  6. Pingback: Slackware Linux 14.0 – Instalando a versão beta do Steam for Linux « Caminhando Livre

  7. Pingback: Alien Pastures » Multilib update for slackware-current


  8. Alan, that is a very sparse error report. Try to find out a little more. Check that you actually re-installed your proprietary Nvidia or Ati video driver after installing multilib packages for instance, because that is a much-occurring issue.

    Eric


  9. Do i understand it right that if i got an slackware64-14.0 installation then i need to first install multilib and then the deps to make steam work?
    The pulseaudio is the one thing that makes me wonder if i should install it or not.
    How will the pulseaudio affect my slackware install?
    Will pulseaudio affect my future compiling and will it be used by my slackware install?
    Pulseaudio is something that i don’t want to use.


  10. Pingback: Steam on Slackware - Page 12



  11. I am using Slackware64 with multilib/compat32. It is due to note that when using the Steam client, not only do you need to make sure you have the compat32 for the listed packages but apparently, as you will obviously use a 3D capable graphics card like on my box, I use an Nvidia GTX460 but using the nvidia-kernel and specifically the nvidia-driver slackbuild scripts, you need to edit your build script to enable compat32 as well, otherwise you will receive a glx render error, which will cause issues with performance.
    On line 71 change from:
    COMPAT32=${COMPAT32:-no}
    to
    COMPAT32=${COMPAT32:-yes}

    I know it sounds ridiculous to be so specific but some users are still new to Slackware.
    That’s all I wanted to add other than Thanks for this site, your scripts, packages and information. People like you are hard to come by, so people like me appreciate you.
    Peace =)


  12. Using Slackware64 and Steam also requires the 32bit Adobe Flash Player plugin, so I just made and tested out a flashplayer-plugin-compat32 package. I have libflashplayer.so in both standard 32bit and 64bit lib directories. Firefox only shows one version of flash and the preview movies in the Steam store for games work great.
    Peace =)


  13. hi i am linux fresh ,i do that follow your blog and ,when i run steam it show missing libc.so.6,could you tell me how to fix it ?thank you !



  14. Thanks for the SlackBuild. I’ve been enjoying Steam on my Slackware 14.1!

    The last time tried the Nvidia driver slackbuild for 14.1, the kernel failed to build for my GTS 450. So I decided to keep the Nouveau drivers and see what games will work

    I have the nouveau.conf set with “EXAVsync” and “GLXVBlank” set to “true”, but I only did that to correct video tearing, I don’t know how it affects gaming.

    Games that worked for me:
    Gratuitous Space Battles
    Teslagrad
    Little Inferno
    World of Goo

    Games that crashed on launch:
    Legend of Aethereus
    Bastion
    X3: Reunion
    Sparkle 2 Evo

    Obviously, the more graphic intense games seemed to fair poorly. All of these games run fine on my Mint 13 system with proprietary drivers.

    I’m actually impressed. I think the Nouveau drivers have gotten much better.


  15. For people who visit this page – it was written a long time ago. The requirements to run Steam on Slackware are a lot lighter nowadays!

    Most important: PulseAudio is no longer required!

    All you need is a package for OpenAL (to play audio) and flashplayer-plugin (in order to watch the videos in the Steam Store).

    If you are running 64-bit multilib you will also have to create and install “compat32” versions of the 32-bit OpenAL and flashplayer-plugin packages.
    That’s all.

    Eric


  16. Pingback: Alien Pastures » New multilib versions of glibc and gcc for slackware-current

  17. Pingback: Alien Pastures » Slackware-current – new multilib gcc compiler suite





  18. Hello,

    Whenever I launch DoD under steam 1.0.0.48 and I either join an active game or start my own server, the game crashes and exits at random times, usually less than 5 minutes after it was launched. I was curious to see what error is causing this and I ran steam from a terminal. I get this error:

    ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred
    ERROR: ld.so: object ‘/home/cristian/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so’ from LD_PRELOAD cannot be preloaded: ignored.
    /home/cristian/.local/share/Steam/SteamApps/common/Half-Life/hl.sh: line 38: 3043 Segmentation fault ${DEBUGGER} “${GAMEROOT}”/${GAMEEXE} $@
    Uploading dump (out-of-process) [proxy ”]
    /tmp/dumps/crash_20140712134025_1.dmp
    Game removed: AppID 30 “Day of Defeat”, ProcID 3043
    Finished uploading minidump (out-of-process): success = yes
    response: CrashID=bp-c6ec21df-e49d-426c-93eb-31cc12140711
    pid 3111 != 3110, skipping destruction (fork without exec?)

    It seems that this is an ALSA related issue. My Slackware 14.0 32 bit version has ALSA 1.0.26.

    Some suggestions were to increase buffer size or decrease sound quality during game but none of these options work. I also installed OpenAL package and the problem still persists.

    Is this an ALSA bug or a Steam bug? Anyone who has a solution for fixing this problem?

    I also tried to launch the game in Wine 1.6.2 and 1.7.21 but it crashes too with a different error:

    err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7ec9b233
    fixme:ntdll:NtQuerySystemInformation (0x00000067,0x1208e290,0x00000008,(nil)) stub
    fixme:ntdll:NtQuerySystemInformation (0x00000007,0x1208e228,0x00000018,(nil)) stub
    fixme:ntdll:NtQuerySystemInformation (0x0000005a,0x1208e240,0x00000020,(nil)) stub
    fixme:ntdll:NtQuerySystemInformation (0x00000032,0x1208e298,0x00000004,(nil)) stub


  19. Errors trying to launch steamclient. Agreement popped up, agreed to it, then died. running from cli, I get:

    SteamUpdateUI: An X Error occurred
    Serial number of failed request: 665
    X Error of failed request: BadGC (invalid GC parameter)
    xerror_handler: X failed, continuing
    Major opcode of failed request: 56 (X_ChangeGC)
    Resource id in failed request: 0x2c00002
    Serial number of failed request: 666
    xerror_handler: X failed, continuing
    SteamUpdateUI: An X Error occurred
    X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
    Major opcode of failed request: 75 (X_PolyText16)
    Resource id in failed request: 0x2c00002
    Serial number of failed request: 667
    xerror_handler: X failed, continuing
    SteamUpdateUI: An X Error occurred
    X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
    Major opcode of failed request: 75 (X_PolyText16)
    Resource id in failed request: 0x2c00002
    Serial number of failed request: 668
    xerror_handler: X failed, continuing
    SteamUpdateUI: An X Error occurred


  20. Pingback: Alien Pastures » Multilib gcc updated to address changes in slackware-current

  21. Pingback: Alien Pastures » Rebuilt multilib gcc compiler suite for slackware-current

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.