MW Icon MacWave Text MacWave Logo

A package manager for macOS, built for the command-line tools macOS developers rely on.

面向 macOS 的包管理器,用于分发开发者日常依赖的命令行工具。

Latest Version : 4.3.1 Release on 2026-11-03
最新版本 : 4.3.1 发布于 2026-11-03
Docs → 文档 →
View On GitHub 在 GitHub 上查看
Linux? View LinuxWave → Linux?查看 LinuxWave →
Explore MacWave Team 浏览 MacWave 团队
(Click to view)
(点击查看)

About MacWave

关于MacWave

MacWave is a package manager for macOS, built to distribute the command-line tools that macOS software developers rely on. Its project, LinuxWave, covers Linux.

MacWave 是一个面向 macOS 的包管理器,用于分发 macOS 软件开发者日常依赖的命令行工具。Linux 由项目 LinuxWave 覆盖。

Why MacWave

为什么选择 MacWave

Supported macOS Version

支持的 macOS 版本

macOS Monterey 12 and above

macOS Monterey 12 及以上

Install MacWave

安装 MacWave

In the terminal, run:

在终端中运行:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/MacWaveOrg/MacWave/HEAD/lib/install.sh)"

(If you are using bash instead of zsh, run source ~/.bashrc)

(如果你使用的是 bash 而非 zsh,请运行 source ~/.bashrc)

Running the MacWave installer: it picks an install directory, fetches the update commands and the bundled Python environment, and asks for the licence once.

Requirements: macOS Monterey 12 or later, Xcode Command Line Tools.
You do not need to install Python — MacWave bundles its own interpreter.

环境要求:macOS Monterey 12 及以上、Xcode Command Line Tools。
你不需要自己安装 Python —— MacWave 自带解释器。

This repository holds source, not an installation. Running wave from inside a clone, or adding directories from the clone to PATH, fails by design.

本仓库存放的是源码,不是安装结果。在 clone 里运行 wave、或把 clone 中的目录加入 PATH,都会按设计失败。

Unattended install

无人值守安装

For scripts and batch use, the installer takes flags so it never waits for input. Options go after --, which ends bash’s own options:

面向脚本与批量场景,安装器提供若干参数,全程不会停下来等待输入。参数放在 -- 之后 —— -- 会结束 bash 自身的选项:

# straight from the repository
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/MacWaveOrg/MacWave/HEAD/lib/install.sh)" \
  -- --ci --dir-option=1

--ci (same as --CI) answers the directory menu and the agreement automatically. It needs passwordless sudo, or root, when the chosen directory requires privilege. --dir-option=N picks menu entry N (1-4 on Intel, 1-3 on Apple silicon); for the custom entry, append the path after =, as in --dir-option=4=/opt/my-macwave. Run install.sh --help for the list.

--ci(也可写 --CI)会自动应答目录菜单与许可协议;当选中的目录需要提权时,它要求免密 sudo 或以 root 运行。--dir-option=N 免菜单直接选定第 N 项(Intel 机器为 1-4,Apple 芯片为 1-3);自定义项要在 = 之后附上路径,例如 --dir-option=4=/opt/my-macwave。完整参数列表可运行 install.sh --help 查看。

Mind where the options go. Writing /bin/bash -c "$(curl ...)" --ci makes --ci the script name ($0), so it is silently dropped; the installer warns when it detects this. The working form puts the options after --.

注意参数的位置。写成 /bin/bash -c "$(curl ...)" --ci 会让 --ci 变成脚本名($0),从而被静默丢弃;安装器检测到这种用法时会给出警告。正确写法是把参数放在 -- 之后。

uninstall.sh is scriptable in the same way: --force skips the confirmation, which otherwise needs a terminal (use --force in CI):

uninstall.sh 同样支持脚本化调用:--force 跳过确认,而确认本身需要一个终端(因此在 CI 里请使用 --force):

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/MacWaveOrg/MacWave/HEAD/lib/uninstall.sh)" -- --force

Uninstall MacWave

卸载 MacWave

