cvs不再适用于远程终端的mac os x sierra

时间:2016-09-28 12:42:56

标签: macos cvs macos-sierra

更新到mac os x sierra后,我的cvs(是的,我仍在使用cvs)无法再从远程计算机访问存储库。我仍然可以使用终端窗口在本地计算机上访问cvs命令,使用:

<?php
foreach($games as $game)
{
     if(is_array($check) && in_array($game->id,$check))
     {
            echo "Won by"; 
     }
...

虽然如果我用

定义cvs变量
CVSROOT=/usr/local/cvsrep

它也不起作用,给出错误信息:

export CVS_RSH=ssh
export CVSROOT=:ext:twarren@tw-imac.local/usr/local/cvsrep

cvs程序安装在/ usr / local / bin(位于PATH上)。它是旧版本的cvs,曾经与mac os x一起使用,并且在较新版本的mac os x中运行良好,直到sierra。

2 个答案:

答案 0 :(得分:2)

所以我找到了让cvs在山脉上工作的方法。问题似乎是/ usr / local / bin目录不再位于由ssh启动的shell的路径上。所以解决方案包括将cvs可执行文件复制到/ usr / bin

但是,为了在Sierra完成此操作,我不得不暂时禁用SIP。这是通过以下方式完成的:

  1. 使用恢复模式重启
  2. 运行终端实用程序
  3. 执行:csrutil disable
  4. 重新启动
  5. 然后我可以复制cvs程序。在验证它是否正常工作后,我重复了步骤1-4,除了在步骤3中使用:csrutil enable。

    注意:可能会出现更新Sierra可能会替换/ usr / bin内容的情况,因此更新后可能需要重复此过程。为了解决这个问题,我复制了cvs模块而不是移动它,因此它仍然可以在旧位置使用。

    注2:我同意那些建议使用git而不是cvs的人,并且会对所有新项目都这样做。此外,我最终还会在可行的情况下将现有项目转换为git,但很高兴我仍然可以像之前那样使用cvs。

答案 1 :(得分:1)

我刚刚面临同样的问题。

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

即,cvs -z3 -d:ext:<user>@<cvs-server-ip>:<CVSROOT> co -P -r <REVISION> <MODULE>会产生cvs: bad command

有三个问题

  1. cvs在10.9
  2. 中被删除
  3. cvs over ssh依赖于sshd PATH支持,这是一种硬编码
  4. / usr / bin是无根的,即只读。
  5. 您可以通过安装带有自制软件的

    来解决第一个问题

    下一个问题是,当你尝试运行cvs:ext时,你发现PATH不正确,可以这样测试:

    ssh <user>@cvs-sever-ip env | grep PATH

    您将看到PATH=/usr/bin:/bin:/usr/sbin:/sbin,这是sshd非交互式硬编码路径。对于非交互式ssh,正如CVS用来访问自制软件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 / Volumes,然后导航到启动卷上的/ usr / bin目录,即{{1} }

    然后运行命令:

    cd /Volumes/<bootvolume>/usr/bin

    这将创建/ usr / bin / cvs的符号链接 - &gt;的/ usr / local / bin中/ CVS

    重新启动回操作系统,这应该可以修复它。

    您可以使用

    进行验证

    ln -s /usr/local/bin/cvs cvs

    应返回:

    ssh <user>@<cvs-server-ip> which cvs

    现在您的远程cvs结帐应该有效......