【发布时间】:2021-12-08 17:42:20
【问题描述】:
我想在机器 A 上做一个程序。但是 Makefile 从机器 B 调用一个程序。
我应该如何定义或链接从机器 B 到机器 A 的 PATH?有什么办法可以将B机器上的文件夹挂载到A机器上作为磁盘,然后添加PATH?
谢谢。
【问题讨论】:
我想在机器 A 上做一个程序。但是 Makefile 从机器 B 调用一个程序。
我应该如何定义或链接从机器 B 到机器 A 的 PATH?有什么办法可以将B机器上的文件夹挂载到A机器上作为磁盘,然后添加PATH?
谢谢。
【问题讨论】:
您将两个问题混合在一起:如何从远程主机复制(或挂载)文件(或目录),以及如何设置 PATH 以让您的 Makefile 找到它。
对于第一个:TLDR,您应该使用 sshfs 或 scp。可用选项的长版本:
sshfs:最快的方法。它只是建立到您的 B 主机的 SSH 连接,因此除了 SSH 之外不需要任何特殊服务器。但是,它使用 FUSE,因此速度较慢。无需 root,因为它是一个按用户的解决方案。
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)。
希望对您有所帮助。
【讨论】: