如何强制macports从特定网址获取端口源?

时间:2017-04-28 13:39:13

标签: macos macports

我正在编辑和测试我想通过macport构建的软件包。有没有办法可以强制macports从我的存储库中获取和构建包?我编辑了我的Portfile以指向单个存储库,但它似乎忽略了它。

1 个答案:

答案 0 :(得分:1)

MacPorts在内部使用curl下载文件,这为您提供了几个选项来切换下载内容:

  • 您可以使用Portfile的master_sites属性中的file:// URL指向本地目录。请注意,fetch作为macports用户运行,因此请确保允许用户从该目录中读取文件。
  • 对于文件下载,您可以替换缓存的文件。 MacPorts将在下次提取端口的源代码时使用您的替代品。运行port distfiles $portname以查找可以缓存文件的本地路径。
  • 您可以通过将fetch.type gitgit.url设置为git clone将接受克隆您的存储库(可以是本地存储)以及可选git.branch的任何内容来切换到用于获取的git你想要查看的承诺。有关详细信息,请参阅https://guide.macports.org/#reference.phases.fetch.git。同样,如果您使用本地git存储库,请确保macports用户可以读取本地文件。
  • MacPorts支持的任何其他版本控制系统;有关详细信息,请参阅指南。

请注意,MacPorts默认缓存文件下载(此时不会对版本控制系统应用缓存),因此如果您没有修改文件名,则必须运行sudo port clean --dist $portname来删除缓存。 / p>

在构建端口的修改版本时,您还需要注意其他一些要点:

  • MacPorts将下载预编译的二进制文件(如果有的话)。由于预编译的二进制文件与修改后的Portfile或源代码不匹配,因此将-s标记传递给port以强制从源代码构建。
  • 如果您运行“端口安装”,MacPorts将无法编译端口。它已经安装(激活或停用)。

解决这两个潜在陷阱的最简单的解决方案可能是sudo port destroot $portname而不是sudo port install。这将运行所有步骤(包括)make install,但实际上不会将文件放入/opt/local。如果您可以在port work $portname的构建目录中调试需要调试的内容,这将简化操作。