steamer - install STEAM 'à la brute'

Good people of the Realm,

Everyone knows I have a perverted mind and though STEAM for Linux doesn’t support the only game I like from Valve (Day of Defeat: Source), I’ve decided to take a look on how to install STEAM without the ******** from Valve.

What people should know about this script:

  1. This script installs the game on $HOME/.steam_install; this is intended for my personal usage and to keep the STEAM install only available to my user and not shared with other people who might have access to the machine. This allows proper maintenance and some security to the files considering that they are shielded by a natural 0700 on /home/$USER.
  2. I don’t install the 2 icons on /usr/share/pixmaps because I use the Faience icon theme which has a way nicer icon for Steam and saves me some lines to enter root password during the install.
  3. I don’t install .desktop links/files because they are part of a broken standard in my opinion, XDG should be banned!

Requirements:

a) Python
b) Internet Connection (around 179Mb, 2.6Mb from the .deb package and 175 of downloadable bootstrap files)

AFTER INSTALL

c) Since I’ve obliterated the wrapper provided by valve, you need to get $HOME/.steam_install added to the path, this can be done with:

 $ echo "export PATH=\"\$PATH:\$HOME/.steam_install\"" >> ~/.bashrc 

d) For commodity create a symbolic link to ‘steam’ pointing to ‘steam.sh’

 $ ln -s $HOME/.steam_install/steam.sh $HOME/.steam_install/steam 

e) relog
f) if you want a launcher, create it manually :slight_smile:

Get you STEAM show running:

 $ wget -c https://raw.github.com/ketheriel/steamer/master/steamer
$ chmod 0755 steamer
$ ./steamer

At some point if you have the dependencies installed (you might need steam dependencies) the script will trigger a bootstrap update, YOU MUST ALLOW THE UPDATE TO FINISH and then close the window when the Steam login window appears. Sure I could multithread the script for this to run, but I’d rather keep this way to force people to this properly.

Feedback is most welcome so I can improve this stuff and package it. The launcher doesn’t concern me as modern desktop users can do this easilly, and since I opted for a install for every user and have it installed inside users homes, they are somehow unecessary on system space :slight_smile: The PATH I will make the script add it in a future version alongside with the symbolic link! For now, it’s ok…

In the future I will also add a small piece of code to hook up to zypper and download the dependencies, for now, I want feedback to improve core functionality so later I can split the script into a small library with functions to manage steam, and in the long run I would like this to be a wrapper to manage steam and steam servers :slight_smile:

Hope this helps…

PS: For the dependencies check other threads about this.

By the way, a small update, don’t create the symbolic link :slight_smile: there’s a directory already named steam, so instead, just call steam by ‘steam.sh’

Just a small update for anyone interested; People familiar with ID games (which was always Linux friendly) are used to a central installation, then the game manages internally a $HOME/.doom3 (ex for doom3) in which users can override pretty much all engine/contents defaults.

VALVE seems to do things differently, they basically use two wrappers (/usr/bin/steam and INSTALL_DIR/steam.sh) to do a series of checks; I haven’t looked much into them and superficially it seems that /usr/bin/steam checks if there’s an installation, if not it unpacks a bootstrap package there and calls steam.sh (which comes in the bootstrap package). steam.sh in his turn checks if the install needs to be boostrapped (download ~175Mb and unpack them there) and bootstrapps it or launches the game.

Users end up calling ‘steam’ (wrapper) either by command line or through the .desktop file.

The script above was reworked and should be placed in /usr/bin/; then if you want a new install just run with --install, otherwise just run it. A lot can still be improved. There’s also on github a desktop file. So far it doesn’t mess with steam install files, so it can be done in parallel. Also the script now installs in $HOME/.steam.

Not perfect, but it seems to work fairly nice. No more need for adding PATH’s or any other useless stuff now.

There is a steam package in Games repo built on 13th

steam - Installer for Valve's digital software distribution service

You know, this are different things; the one you mention is broken with unresolvable dependencies for 12.3, that’'s point one. Furthermore, the current package you point has a few issues, starting with depending one two valve wrappers.

Now what people should understand about STEAM for Linux:

  1. Unlike ID Software which you can install on a system directory (ex: /usr/local/games), and then the game itself creates a $HOME/.gameID which overrides the default install, allowing users to share the main files and override any setting or content… VALVE doesn’t work like this. What valve does is installing a few files, some infra-structure (like the wrappers, icons, desktop files) and a bootstrap package. When a user calls ‘steam’ (which is a shell wrapper) it checks if there is an installation, if there is one it calls another wrapper (steam.sh, bundled with the bootstrap package), else it installs the bootstrap in users home and bootstraps.

Now, this package tries to replicate this behavior (a silly one in my opinion); my script just jumps ahead of the silly valve wrappers, and installs the bootstrap. I’ve modified it so it can also run the game.

Furthermore, I want to take it a little further and also prepare it for other things, ex:

  1. Identify the system and install all the required runtime dependencies (which valve currently doesnt do)
  2. Perform backups (local or remote);
  3. Manage game servers (daemonize processes and watch them)

At least for start; This is meant to work in any distribution, not just opensuse. I’ve moved the project away to Google Code (github sucks a lot) and renamed it to exhalo (steam in latin).

Thank you very much for sharing :slight_smile: I’ve bookmarked this page for personal reference.

I’ve done a massive update and splitted the core into a small python module; Also added infra-structure files (.desktop, icons, etc), so now it’s far more friendly.
I’m going to start working now on the server management code for this for one or two games and hopefully with a small DJANGO module to manage/configure servers… still unclear to me how long this will take :slight_smile:

The known dependencies are now also being identified, though I haven’t added code to install them, but it will happen soon.