如何替换通过 Macports 安装的二进制文件?

How to replace binary installed via Macports?

我想用带有调试标志编译的 MariaDB 替换当前安装的 MariaDB。我可以在通过 Macports 安装的二进制文件上编译一个二进制文件和 copy/paste 还是有其他东西?

最简单的方法可能是编辑 MacPorts Portfile,添加您需要的标志,然后重新安装。您可以使用 port file mariadb-10.1(如果这是您使用的版本)找到 Portfile,编辑它并在 if {$subport eq $name} { ... }.[= 包含的块中附加您需要附加到 configure.args-append 的任何标志18=]

保存文件并运行 sudo port -sn upgrade --force mariadb-10.1从源代码重新编译,其中

  • -s 指示 MacPorts 从源代码重新编译(以避免下载没有更改的二进制文件)
  • -n 指示 MacPorts 不修改所有依赖项
  • --force 尽管已经安装了 mariadb-10.1,但仍要重建。

请注意,如果您使用 rsync 方法同步您的端口树(这是默认设置),那么对 Portfile 的任何更改都将被还原。如果这不是您想要的,您可以设置 local portfile repository.

所以我就是这样做的。这是@neverpanic 的回答和来自 MariaDB #irc 频道的更多问题的混合:

  1. 找到 MariaDB 的端口文件:port file mariadb-10.1
  2. 为构建添加调试标志。在 configure.args-append 下添加 -DCMAKE_BUILD_TYPE=Debug 并在最后一个变体之后添加一个新变体:variant debug { configure.optflags -O0 -g3 }
  3. 强制重建:sudo port -sn upgrade --force mariadb-10.1 +debug
  4. 最后 port contents mariadb-10.1-server 找到 LaunchCtl plist 文件并在程序名称后添加 --debug 标志。