今夜もLab.に独り

蛙飛び込むVimの音

Synergyのビルド

本日、Win7とUbuntu14.04のマルチディスプレイ環境をつくるためにSynergyを導入したら

途中でどうにも接続できなくなって詰まった。

つまづいた点

Synergyのバージョンを揃えないとダメっぽいことを知らなかった。

パッケージ管理に任せてインストールしたらバージョンがまるで違った。

解決

手動インストールしてバージョンを揃えた。

Windows

Chocolateyでサクッと導入。

chocolatey install synergy

この時点で、Win7にはsynergy-1.5.0が入った。

Ubuntu(失敗編)

特にリポジトリの追加をしていないapt-getでサクッと導入。

sudo apt-get update
sudo apt-get install synergy

この時点で、Win7にはsynergy-1.4.12が入った。

この1.5.0と1.4.12の組み合わせは動作しないという情報がWebのあちこちに転がっているようだけれど、それを知らなかった俺はそのまま20分くらい必死に作業していた。

バージョンを揃えればとりあえず動くらしいので、おとなしく

sudo apt-get remove synergy

でさようなら。

Ubuntu(解決編)

githubから1.5.0のソースを取ってきて、手動で導入。

https://github.com/synergy/synergy

masterの最新は1.5.1だけれど、ブランチ選択の上にある xx releases をクリックすれば各リリースを辿れる。

wget https://github.com/synergy/synergy/archive/1.5.0.tar.gz
tar zxvf 1.5.0.tar.gz

ってするとカレントディレクトリにsynergy-1.5.0が解凍される。

コンパイルに必要なものはdevelopper用wikiを参照。

http://synergy-project.org/wiki/Compiling

とりあえずUbuntu 10.04のdependencyと同じだと思って用意。

ちょっと心配だったので一応--reinstallで上書き強制。

sudo apt-get update
sudo apt-get install cmake make g++ xorg-dev libqt4-dev libcurl4-openssl-dev libavahi-compat-libdnssd-dev --reinstall

満を持してコンパイル

cd synergy-1.5.0

./hm.sh conf -g1

./hm.sh build

で終了。

実行ファイルは全てsynergy1.5.0/bin/に収まっているので、後は適宜PATH通すなりなんなりと。

一応、GUIで設定に使うのはsynergyで、クライアント起動用の実行ファイルがsynergycだったはず。

クライアントの自動起動

今回はWin7につないでいるマウス・キーボードをUbuntuで認識させたかったので、

Win7側をサーバ、Ubuntu側をクライアントでそれぞれ起動。

Ubuntuのクライアント自動起動は、

sudo vim /etc/lightdm/users.conf

してファイル末尾に2行追加。

#synergy
synergycの絶対パス -n サーバのスクリーン名

余分なマウスとキーボードが無くなって、机の上がすげー快適。

再起動したら動かなかった。

https://help.ubuntu.com/community/SynergyHowto#Autostart_Synergy_before_logging_in_.28LightDM.29

を見たら一番下に書いてあったので、改めて

sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

してファイル末尾に追加。

greeter-setup-script=/wgetしたディレクトリ/synergy-1.5.0/bin/synergyc --crypto-pass <暗号化passphraseのハッシュ> <サーバのIP>

ですっきり解決。

Win7のIPは研究室の制約でDHCPなので、avahiに働いてもらってホスト名.localでIP解決している。

ちょっと驚いたのは、<暗号化passphraseのハッシュ>は、サーバ側の暗号化設定で入力した<暗号化passphrase>と同じではない。

https://wiki.archlinux.org/index.php/synergy#Use_Encryption

を参考に、

echo -n <暗号化passphrase>|md5sum

の返り値を設定したら動いた。ちょっと面倒くさい。

サーバの設定ファイルとWindows

Windows様のシステムが良く使う半角スペース入りの名前のディレクトリを親に持つと、設定ファイルの絶対パスが正しく入力できなくなる。

エスケープ文字とかも無いらしいので、不作法を承知でC:/に直接おいている。