2011-12-20 39 views
0

目标创建MacPorts的端口,不需要安装,无依赖,只能提取

我试图为基于Eclipse的开源工具,它不需要安装创建一个端口(使用MacPorts)换句话说,这只是“提取和使用”的情况。用户可以从官方项目网站下载该工具并使用。所以没有DESTROOT变量集。

由于许多Mac用户习惯了Macports的便利,我想在那里添加该工具,以便用户可以即时安装或卸载该工具。

**重要提示:用户启动该工具后,会在安装该工具的同一位置创建“/workspace”目录以保留用户的首选项,设置和其他必要文件。所以,当用户启动该工具时,该程序应该有权访问它所安装的相同目录。该工具的当前版本不提供选择工作区位置的方法。

问题

我应如何组织Portfile?

我已经设置了以下配置,我告诉MacPorts的不使用配置,构建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 {} 

据我了解,

  • 提取阶段untars文件,
  • 安装阶段应归档的文件,
  • 最后激活阶段应移动文件到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> 

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

回答

3

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

  1. 提取 untars下载的文件
  2. 补丁适用任何地方补丁
  3. 配置运行运行./configure
  4. 构建运行make
  5. destroot运行make install的DESTDIR = $ {} destroot
  6. 安装包在destroot区域中的文件到归档
  7. 激活将文件移动到$ {前缀}

因此,对于您的情况,您不需要步骤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

我不认为工具,适合MacPorts的相关原因

所有的MacPorts的文件应该是在支持的一个目录中,即destroot位于/ opt /结束了当地
该项目试图写入到在这里不好的子目录
写入bu macport的目录只能由用户macports写入,以便最小化影响构建和运行环境的能力。
在拥有要写入目录的多用户系统中?例如macports作为用户macports安装并作为其他人运行 - 另外如果有多个普通用户写入目录?

我认为你需要,以便它传递一个目录下创建当普通用户运行它在工作区修补工具,但该工具是安装通过MacPorts的在/ opt/local/bin目录