Steam

''Steam is Article description::a video game digital distribution service by Valve. Steam offers digital rights management (DRM), matchmaking servers, video streaming, and social networking services. It also provides the user with installation and automatic updating of games, and community features such as friends lists and groups, cloud saving, and in-game voice and chat functionality.'' - Wikipedia, the free encyclopedia

The Steam client is not open source software, therefore each user must accept the Steam Subscriber Agreement before using the software, then typically accept EULAs or Terms of Use agreements for each particular title accessed through the Steam client.

Valve Corporation has collaborated with open source software organizations such as CodeWeavers (Wine) in order to make closed source games possible to run on open source operating systems.

Games

 * Official Steam Linux games list.

Kernel
Steam expects that, which requires kernel tmpfs support, is mounted prior to being started. should be mounted automatically by OpenRC and systemd during boot, but can also be mounted explicitly via :

The kernel option  has to be set, otherwise Steam may fail to start with the error message: “The futex facility returned an unexpected error code.“

Installation
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.

External repositories
The ebuild is available from the steam-overlay repository, which is Gentoo's primary repository for the Steam client and Steam-based games. The steam-overlay repository can be added manually or with repository management tools and.

eselect-repository
Install and :

Add the Steam repository:

Then sync with either specifically emaint:

or

Layman
Install Layman:

Fetch the Steam repository:

Display the information about the specified repository:

Add the Steam repository:

Adding the repository manually
Install the required dependencies:

Install the Steam repository configuration:

Sync the Steam repository:

Emerge
Once the repository has been added install the ebuild:

Alternatively, install the ebuild to pull in all Steam related ebuilds:

Dependencies
Create the following set of required Steam dependencies:

And then run:

USE flags
To enable the required USE flags for Steam dependencies under, add the the following file:

Update the system:

Default installer
Fetch and extract the Steam installer:

Run the Steam installer:

If the Steam client crashes, try running:

Running Steam with the  option may be necessary each time the client wants to update.

Install the above Steam installer script:

Steam can be started with:

Alternative installer
The following installation method is almost identical to the Default installer installation method, except that an alternative Steam installer script is used.

Fetch the Steam installer and extract the required files:

Fetch and run Julian Ospald's (hasufell) Steam installer script:

If the installer script creates broken symbolic links when run with Dash, run the installer script with Bash instead:

Chroot
Steam can be run in a 64-bit multilib chroot on. The major advantage of a chroot is that Steam and its dependencies will be isolated from the root filesystem.

Create the chroot directory. If a 32-bit chroot is used, adjust the chroot directory accordingly.

Fetch and extract the stage3 tarball. If a 32-bit chroot is used, download the stage3 tarball instead.

Copy DNS information and ensure it's world-readable:

Create the ebuild repository directory:

Mount the necessary filesystems:

Chroot with and update the environment. If a 32-bit chroot is used, chroot with instead. The use of is not required on, and it is only used here for consistency.

The chroot should now be updated and configured accordingly. It is recommended to at least configure the timezone and enable sound support by installing.

Now create the Steam user with the same UID (usually 1000) as the local user. The local UID can be determined by running as the local user, outside of the chroot. Using the same UID will simplify the process of granting access to the X server from inside the chroot.

Install Steam from one of the above installation methods. When complete, exit the chroot:

Unmount the chroot directories:

Install to allow access to the X server from inside the chroot:

Logout, and then login. This allows the display manager or to process  and automatically grant all local connections to the X server from the local UID. This will not work if the Steam UID is different to that of the local UID. Either set the same UID when creating the Steam user, as was mentioned earlier, or if the Steam user already exists change the Steam UID with to match the local UID.

Alternatively, run to allow all local connections to the X server from any local UID. This is a potential security risk as any user could access the X server without authentication. To revoke access run

Next, create the following wrapper script to setup the chroot, substitute to the Steam user, and start Steam. The wrapper script has two user defined variables: chroot_bits and chroot_dir. The chroot_bits variable must be set to  for a 32-bit chroot, and   for a 64-bit chroot. The chroot_dir variable should be set to the location of the chroot directory.

Make the wrapper script executable:

Run the wrapper script as to start Steam:

Flatpak
A quite simple, fast and clean method (e.g. 32-bit dependencies do not need to be compiled) of installing Steam is to use the Flatpak package  from Flathub:

Steam will update itself and install its files in the directory.

Client troubleshooting
See Steam/Client troubleshooting.

Games troubleshooting
See Steam/Games troubleshooting.

Removing a manual installation
Remove the Steam dependencies:

Remove the Steam executable and Portage configuration:

Remove the Steam directory from the user accountː

Remove all files and directories from the user account which contain 'steam' (case-insensitive) in the name:

Removing an external repository installation
Remove the ebuild:

If it was installed, remove the ebuild:

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.

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