【问题标题】:File system 'overlays'文件系统“覆盖”
【发布时间】:2008-10-01 09:56:02
【问题描述】:

具体用例: 在 Eclipse IDE 中,可以通过将插件的文件复制到 $ECLIPSE_HOME/plugins 目录来添加新的“插件”。但是,我想在没有额外插件的情况下保持我原来的 Eclipse 安装“干净”,因为我有时想自己运行这个基本安装。

有什么方法可以避免复制文件(因此无法运行干净的版本),而是在逻辑上“覆盖”另一个目录的内容,使其在运行时看起来就在该目录中?

例如类似:

gravelld@gravelld-laptop:~$ ls $ECLIPSE_HOME/plugins/
org.junit_3.8.2.v200706111738
org.junit4_4.3.1
org.junit.source_3.8.2.v200706111738
gravelld@gravelld-laptop:~$ ls myplugins/
org.dangravell.myplugin.jar
gravelld@gravelld-laptop:~$ overlay myplugins/ $ECLIPSE_HOME/plugins
gravelld@gravelld-laptop:~$ ls $ECLIPSE_HOME/plugins/
org.dangravell.myplugin.jar
org.junit_3.8.2.v200706111738
org.junit4_4.3.1
org.junit.source_3.8.2.v200706111738

另一个用例可能是补丁等等......

可以用符号链接或 mnt 来做些什么吗?

谢谢!

【问题讨论】:

    标签: linux file filesystems


    【解决方案1】:

    您可以为此使用覆盖文件系统。我在 Linux 中知道的三个覆盖文件系统是 unionfsaufsminifo

    Unionfs 包含在最近的 Ubuntu 内核中。

    【讨论】:

      【解决方案2】:

      看看Manage your eclipse environment文章,尤其是方法3

      创建一个链接文件夹来管理产品扩展

      如果您的文件系统上有产品扩展,就像我们在方法 1 中所做的那样,您可以在 Eclipse 程序目录中创建一些简单的文件,以通知 Eclipse 它需要检查这些目录中的插件。

      首先,在 Eclipse 安装文件夹(例如 /opt/eclipse)中创建一个名为 links 的目录。在此文件夹中,您可以创建 *.link 文件(例如,emfPlugins.link)。每个链接文件都指向一个产品扩展位置。 Eclipse 将在启动时扫描此链接文件夹,并在链接文件指向的每个产品扩展中查找插件。

      尽管新的 p2 供应系统完全不同,但 eclipse3.4 仍然支持这一点。


      既然“'links' 目录机制”是已知的,这意味着 vanilla eclipse 和带有自定义通用插件的 eclipse 之间的区别只是“links”目录的存在。

      那么,为什么不使用一个内部带有符号链接的“vanilla eclipse 发行版”,“links”,指向 ../links 呢?

      任何获得 vanilla eclipse 的用户一开始都没有“链接”目录,因此它将作为 vanilla 发行版运行。但是一旦用户创建了一个链接目录或另一个符号链接到一个通用的远程“链接”目录,同一个发行版就会选择通用插件远程目录...

      /path/links -> /remote/links/commonPlugins
      /eclipse/links -> ../links
      

      最后,如果您使用给定组“aGroup”创建“/remote/links/commonPlugins”,并使用“750”掩码保护它,您将拥有自己的一个 eclipse 设置,它将是:

      • “id -a”不包括“aGroup”的任何用户的香草日食
      • 为“aGroup”的任何用户部分提供插件的eclipse

      【讨论】:

      • 看起来很有趣,但我认为这可以在 Linux 中以对 Eclipse 或任何其他查看文件系统的应用程序透明的方式进行(因此缺少“eclipse”标签)。当我想要“香草”日食时,您描述的方式似乎很难改变。
      • 香草 Eclipse 只是一个带有通用自定义插件的 Eclipse 的“链接”目录。即,删除“链接”目录,你会得到一个香草日食
      • 好的,但是如果我想同时运行两个实例,一个是普通的,一个是带插件的,会发生什么?鉴于 Eclipse 的延迟加载行为将是不确定的......例如如果前者先加载,再创建链接,再加载后者,前者会不会看到链接目录?
      • 不,如果你在第一个(vanilla)eclipse启动后创建链接,只有第二个eclipse会检测插件。第一个将保持原样,直到关闭。您还可以为给定组创建具有只读属性的远程插件目录,并从另一个组启动任何 vanilla 会话!
      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 2015-04-30
      • 2015-11-29
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      • 1970-01-01
      相关资源
      最近更新 更多