我倾向于将一些有用的程序复制到我login的每台服务器上。 我有大量的configuration文件,一个静态编译的zsh(如果我需要一个新版本),vim,python,版本控制二进制文件等。我有一个脚本,只是检查出来,链接到所有二进制文件,如果他们比系统版本更新,并做所有需要的设置 – 我有我需要的任何types的主机/发行版的设置。
这工作得很好,而我在所有主机上都有相同的login。 不幸的是,现在我不能在一些主机上使用我的标准login。 我怎样才能修改我的环境,以同样的方式工作,而无需重新编译? 例如对于一个正常的部署,我需要重新编译python使/home/yyy/priv_env/python/lib主库path,但在所有其他主机上我需要/home/xxx/... 这种情况当然可以用PYTHONPATH来解决,但是还有其他的二进制文件采用编译阶段的默认path – 比如zsh模块。 有没有办法解决这个问题,而不考虑许多shellvariables?
理想情况下,我将在环境中使用私有的chroot,映射到所需的所有目录。 但是chroot当然不适用于非root用户。
我还想过在/tmp/${random_preselected_string}设置一个链接到${HOME}/priv_env并设置所有path指向/tmp/...链接。 只要没有人在那里创build一个具有相同名称的文件,这将工作。 另外,长时间的login会话可能会受到tmp autocleaners的影响。
你有什么更好的想法?
我将看看如何将$ HOME指定为软件在运行时评估的path的一部分。 有一个很好的机会,需要修补代码,但…
这不会有太大的帮助,但作为一般规则,源代码构build背后的想法是针对主机的库configuration。 通过在另一台机器上静态链接生成的便携式二进制文件不能保证能正常工作,而且也不是规范的做事方式。 一般来说,你应该在你的目标机器上编译自定义的二进制文件。
作为备用,我将前缀设置为/usr/local ,但是我又看到了你的困境,没有root权限和所有权限。