Каталог Symlink с содержимым

Система управления пакетами Fedora предназначена для того, чтобы рассматривать вашу систему как состоящую из последовательного набора RPM. Если вы выходите за его пределы, у нее нет хорошего способа справиться с этим. Вы пытались обойти это, исключив пакет, но это может вызвать другие проблемы (что если другой пакет действительно требует эту версию NPM для системы, например).

Поэтому вместо этого я бы предложил следующее:

Установите свой собственный NPM в /usr/local/, /opt или /home/lynob/whatever. Настройте свои пути и скрипты так, чтобы они использовались для ваших собственных вещей. Полностью игнорируйте системный npm; либо не устанавливайте его, либо, если он установлен, не используйте его для программ, для которых вам нужна upstream-версия.

1
02.03.2017, 15:41
1 ответ

Одной из идей было бы переопределить /usr/foo, но только для нарушающего правила приложения. Неправильное приложение будет видеть /usr/foo как псевдоним для /bigdata, но все остальные процессы в системе будут продолжать видеть реальное содержимое /usr/foo, включая файлы, которые там находятся. Это предполагает, что нарушающее правила приложение не заботится о том, что нормальное содержимое /usr/foo для него недоступно.

sudo unshare --mount sh -c 'mount --make-rprivate / &&
    mount -n --bind /bigdata /usr/foo &&
    exec su "$SUDO_USER" -c misbehaving_application'

(Проверено)

В противном случае, OverlayFS может решить вашу проблему, как было предложено в комментариях.

Наконец, в качестве последнего средства, некоторые гимнастические упражнения с симлинками могут помочь. Идея заключается в следующем:

  • bind смонтируйте копию /usr/foo в другом месте

    mkdir /writable/place/foo
    mount --bind /usr/foo /writable/place/foo
    
  • Сквош /usr/foo с вашей директорией замены

    mount --bind /bigdata /usr/foo
    
  • Симлинк существующих файлов, чтобы к ним можно было получить доступ из /usr/foo

    for x in /writable/place/foo/*; do
     ln -s "$x" /usr/foo
    done
    

(Не проверено)

1
27.01.2020, 23:46

Теги

Похожие вопросы