This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Steam
Steam is a digital distribution platform developed by Valve Corporation, which offers digital rights management (DRM), multiplayer gaming, video streaming and social networking services. Steam provides the user with installation and automatic updating of games on multiple computers, and community features such as friends lists and groups, cloud saving, and in-game voice and chat functionality. - Wikipedia, the free encyclopedia
Games
Prerequisites
The Dependencies and USE flags sections below can be skipped when using the steam-launcher or steam-meta ebuild from an external repository (overlay).
Steam is a 32-bit application and requires a multilib profile on amd64, unless a chroot is used.
Dependencies
The following dependencies may be outdated and require verification. Some of the dependencies may be bundled by the Steam runtime, in which case the system libraries will not be used.
Create the following set of required Steam dependencies:
/etc/portage/sets/steam
# mandatory! dev-libs/glib:2 dev-libs/libgcrypt dev-libs/nspr dev-libs/nss gnome-base/gconf gnome-extra/zenity 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/libtxc_dxtn media-libs/openal net-misc/curl net-print/cups sys-apps/dbus virtual/libusb:1 virtual/opengl x11-libs/cairo x11-libs/gdk-pixbuf x11-libs/gtk+:2 x11-libs/libX11 x11-libs/libXext x11-libs/libXfixes x11-libs/libXi x11-libs/libXrandr x11-libs/libXrender x11-libs/libXScrnSaver x11-libs/pango x11-libs/pixman # optional media-sound/pulseaudio net-misc/networkmanager x11-misc/xdg-user-dirs
And then run:
root #
emerge --ask --noreplace @steam
Do not run emerge --unmerge @steam to remove Steam as it may make the system unusable. Instead use emerge --ask --depclean @steam for this method.
USE flags
To enable the required USE flags for Steam dependencies under amd64, add the the following file:
/etc/portage/package.use/steam
dev-db/sqlite abi_x86_32 dev-libs/expat abi_x86_32 dev-libs/glib abi_x86_32 dev-libs/libffi abi_x86_32 dev-libs/libpthread-stubs abi_x86_32 dev-libs/nspr abi_x86_32 dev-libs/nss abi_x86_32 dev-util/pkgconfig abi_x86_32 media-libs/libtxc_dxtn abi_x86_32 media-libs/mesa abi_x86_32 media-libs/openal abi_x86_32 net-misc/curl abi_x86_32 sys-devel/llvm abi_x86_32 sys-fs/udev abi_x86_32 sys-libs/gpm abi_x86_32 sys-libs/ncurses abi_x86_32 sys-libs/readline abi_x86_32 sys-libs/zlib abi_x86_32 virtual/libffi abi_x86_32 virtual/libiconv abi_x86_32 virtual/libudev abi_x86_32 virtual/pkgconfig abi_x86_32 x11-libs/gdk-pixbuf abi_x86_32 x11-libs/gtk+:2 abi_x86_32 x11-libs/libdrm abi_x86_32 x11-libs/libpciaccess abi_x86_32 x11-libs/libX11 abi_x86_32 x11-libs/libXau abi_x86_32 x11-libs/libxcb abi_x86_32 x11-libs/libXdamage abi_x86_32 x11-libs/libXdmcp abi_x86_32 x11-libs/libXext abi_x86_32 x11-libs/libXfixes abi_x86_32 x11-libs/libXScrnSaver abi_x86_32 x11-libs/libxshmfence abi_x86_32 x11-libs/libXxf86vm abi_x86_32 x11-proto/damageproto abi_x86_32 x11-proto/dri2proto abi_x86_32 x11-proto/dri3proto abi_x86_32 x11-proto/fixesproto abi_x86_32 x11-proto/glproto abi_x86_32 x11-proto/inputproto abi_x86_32 x11-proto/kbproto abi_x86_32 x11-proto/presentproto abi_x86_32 x11-proto/xcb-proto abi_x86_32 x11-proto/xextproto abi_x86_32 x11-proto/xf86bigfontproto abi_x86_32 x11-proto/xf86driproto abi_x86_32 x11-proto/xf86vidmodeproto abi_x86_32 x11-proto/xproto abi_x86_32
Update the system:
root #
emerge --ask --changed-use --deep @world
Users may receive an error citing circular dependencies due to gpm and ncurses. If this is the case, add
-gpm
to sys-libs/ncurses and update the @world set once more.Kernel
Steam expects that /dev/shm, which requires kernel tmpfs support, is mounted prior to being started. /dev/shm should be mounted automatically by OpenRC and systemd during boot, but can also be mounted explicitly via /etc/fstab:
/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
Steam officially supports Ubuntu 12.04+. Attempting to run Steam on any other Linux distribution may cause various issues. Refer to client and games troubleshooting for details.
The Steam installer downloads and installs the Steam client to the users home directory. This prevents Portage from managing the Steam client updates or the software installed by it. The Steam client is solely responsible for managing software installation and updates.
The instructions throughout this page use the typical Steam installation directory ~/.local/share/Steam.
External repositories
The steam-launcher ebuild is available from anyc's Steam repository or the Gentoo Gamers repository.
anyc's Steam repository
anyc's Steam repository is the primary Steam repository. The Gentoo Gamers repository occasionally pulls in changes from anyc's Steam repository, and usually does not have the latest steam-launcher ebuild available.
Install the Steam repository repository configuration:
root #
wget -P /etc/portage/repos.conf/ https://raw.githubusercontent.com/anyc/steam-overlay/master/steam-overlay.conf
Sync the Steam repository:
root #
emaint sync --repo steam-overlay
The above only needs to be performed once, since the repository will be auto synced during emerge --sync or emaint sync --auto operations.
Install the steam-launcher ebuild:
root #
emerge --ask games-util/steam-launcher
Alternatively, install the steam-meta ebuild to pull in all Steam related ebuilds:
root #
emerge --ask games-util/steam-meta
eselect repository
Install app-eselect/eselect-repository and dev-vcs/git:
root #
emerge --ask --noreplace app-eselect/eselect-repository dev-vcs/git
Add the Steam repository:
root #
eselect repository enable steam-overlay
Install the steam-launcher ebuild:
root #
emerge --ask games-util/steam-launcher
Layman
Please refer to the Layman page for comprehensive installation instructions.
Install layman:
root #
emerge --ask --noreplace app-portage/layman
Fetch the Steam repository:
root #
layman -f
Display the information about the specified repository:
root #
layman -i steam-overlay
Add the Steam repository:
root #
layman -a steam-overlay
Install the steam-launcher ebuild:
root #
emerge --ask games-util/steam-launcher
Manual
Installing Steam manually is not recommend as various fixes are not applied automatically[1]. Please consider installing Steam from an external repository.
Fetch and extract the Steam installer:
user $
wget http://repo.steampowered.com/steam/pool/steam/s/steam/steam_1.0.0.56.tar.gz
user $
tar -xvzpf steam_1.0.0.56.tar.gz
Run the Steam installer:
user $
cd steam
user $
./steam
After invoking ./steam a libGL error may appear. See Steam/Client troubleshooting for the resolution.
If the Steam client crashes, try running:
user $
./steam -textclient
Running Steam with the -textclient
option may be necessary each time the client wants to update.
Install the above Steam installer script:
root #
cp steam /usr/local/bin
Steam can be started with:
user $
steam
Manual with alternative installer script
Installing Steam manually is not recommend as various fixes are not applied automatically[1]. Please consider installing Steam from an external repository.
The following installation method is almost identical to the manual installation method, except that an alternative Steam installer script is used.
Fetch the Steam installer and extract the required files:
user $
wget http://repo.steampowered.com/steam/pool/steam/s/steam/steam_1.0.0.56.tar.gz
user $
tar -xvzf steam_1.0.0.56.tar.gz steam/bootstraplinux_ubuntu12_32.tar.xz
user $
tar -xvzf steam_1.0.0.56.tar.gz steam/steam.desktop
Fetch and run Julian Ospald's (hasufell) Steam installer script:
user $
cd steam
user $
wget https://gist.githubusercontent.com/hasufell/d02a93eccbe35be7a803/raw/987ea287dc81a60d2eb5fa1bb188eae0a5f1049f/steam
user $
chmod +x steam
user $
./steam
If the installer script creates broken symbolic links when run with Dash, run the installer script with Bash instead:
user $
bash ./steam
Chroot
It is possible to run Steam in a 32-bit chroot on amd64 without relying on multilib.
Create the chroot directory:
root #
mkdir /usr/local/steam32
root #
cd /usr/local/steam32
Fetch and extract the stage tarball:
root #
wget http://distfiles.gentoo.org/releases/x86/autobuilds/current-stage3-i686/stage3-i686-20171107.tar.bz2
root #
tar -xvjpf stage3*.tar.bz2
Copy DNS information:
root #
cp -L /etc/resolv.conf etc
Create the Portage directory:
root #
mkdir usr/portage
Mount the necessary filesystems:
root #
mount -R /dev dev
root #
mount -R /sys sys
root #
mount -t proc proc proc
root #
mount -R /usr/portage usr/portage
Chroot with linux32, which is provided by the sys-apps/util-linux package, and update the environment:
root #
linux32 chroot .
root #
env-update && source /etc/profile
Create the Steam user:
root #
useradd -m -G audio,video steam
Next, install Steam from one of the above installation methods. When complete, create the following wrapper script to setup the chroot, su to the Steam user, and start Steam:
/usr/local/bin/steam32
#!/bin/sh # steam chroot directory chroot_dir="/usr/local/steam32" # mount chroot directories mount -R /dev "${chroot_dir}/dev" mount -R /sys "${chroot_dir}/sys" mount -t proc proc "${chroot_dir}/proc" mount -R /usr/portage "${chroot_dir}/usr/portage" # check for an existing dbus session if [ -z "${DBUS_SESSION_BUS_ADDRESS}" ] ; then chroot "${chroot_dir}" dbus-launch fi # chroot, substitute user, and start steam chroot "${chroot_dir}" su steam -c "dbus-launch steam" # unmount chroot directories when steam exits umount -l "${chroot_dir}/dev" umount -l "${chroot_dir}/sys" umount -l "${chroot_dir}/proc" umount -l "${chroot_dir}/usr/portage"
Although the above script uses D-Bus, it is possible to run Steam without it, but a manual method is required to connect the X server from within the chroot.
Client troubleshooting
See Steam/Client troubleshooting.
Games troubleshooting
See Steam/Games troubleshooting.
Removal
Removing a manual installation
Remove the Steam dependencies:
root #
emerge --ask --depclean @steam
Remove the Steam executable and Portage configuration:
root #
rm /usr/bin/steam
root #
rm /etc/portage/sets/steam
root #
rm -rf /etc/portage/package.*/steam
Remove the Steam directory from the user accountː
user $
rm -rf ~/.local/share/Steam
Remove all files and directories from the user account which contain 'steam' (case-insensitive) in the name:
Use with caution as this may remove files and directories unrelated to Steam.
user $
find ~ -iname '*steam*' -exec rm -ri {} \;
Removing an external repository installation
Remove the steam-launcher ebuild:
root #
emerge --ask --unmerge games-util/steam-launcher
If it was installed, remove the steam-meta ebuild:
root #
emerge --ask --unmerge games-util/steam-meta
Asking for help
The best place to ask for help is the Steam thread on the Gentoo Forums. If a solution to an issue is confirmed by others, add it to this page or the relevant troubleshooting subpage. Please do not remove content without discussion, unless it is obviously wrong.
See also
- Steam Controller — a game controller developed by Valve.
External resources
- Gentoo Forums - Native Steam client and source game engine
- Gentoo Bugzilla - steam-installer ebuild (outdated)
- ArchWiki - Steam
- GitHub - Steam for Linux Client
- Steam Community - Steam for Linux
References
- ↑ Jump up to: 1.0 1.1 chewi. Issues on 4.18.9-gentoo kernel, Steam for Linux, September 24th, 2018. Retrieved on September 25th, 2018.