Mole 脚本安装如何改用 --prefix 装到 ~/.local/bin 并让 mo update 免管理员密码?
2026/9/12 7:55:22 网站建设 项目流程

Mole 脚本安装如何改用 --prefix 装到 ~/.local/bin 并让 mo update 免管理员密码?

【免费下载链接】Mole🐹 Clean, uninstall, analyze, optimize, and monitor your Mac. Free open-source CLI, plus a native Mac app.项目地址: https://gitcode.com/GitHub_Trending/mole15/Mole

Mole 是 macOS 上的命令行清理/优化工具,可以用brew install mole安装,也可以直接用官方脚本安装。脚本安装有一个默认行为:安装目录是/usr/local/bin,写这个目录时 macOS 会要求输入管理员密码,之后的mo update也可能再次索要密码。如果你不希望每次更新都输密码,可以把 Mole 装进用户自己拥有的目录,README.md 给出的做法就是--prefix "$HOME/.local/bin":二进制文件落在~/.local/binmo update更新的是你实际调用的那份安装,由于目录归当前用户所有,整个更新过程不再触发 sudo。适用环境是 macOS(install.sh 开头就检查OSTYPE,非 macOS 直接报错退出),需要网络访问 GitHub 以下载源码或二进制。

准备条件

  • macOS,且系统里有curl(安装脚本用它下载源码;没有curl时会回退到git clone)。

  • 确认当前机器没有通过 Homebrew 装着 Mole。install.sh 的check_requirements会检查 Cellar:如果检测到mole是 Homebrew 软链,脚本不会继续安装,而是打印两个选项后退出:

    Mole is installed via Homebrew Choose one: 1. Update via Homebrew: brew upgrade mole 2. Switch to manual: brew uninstall --force mole then re-run this

    要改用脚本安装,先执行brew uninstall --force mole再重跑安装命令。

安装到 ~/.local/bin

按 README.md “Other install options” 给出的顺序执行,三条命令分别负责:建目录、装程序、把目录加进当前终端的PATH

mkdir -p "$HOME/.local/bin" curl -fsSL https://raw.githubusercontent.com/tw93/mole/main/install.sh | bash -s -- --prefix "$HOME/.local/bin" export PATH="$HOME/.local/bin:$PATH"

几点说明:

  • --prefix是 install.sh 支持的参数,它把默认值INSTALL_DIR="/usr/local/bin"替换成你指定的目录,momole两个可执行文件、以及analyzestatus等辅助二进制就都装在这个前缀下(配置与库文件放在~/.config/mole)。

  • 脚本安装默认拉取最新 release 的源码包并做 SHA256 校验;如果想在安装时指定某个 release 或开发分支,可以在bash -s --后面追加版本参数,例如bash -s -- 1.51.0(任意 tag,前导V可省)或bash -s -- main(未发布的 main 分支,README 明确提醒 “expect rough edges”)。

  • 安装脚本会自检:它要求安装目录的父目录存在,否则报Parent directory ... does not exist退出;安装完成后还会执行一次带超时的--help探测,版本对不上就判定为安装失败。

  • 如果~/.local/bin不在PATH里,安装结束时脚本会自己打印提醒,例如:

    $HOME/.local/bin is not in your PATH To use mole from anywhere, add this line to your shell profile: export PATH="$HOME/.local/bin:$PATH" For example, add it to ~/.zshrc or ~/.bash_profile

    第三行的export只对当前终端生效;要让之后打开的终端都能用mo,把同一行export写进~/.zshrc(或你的 shell profile)即可。

为什么 mo update 不再要密码

mo update的更新逻辑在 lib/manage/update.sh 里。它会先解析你实际调用的那个mole脚本的路径,取其所在目录作为安装目录,再用update_install_requires_sudo判断是否要 sudo——该函数和 install.sh 的needs_sudo是同一套标准:安装目录存在且当前用户可写,就不需要管理员权限。~/.local/bin是用户自建目录,可写,所以mo update下载新版并原子替换文件时不会再弹出密码框。README 对此的表述是:“Mole updates the installation you invoked, so it keeps using this directory.”(Mole 更新的是你调用的那份安装,因此会继续使用该目录。)

同时注意边界:免密码只针对 Mole 自身的安装/更新。README 明确说 “Commands that change system-owned files may still request administrator access”——mo cleanmo optimize这类真正去清理系统所有文件的功能,需要管理员权限时仍会要求授权。

验证

按顺序执行以下检查:

command -v mo

输出应为~/.local/bin/mo(或等价的绝对路径),说明 shell 找到的是你刚装的前缀,而不是/usr/local/bin里的旧副本。

mo --version

输出形如Mole version 1.53.0(具体版本号以当前 release 为准,后面跟着 macOS 版本、架构等信息)。

最后跑一次更新确认免密链路:

mo update

不需要输入任何密码。输出是以下两种之一(均为文档中出现的真实文案):

✓ Already on latest version, 1.53.0

或下载并替换后:

✓ Updated to latest version, 1.53.0

如果输出里出现Admin access to ... is required but not available之类的行,说明更新目标目录仍然不可写(例如你调用的mo其实还指向/usr/local/bin的旧安装),先确认command -v mo的路径,再重跑mo update

限制与排查

  • Homebrew 共存冲突:只要mole在 PATH 上解析为指向Cellar/mole的软链,更新流程会走brew upgrade mole分支,而不是脚本更新。两条路径不要混用;想从 Homebrew 迁到脚本安装,先brew uninstall --force mole
  • 前缀目录别放符号链接:安装脚本的锁机制会检查安装目录及其父级目录,遇到符号链接、属主异常或带 ACL 的路径会拒绝以提权方式写入(报 unsafe ancestor 相关错误)。~/.local/bin这样的普通用户目录不存在这个问题;如果你把--prefix指到别的自定义路径,保持它是真实目录、属主是你自己。
  • nightly 通道mo update --nightly更新未发布的 main 分支构建,README 标注 “script install only”,即只对脚本安装有效;Homebrew 安装执行该命令会直接报错退出。
  • 卸载:不再需要 Mole 时用mo remove移除(README.md Quick Start 列表),它会作用于当前调用的这份安装。

完成上面的验证后,这台机器上的 Mole 就固定在~/.local/bin:日常mo update静默完成不弹密码框,只有需要动系统文件的清理命令才会在确有必要时请求管理员授权。

【免费下载链接】Mole🐹 Clean, uninstall, analyze, optimize, and monitor your Mac. Free open-source CLI, plus a native Mac app.项目地址: https://gitcode.com/GitHub_Trending/mole15/Mole

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询