Skip to content

Instantly share code, notes, and snippets.

@grindars
Created December 7, 2012 07:53
Show Gist options
  • Star 49 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • 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"
@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