Valve continue to push Linux gaming forward and today they have a new Beta installer available to try for the Steam Client. Currently, it's aimed at Debian and derivatives (Ubuntu and so on). This is the package that ensures Steam is properly ready to actually be downloaded and fully installed on your Linux system.
What's new? It includes "improved distribution compatibility, updated first start dependency checks, updated udev rules.." as mentioned to us on Twitter by Valve contractor Timothee Besset. All of that is quite important of course, especially things like the udev rules to ensure various hardware works with Steam like the Steam Controller, DualShock 4, Nintendo Switch controller, VR headsets and so on.
So if you're feeling brave you can download and try it here directly as a .deb package, alternatively there's also information here on how to grab it using apt and you can also find the plain package here (useful for other distributions to check changes). For bug reports, they're asking to put them up on the standard Steam for Linux GitHub, just mention it's using the Beta installer.
For a full changelog of what's new, you can see it below. It's a little wordy, so we've left it in a clickable spoiler for you:
In newer runtimes, steam-runtime/i386 is populated with symlinks into steam-runtime/lib and steam-runtime/usr, rather than containing regular files.
* build: Populate source package using a Python script.
- This takes care of downloading all the necessary bits from the Steam client, and repacking the Steam runtime and some other Steam binaries into the bootstrap tarball.
* debian: Add an epoch to the version number.
- This makes this package supersede the outdated steam package in Ubuntu, which has an epoch as a result of an unrelated package "sTeam" that existed in historical Ubuntu versions.
* Take over responsibility for steam_tray_mono.png, bin_steam.sh, bin_steamdeps.py from Steam client.
* bin_steam.sh: Remove redirection to a log file.
- This is not particularly useful in practice, and can easily be replaced with ordinary Unix shell redirection when debugging the client or a game. We can't rely on it anyway, because third-party packages don't tend to do this. (Fixes: steam-for-linux#6901)
* bin_steam.sh: Add a brief header identifying this file
* bin_steam.sh: Simplify version management by making it dotted-decimal
* bin_steam.sh: Include full .deb version number, except for epoch
* bin_steam.sh: If run directly, default to non-beta Steam universe
* bin_steam.sh: Use a more robust way to set up ~/.steam/steam symlink
* bin_steam.sh: Make Ubuntu 20.04 show the .desktop file as "trusted"
* bin_steam.sh: chmod the .desktop file a+x, not just +x.
- To mark a .desktop file as "trusted" on most desktops, it needs to be a+x, which differs from +x under a restrictive umask.
* bin_steam.sh: Only copy .desktop file to desktop if system-wide.
- The .desktop file hard-codes the path to the executable, so it's only suitable for system-wide installations.
* bin_steam.sh: Prefer content that is adjacent to the script.
- Install all the essential bits into $(pkglibdir).
* bin_steam.sh: Exit unsuccessfully if a command fails.
* Add steam and steamdeps symlinks.
- The README says you can run ./steam, so let's make sure you can.
* bin_steamdeps.py: Use python3.
- Python 2 is EOL, and will not be in Ubuntu 20.04. (Fixes steam-for-linux #6869, #6634)
* bin_steamdeps.py: Cope with Ubuntu 14.04 graphics stack backported to 12.04. (Note that the Steam client is no longer supported on 12.04.)
* bin_steamdeps.py: Print diagnostics to stderr.
- If we print them to stdout, which is fully-buffered by default, then they will not necessarily be shown before we actually try to install the packages in question. Instead, print them to stderr, which is line-buffered by default.
* bin_steamdeps.py: Fall back to x-terminal-emulator.
* bin_steamdeps.py: Install libgl1 instead of libgl1-mesa-glx if GLVND.
- libgl1 is the GLVND dispatcher, and replaces the transitional package libgl1-mesa-glx, which is likely to disappear in future versions of Debian/Ubuntu.
* bin_steamdeps.py: Remap package names, not complete dependencies.
- This is a lot simpler, and is all we actually need in practice.
* bin_steamdeps.py: Explicitly depend on amd64 libc and GL stack
* bin_steamdeps.py: Ignore python-apt.
- Steam claims to need python-apt, but as far as anyone can tell, it actually doesn't. (Part of steam-for-linux#6869, #6634)
* debian: Depend on apt instead of python-apt.
- We ask for python-apt, but we don't seem to actually use it; the bin_steamdeps.py script calls out to apt subprocesses instead. (Part of steam-for-linux #6869, #6634)
* debian: Recommend xdg-utils, except on SteamOS (Fixes steam-for-linux #2200)
* debian: Build-Depend on dh-python, with alternative for older distros.
- Building the source package on anything newer than Ubuntu 12.04 'precise' or SteamRT 1 'scout' will need dh-python.
* d/control: Build-depend on perl, for prove(1)
- This is used to run QA checks.
* Move bootstrap and version checks from Makefile into tests/
* check_version.sh: Cope with epoch and/or suffix in package version
* Import steam-devices udev rules from https://github.com/ValveSoftware/steam-devices/ as a subproject:
- add ZeroPlus P4 (hitbox) hidraw device, 0c12:0ef6
* Add brief details of the subprojects and their bug reporting addresses
* d/copyright: Add copyright/licensing details for some open-source parts of this package
* Add some .gitignore files
* Remove references to email@example.com. This mailing list no longer exists.
* d/README.source: Add some documentation for maintainers
* Ship a known-good binary-blob public key, taken from 220.127.116.11.
- We install this into /etc, so it isn't great if it changes every time we rebuild the package. Freeze it at a known-good version, and document how to regenerate it in debian/README.source.
Nice to see it continue to be improved and tweaked to make the experience as easy as possible for Linux gamers using Steam.
Update: The original Twitter post tagging us was removed, after we notified them about the wrong link.