Initial commit
This commit is contained in:
commit
6eaba413f7
1 changed files with 138 additions and 0 deletions
138
go.sh
Normal file
138
go.sh
Normal file
|
|
@ -0,0 +1,138 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
DRY_RUN=false
|
||||
|
||||
# Check for dry-run flag
|
||||
if [[ "$1" == "--dry-run" ]]; then
|
||||
DRY_RUN=true
|
||||
echo "Running in dry-run mode. No changes will be made."
|
||||
fi
|
||||
|
||||
run_cmd() {
|
||||
# Run the command or just print it if dry-run
|
||||
if [ "$DRY_RUN" = true ]; then
|
||||
echo "[DRY-RUN] $*"
|
||||
else
|
||||
eval "$@"
|
||||
fi
|
||||
}
|
||||
|
||||
echo "Detecting Linux distribution..."
|
||||
|
||||
# Detect distro
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
DISTRO=$ID
|
||||
VERSION=$VERSION_ID
|
||||
else
|
||||
echo "Cannot detect Linux distribution."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect if immutable (rpm-ostree or SteamOS readonly)
|
||||
IMMUTABLE=false
|
||||
IS_STEAMOS=false
|
||||
if command -v rpm-ostree &>/dev/null; then
|
||||
IMMUTABLE=true
|
||||
elif command -v steamos-readonly &>/dev/null; then
|
||||
IMMUTABLE=true
|
||||
IS_STEAMOS=true
|
||||
fi
|
||||
|
||||
echo "Distribution detected: $DISTRO $VERSION"
|
||||
echo "Immutable system: $IMMUTABLE"
|
||||
|
||||
# -----------------------------
|
||||
# Debian/Ubuntu installer
|
||||
# -----------------------------
|
||||
install_debian() {
|
||||
echo "Adding i386 architecture..."
|
||||
run_cmd "sudo dpkg --add-architecture i386"
|
||||
run_cmd "sudo apt update"
|
||||
|
||||
echo "Installing 32-bit runtime libraries..."
|
||||
run_cmd "sudo apt install -y libc6:i386 libncurses5:i386 libstdc++6:i386"
|
||||
|
||||
echo "Installing 32-bit development libraries..."
|
||||
run_cmd "sudo apt install -y gcc-multilib g++-multilib"
|
||||
}
|
||||
|
||||
# -----------------------------
|
||||
# Fedora/Bazzite installer
|
||||
# -----------------------------
|
||||
install_fedora() {
|
||||
if [ "$IMMUTABLE" = true ]; then
|
||||
echo "Immutable Fedora/Bazzite detected."
|
||||
echo "Layering 32-bit libraries via rpm-ostree..."
|
||||
run_cmd "sudo rpm-ostree install glibc.i686 libstdc++.i686 zlib.i686 ncurses-libs.i686 glibc-devel.i686 libstdc++-devel.i686"
|
||||
echo "Reboot required for layered packages to take effect."
|
||||
else
|
||||
echo "Installing 32-bit libraries via dnf..."
|
||||
run_cmd "sudo dnf install -y glibc.i686 libstdc++.i686 zlib.i686 ncurses-libs.i686"
|
||||
run_cmd "sudo dnf install -y gcc gcc-c++ glibc-devel.i686 libstdc++-devel.i686"
|
||||
fi
|
||||
}
|
||||
|
||||
# -----------------------------
|
||||
# Arch/Manjaro/SteamOS 3+ installer
|
||||
# -----------------------------
|
||||
install_arch() {
|
||||
if [ "$IS_STEAMOS" = true ]; then
|
||||
echo "Immutable SteamOS 3+ detected."
|
||||
|
||||
read -p "Do you want to temporarily disable read-only mode to install 32-bit libraries? (y/N): " RESP
|
||||
if [[ "$RESP" =~ ^[Yy]$ ]]; then
|
||||
echo "Disabling read-only mode..."
|
||||
run_cmd "sudo steamos-readonly disable"
|
||||
|
||||
echo "Installing 32-bit libraries..."
|
||||
run_cmd "sudo pacman -S --noconfirm lib32-glibc lib32-gcc-libs lib32-zlib gcc-multilib"
|
||||
|
||||
echo "Re-enabling read-only mode..."
|
||||
run_cmd "sudo steamos-readonly enable"
|
||||
|
||||
echo "32-bit libraries installed successfully!"
|
||||
else
|
||||
echo "Operation canceled. You can manually disable read-only mode later and rerun the script."
|
||||
fi
|
||||
return
|
||||
fi
|
||||
|
||||
# Regular Arch / Manjaro
|
||||
if ! grep -q '^\[multilib\]' /etc/pacman.conf; then
|
||||
echo "Enabling multilib repository..."
|
||||
run_cmd "sudo sed -i '/\[multilib\]/,/Include/s/^#//' /etc/pacman.conf"
|
||||
run_cmd "sudo pacman -Syu --noconfirm"
|
||||
fi
|
||||
|
||||
echo "Installing 32-bit runtime libraries..."
|
||||
run_cmd "sudo pacman -S --noconfirm lib32-glibc lib32-gcc-libs lib32-zlib"
|
||||
|
||||
echo "Installing 32-bit development libraries..."
|
||||
run_cmd "sudo pacman -S --noconfirm gcc-multilib"
|
||||
}
|
||||
|
||||
# -----------------------------
|
||||
# Execute per detected distro
|
||||
# -----------------------------
|
||||
case "$DISTRO" in
|
||||
ubuntu|debian)
|
||||
echo "Installing 32-bit libraries for Debian/Ubuntu..."
|
||||
install_debian
|
||||
;;
|
||||
fedora|bazzite)
|
||||
echo "Installing 32-bit libraries for Fedora/Bazzite..."
|
||||
install_fedora
|
||||
;;
|
||||
arch|manjaro)
|
||||
echo "Installing 32-bit libraries for Arch/Manjaro/SteamOS 3+..."
|
||||
install_arch
|
||||
;;
|
||||
*)
|
||||
echo "Unsupported distribution: $DISTRO"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
echo "32-bit multilib support installation complete!"
|
||||
Loading…
Add table
Add a link
Reference in a new issue