From 68625d2e216f4248258691446129c8f6d46f7e48 Mon Sep 17 00:00:00 2001 From: Frank Qing Date: Wed, 28 May 2025 03:28:01 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20(install.sh,=20merlin=5Fworker.zsh)?= =?UTF-8?q?:=20enhance=20installation=20script=20with=20fallback=20methods?= =?UTF-8?q?=20for=20eza=20and=20zoxide,=20and=20add=20proxy=20configuratio?= =?UTF-8?q?n=20to=20zsh=20environment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 165 +++++++++++++++++----------------------- zshrc/merlin_worker.zsh | 9 +++ 2 files changed, 78 insertions(+), 96 deletions(-) diff --git a/install.sh b/install.sh index 3fb0e7d..ee8b0f7 100755 --- a/install.sh +++ b/install.sh @@ -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" diff --git a/zshrc/merlin_worker.zsh b/zshrc/merlin_worker.zsh index 2f84d4b..3db54e5 100644 --- a/zshrc/merlin_worker.zsh +++ b/zshrc/merlin_worker.zsh @@ -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'