Файловая система «оверлеи» - PullRequest
1 голос
/ 01 октября 2008

Конкретный вариант использования: В 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 для этого?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 05 октября 2008

Вы можете использовать оверлейную файловую систему для этого. Мне известны три оверлейные файловые системы в Linux: unionfs , aufs и minifo .

Unionfs включен в последние ядра Ubuntu.

1 голос
/ 01 октября 2008

Взгляните на Управление вашей средой затмения статья, особенно Метод 3

Создание папки ссылок для управления расширениями продукта

Если в вашей файловой системе есть расширения продукта, подобные тому, который мы создали в методе 1, вы можете создать несколько простых файлов в программном каталоге Eclipse, чтобы уведомить Eclipse о необходимости проверки этих каталогов на наличие подключаемых модулей.

Сначала создайте каталог в папке установки Eclipse (например, / opt / eclipse), который называется links. В этой папке вы можете создавать файлы * .link (например, emfPlugins.link). Каждый файл ссылки указывает на местоположение расширения продукта. Eclipse просканирует эту папку ссылок при запуске и найдет плагины в каждом расширении продукта, на которые указывает файл ссылок.

Это все еще поддерживается в eclipse3.4, даже несмотря на то, что новая система обеспечения p2 совсем другая.


Теперь, когда известен механизм каталогов «links», это означает, что различие между ванильным затмением и затмением с обычными общими плагинами заключается только в наличии этого каталога «links».

Итак, почему бы не иметь «распределение ванильных затмений» с символической ссылкой внутри, «линками», указывающими на ../links?

Любой пользователь, получающий это vanilla eclipse, сначала не будет иметь рядом с ним каталога 'links', поэтому он будет работать как ванильный дистрибутив. Но как только пользователь создает каталог ссылок или делает другую символическую ссылку на общий удаленный каталог 'links', этот же дистрибутив подберет удаленный каталог общих плагинов ...

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

Наконец, если вы создадите «/ remote / links / commonPlugins» с заданной группой «aGroup» и защитите его маской «750», у вас есть настройки one eclipse, которые будут :

  • Ванильное затмение для любого пользователя, у которого 'id -a' не включает 'aGroup'
  • затмение с плагинами для любой пользовательской части "aGroup"
...