Skip to content

Instantly share code, notes, and snippets.

@grindars
Created December 7, 2012 07:53
Show Gist options
  • Save grindars/4231563 to your computer and use it in GitHub Desktop.
Save grindars/4231563 to your computer and use it in GitHub Desktop.
Steam installer for Debian
#!/bin/bash
#
# Steam installer for Debian wheezy (32- and 64-bit)
#
# Place into empty directory and run.
#
download() {
local url="$1"
local filename="$(basename "$url")"
if [ ! -f "$filename" ]; then
wget -c "$url" -O "$filename.part"
mv "$filename.part" "$filename"
fi
}
package() {
local url="$1"
local target="$2"
download "$url"
mkdir -p "$target"
ar p "$(basename "$url")" data.tar.gz | tar xz -C "$target"
}
set -e
package http://media.steampowered.com/client/installer/steam.deb "${PWD}/tree"
STEAMPACKAGE="steam"
STEAMCONFIG="${HOME}/.steam"
STEAMDATALINK="${STEAMCONFIG}/${STEAMCONFIG}"
STEAMBOOTSTRAP="steam.sh"
LAUNCHSTEAMDIR="$(readlink -eq "${STEAMDATALINK}" || echo)"
LAUNCHSTEAMPLATFORM="ubuntu12_32"
LAUNCHSTEAMBOOTSTRAPFILE="${PWD}/tree/usr/lib/steam/bootstraplinux_${LAUNCHSTEAMPLATFORM}.tar.xz"
STEAM_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
CLASSICSTEAMDIR="$HOME/Steam"
DEFAULTSTEAMDIR="$STEAM_DATA_HOME/Steam"
STEAMDIR="${DEFAULTSTEAMDIR}"
if [ ! -d "$STEAMCONFIG" ]; then
mkdir "$STEAMCONFIG"
fi
echo "Setting up Steam content in $STEAMDIR"
mkdir -p "${STEAMDIR}"
tar xJf "${LAUNCHSTEAMBOOTSTRAPFILE}" -C "${STEAMDIR}"
cat > "${STEAMDIR}/steam_on_debian.sh" <<EOF
#!/bin/sh
STEAMDIR="\$(readlink -f "\$(dirname "\$0")")"
if [ -z "\${LD_LIBRARY_PATH}" ]; then
LD_LIBRARY_PATH="\${STEAMDIR}/compat_libraries/lib/i386-linux-gnu"
else
LD_LIBRARY_PATH="\${STEAMDIR}/compat_libraries/lib/i386-linux-gnu:\${LD_LIBRARY_PATH}"
fi
export LD_LIBRARY_PATH
exec "\${STEAMDIR}/steam.sh" "\$@"
EOF
chmod +x "${STEAMDIR}/steam_on_debian.sh"
echo "Installing Ubuntu packages"
mkdir -p "${STEAMDIR}/compat_libraries"
package http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.15-0ubuntu10.2_i386.deb "${STEAMDIR}/compat_libraries"
echo "Installing desktop files"
mkdir -p "${STEAM_DATA_HOME}/applications"
sed "s!/usr/bin/steam!${STEAMDIR}/steam_on_debian.sh!" tree/usr/share/applications/steam.desktop > "${STEAM_DATA_HOME}/applications/steam.desktop"
cp -R tree/usr/share/icons "${STEAM_DATA_HOME}"
echo "Adding Steam to PATH"
MAGIC_LINE="[[ -f \"${STEAMDIR}/setup_debian_environment.sh\" ]] && source \"${STEAMDIR}/setup_debian_environment.sh\""
cat > "${STEAMDIR}/setup_debian_environment.sh" <<EOF
if ! which steam > /dev/null 2>&1; then
PATH="${STEAMDIR}/debian_bin:${PATH}"
export PATH
fi
EOF
mkdir -p "${STEAMDIR}/debian_bin"
cat > "${STEAMDIR}/debian_bin/steam" <<EOF
#!/bin/sh
exec "${STEAMDIR}/steam_on_debian.sh" "$@"
EOF
chmod +x "${STEAMDIR}/debian_bin/steam"
if ! grep -qxF "${MAGIC_LINE}" "${HOME}/.bashrc"; then
echo "$MAGIC_LINE" >> "${HOME}/.bashrc"
echo
echo "Steam was added to your profile. Please relogin or source ~/.bashrc."
echo
fi
echo "To uninstall:"
echo "rm -rf ${STEAM_DIR}"
echo "rm -f everything steamish from ${STEAM_DATA_HOME}/applications"
echo "remove ${MAGIC_LINE} from ${HOME}/.bashrc"
@kalos
Copy link

