Назад | Перейти на главную страницу

Установка программного обеспечения в домашний каталог

Я стараюсь копировать полезные программы на каждый сервер, на который я вхожу. У меня есть множество файлов конфигурации, статически скомпилированный zsh (на случай, если мне нужна новая версия), vim, python, двоичный файл управления версиями и т. Д. У меня есть сценарий, который просто проверяет их, связывает все двоичные файлы с ~ / bin, если они они новее, чем общесистемные версии, и выполняют всю необходимую настройку - у меня есть необходимая настройка на любом хосте / дистрибутиве.

Это сработало отлично, хотя у меня был одинаковый логин на всех хостах. К сожалению, сейчас я не могу использовать свой стандартный логин на некоторых хостах. Как я могу изменить свою среду, чтобы она работала таким же образом, без перекомпиляции? Например, при обычном развертывании мне нужно было бы перекомпилировать python, чтобы сделать /home/yyy/priv_env/python/lib путь к основной библиотеке, но на всех остальных хостах, которые мне нужны /home/xxx/.... Этот случай можно решить с помощью PYTHONPATH конечно, но есть и другие двоичные файлы, использующие путь по умолчанию на этапе компиляции - например, модули zsh. Есть ли способ решить эту проблему, не заботясь о многих переменных оболочки?

В идеале я бы использовал частный chroot в среде, который отображает все необходимые каталоги в нужные мне места. Но, конечно, chroot недоступен для пользователей без полномочий root.

Еще подумал о настройке ссылки в /tmp/${random_preselected_string} к ${HOME}/priv_env и установив все пути так, чтобы они указывали на /tmp/... ссылка на сайт. Это будет работать до тех пор, пока никто не создаст там файл с таким же именем. Также при длительных сеансах входа на него могут повлиять tmp autocleaners.

Есть ли у вас идеи получше?

Я бы рассмотрел способы указать $ HOME как часть пути для оценки программного обеспечения во время выполнения. Однако есть большая вероятность, что для этого потребуется исправить код ...

Это не сильно поможет, но, как правило, идея исходных сборок заключается в том, что они нацелены на конфигурацию библиотеки вашего хост-компьютера. Переносимые двоичные файлы, созданные вами посредством статической компоновки на другом компьютере, не гарантируют работу и не являются каноническим способом работы. Как правило, вы должны компилировать свои собственные двоичные файлы на каждой целевой машине.

В качестве запасного варианта я бы установил префикс на /usr/local, но опять же, я вижу вашу дилемму, отсутствие root-доступа и все такое.