我如何强制 macports 从特定 url 获取端口源?
How can I force macports to fetch a port source from a specific url?
我正在编辑和测试我想通过 macports 构建的包。有没有办法强制 macports 从我的存储库中获取和构建包?我已经编辑了我的 Portfile 以指向单个存储库,但它似乎忽略了它。
MacPorts 在内部使用 curl 下载文件,这为您提供了几个选项来切换从哪里下载文件:
- 您可以在 Portfile 的
master_sites
属性 中使用 file:// URL 指向本地目录。请注意,以 macports
用户身份获取 运行s,因此请确保允许该用户从该目录读取文件。
- 对于文件下载,您可以替换缓存文件。 MacPorts 将在下次提取端口源代码时使用您的替代品。 运行
port distfiles $portname
查找可能缓存文件的本地路径。
- 您可以通过将
fetch.type git
、git.url
设置为任何 git clone
接受克隆您的存储库(可以是本地的)和可选git.branch
给你想要签出的承诺。有关详细信息,请参阅 https://guide.macports.org/#reference.phases.fetch.git。同样,如果您使用本地 git 存储库,请确保 macports
用户可以读取本地文件。
- MacPorts 支持的任何其他版本控制系统;详情请参阅指南。
注意 MacPorts 默认缓存文件下载(目前版本控制系统没有缓存),所以如果你没有修改文件名,你将不得不 运行 sudo port clean --dist $portname
删除缓存。
构建 ports 的修改版本时,您还必须注意其他一些要点:
- MacPorts 将下载预编译的二进制文件(如果可用)。由于该预编译的二进制文件将与您修改后的 Portfile 或源代码不匹配,因此将
-s
标志传递给 port
以强制从源代码构建。
- 如果您 运行 'port install' 并且已经安装(激活或停用),MacPorts 将不会编译端口。
解决这两个潜在陷阱的最简单的解决方案可能是 运行宁 sudo port destroot $portname
而不是 sudo port install
。这将 运行 到(包括)make install
的所有步骤,但实际上不会将文件放入 /opt/local
。如果您可以从 port work $portname
的构建目录中调试需要调试的内容,这将简化事情。
我正在编辑和测试我想通过 macports 构建的包。有没有办法强制 macports 从我的存储库中获取和构建包?我已经编辑了我的 Portfile 以指向单个存储库,但它似乎忽略了它。
MacPorts 在内部使用 curl 下载文件,这为您提供了几个选项来切换从哪里下载文件:
- 您可以在 Portfile 的
master_sites
属性 中使用 file:// URL 指向本地目录。请注意,以macports
用户身份获取 运行s,因此请确保允许该用户从该目录读取文件。 - 对于文件下载,您可以替换缓存文件。 MacPorts 将在下次提取端口源代码时使用您的替代品。 运行
port distfiles $portname
查找可能缓存文件的本地路径。 - 您可以通过将
fetch.type git
、git.url
设置为任何git clone
接受克隆您的存储库(可以是本地的)和可选git.branch
给你想要签出的承诺。有关详细信息,请参阅 https://guide.macports.org/#reference.phases.fetch.git。同样,如果您使用本地 git 存储库,请确保macports
用户可以读取本地文件。 - MacPorts 支持的任何其他版本控制系统;详情请参阅指南。
注意 MacPorts 默认缓存文件下载(目前版本控制系统没有缓存),所以如果你没有修改文件名,你将不得不 运行 sudo port clean --dist $portname
删除缓存。
构建 ports 的修改版本时,您还必须注意其他一些要点:
- MacPorts 将下载预编译的二进制文件(如果可用)。由于该预编译的二进制文件将与您修改后的 Portfile 或源代码不匹配,因此将
-s
标志传递给port
以强制从源代码构建。 - 如果您 运行 'port install' 并且已经安装(激活或停用),MacPorts 将不会编译端口。
解决这两个潜在陷阱的最简单的解决方案可能是 运行宁 sudo port destroot $portname
而不是 sudo port install
。这将 运行 到(包括)make install
的所有步骤,但实际上不会将文件放入 /opt/local
。如果您可以从 port work $portname
的构建目录中调试需要调试的内容,这将简化事情。