Установка программного обеспечения в домашнем каталоге
Я склонен копировать некоторые полезные программы на каждый сервер, к которому я подключаюсь. У меня есть множество файлов конфигурации, статически скомпилированный 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.
У тебя есть идеи получше?
2 ответа
Я бы посмотрел на способы указать $HOME как часть пути для оценки программного обеспечения во время выполнения. Хотя есть хороший шанс, что потребуется исправление кода...
Это не сильно поможет, но, как правило, идея исходных сборок заключается в том, что они предназначены для конфигурации библиотеки вашего хост-компьютера. Портативные двоичные файлы, которые вы сгенерировали с помощью статического связывания на другом компьютере, не гарантированно работают и не являются каноническим способом работы. Как правило, вы должны компилировать свои собственные двоичные файлы на каждой машине, на которую вы нацелены.
В качестве запасного варианта я бы установил префикс /usr/local
но опять я вижу твою дилемму, не имея root-доступа и все.