To completely remove MacWave from your system, run the following command in your terminal:

要从系统中彻底移除 MacWave,请在终端中运行以下命令:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/MacWaveOrg/MacWave/HEAD/lib/uninstall.sh)"

Download Directory

下载目录

Installed binaries are stored in (options):

已安装的二进制文件存储于(可选):

1. ~/.local/macwave
2. /opt/macwave
3. /usr/local/macwave (Only Intel Mac)
4. Custom

Config file is stored in (a system-level install always takes priority):

配置文件存储于(系统级安装始终优先):

1. /opt/macwave_config          system-level install (needs sudo)
2. ~/.config/macwave_config     user-level install (no sudo)

Install Packages

安装软件包

wave install ffmpeg: version info is fetched, the SHA256 is verified, the package is extracted and checked, and ffmpeg@9.0.2 is installed and linked.

One command downloads, verifies, unpacks and links a package — and checks its SHA256 before anything is installed:

一条命令完成下载、校验、解包与链接,装之前先核对 SHA256:

$ wave install ffmpeg

Not sure of the name? wave search <keyword> searches the index and wave info <package> shows the detail. There is no silent replacement: the version you ask for is the version you get, so pinning is wave install ffmpeg@6.0.

不确定包名?wave search <关键字> 在索引里搜,wave info <包名> 看详情。不会替你换版本 —— 你要哪个就是哪个,需要固定版本就写 wave install ffmpeg@6.0。

Run Packages

运行软件包

Once installed, a package is on your PATH. Just type its name:

装好之后软件包就在 PATH 里,直接敲名字即可:

$ {package_name}

wave install creates that name for you, so there is no extra step. When several versions are installed and you want one of them specifically, add the version:

这条不带版本号的名字是 wave install 一并建好的,无需额外操作。装了多个版本、想指定其中一个时,再带上版本号:

$ {package_name}@{version}

If you installed with --unlink, that name was skipped on purpose — run wave link {package_name} once to bring it back.

如果你当初是用 --unlink 装的,那个名字是特意跳过的 —— 运行一次 wave link {package_name} 就能补回来。

Symlink Management

软链接管理

Since MacWave 2.4, once a versionless link exists, MacWave keeps it pointing at the right version on its own:

从 MacWave 2.4 起,建立不含版本号的软链接后,MacWave 会自动维护它指向的版本:

  1. If the highest version is uninstalled, the versionless link moves to the highest version that remains, and the uninstalled version's own link goes with it.
  2. An install re-points the versionless link at the version it just installed; add --unlink to that install to skip this.
  3. If a package has no versions left at all, the versionless link is removed.
  4. A versioned name is always callable, whether or not a versionless link exists.
  1. 最高版本被卸载后,不含版本号的软链接会改指向剩余版本中的最高版本,被卸载版本自己的软链接一并撤销。
  2. 安装会把不含版本号的软链接指向本次安装的版本;本次安装加上 --unlink 可跳过这一步。
  3. 某软件包不再有任何版本时,不含版本号的软链接会被撤销。
  4. 无论何种情况,含版本号的名称始终可以调用,即使存在不含版本号的软链接。

A manual wave unlink {package_name} is remembered: a later uninstall will not re-create the link for that package.

手动 wave unlink {package_name} 过的软件包会被记住,之后的卸载不会重新为它建立链接。

Command Reference

命令参考

Usage:
  wave <command> [package] [flags]

Commands:
  install     Install a package (latest version)
  upgrade     Install a package at the latest version
  uninstall   Uninstall a package
  list        List installed packages
  search      Search for a package in the index
  info        Display detailed information about a package
  selfupdate  Update MacWave itself to the latest version
  link        Link installed packages without a version number
  unlink      Remove those unversioned links
  linkquery   Show which version an unversioned link points to
  mirror      Show which addresses packages are fetched from
  latest      Show which packages have a newer version available

Flags:
  -h, --help     Show help for any command
  -V, --version  Print version information
  -v, --verbose  Enable verbose output (show detailed logs)

