我想在机器a上做一个程序,但是Makefile调用了机器b上的程序。
如何定义或链接机器B到机器A的PATH ?是否有办法将机器B的文件夹作为磁盘挂载到机器a,然后添加PATH?
谢谢。
您将两个问题混合在一起:如何从远程主机复制(或挂载)文件(或目录),以及如何设置PATH以让Makefile找到它。
对于第一个:TLDR,应该使用sshfs或scp。可用选项的长版本:
-
sshfs:最快的方法。它只是建立到您的B主机的SSH连接,因此除了SSH之外,它不需要任何特殊的服务器。但是,它使用FUSE,因此速度较慢。不需要根用户,因为它是每个用户的解决方案。
-
NFS: NFS需要一些工作来设置,但是一旦使其工作,它就提供了与系统的无缝集成。为了充分利用NFS,您需要设置LDAP、Kerberos和NFS ID Map,尽管未加密的匿名NFS仍然可以工作。然后需要将NFS服务器挂载到系统范围的挂载点。最后,您可以在该挂载点上工作,它就像您的本地硬盘一样:权限就可以工作。需要root,因为它需要全局挂载。我个人认为,我不建议您使用这种方法,因为它对于您的需求来说太复杂了。建议使用共享
/home
驱动器。 -
scp:使用scp从远程主机复制单个文件,而无需挂载sshfs FUSE文件系统。这也很快。
-
SMB:我用得不多,但它和NFS一样复杂,权限集成也不像NFS那样无缝。需要注意的是,它需要大量的工作来处理,特别是在权限方面。
-
FTP/HTTP/…:它们比SMB或NFS更容易,但仍然比sshfs或scp更难设置(您需要设置单独的服务器)。
复杂性:SMB>NFS的在FTP/HTTP>SCP/SSHFS(最适合您的需求)
对于第二个问题,一旦将二进制文件复制到本地主机,或者将远程目录挂载到本地挂载点,就可以将PATH环境变量设置为</directory/of/mountpoint/or/parent/directory/to/the/binary>:$PATH
之类的值。这可以在Makefile或shell脚本中完成(例如export PATH=appended_path:$PATH
)。
希望有帮助。