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。

+0

同样的问题在这里,我试图用自制软件安装cvs,但仍然无法运行 –

+0

是的,问题似乎是,在SSH认证成功后,启动的bash shell不包含/ usr/local/bin目录,因此发生“找不到cvs命令”错误。 – user2132980

使用homebrew(获得的情况下自制软件没有的话),重新安装CVS,所以输入到你的终端:

酿造安装CVS

应该工作

+0

,这不适合我。 – user2132980

所以我找到了一种让CVS在塞拉利昂工作的方法。问题似乎是/ usr/local/bin目录不再位于由ssh启动的shell路径中。因此,解决方案包括将cvs可执行文件复制到/ usr/bin

但是,为了在Sierra上完成此操作,我必须暂时禁用SIP。这是通过做:

  1. 重启与恢复模式
  2. 运行终端程序
  3. 执行:csrutil禁用
  4. 重启

然后,我可以复制的CVS程序。在验证它正常工作后,我重复了步骤1-4,除了使用:步骤3中的csrutil enable。

注意:可能会有更新Sierra的可能会替换/ usr/bin内容的情况,因此可能这个过程需要在更新后重复。为了解决这个问题,我复制了cvs模块而不是移动它,所以它仍然可以在旧的位置使用。注2:我同意那些推荐使用git而不是cvs的人,并且会在所有新项目中这样做。此外,我最终还会在现有项目中尽可能将git转换为git,但很高兴我仍然可以像以前一样使用cvs。

+0

太棒了!为我工作。不要忘记复制文件后重新启用SIP! –

我刚刚面临同样的问题。

即,远程CVS签出不起作用。

cvs -z3 -d:ext:<user>@<cvs-server-ip>:<CVSROOT> co -P -r <REVISION> <MODULE>导致cvs: bad command

有三个问题

  1. CVS在10辗转回来。9
  2. cvs over ssh依赖于sshd PATH支持,该支持是硬编码的
  3. /usr/bin是无根的,即只读。

您通过安装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检出应该工作...