kalos commented Jan 25, 2013

Please could you specify the needed dependecies?

Thank you!

@pkern
Copy link

pkern commented Jan 28, 2013

Using a bang character in the sed expression makes it unnecessarily hard to copy'n'paste the script into a shell. Thanks, though.

@AltGr
Copy link

AltGr commented Feb 3, 2013

Thanks a lot, exactly what I was looking for !

Copy link

ghost commented Feb 3, 2013

well it installed ok, then I started steam it started the update, then I get a Fatal Error: Failed to lead steamui.so

→ steam
Running Steam on debian 7.0
STEAM_RUNTIME is enabled automatically on debian
Installing breakpad exception handler for appid(steam)/version(1359765526_client)
Installing breakpad exception handler for appid(steam)/version(1359765526_client)

@dracc
Copy link

dracc commented Feb 11, 2013

Line 108, wouldn't "${STEAMDIR}" instead of "${STEAM_DIR}" be neat? :D

@vkargov
Copy link

vkargov commented Feb 14, 2013

Thank you very much for this, good sir! I can confirm that it's working on Wheezy.
One small problem I've noticed is that the script does not add a newline character before MAGIC_LINE in .bashrc which is a problem if you don't have an empty line at its end.

Copy link

ghost commented Feb 15, 2013

Dependencies are: apt-get install libgl1-mesa-glx:i386
libgl1-mesa-dri:i386 libcurl3-gnutls:i386 libogg0:i386
libpixman-1-0:i386 libsdl1.2debian:i386 libtheora0:i386
libvorbis0a:i386 libvorbisenc2:i386 libvorbisfile3:i386
libasound2:i386 libc6:i386 libcairo2:i386 libcups2:i386
libdbus-1-3:i386 libfontconfig1:i386 libfreetype6:i386
libgcc1:i386 libgcrypt11:i386 libgdk-pixbuf2.0-0:i386
libglib2.0-0:i386 libgtk2.0-0:i386 libnspr4:i386
libnss3:i386 libopenal1:i386 libpango1.0-0:i386
libpng12-0:i386 libpulse0:i386 libstdc++6:i386
libx11-6:i386 libxext6:i386 libxfixes3:i386 libxi6:i386
libxrandr2:i386 libxrender1:i386 zlib1g:i386

From http://steamcommunity.com/app/221410/discussions/1/846939071205530634/

@DarkFenX
Copy link

With latest steam, i'm getting following error:

Couldn't start bootstrap and couldn't reinstall from /usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz. Please contact technical support.

@robn
Copy link

robn commented Feb 20, 2013

Works great, thanks! 👍

@vacri
Copy link

vacri commented Mar 17, 2013

Worked like a charm, plus a learned a couple of new bash tricks, thanks!

@NovenTheHero
Copy link

Getting this:

Couldn't start bootstrap and couldn't reinstall from /usr/lib/steam/bootstraplinux_ubuntu12_32.tar.xz. Please contact technical support.

@orodley
Copy link

orodley commented Apr 25, 2013

Worked great for me, one issue though:

on line 85:

    PATH="${STEAMDIR}/debian_bin:${PATH}"

The ${PATH} in that string expands to your PATH at the time steam_bootstrap.sh was run. This means that if you later try to add a directory to your path (in your .profile or .bashrc or whatever), it gets clobbered by this line. It'd be nicer if this line was instead:

    PATH="${STEAMDER}/debian_bin:\$PATH"

which will expand to the users PATH at the time the setup_debian_environment.sh script is sourced, rather than when steam was first installed, preventing this issue

Thanks.

@nicsuzor
Copy link

Brilliant, thanks a lot for this!

@stuartf
Copy link

stuartf commented Jun 11, 2013

Debian is now packaging Steam for testing and unstable: http://packages.qa.debian.org/s/steam.html

@odkq
Copy link

odkq commented Jul 12, 2013

If, after running this and sourcing .bashrc, running 'steam' you get this error:

Error: You are missing the following 32-bit libraries, and Steam may not run:
libGL.so.1

Setup multiarch (as root)

dpkg --add-architecture i386

Install mesa-glx for 32 bits (as root)

apt-get install libgl1-mesa-glx:i386

Most probably libGL.so.1 is at /usr/lib/mesa-diverted/i386-linux-gnu/ now, so LD_LIBRARY_PATH that before running steam

$ LD_LIBRARY_PATH=/usr/lib/mesa-diverted/i386-linux-gnu/ steam

Cheers,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment