2024年5月17日 星期五

下載 Bats 並安裝到用戶的暫存目錄 (以免安裝的方式啟動)

下載 Bats 並安裝到用戶的暫存目錄 (以免安裝的方式啟動)

完整的流程,從下載Bats到安裝到用戶的暫存目錄,並臨時設置環境變數來使用它。


1. 下載Bats

首先,從GitHub下載Bats v1.11.0的源碼壓縮包:

wget https://github.com/bats-core/bats-core/archive/refs/tags/v1.11.0.tar.gz -O bats-core-1.11.0.tar.gz

解壓縮下載的檔案:

tar -xzf bats-core-1.11.0.tar.gz

進入解壓縮的目錄:

cd bats-core-1.11.0


2. 安裝腳本

原作寫的安裝腳本 bats-core/install.sh 下面是腳本的解析並追加了提示如何添加到環境變數的信息,你也可以直接執行原裝的就好沒有改動。


在解壓縮的目錄中,創建一個名為 install_bats.sh 的文件,並將以下內容粘貼到文件中:-

#!/usr/bin/env bash
set -e

BATS_ROOT="${0%/*}" # 腳本所在目錄的路徑
PREFIX="${1%/}"     # 安裝前綴路徑 (移除路徑結尾的斜線)
LIBDIR="${2:-lib}"  # 庫文件目錄名,默認為 "lib"

# 如果沒有提供安裝路徑,則輸出使用說明到標準錯誤。
if [[ -z "$PREFIX" ]]; then
  printf '%s\n' \
    "usage: $0 <prefix> [base_libdir]" \
    "  e.g. $0 /usr/local" \
    "       $0 /usr/local lib64" >&2
  exit 1
fi

# 使用 install 命令來創建目錄結構並設置適當的權限。
install -d -m 755 "$PREFIX"/{bin,libexec/bats-core,"${LIBDIR}"/bats-core,share/man/man{1,7}}

# 安裝二進制文件、庫和手冊頁。
install -m 755 "$BATS_ROOT/bin"/* "$PREFIX/bin"
install -m 755 "$BATS_ROOT/libexec/bats-core"/* "$PREFIX/libexec/bats-core"
install -m 755 "$BATS_ROOT/lib/bats-core"/* "$PREFIX/${LIBDIR}/bats-core"
install -m 644 "$BATS_ROOT/man/bats.1" "$PREFIX/share/man/man1"
install -m 644 "$BATS_ROOT/man/bats.7" "$PREFIX/share/man/man7"

# 讀取安裝後的 bats 執行文件,修改庫目錄變量後重新寫入。
read -rd '' BATS_EXE_CONTENTS <"$PREFIX/bin/bats" || true
BATS_EXE_CONTENTS=${BATS_EXE_CONTENTS/"BATS_BASE_LIBDIR=lib"/"BATS_BASE_LIBDIR=${LIBDIR}"}
printf "%s" "$BATS_EXE_CONTENTS" > "$PREFIX/bin/bats"

# 輸出安裝完成的訊息
echo "Installed Bats to $PREFIX/bin/bats"

# 提示用戶如何添加 BATS 到環境變數
echo "To temporarily add Bats to your PATH, run:"
echo "export PATH=\"\$PATH:$PREFIX/bin\""


給安裝腳本賦予執行權限:

chmod +x install_bats.sh

執行安裝腳本,將Bats安裝到 ~/tmp/bats 目錄中:

./install_bats.sh ~/tmp/bats


3. 臨時設置環境變數

按照腳本的提示,設置環境變數以臨時使用Bats:

export PATH="~/tmp/bats/bin:$PATH"

這裡的路徑記得要根據安裝的位置輸入,然後這只是臨時的關閉終端機就沒有了


4. 驗證安裝

確認Bats已成功安裝並可用:

bats --version


總結

以上步驟將Bats安裝到用戶的暫存目錄 /tmp/bats,並通過臨時設置環境變數使其可用。這樣可以在不影響系統的情況下使用Bats進行測試。

沒有留言:

張貼留言