2016-09-28 168 views
2

更新到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

回答

0

使用homebrew(獲得的情況下自制軟件沒有的話),重新安裝CVS,所以輸入到你的終端:

釀造安裝CVS

應該工作

+0

,這不適合我。 – user2132980

2

所以我找到了一種讓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! –

1

我剛剛面臨同樣的問題。

即,遠程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檢出應該工作...