mise

来自Gea-Suan Lin's Wiki
跳转到导航 跳转到搜索

mise是一套支援多程式语言的版本管理软体。

简介

mise这类软体避免了需要针对各程式语言实作安装对应的version manager。另外mise除了自行实作的部分外,也支援了asdf生态系的设定,所以asdf可以安装的程式语言,在mise上也可以安装。

安装

DebianUbuntu上可以透过官方的APT Repository安装:

wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null; echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list; sudo apt update; sudo apt install -y mise; sudo apt clean

ARM64的平台要使用arm64

wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | sudo tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null; echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=arm64] https://mise.jdx.dev/deb stable main" | sudo tee /etc/apt/sources.list.d/mise.list; sudo apt update; sudo apt install -y mise; sudo apt clean

但Raspberry Pi目前需要手动安装,这是32-bit版本:

cd /usr/bin; sudo wget https://github.com/jdx/mise/releases/download/v2024.10.9/mise-v2024.10.9-linux-armv7; sudo chmod 755 mise-v2024.10.9-linux-armv7; sudo ln -sf mise-v2024.10.9-linux-armv7 mise

设定

在自己的~/.bashrc里面设定启动:

#
if command -v mise > /dev/null; then
    eval "$(mise activate bash)"
fi

zsh也可以设定对应的值:

#
if command -v mise > /dev/null; then
    eval "$(mise activate zsh)"
fi

其他设定

另外,由于使用预先编好的Python binary可能会有PyPI套件无法安装的问题(像是uwsgi[1]),这边可以设定要求mise透过自己编来解决:

mise settings set python.compile 1

使用

一些基本的操作:

mise ls

mise use -g python@3.12
mise install python@3.9

mise use -g node@lts

常见的套件会有binary直接下载使用,但比较旧的版本(像是Python 2.7)就有可能会在本机上编译,这时候可能会遇到因为缺少套件而编译失败的问题,需要查看log补上对应的套件再安装。

升级

mise upgrade

cron

在cron job里面使用的话,目前的解法会用shims:

eval $(mise activate --shims)

相关连结

参考资料

外部连结