Makefile和rsync错误:无法执行ssh:没有这样的文件或目录

Makefile和rsync错误:无法执行ssh:没有这样的文件或目录,makefile,rsync,Makefile,Rsync,我正在尝试使用rsync和makefile将mac上的本地文件发布到我的服务器。 运行make命令时,出现以下错误: rsync: Failed to exec ssh: No such file or directory (2) rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86) [sender=2.6.9] rsync: connection unexpe

我正在尝试使用rsync和makefile将mac上的本地文件发布到我的服务器。 运行make命令时,出现以下错误:

rsync: Failed to exec ssh: No such file or directory (2)  
rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86)   [sender=2.6.9]  
rsync: connection unexpectedly closed (0 bytes received so far) [sender]  
rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [sender=2.6.9]  
make: *** [deploy] Error 14  
奇怪的是,如果我直接在shell中输入rsync命令,它就会工作

以下是makefile中有趣的部分:

USER = admin  
SERVER = 92.243.xx.xx  
PATH = d_ghost1/www/sub.domain.de/htdocs/  

deploy:  
    /usr/bin/rsync -avz \  
    --exclude '.git*' \  
    --exclude '.DS*' \  
    --exclude '*.log' \  
    --exclude 'config.ini\*' \  
    --exclude 'backend/config.ini\*' \  
    ./{assets,backend,frontend,templates,waffle} $(USER)@$(SERVER):$(PATH)  
有人能理解这一点吗? 谢谢
Lutz

如果您将局部变量PATH重命名为类似REMPATH的东西,您将不会干扰系统的PATH变量(指示在何处查找可执行文件),希望所有这些都应该是您所期望的…

我最近在Ubuntu 18.04 docker映像上遇到了相同的错误。按照建议安装openssh客户端包解决了我的问题


sudo-apt-install-y openssh-client

我不知道rsynch,但它是否可能在某些shell中工作,而在其他shell中不工作?您可以做一些事情来缩小问题的范围——我将从一个规则开始,该规则执行
哪个ssh
。我这样做了,make使用的shell知道ssh位于/usr/bin/sshAll,接下来我将尝试尽可能地简化makefile,同时仍然再现错误。另外,谷歌说rsync有时很难找到ssh,所以你可以尝试在rsync/bin/中添加一个符号链接,或者使用
-e/usr/bin/ssh
。该死。。就这样!我从未费心设置-e标志,因为make使用的shell知道ssh的路径。谢谢你让我试试!问题仍然存在。。为什么我需要它?有没有什么地方我可以在osx上设置路径,以便它们可以用于任何shell?