星期六, 9月 12, 2026

完整移除 pyenv

我是用 homebrew 安裝 pyenv ,之前是用 pyenv 在管理 python 環境,但現在進入 AI 時代,AI 反倒不知道要載入哪個環境。

這邊後來是看到可以用 pipx 來安裝跟管理這種獨立的工具,再加上 uv 管理 python 專案更為方便,為此,乾脆就移除 pyenv 了。

若要先備份每個 python 套件,可以用以下腳本來進行

mkdir -p ~/pyenv-pip-backup

for venv in $(pyenv virtualenvs --bare | grep -v '/'); do
  echo "匯出 $venv ..."
  "$PYENV_ROOT/versions/$venv/bin/pip" freeze > ~/pyenv-pip-backup/"$venv".txt
done

這樣會把所有安裝過的套件備份到 ~/pyenv-pip-backup 目錄下。

然後用 homebrew 移除 pyenv。

brew uninstall pyenv

# 若有安裝 pyenv-virtualenv 這個 plugin(也常透過 brew 裝)
brew uninstall pyenv-virtualenv

再刪除 pyenv 檔案。

rm -rf "$(brew --prefix)/opt/pyenv" 2>/dev/null  # 保險起見清一下 opt 連結(通常不存在)
rm -rf ~/.pyenv

清理環境變數,先找看哪個檔案有

grep -n "pyenv" ~/.zshrc ~/.zprofile ~/.bash_profile ~/.bashrc ~/.profile 2>/dev/null

通常內容是

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

把這些刪除掉。

最後關閉終端機,重新開,讓環境變數重新載入。

開完以後,用以下方式檢驗,照理說應該就都看不到了。

# 確認指令已消失
command -v pyenv
which pyenv

# 應該回傳「找不到指令」或空白

# 確認目錄已清空
ls -la ~/.pyenv 2>&1

# 應顯示 No such file or directory

# 確認 PATH 中已無 pyenv 蹤跡
echo $PATH | tr ':' '\n' | grep pyenv

# 應該沒有任何輸出

# 確認 brew 也不再列出
brew list pyenv 2>&1

星期三, 9月 02, 2026

將 pod 佈署到Control plane上

 一般來說,是無法佈署應用程式到 Control plane 上的,主要是要讓 Control plane 的資源儘量不受到排擠。這是因為 node 用了 annotation/taint 方式來做標記,這樣 scheduler 才知道這些 node 是不能放 pod 的。

在資源不夠的情況下,會想儘可能使用到所有 node 資源。這時候可以透過以下方式來處理

# Source - https://stackoverflow.com/a/72264143
# Posted by TheDHM, modified by community. See post 'Timeline' for change history
# Retrieved 2026-09-02, License - CC BY-SA 4.0

kubectl taint node <master-node> node-role.kubernetes.io/control-plane:NoSchedule-
kubectl taint node <master-node> node-role.kubernetes.io/master:NoSchedule-

要注意的地方,請先用 kubectl describe node來查看 taint 是打上哪一個,再看用哪一個指令。

參考資料:

星期六, 6月 27, 2026

aur-malware-check

 

Detection and analysis tools for the atomic-lockfile supply-chain attack on the Arch User Repository (AUR), generalized to a campaign-based architecture that handles multiple concurrent and historical attack waves (CHAOS RAT 2025, Russian spam packages, and future campaigns declared via campaigns.json).

簡單的說,有人把惡意代碼放到 AUR 已經沒維護的套件裏面,然後上傳 。所以安裝了以後,就被惡意代碼植入了,也因為是 npm 套件的關係,相依性相對複雜,影響層面也較為廣泛。

社群因應此狀況,開了一個 repository 放檢測腳本:https://github.com/lenucksi/aur-malware-check

使用方法如下

# 安裝 uv
pacman -S uv

# 下載代碼
git clone https://github.com/lenucksi/aur-malware-check.git

# 進入目錄
cd aur-malware-check

# 建立 python venv 環境,並安裝模組
uv sync

# 執行
uv run python -m aur_check --refresh --list

其他使用方法可以參考 repository README.md 裡的 quickstart

如果發現了被植入惡意代碼,可以參考 repository 裡的 What to do If I Infected

  • 保留系統:不要關機,改用可信媒體進行鑑識擷取。
  • 重設所有憑證:Discord、GitHub、npm、Slack、Teams、SSH 金鑰、Vault token、雲端供應商金鑰。
  • 檢查持久化:systemctl list-units --type=service --state=running(查看是否有不明服務)。
  • 檢查 eBPF rootkit:ls -la /sys/fs/bpf/hidden_*
  • 使用可信媒體清理:從 Arch ISO 開機,掛載檔案系統,移除惡意的 systemd 單元。
  • 考慮重裝:rootkit 會讓系統失去可信度。
  • 回報發現:https://lists.archlinux.org/archives/list/aur-general@lists.archlinux.org/

星期一, 4月 06, 2026

UxPlay

 之前是使用 RPiPlay ,讓家裡的 linux 桌機可以當作 Macbook Pro 的螢幕鏡像輸出。

去年電腦重灌,忘了裝上去,今年看的時候,發現 RPiPlay 停滯了,改推薦 uxplay 。上網找了文章,看介紹:

安裝方法可參考官方文件:https://github.com/antimof/UxPlay#running-uxplay

在 Ubuntu 24.04 已經內建,所以用 apt 就可以輕鬆安裝

sudo apt install uxplay

使用上很簡單,執行 uxplay 就可以。

uxplay

但我遇到偶爾會有畫面出不來的情況,上網查,說要調整輸出

這邊我是新增了 ~/.config/uxplayrc ,放入以下內容。

vs "autovideosink"
as 0

再重新啟動 uxplay

後續為了方便使用,我是把 uxplay 放到登入自動啟動的設定裡。

helm-dashboard

 可以管理 helm chart 的網頁工具。

https://github.com/komodorio/helm-dashboard

有兩種使用方式

  • 指令列
  • 用 helm 佈署到容器平台

指令列

安裝 (以下假定你已經安裝 helm)

helm plugin install https://github.com/komodorio/helm-dashboard.git

使用

helm dashboard -b --bind=0.0.0.0 -p 8080

這會在 port 8080 啟動一個網頁伺服器,然後就可以用瀏覽器存取了。

用 helm 佈署到容器平台

加入 helm repo

helm repo add komodorio https://helm-charts.komodor.io

更新 helm repo

helm repo update komodorio

取出 chart 可設定的參數

helm show values komodorio/helm-dashboard >values.yaml

修改 values.yaml,主要修改以下內容

  • ingress:我使用 tailscale ,所以 ingress 設為 tailscale
  • service:port 調整為 9090,這改不改沒關係
  • dashboard:因網頁介面內可以直接 upgrade chart,所以把 allowWriteActions 設為 true

ingress:
enabled: true
className: “tailscale”
hosts:
– host: “”
service:
port: 9090
dashboard:
allowWriteActions: true

安裝

helm upgrade --install helm-dashboard komodorio/helm-dashboard \
  --namespace helm-dashboard \
  --create-namespace \
  -f values.yaml

安裝以後,就可以使用 ingress 的 address 登入了。

畫面可參考:https://github.com/komodorio/helm-dashboard/blob/main/images/screenshot.png