Steam

From Gentoo Wiki
Jump to: navigation, search

Valve has released a native (currently x86-only) Linux client for their Steam platform available to all steam users.

Notice

The released steam installer archives only contain an installer that subsequenly downloads and installs the steam client from their servers into the user's homedir. This prevents a OS package manager from properly managing steam client updates.

Steam does not expose an api for a proper package manager to manage installation or updates of software distributed through it. Users are required to use the steam client directly for installing and updating the softwares.

Games

Prerequisites

Things you need in order to run steam or even the steam-installer.

Dependencies

If you don't plan on using the ebuild then you can create a set to conveniently manage and update the steam dependencies without changing your world file. Otherwise skip this section.

After you have created the file /etc/portage/sets/steam as shown below, run:
root # emerge --ask @steam
Note
The following lists may be outdated, and require verification. Several of the libraries may be provided by the steam runtime, so a system-installed version would not be used

x86

File/etc/portage/sets/steamdependencies for x86

dev-libs/glib:2
dev-libs/libgcrypt
dev-libs/nspr
dev-libs/nss
media-libs/alsa-lib
media-libs/fontconfig
media-libs/freetype:2
media-libs/libjpeg-turbo
media-libs/libogg
media-libs/libpng:1.2
media-libs/libsdl
media-libs/libtheora
media-libs/libvorbis
media-libs/openal
media-sound/pulseaudio
net-misc/curl
net-print/cups
sys-apps/dbus
>=sys-devel/gcc-4.6.0
>=sys-libs/glibc-2.15
>=sys-libs/zlib-1.2.4
virtual/opengl
x11-libs/cairo
x11-libs/gdk-pixbuf
x11-libs/gtk+:2
>=x11-libs/libX11-1.5
x11-libs/libXext
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libXrandr
x11-libs/libXrender
x11-libs/pango
>=x11-libs/pixman-0.24.4

amd64

File/etc/portage/sets/steamdependencies for amd64

>=app-emulation/emul-linux-x86-baselibs-20121028
>=app-emulation/emul-linux-x86-gtklibs-20121028
>=app-emulation/emul-linux-x86-opengl-20121028
>=app-emulation/emul-linux-x86-sdl-20121028
>=app-emulation/emul-linux-x86-soundlibs-20121028
>=app-emulation/emul-linux-x86-xlibs-20121028
>=sys-devel/gcc-4.6.0[multilib]
>=sys-libs/glibc-2.15[multilib]
virtual/opengl

needed for some games

File/etc/portage/sets/steammostly source-games

media-libs/libtxc_dxtn[abi_x86_32]

Kernel

You need tmpfs activated in your kernel and /dev/shm mounted.

Note
/dev/shm should be automatically mounted by the devfs initscript, however you can do so explicitly and with additional options via fstab.
File/etc/fstab

# to limit the size add e.g. size=768M to opts (default is 50%)

#<fs>      <mountpoint>    <type>	<opts>		     <dump/pass>
shm        /dev/shm        tmpfs        nodev,nosuid,noexec  0 0

Installation

From debian package

Download the .deb archive found here, extract[1] and put the following files into the same directory:

  • bootstraplinux_ubuntu12_32.tar.xz (from the .deb archive. data/usr/lib/steam)
  • steam.desktop (from the .deb archive. share/applications)
  • steam (get the script here or here) [last update: 2013-03-24]

Make steam executable and run it. There are also a few icons in the .deb archive.

Manual install

See Steam/Manual_installation.

steam-overlay

You can use the steam-launcher ebuild from the (un-reviewed) steam-overlay.

32-bit chroot on amd64

If you want to run steam in a 32-bit chroot without relying on emul-linux-x86-* or multilib packages, then run the following commands:

root # mkdir /usr/local/steam32 && cd /usr/local/steam32
root #
wget http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20140708.tar.bz2 && tar -xvpf stage3*.tar.bz2
root #
mkdir usr/portage && mkdir usr/local/portage
root #
mount --rbind /usr/portage usr/portage && mount --rbind /dev dev && mount --rbind /sys sys && mount -t proc none proc
root #
cp /etc/resolv.conf etc

You'll run chroot with linux32, if you didn't have it, emerge sys-apps/util-linux first.

root # linux32 chroot .
root #
source /etc/profile && env-update
root #
useradd -m steam && usermod -a -G video steam && usermod -a -G audio steam

Now follow any of the above installation methods and then create a wrapper script to chroot in, su to steam user, then run steam.

File/usr/local/bin/steam32Wrapper for steam32 amd64

#!/bin/sh
CHROOT_DIR=/usr/local/steam32

mount --rbind /dev "${CHROOT_DIR}/dev" 
mount --rbind /sys "${CHROOT_DIR}/sys"
mount -t proc none "${CHROOT_DIR}/proc"
[ -f $CHROOT_DIR/var/run/dbus.pid ] || chroot "${CHROOT_DIR}" dbus-launch --system
chroot "${CHROOT_DIR}" su steam -c "dbus-launch steam"
umount -l "${CHROOT_DIR}/dev"
umount -l "${CHROOT_DIR}/sys"
umount -l "${CHROOT_DIR}/proc"

Client Troubleshooting

A few tricks to get things working.

Video drivers

  • nvidia-drivers: You will need to unmask latest x11-drivers/nvidia-drivers.
  • If S3TC support is missing, install media-libs/libtxc_dxtn.
  • Starting some games (TF, CS:S) on legacy ATI drivers will give this error: "Required OpenGL extension "GL_EXT_texture_sRGB_decode" is not supported. Please update your OpenGL driver." Workaround is here.

Fonts