Global Flags (can be used with any command):
  -s, --silent                  Print nothing at all; the exit code is the signal
                                (beats -v; install / upgrade / uninstall / link /
                                unlink / selfupdate)
  -S, --show-error              With -s, still print the error when a command fails
                                (without the 🌊 prefix, so scripts can parse it)
  -C, --continue                Resume interrupted downloads (like curl -C -)
  --proxy <string>              Specify an HTTP/HTTPS proxy (e.g., http://127.0.0.1:8080)
  --skip-ssl                    Skip SSL certificate verification (insecure)
  --limit-rate <string>         Limit download speed (e.g., 200K, 1M, 5M)
  --max-time <string>           Total time limit for each request (e.g., 40s, 1min, 1min20s, 2h)
  --connect-timeout <string>    Give up if the TCP/TLS handshake takes longer (like curl)
  --content-time <string>       Give up if the server sends nothing for this long
  --ver <string>                Install a specific version (install only; --ver=1.0 works too)
  --install-from-source         Download from the upstream URL instead of MacWave's own store
  --install-python-from-source  Same, for the bundled Python (install / selfupdate)
  MACWAVE_PIP_INDEX             Env var. pip index for the Python deps; default pypi.org/simple

Special Flags:
  wave install <pkgname>@<version>  Download certain version(s) of a package
  wave upgrade <pkgname>            Take a package to the latest version
  wave upgrade --all, -a            Take every installed package to the latest version
      --remove-old-version          Remove versions older than the one just installed
      --remove-old-versions         Same as --remove-old-version
      --rov                         Same as --remove-old-version
      -X                            Same as --remove-old-version
      --unlink                      Leave the unversioned link alone (install / uninstall)
      --all, -a                     Apply to every installed package
                                    (upgrade / link / unlink / linkquery)

Self Update:
wave selfupdate                    Update MacWave itself
wave selfupdate --max-time=2min    Same, but give each request two minutes

Unversioned Links:
wave link <name>                   Link a package to its highest installed version
wave linkquery <name>              Show what <name> is linked to (e.g. 🌊 ffmpeg@9.0)
wave unlink <name>                 Remove that link

Latest Versions:
wave latest <name>                 Show whether a package has a newer version
wave latest --all, -a              Same, for every installed package

Mirror Configuration:
wave mirror                        Show the address each source is fetched from
    --json / --yaml / --toml       Print the same information in that format
    --raw                          Print ready-to-paste export lines
    --only-set                     With --raw: export only the sources you overrode
    --show-password                Print passwords instead of six asterisks
    --hide-user                    Mask the user name too

Uninstalling a version re-points the link to the next highest one, and removes
the link when no version is left. uninstall --unlink keeps the link as-is, and
refuses to run when that would leave the link pointing at the version you are
removing.

Mirrors

镜像站

Officially verified mirror:
https://mirror.repohub.top

官方认证的镜像站:
https://mirror.repohub.top

For Developers

面向开发者

See docs.macwave.org

见 docs.macwave.org

Supported Packages

支持的软件包

(Listed in alphabetical order)

(按字母顺序排列)

atuin            by atuinsh
bat              by David Peter
batt             by charlie0129
btop             by Aristocratos
choma            by opa334
cloc             by Al Danial
delta            by dandavison
dust             by bootandy
eza              by Christina Sørensen and the eza community
fd               by David Peter
ffmpeg           by FFmpeg Team
fileicon         by Michael Klement
fx               by antonmedv
fzf              by Junegunn Choi
htop             by Hisham Muhammad and the htop team
hyperfine        by sharkdp
ipsw             by blacktop
jq               by Stephen Dolan, Nicolas Williams, et al.
ldid             by Jay Freeman (saurik) / Procursus Team
lsd              by Abin Simon
ncdu             by Yoran Heling
ollama           by ollama
palera1n         by palera1n Team
pandoc           by John MacFarlane
rg               by Andrew Gallant
sk               by skim-rs
starship         by starship
taskwarrior-tui  by kdheepak
tmux             by Nicholas Marriott and contributors
tree             by Steve Baker, Thomas Moore, et al.
trollrestore     by JJTech (@JJTech0130)
wget             by GNU Project
yq               by Mike Farah
zoxide           by Ajeet D'Souza

License

许可证

This project is licensed under the MIT License.

本项目基于 MIT 许可证 发布。

Contact Us

联系我们

GitHub @MacWaveOrg
Twitter @MacWaveOrg
Click the links to open.
点击链接即可打开。

1. Users should carefully read the agreement and possible negative impacts before operation, and bear the consequences themselves. Using MacWave means that you have agreed to the above conditions. MacWave is not responsible for any losses caused to users by MacWave or its software packages.

2. MacWave (especially beta versions) may affect users due to code defects, security issues, etc. Users should be aware of and accept this risk, otherwise please do not use it. MacWave is not responsible for any losses caused to users' devices, etc.

3. MacWave only provides links to software packages, not the software packages themselves. MacWave is not responsible for any losses caused to users due to security vulnerabilities, malicious code, etc. of the software packages themselves. If users violate the software package agreement, MacWave is not responsible.

4. The software packages distributed by MacWave are for legitimate purposes such as learning and research only. They are prohibited for cracking, attacks, or other illegal activities. If losses are caused by improper use, MacWave is not responsible.

5. This agreement may be updated. If there is an update and you do not agree to the updated agreement, please delete MacWave. For deletion methods, please refer to the official website or official tutorial.

6. Please be sure to download the official software from the MacWave official website. If users download MacWave software from unofficial sources and suffer losses, MacWave is not responsible.

7. Users should read all agreements in full and agree before using MacWave and its software packages. Otherwise, please do not use MacWave and its software packages.

8. MacWave is completely free. Please do not trust any individuals or claims stating that MacWave charges a fee. If you suffer losses as a result, MacWave is not responsible.

9. MacWave does not sell any products. Any messages or posts about paid MacWave products are counterfeit. Any individuals or platforms selling MacWave are unofficial. MacWave is not responsible for any losses caused by this.

10. MacWave does not produce any physical products. Any physical products (such as books, comics, etc.) claiming to be related to MacWave are counterfeit. MacWave is not responsible for any losses caused by this.

11. MacWave only produces code, not unrelated products. Any e-books, audio-visual works, etc. claiming to be related to MacWave are counterfeit. MacWave is not responsible for any losses caused by this.

12. MacWave's consultation and feedback channels are completely free, and all feedback is processed equally in order. Any individuals or organizations claiming priority access to consultation or replies, especially those charging fees, are unofficial. MacWave is not responsible for any losses caused by this.

13. MacWave does not use subscriptions, one-time purchases, or in-app purchases. Any individuals or organizations claiming to help obtain in-app purchases, especially those charging fees, are unofficial. MacWave is not responsible for any losses caused by this.

14. MacWave's source code is fully open. Any individuals or organizations claiming to provide core code, especially those charging fees, are unofficial. MacWave is not responsible for any losses caused by this.

15. MacWave does not use a membership system. Any individuals or organizations claiming to offer memberships, especially those charging fees, are unofficial. MacWave is not responsible for any losses caused by this.

16. MacWave has only one version, and it is publicly available. There are no "Personal Edition", "Enterprise Edition", "Custom Edition", or similar variants. Any such claims are counterfeit. MacWave is not responsible for any losses caused by this.

17. The only official website is https://macwave.org. Any other websites are not official. MacWave is not responsible for any losses caused by this.

18. Using MacWave does not require registration, nor does it require activation codes, etc. Any individuals or organizations claiming to help register MacWave accounts, provide MacWave accounts, activation codes, etc., especially those charging fees, are unofficial. MacWave is not responsible for any losses caused by this.

19. Downloading MacWave may consume network data. Users should be aware of this and handle it properly. MacWave is not responsible for any losses caused by this.

20. Contacting MacWave official support or sending emails may consume network data. Users should be aware of this and handle it properly. MacWave is not responsible for any losses caused by this.

21. Official accounts are only registered on Twitter (X) and GitHub. Any accounts on other platforms are counterfeit. MacWave is not responsible for any losses caused by this.

22. The only official feedback email address is hi@macwave.org, but replies will be sent from trollresignertest1@outlook.com. Please do not send messages directly to trollresignertest1@outlook.com, and do not wait for reply emails from hi@macwave.org. Do not trust other email addresses claimed by others or organizations as official, and do not treat replies from other emails as official replies. MacWave is not responsible for any losses caused by this.

23. Users should use MacWave and its software packages in accordance with official guidelines. MacWave is not responsible for any losses caused by not following the guidelines, not reading the guidelines, or operational errors.

24. Users should download MacWave on eligible devices. For specific requirements, please refer to the official website. If losses are caused by violations, MacWave is not responsible.

25. Users should confirm their system environment, device model, etc., and verify from reliable sources (such as official documentation of other software) whether there are conflicts. If losses are caused by software conflicts, MacWave is not responsible.

26. Users are only permitted to run MacWave on their personal devices. MacWave is not responsible for any losses caused by running MacWave on others' devices, public devices, or devices without the owner's authorization.

27. MacWave is not responsible for any losses caused by running MacWave due to bugs in the operating system or virtual machine itself.

28. MacWave is not responsible for any losses caused by MacWave not running as expected due to unauthorized hardware modifications.

29. MacWave is not responsible for any losses caused by using it for unofficial purposes.

30. Private redistribution of MacWave and its software packages, modified versions, etc., is permitted, but the original author and official website must be credited, and others must be clearly informed that this version is a modified version. Distributing non-official products and software packages under descriptions such as "official version" is prohibited. Non-official versions of MacWave may also cause losses. If any of these violations cause losses, MacWave is not responsible.

31. Without the permission of the original author, you shall not misuse, reuse, register trademarks, or otherwise occupy the MacWave icon and its name, or occupy them in a way that sufficiently associates users with them.

32. MacWave is not responsible for any losses caused by incomplete downloads of executable scripts due to network fluctuations, etc.

33. MacWave is not responsible for any losses suffered by users due to force majeure.

34. MacWave has no cooperation with any company or profit-making organization. Any claims of cooperation with MacWave by companies or profit-making organizations are counterfeit. MacWave is not responsible for any losses caused by this.

1. 用户在操作前应仔细阅读协议及可能造成的负面影响,并自行承担后果,使用MacWave即视为已达成上述条件。MacWave及其软件包对使用者造成损失的,MacWave不承担责任

2. MacWave(尤其是beta版)可能由于自身代码缺陷、安全问题等对用户造成影响,用户应知悉并接受这一风险,否则请勿使用。对用户的设备等造成损失的,MacWave不承担责任

3. MacWave仅提供指向软件包的链接,不提供软件包本身。软件包因本身的安全漏洞、恶意代码等对用户造成损失的,MacWave不承担责任。用户如果违反软件包协议,MacWave不承担责任

4. MacWave分发的软件包仅供学习、研究等正当用途,禁止用于破解、攻击等行为。如果用于不正当用途造成损失,MacWave不承担责任

5. 本协议可能会有更新。如有,且你不同意更新后的协议,请删除MacWave,删除方法参见官网或官方教程

6. 请务必从MacWave官方网站下载正版软件。如果用户从非官方渠道下载的MacWave软件造成损失,MacWave不承担责任

7. 用户应完整阅读所有协议并同意后再使用MacWave及其软件包,否则请勿使用MacWave及其软件包

8. MacWave完全免费,请勿相信任何宣称MacWave收费的言论、人员等。因此蒙受损失的,MacWave不承担责任

9. MacWave不出售任何产品。任何有关MacWave收费产品的消息、帖子等均属伪造,任何出售MacWave的个人、平台等均为非官方,由此造成损失的,MacWave不承担责任

10. MacWave不产出任何实体产品。任何有关MacWave的实体产品(如书籍、漫画等)均属伪造。由此造成损失的,MacWave不承担责任

11. MacWave仅产出代码,不产出无关产品。任何有关MacWave的电子书、音像制品等均属伪造。由此造成损失的,MacWave不承担责任

12. MacWave的咨询和反馈平台完全免费,且按顺序平等处理所有反馈。任何宣称可以优先获得咨询、回复等,尤其是收取费用的的个人或组织均为非官方。由此造成损失的,MacWave不承担责任

13. MacWave不使用订阅制、买断制或内购,任何宣称可以帮忙获取内购的个人、组织等,尤其是收取费用的均为非官方。由此造成损失的,MacWave不承担责任。

14. MacWave的源代码全部公开。任何宣称可以提供核心代码的个人、组织等,尤其是收取费用的均为非官方。由此造成损失的,MacWave不承担责任。

15. MacWave不使用会员制。任何宣称可以申请会员的个人、组织等,尤其是收取费用的均为非官方。由此造成损失的,MacWave不承担责任。

16. MacWave只有一个版本,且公开。不存在"个人版""企业版""定制版"或类似内容,如有,均属伪造。由此造成损失的,MacWave不承担责任。

17. 官方唯一网址为https://macwave.org,其他网址均不是官方网址。因此造成损失的,MacWave不承担责任

18. 使用MacWave无需注册,也没有激活码等,任何宣称可以帮忙注册MacWave账号,提供MacWave账号、激活码等的个人、组织等,尤其是收取费用的均为非官方。由此造成损失的,MacWave不承担责任。

19. 下载MacWave可能会消耗网络流量,下载前须知悉并妥善处理,否则造成损失的,MacWave不承担责任

20. 向MacWave官方咨询、发送邮件等可能消耗网络流量,下载前须知悉并妥善处理,否则造成损失的,MacWave不承担责任

21. 官方账号仅在Twitter(X)、GitHub注册,其他平台如有则均为仿造。因此造成损失的,MacWave不承担责任

22. MacWave唯一反馈邮箱地址为hi@macwave.org,但回复你的邮箱地址为trollresignertest1@outlook.com。请勿直接向trollresignertest1@outlook.com发送信息,也不要等待hi@macwave.org的回复邮件。不要相信他人或组织等声称的其他邮箱地址,不要向其他邮箱视为官方邮箱发送邮件,也不要将其他邮箱的回复视为官方回复。由此造成损失的,MacWave不承担责任

23. 用户应按照官方指导使用MacWave及其软件包。对于不按照指导、不阅读指导、操作失误等原因导致损失的,MacWave不承担责任

24. 用户应在符合条件的设备下载MacWave,具体要求参见官网。如有违反导致损失,MacWave不承担责任

25. 用户应确认自己的系统环境、设备型号等信息,并从可信来源(如其他软件的官方说明等)确认是否冲突。如果由于软件冲突导致损失,MacWave不承担责任

26. 用户仅可在个人设备运行MacWave,在他人、公共设备或未经持有者授权设备运行MacWave造成损失的,MacWave不承担责任

27. 由于操作系统或虚拟机自身的Bug导致用户运行MacWave造成损失的,MacWave不承担责任

28. 由于私自改装硬件设备等原因导致MacWave未按预期运行并导致损失的,MacWave不承担责任

29. 用于非官方用途导致损失的,MacWave不承担责任

30. 允许私自分发MacWave及其软件包、修改版等,但必须注明原作者及官方网站,并明确告知其他人此版本为改版,禁止以"官方正版"等描述分发非正版产品及软件包。非官方版本可能也会造成损失。如果违反且造成损失,MacWave不承担责任

31. 未经原作者允许,不得以滥用、复用、注册商标等方式侵占MacWave图标及其名称,或以充分使用户联想、关联的方式侵占

32. 由于网络波动等原因导致软件可执行脚本下载不全并造成损失的,MacWave不承担责任

33. 由于不可抗力因素导致用户蒙受损失的,MacWave不承担责任

34. MacWave未与任何公司或营利组织等产生合作,如有公司或营利组织等声称与MacWave合作均属伪造。由此造成损失的,MacWave不承担责任