创建不需要安装,不依赖,只提取的Macports端口

时间:2011-12-20 07:25:34

标签: macos osx-lion macports

目标

我正在尝试为基于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 {}

据我了解,

  • 提取阶段解压缩文件
  • 安装阶段应归档这些文件
  • 最后激活阶段应将文件移至 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>

我想为开源社区做出贡献,但我无法通过这一步。

2 个答案:

答案 0 :(得分:3)

你误解了各个阶段,通常的工作流程如下:

  1. 解压缩解压缩下载的文件
  2. 补丁应用任何本地补丁
  3. configure 运行./configure
  4. 构建运行make
  5. destroot 运行make install DESTDIR = $ {destroot}
  6. 安装将destroot区域中的文件打包到存档
  7. 激活将文件移至$ {prefix}
  8. 因此,在您的情况下,您不需要步骤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