Some people seem to have problems with missing fonts. A user reported it being solved by emerging media-fonts/font-bitstream-100dpi.

Sometimes Xorg does not recognize the new fonts installed. To fix this temp. run:

user $ xset +fp /usr/share/fonts/100dpi/
user $
./steam.sh

You may also need media-fonts/corefonts if fonts don't appear to be rendering correctly.

The game Stealth Bastard Deluxe will segfault if media-fonts/font-misc-misc is not installed [2].

Mouse cursor

If your WM/DE does not set a mouse pointer theme, then Steam will overwrite the default X11 cursor theme, often resulting in a reversed pointer from left to right.

To fix this, just install and enable a compatible cursor theme via your WM/DE (e.g. x11-themes/vanilla-dmz-xcursors).

You can also enable the installed theme manually with the following method:

user $ mkdir ~/.icons
user $
ln -s /usr/share/cursors/xorg-x11/Vanilla-DMZ ~/.icons/default
Note
This fix will not work if you will try to symlink a KDE cursor theme (eg: Oxygen_White).

If the mouse cursor gets stuck pointing in the wrong direction after exiting steam you can work around that via:

user $ xsetroot -cursor_name left_ptr

Flashplayer on amd64

Get the 32bit flashplayer from adobe and extract libflashplayer.so to your current working dir. Now run:

user $ mkdir <path-to-steam-installation>/ubuntu12_32/plugins
user $
mv libflashplayer.so <path-to-steam-installation>/ubuntu12_32/plugins/
user $
chmod +x <path-to-steam-installation>/ubuntu12_32/plugins/libflashplayer.so

Typically the path located in ~/.local/share/Steam. Alternatively emerge www-plugins/adobe-flash with abi_x86_32 option enabled and run:

user $ mkdir <path-to-steam-installation>/ubuntu12_32/plugins
user $
ln -s /usr/lib32/nsbrowser/plugins/libflashplayer.so <path-to-steam-installation>/ubuntu12_32/plugins/

Memory corruption on startup

You might get an error like this:

user $ steam
*** glibc detected *** zenity: malloc(): memory corruption: 0x00000000016cf020 ***

Try to emerge x11-libs/libXi and it should work.

Hardened Gentoo

It looks like the steam binary has rwx bits in it. You will need to mark the binary with the following to get it working on a hardened system.

user $ paxctl-ng -m ~/.local/share/Steam/ubuntu12_32/steam

Binaries of most games also should be paxmarked, for ex.:

user $ paxctl-ng -m ~/.local/share/Steam/SteamApps/common/"World of Goo/WorldOfGoo"
user $ paxctl-ng -m ~/.local/share/Steam/SteamApps/common/Uplink/uplink.bin.x86_64

After latest update (around Jul 2013) steam also need paxmarked sh or it fail to run games from steam client (see https://github.com/ValveSoftware/steam-for-linux/issues/254 for details):

user $ sudo paxctl-ng -m /bin/bash

However, this causes bash to not run.

Steam runtime

By default, Valve bundles their own libraries with the steam package and uses them instead of installed system libraries. This behavior can be changed by setting the environment variable STEAM_RUNTIME=0.

Warning

It is not recommended to deactivate Steam runtime. This can lead to numerous problems, including runtime and missing 32-bit libraries.

Reset Steam client

If you want to wipe out your current steam installation and reinstall steam without losing games data, you can use the --reset command line option:

user $ steam --reset

Games Troubleshooting

If you have problems on 64 bit, it's because emul-linux-x86-* are typically very out of date.

You can try using a 32-bit chroot.

Dota 2

If you notice lots of black textures, it's because the mesa driver is out of date, until version 9.1.6 or higher is released as part of emul-linux-x86-opengl, you will have to resort to using a 32 bit chroot.

Left 4 Dead 2

If you experience black textures, you are missing S3TC texture (de)compression, add the following to package.use
media-libs/libtxc_dxtn abi_x86_32
and then emerge libtxc_dxtn

Rust (legacy)

After setting launch options in the configuration menu and clicking ok, if Rust fails to launch, then add the following Steam launch options to force Rust to use the correct binaries
LD_LIBRARY_PATH="/usr/lib:$LD_LIBRARY_PATH" %command%

Team Fortress 2

If you only get a black screen for 1-2 seconds, try adding "-nojoy" to Game->Properties->"Set Launch Options".

X3 Terran Conflict and Albion Prelude

If you are unable to start the launcher, make sure that media-libs/libtxc_dxtn is installed. See the official Linux Support Thread.

This system DOES NOT support the OpenGL extension GL_EXT_texture_compression_s3tc

Install helper library for S3TC texture (de)compression.
echo ">=media-libs/libtxc_dxtn-1.0.1-r1 abi_x86_32" >> /etc/portage/package.use
emerge libtxc_dxtn -j3

Restart graphic system and examine if GL extension is available.
glxinfo | grep GL_EXT_texture_compression_s3tc

If there is no GL_EXT_texture_compression_s3tc try to update driver. If you are using radeon open driver, set correct value to VIDEO_CARDS variable in make.conf. For example value VIDEO_CARDS="r600" is valid for HD6310. More info about radeon cards.

If GL extension is here, but error still raises, suppress it by next command.
export force_s3tc_enable=true
~/.steam/root/steam.sh

01:32, 30 May 2014 (UTC) had to emerge x11-libs/gtkglarea for s3tc errors to go away under nouveau.

Further help

Before you ask anywhere else, refer to the Gentoo forum thread. Post your solutions and update this wiki page if someone confirms. Please don't remove content without Discussion unless it's wrong content.

See also

External resources