目标
我正在尝试为基于Eclipse的开源工具创建一个端口(Macports),它不需要安装,换句话说,它只是" 提取和使用"案件。用户可以从官方项目站点下载该工具并使用它。所以没有设置 DESTROOT 变量。
由于许多Mac用户已经习惯了Macports的便利,我想在那里添加该工具,以便用户可以立即安装或卸载该工具。
**重要提示:一旦用户启动该工具,它就会创建" / workspace "安装工具的同一个目录中的目录,以保持用户'首选项,设置和其他必要文件。因此,当用户启动该工具时,该程序应该有权在其安装的同一目录中进行写入。该工具的当前版本没有提供选择工作空间位置的方法。
问题
我应该如何组织端口文件?
我已经设置了以下配置,我告诉Macports不要使用 configure,build,和 destroot 阶段。
set cm_workspace /workspace
universal_variant no
use_configure no
supported_archs noarch
post-extract {
file mkdir ${worksrcpath}${cm_workspace}
destroot.keepdirs-append ${worksrcpath}${cm_workspace}
}
build {}
destroot {}
据我了解,
但我一直都有错误。
---> Extracting cubridmanager
---> Configuring cubridmanager
---> Building cubridmanager
---> Staging cubridmanager into destroot
Error: No files have been installed in the destroot directory!
Error: Please make sure that this software supports 'make install DESTDIR=${destroot}' or implement an alternative destroot mechanism in the Portfile.
Error: Files might have been installed directly into your system, check before proceeding.
Error: Target org.macports.destroot returned: Staging cubridmanager into destroot failed
Log for cubridmanager is at: /opt/local/var/macports/logs/_Users_nbp_macports_databases_cubridmanager/cubridmanager/main.log
Error: Status 1 encountered during processing.
To report a bug, see <http://guide.macports.org/#project.tickets>
我想为开源社区做出贡献,但我无法通过这一步。
答案 0 :(得分:3)
你误解了各个阶段,通常的工作流程如下:
因此,在您的情况下,您不需要步骤2,3和4.但是您仍然需要在步骤5(destroot阶段)将文件复制到destroot区域。否则,MacPorts不知道它应该安装哪些文件。
supported_archs noarch
use_configure no
build {}
destroot {
copy ${worksrcpath} ${destroot}${prefix}/some/path
}
请注意,MacPorts不鼓励在前缀目录之外安装文件,因为安装是自包含的。路径/工作区听起来是一个非常糟糕的主意。相反,您应该使用用户主目录中的路径来保存任何数据,否则这不能在具有多个用户帐户的计算机上使用。当然,实际的可执行文件可以驻留在MacPorts前缀中。
通常,UNIX软件会将/ usr(或MacPorts案例中的/ opt / local)中的二进制文件,库和共享数据与主目录中的用户特定数据分开。如果您的工具不遵循此约定,则首先需要由开发人员修复。
答案 1 :(得分:1)
由于相关原因,我不认为该工具适合macport
来自macports的所有文件都应该位于其中一个受支持的目录中,即destroot并最终进入/ opt / local
该项目试图写入这里不好的子目录
写入bu macports的目录只能由用户macports写入,以便最小化影响构建和运行环境的能力。
在拥有要写入的目录的多用户系统中?例如macports作为用户macports安装并作为其他人运行 - 如果有多个普通用户写入该目录?
我认为您需要修补该工具,以便在普通用户运行时通过目录创建工作区,但该工具由/ opt / local / bin中的macports安装为ownwd