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側をクライアントでそれぞれ起動。
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:/に直接おいている。