2011-07-24 21 views
3

假設我有一臺運行在某個遠程服務器上的Emacs-Server,運行我的應用程序所需的所有庫和軟件。Emacs客戶端 - 最小安裝是什麼?

然後,我想要幾個客戶端使用Emacs-client連接到該遠程機器。每個客戶端是否需要完整的Emacs安裝,或者是否有足夠的最低限度安裝來與遠程服務器進行通信,其中的所有操作都是?

這個(Emacs-)客戶端安裝是否如此之小,幾乎所有的軟件更新都可以在服務器上完成,而不會影響Emacs客戶端?

回答

1

emacs的鍵綁定是否有一個原因不要遠程運行客戶端,只需使用本地顯示器?這樣,本地機器上幾乎所有你需要的就是ssh客戶端和X Window服務器。

ssh -X (user)@(server) "emacsclient -c"


編輯的意見:

此命令啓動一個新的客戶端連接到現有的Emacs的服務器(它假定已經運行)。如果沒有現有服務器,則可以使用"emacsclient -a '' -c"自動啓動emacs --daemon,但我不知道是否要連接用戶啓動服務器。

事實上,我很不確定整個多用戶方面,說實話,我從來沒有這樣做過。上述認證由ssh處理,但當服務器和客戶端由不同的用戶啓動時,很可能會有後續的權限問題需要處理,或者類似的問題。

這種方法應該是可能的與Windows/Cygwin作爲客戶端和/或服務器,因爲Cygwin提供了Emacs,OpenSSH和X.or​​g包。 (我經常使用Windows/Cygwin作爲在Linux上運行的Emacs的本地顯示器。)但是,設置可能比較困難,而且當您使用Cygwin時,任何權限問題可能都會有所不同。

我不太確定沒有Cygwin,這是如何工作的。 NTEmacs肯定不會與X.org交流,所以我想你會在這種情況下成爲終端用戶。 (可能是其他選項,但Cygwin聽起來像是在Windows上使用所有Emacs,SSH和X的最佳集成方法)。

最後,我想你可能會得到你的「連接被拒絕」錯誤,因爲localhost沒有運行sshd守護進程?我會說ssh的配置超出了這個問題的範圍,但是網上有很多資源。

+0

太好了,謝謝。這樣簡單的事情,所有更新和所有維護都發生在服務器上,無需安裝,這正是我一直在尋找的。我目前沒有遠程服務器試用它,它是否也可以在localhost上運行?是僅限於Linux機器,還是可能在Windows上(有/沒有cygwin)? – Thorsten

+0

還有一些問題:這是否會啓動新的emacsclient,或連接到現有的?如果Emacs始終在服務器上運行,並且emacs客戶端僅在客戶端計算機上按需啓動,那將很方便。身份驗證如何在像這樣的設置中工作? – Thorsten

+0

當我嘗試:sudo ssh -X tj1 @ localhost「emacsclient -c」我得到 ssh:連接到主機localhost端口22:連接被拒絕 – Thorsten

0

我不知道這是可能的。 emacsclient使用tramp連接到遠程服務器,並且通過查看tramp elisp文件(41)中的require的數量,它似乎不太可能。你可以自己用以下嘗試:

zgrep -oE "\(require '[a-z-]+\)" *el.gz | sed -e 's%[a-z0-9-]\+\.el\.gz:%%g' | sort | uniq -cu | wc -l

+0

謝謝,那不是我所希望的。也許,通過Emacs 24,只需在本地安裝Emacs(客戶端)的最低核心版本並將所有庫存放在遠程服務器上,所有客戶端都可以訪問它們。順便說一句,令人驚歎的Linux命令行巫術。 – Thorsten

1

取決於你想要達到的目標,你可以使用Emacs和畫面的結合。通過從遠程計算機上的屏幕啓動Emacs並從中分離,您可以隨後從不具有Emacs的其他計算機重新連接。再次,這是否會對你有用取決於你想要做什麼;但是,對於許多Emacs用例,這可能非常有效。如果你不熟悉這種方式使用的屏幕,下面是一些閱讀材料:

screen - The Terminal Multiplexer

+0

對我來說這是一個全新的概念,但很有趣。我想使用一個非常有限的Emacs客戶端版本,就像在典型的客戶端 - 服務器應用程序中替代Web瀏覽器一樣,適用於沒有複雜安裝例程的非專家。我將不得不看看屏幕是否足夠容易使用,但它聽起來很有前途。謝謝。 – Thorsten

+0

如果(在對此進行更多研究之後),您認爲Emacs和Screen的組合可能會滿足您的需求,您可能需要提出一個新問題,詳細說明您希望使用Emacs和Screen實現的功能。這樣,你更有可能得到很好的迴應。 – zev

0

我不是emacsclient的專家,但我不認爲這是被設計用來做什麼你正在尋找。我認爲一般的用例是emacsclient允許你重定向新的請求,用emacs打開一個文件到一個持久的emacs進程,以避免在啓動的時候可能會有一點開銷。您似乎正在尋找更多真正的客戶端/服務器關係。

我認爲要實現您瞄準的目標,您可能需要在emacs外部尋找一些東西,可能是自己的項目 - 'emacsRemoteClient。它歸結爲一個或兩個模型;你想要編輯的文件需要將它的路徑發送到服務器機器,以便emacs可以做某種類型的遠程流量訪問,然後在本地產生xwindow(使用本地X env或在Windows上需要x服務器)。 ..或兩個,將文件傳輸到服務器盒上的某個臨時位置,並再次在本地產生遠程x窗口(隨後同步tmp &本地文件之間的更改)。

會很酷,有類似的東西......但懷疑它會涉及一些工作。也許我們只是需要一個版本用JavaScript編寫的Emacs,它可以生活在雲中或在您的瀏覽器...哦,有在瀏覽器;-)

史蒂夫

+0

您好Steve,聽起來有趣,我認爲zev和phils在他們的答案中顯示了Emacs以外可能工作的極少。那是 - 你知道康克嗎?這是一個用JavaScript編寫的Web瀏覽器,在Emacs之後,使用緩衝區和Emacs鍵綁定。 – Thorsten