我知道在其他 StackExchange 站点上也有人问过类似的问题,但我认为计算科学的开发可能会因为常见的计算环境而有所不同。由于时间或内存限制(或者我正在为英特尔协处理器开发),我经常无法在本地机器上运行合理的测试。我也无法在本地机器上真正测试分布式并行性,因此我登录到远程集群并在那里运行我的软件。
本地开发很好,因为我通常在自己的机器上拥有 root 权限,并且可以安装很好的工具,如 valgrind、gdb、libclang(用于源代码完成)、ranger 等。但是,我的计算机可能具有与远程计算机上可用的编译器和库版本不同的编译器和库版本(这是共享的,我没有权限)。
远程开发可确保编译器和库版本相同,并且我可以编辑、编译和运行,而无需以某种方式同步我的更改。我可以轻松地与 git 同步,但是为了修复我忘记的分号而提交、推送然后拉取可能会很痛苦。
理想情况下,我会在远程机器上拥有我的所有工具,但是如果没有权限,当它们有多个依赖项并且我不能使用没有 root 的包管理器时,安装某些工具可能真的很烦人。
使用我没有权限的远程计算机进行开发的最佳方法是什么?