(install.sh, merlin_worker.zsh): enhance installation script with fallback methods for eza and zoxide, and add proxy configuration to zsh environment

This commit is contained in:
Frank Qing
2025-05-28 03:28:01 +08:00
parent 0492b6a053
commit 68625d2e21
2 changed files with 78 additions and 96 deletions

View File

@@ -42,125 +42,98 @@ detect_os() {
fi
}
# Function to install packages
# Helper: install eza if the package manager couldn't provide it
install_eza_fallback() {
local os=$(detect_os)
echo "Attempting fallback installation of eza..."
case $os in
ubuntu|debian)
# Ensure gpg exists and add the community repo
command -v gpg &> /dev/null || sudo apt-get install -y gpg
sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | \
sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | \
sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt-get update
sudo apt-get install -y eza
;;
fedora)
sudo dnf install -y eza || {
command -v cargo &> /dev/null && cargo install eza
}
;;
centos|rhel)
if command -v cargo &> /dev/null; then
cargo install eza
else
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo install -m 755 eza /usr/local/bin/eza
fi
;;
*)
wget -qO- https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo install -m 755 eza /usr/local/bin/eza
;;
esac
}
# Helper: install zoxide if the package manager couldn't provide it
install_zoxide_fallback() {
local os=$(detect_os)
echo "Attempting fallback installation of zoxide..."
case $os in
fedora)
sudo dnf install -y zoxide || curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
;;
centos|rhel)
if command -v dnf &> /dev/null && sudo dnf install -y zoxide; then :; else
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
;;
*)
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
;;
esac
}
# Core: install required packages via the preferred package manager, then fall back where needed
install_packages() {
local os=$(detect_os)
local base_packages="zsh git wget fontconfig eza zoxide"
case $os in
macos)
if ! command -v brew &> /dev/null; then
echo "Homebrew is not installed. Installing Homebrew..."
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
brew install zsh git wget fontconfig eza zoxide
brew install ${base_packages}
;;
ubuntu|debian)
sudo apt-get update
sudo apt-get install -y zsh git wget fontconfig
# Install eza if not already installed
if ! command -v eza &> /dev/null; then
echo "Installing eza..."
# Install GPG if not present
if ! command -v gpg &> /dev/null; then
sudo apt install -y gpg
fi
# Add eza repository and install
sudo mkdir -p /etc/apt/keyrings
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
sudo apt update
sudo apt install -y eza
fi
# Install zoxide if not already installed
if ! command -v zoxide &> /dev/null; then
echo "Installing zoxide..."
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
sudo apt-get install -y ${base_packages}
;;
fedora)
sudo dnf install -y zsh git wget fontconfig
# Install eza if not already installed
if ! command -v eza &> /dev/null; then
echo "Installing eza..."
# For Fedora versions prior to 42
if ! sudo dnf install -y eza; then
echo "eza not available in official repository, installing from cargo..."
if command -v cargo &> /dev/null; then
cargo install eza
else
echo "cargo not found. Please install Rust/cargo first or install eza manually."
fi
fi
fi
# Install zoxide if not already installed
if ! command -v zoxide &> /dev/null; then
echo "Installing zoxide..."
# zoxide is available in Fedora 32+
if ! sudo dnf install -y zoxide; then
echo "zoxide not available in official repository, installing from install script..."
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
fi
sudo dnf install -y ${base_packages}
;;
centos|rhel)
sudo yum install -y zsh git wget fontconfig
# Install eza if not already installed
if ! command -v eza &> /dev/null; then
echo "Installing eza..."
# Install from cargo as primary method
if command -v cargo &> /dev/null; then
cargo install eza
else
echo "cargo not found. Installing from binary..."
wget -c https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz -O - | tar xz
sudo chmod +x eza
sudo chown root:root eza
sudo mv eza /usr/local/bin/eza
fi
fi
# Install zoxide if not already installed
if ! command -v zoxide &> /dev/null; then
echo "Installing zoxide..."
# Try dnf first (RHEL 8+ and CentOS Stream have zoxide in EPEL), fallback to install script
if ! (command -v dnf &> /dev/null && sudo dnf install -y zoxide); then
echo "Installing zoxide from install script..."
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
fi
sudo yum install -y ${base_packages}
;;
arch|manjaro)
sudo pacman -Syu --noconfirm zsh git wget fontconfig eza zoxide
sudo pacman -Syu --noconfirm ${base_packages}
;;
*)
echo "Unsupported operating system. Please install zsh, git, wget, and fontconfig manually."
# Try to install eza from binary for unsupported systems
if ! command -v eza &> /dev/null; then
echo "Installing eza from binary..."
wget -c https://github.com/eza-community/eza/releases/latest/download/eza_x86_64-unknown-linux-gnu.tar.gz -O - | tar xz
sudo chmod +x eza
sudo chown root:root eza
sudo mv eza /usr/local/bin/eza
fi
# Try to install zoxide for unsupported systems
if ! command -v zoxide &> /dev/null; then
echo "Installing zoxide from install script..."
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
fi
exit 1
echo "Unsupported operating system. Please install ${base_packages} manually."
;;
esac
# Fallbacks for any tools that are still missing after the package-manager step
command -v eza &> /dev/null || install_eza_fallback
command -v zoxide &> /dev/null || install_zoxide_fallback
}
# Check if required packages are installed, if not, install them
if command -v zsh &> /dev/null && command -v git &> /dev/null && command -v wget &> /dev/null && command -v fc-cache &> /dev/null && command -v eza &> /dev/null && command -v zoxide &> /dev/null; then
echo -e "ZSH, Git, wget, fontconfig, eza, and zoxide are already installed\n"

View File

@@ -15,3 +15,12 @@ export PYSPARK_PYTHON=/usr/bin/python3
export PYTHONPATH=::/opt/tiger/arnold_toolbox:/opt/tiger/rh2:/opt/tiger/rh2:/opt/tiger/pyutil:/python:/python/lib/py4j-0.10.9-src.zip
export PATH=/opt/tiger/arnold/arnold_entrypoint/debugger/cloudide/release-standalone/bin/remote-cli:$PATH
export PYTHONPATH=$PYTHONPATH:/opt/tiger/pyutil:/opt/tiger/rh2:/opt/tiger/arnold_toolbox
# proxy
export HF_ENDPOINT=http://huggingface-proxy-sg.byted.org
export http_proxy=http://sys-proxy-rd-relay.byted.org:8118
export https_proxy=http://sys-proxy-rd-relay.byted.org:8118
export no_proxy=byted.org
alias proxy_on='export http_proxy=http://sys-proxy-rd-relay.byted.org:8118; export https_proxy=http://sys-proxy-rd-relay.byted.org:8118; export no_proxy=byted.org'
alias proxy_off='unset http_proxy; unset https_proxy; unset no_proxy'