P2接触点chmod不工作?

问题描述:

我使用Eclipse 3.5.2,我已经创建了以下信息的p2.inf:P2接触点chmod不工作?

instructions.install = \ 
chmod(targetDir:@artifact,targetFile:$os$/libfoo.so,permissions:755); 

instructions.install.import= \ 
org.eclipse.equinox.p2.touchpoint.natives.chmod 

我把片段的META-INF文件夹内的p2.inf,但是当我安装更新站点,libfoo.so没有执行权限。

把我的头发拉出来后,我尝试了一个p2.inf引用一个不存在的* .so,但似乎没有发生。没有任何类型的错误消息,例外或警告指示P2接触点操作失败...

这是怎么回事?有任何想法吗?

一对夫妇的事情,我注意到:

  1. 的“touchpoint.natives.chmod”动作看起来并不像它支持@artifact。尝试使用org.eclipse.equinox.p2.touchpoint.eclipse.chmod来代替。
  2. os似乎不是安装时替换的参数。另外,看看p2源代码,如果“os”是一个参数,看起来语法实际上是${os}。 (见ParameterizedProvisioningAction#processVariables)

注意,$version$和`$预选赛$”上wiki提到的参数在元数据生成/发布时间更换,而不是在安装时。

+0

我在他们的文档中找不到org.eclipse.equinox.p2.touchpoint.eclipse.chmod ...? – Michael 2010-04-06 22:25:00

+0

不幸的是,上述建议都没有解决...... – Michael 2010-04-07 16:00:38

在Eclipse 3.6(不知道以前的版本)中,要使用的变量而不是@artifact是$ {artifact.location}。我不得不深入p2源代码才能找到它,但在targetDir参数中使用它就像魅力一样。

导入线应该org.eclipse.equinox.p2.touchpoint.eclipse.chmod(即而非当地人),根据从org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.ChmodAction

// This basically a copy of the chmod action in the native touchpoint, 
// only it provides @artifact support. 

以下注释(为进行比较,请参阅'natives' chmod action

我还没有不支持插入像'os'这样的变量。

+0

我知道这个问题已经有一年了。我刚刚添加了这个答案,所以我可以再次找到它。 :) – 2011-07-12 14:00:07

+0

好!一年后的一天,我还需要找到它! – giZm0 2012-10-05 12:13:26