【问题标题】:why is my eclipse RCP product locked and can't be updated?为什么我的 Eclipse RCP 产品被锁定并且无法更新?
【发布时间】:2015-02-01 16:55:43
【问题描述】:

我正在构建一个基于 Eclipse RCP 的产品,我遇到了一个问题,当我尝试使用内置 p2 UI 安装产品更新时,我在对话框中收到一条错误消息,提示“Insufficient应用此更新的访问权限。”

我已经调试到 Eclipse 并发现“根本原因”是有一个 p2 .profile 文件,其中包含包含此 sn-p 的 xml:

<iuProperties id='com.datical.db.ui.product' version='1.33.0.201412032223'>
  <properties size='4'>
    <property name='org.eclipse.equinox.p2.internal.inclusion.rules' value='STRICT'/>
    <property name='org.eclipse.equinox.p2.type.root' value='true'/>
    <property name='org.eclipse.equinox.p2.type.lock' value='3'/>
    <property name='org.eclipse.equinox.p2.base' value='true'/>
  </properties>
</iuProperties>

相关行是&lt;property name='org.eclipse.equinox.p2.type.lock' value='3'/&gt;

我不确定我做错了什么 - 我认为我的产品定义或功能定义或安装过程中一定有问题导致这条线出现。

当我单步执行 Eclipse 代码时(我们的目标环境是 3.7/Indigo),我看到配置文件正在写入 org.eclipse.equinox.internal.p2.engine:SurrogateProfileHandler:addSharedProfileBaseIUs(这是私有静态代码。)从 SurrogateProfileHandler:createProfile 调用

产品的 p2 存储库正在使用 tycho 插件构建,版本 0.15。

【问题讨论】:

  • 由于 p2 是一个非常专业的主题,因此可能值得在 P2 论坛的Eclipse forums 上提问。
  • Indigo documents 建议该标志的有效值为 0 (LOCK_NONE)、1 (LOCK_UNINSTALL) 或 2 (LOCK_UPDATE)。没有提到3是什么意思。您是否尝试过更新版本的第谷?
  • 这些标志是 OR'd 在一起的,所以 3 表示它被锁定以进行更新和卸载。我还没有(还)尝试过使用更新版本的第谷,主要是出于 FUD。 greg-449,感谢论坛的参考 - 我会尝试在那里交叉发布。
  • 我从未听说过这个问题,所以这可能是一个尚未报告的错误。如果是这种情况,您无论如何都需要更新到更新的 p2 版本,并且由于 p2 嵌入在 Tycho 中,您需要更新您的 Tycho 版本。
  • 今天我更新到 tycho 版本 0.21.0(最新),我看到几乎相同的行为。当我第一次运行产品时,锁定仍在设置中。我通过在安装时操作 XML 解决了这个问题。这使我可以在应用程序中运行“检查更新”,现在我实际上可以选择更新的版本并应用它——这最初似乎可以工作。但是,当我深入挖掘时,我会看到功能选项卡上的“关于”对话框中显示的旧版本和新版本功能,以及所有“旧”版本的插件。

标签: eclipse-rcp tycho p2


【解决方案1】:

我们终于发现了另一条可能相关的信息。我们使用的是自定义 OSGI 目录名称。当我们删除它时,一切都开始按预期工作。

【讨论】:

  • 如果您查看此页面:help.eclipse.org/indigo/… 详细说明了 eclipse 配置选项,其中提到了“-configuration (Main) 相当于将 osgi.configuration.area 设置为 "
【解决方案2】:

您似乎有一个共享安装,您想要更新的产品(可能)被许多安装用作基础 - 因此无法更新。

【讨论】:

  • 什么会导致某些东西被标记为共享安装?我正在使用的安装过程只是将由 tycho 的“materialize-product”和“archive-product”插件创建的特定于平台的 zip 文件解压缩到我的主目录中的目录中(在我的情况下,在 Ubuntu 上 - /home/史蒂夫/产品)。然后,我使用“-initialize”运行可执行文件,此时我看到 .profile.gz 文件是使用锁创建的。
  • 我尝试使用较新的 Eclipse 产品进行初始化,但它没有添加锁。所以,我想你最好的选择是使用更新的 tycho 版本(因此有更新的 p2 版本),正如@oberlies 指出的那样。
  • 顺便说一句:如果不是只读安装,为什么要使用 -initialize?
  • 我正在使用 -initialize ,因为这是该页面所说的我应该做的。 help.eclipse.org/indigo/…
【解决方案3】:

这类问题超出了 stackoverflow 可以很好地回答的范围,因为您确实需要提供示例项目和重现问题的确切步骤。

您看到的症状最可能的原因是某种文件系统权限问题。 This documentation 提到您需要对安装目录的写入权限才能使用-initialize 运行 Eclipse。也许您缺少某些权限,导致某些-initialize 过程失败并导致安装处于不一致状态。

【讨论】:

  • 整理一个例子可能是我必须做的。不幸的是,现在我已经为此投入了大约 2 周的时间,现在无法证明现在花更多时间在这上面是合理的。我确实对所有相关目录都有写权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
相关资源
最近更新 更多