cvs不再在远程终端的mac os x sierra上工作
更新到mac os x sierra我的cvs(是的,我仍在使用cvs)存储库不再可以从远程计算机访问。我仍然可以访问CVS使用终端窗口本地计算机上的命令,使用:cvs不再在远程终端的mac os x sierra上工作
CVSROOT=/usr/local/cvsrep
但如果我定义与
export CVS_RSH=ssh
export CVSROOT=:ext:[email protected]/usr/local/cvsrep
CVS的变量,它也不起作用,给错误消息:
tw-imac:testcvs twarren$ cvs version
Client: Concurrent Versions System (CVS) 1.12.13 (client/server)
Password:
bash: cvs: command not found
cvs程序安装在/ usr/local/bin(它位于PATH上)。它是旧版本的cvs,曾经与mac os x一起使用,并且在更新版本的mac os x中运行良好,直到sierra。
所以我找到了一种让CVS在塞拉利昂工作的方法。问题似乎是/ usr/local/bin目录不再位于由ssh启动的shell路径中。因此,解决方案包括将cvs可执行文件复制到/ usr/bin
但是,为了在Sierra上完成此操作,我必须暂时禁用SIP。这是通过做:
- 重启与恢复模式
- 运行终端程序
- 执行:csrutil禁用
- 重启
然后,我可以复制的CVS程序。在验证它正常工作后,我重复了步骤1-4,除了使用:步骤3中的csrutil enable。
注意:可能会有更新Sierra的可能会替换/ usr/bin内容的情况,因此可能这个过程需要在更新后重复。为了解决这个问题,我复制了cvs模块而不是移动它,所以它仍然可以在旧的位置使用。注2:我同意那些推荐使用git而不是cvs的人,并且会在所有新项目中这样做。此外,我最终还会在现有项目中尽可能将git转换为git,但很高兴我仍然可以像以前一样使用cvs。
太棒了!为我工作。不要忘记复制文件后重新启用SIP! –
我刚刚面临同样的问题。
即,远程CVS签出不起作用。
即cvs -z3 -d:ext:<user>@<cvs-server-ip>:<CVSROOT> co -P -r <REVISION> <MODULE>
导致cvs: bad command
有三个问题,
- CVS在10辗转回来。9
- cvs over ssh依赖于sshd PATH支持,该支持是硬编码的
- /usr/bin是无根的,即只读。
您通过安装CVS解决第一个问题自制
- 安装自制见:https://brew.sh
- 然后
brew install cvs
下一个问题,就是当你尝试运行cvs:ext,你发现PATH不正确,这可以像这样测试:
ssh <user>@cvs-sever-ip env | grep PATH
你会看到,PATH=/usr/bin:/bin:/usr/sbin:/sbin
,这是sshd的非交互式的硬编码路径。对于非交互式ssh,CVS用来访问homebrew cvs install(安装在`/ usr/local/bin/cvs)中,需要将/ usr/local/bin添加到sshd路径中。 AFAICT不能这么做...不平凡......因此,最好的解决方案是在/ usr/bin目录中创建一个sybolic链接。
sudo ln -s /usr/local/bin/cvs /usr/bin/cvs
这导致了第三个问题。它不起作用,因为/ usr/bin是无根的,因此是只读的。
您可以在恢复模式中禁用无根模式...然后执行此操作,然后重新启用它。
但最简单的解决方法是重启进入恢复模式,进入终端,然后是CD /卷,然后导航至您的启动卷上的/ usr/bin目录,即cd /Volumes/<bootvolume>/usr/bin
然后运行命令:
ln -s /usr/local/bin/cvs cvs
这将创建一个符号链接从/ usr/bin中/ CVS - >在/ usr/local/bin目录/ CVS
重启回到您的操作系统,并应该修复它。
您可以
ssh <user>@<cvs-server-ip> which cvs
验证这一点应该返回:
/usr/bin/cvs
现在您的远程CVS检出应该工作...
同样的问题在这里,我试图用自制软件安装cvs,但仍然无法运行 –
是的,问题似乎是,在SSH认证成功后,启动的bash shell不包含/ usr/local/bin目录,因此发生“找不到cvs命令”错误。 – user2132980