Vagrant の VM で GUI (X11) のアプリケーションを使う

Vagrant の VM は大抵 CUI で操作するけど、たまに GUI のアプリケーションをどーしても使いたくなることってあると思う。 今回は SSH の X11 転送を使って Vagrant の VM 上で動く X を使ったアプリケーションを操作できるようにしてみる。

まず Vagrant を動かすホストには X Server が必要なのでインストールする。 OS X の場合 10.8 (Mountain Lion) 以降 X Server はバンドルされなくなってしまったので、別途 XQuartz を入れる。

さて、以下が肝心の Vagrantfile だけど、ポイントは config.ssh.forward_x11 を true にすることだけ。

$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos65"
  config.ssh.forward_x11 = true

上記の Vagrantfile から VM を起動してログインする。
$ vagrant up
$ vagrant ssh

今回、動作確認には CentOS 6.5 を使った。 VM には X Client が必要なので “X Window System” をインストールし、ついでに日本語環境も欲しいので “Japanese Support” も入れておく。 終わったらデフォルトのランレベルを X11 に変更して再起動。
vagrant $ sudo yum -y groupinstall "X Window System" "Japanese Support"
vagrant $ sudo sed -i.bak -e "s/id:[0-6]:initdefault:/id:5:initdefault:/" /etc/inittab
vagrant $ sudo shutdown -r now

X11 を使ったアプリケーションとして、試しに Firefox をインストールして起動してみる。
$ vagrant ssh
vagrant $ sudo yum -y install firefox
vagrant $ firefox

Risolvere i problemi di disconnessione con X11

Non so voi, ma io da quando ho aggiornato i miei Mac ad OS X 10.7 e versioni successive, spesso incontro alcuni problemi nella connesione remota via ssh ai miei server quando è necessario veicolare informazioni di carattere grafico sul server X installato nel Mac.

Apple, infatti, ha smesso di preparare una versione di X11 compilata internamente dai suoi sviluppatori e si è affidata completamente ai lavori del progetto open source XQuartz – come dichiarato esplicitamente nella pagina di supporto HT5293.

Il problema principale appare quando ci si connette ad un server remoto attraverso il più classico dei comandi
ssh -X utente@server-remoto.it
… ad un certo punto, dopo 20 minuti dal login tipicamente, lanciando un'applicazione grafica del server remoto si ottiene a terminale un messaggio di avviso del tipo
can’t open display: localhost:10.0

Motivo di ciò è che, secondo la configurazione di default della maggior parte delle distribuzioni GNU/Linux, l’X forwarding dei pacchetti su connessione ssh è considerata untrusted ed è soggetta ad un timeout di 20 minuti se inattiva. Cioè se io attivo la connessione ssh richiedendo l'X forwarding, modifico dei parametri, faccio altro e soltanto dopo 20 minuti mi ricordo di lanciare il programma grafico remoto del server, tale connessione sarà stata inattiva e quindi de-autorizzata dal sistema. Se invece subito dopo aver fatto il login lancio l'applicazione grafica questa funzionerà indefinitivamente sino a che io non andrò a chiuderla.

Detto questo la soluzione appare ovvia, dovremo andare il funzionamento di questo meccanismo di timeout. Questo può essere ottenuto secondo due filosofie di pensiero: dichiarare per sempre trusted l'X forwarding da parte del server, oppure aumentare il valore di default del timeout (tenendo presente che c'è un valore massimo di 596 ore).

Il consiglio è quello di impostare a ‘yes’ il valore del parametro ForwardX11Trusted nel file di configurazione /etc/ssh_config del nostro server remoto, oppure impostare nel proprio client il valore ForwardX11Timeout XXh (dove XX sono le ore dopo cui innescare il timeout) nel file ~/.ssh/config del nostro Mac.

Milan Kazarka wall

Secure Internet Browsing

Spiderinabox is a project I did to make an out of the box solution for secure browsing on my Mac. What you get is a basic preconfigured installation of OpenBSD prepared as a VirtualBox image loaded with Firefox and a few scripts and programs to launch it and invoke Firefox over a secure connection. The visualisation of Firefox is done on the OSX side using XQuartz, so you don’t need to exit your working environment and switch between OSX and OpenBSD.

So Firefox runs encapsulated in OpenBSD and doesn’t have access to OSX in any way. You don’t need to worry about installing a virtual machine and such.

Wine を使って Kindle for PC を Mac で動かしてみた

これまでパソコンで Kindle の電子書籍を読むには Kindle Cloud Reader を使うやり方があった。 ただし、これは和書には未対応なので、小説などは読むことができない。

今回 Kindle for PC が公開されたことで、ついに Windows PC であれば Kindle で和書を含む電子書籍がパソコンで読めるようになった。 しかしながら、Mac については Kindle for Mac が相変わらず日本アカウントに未対応のままなので救われていない。 ならばと Kindle for PC を Wine を使って試しに Mac で動かしてみた。

まず、Wine の動作には X11 (XQuartz) が必要なので、入っていない場合はインストールする。 Homebrew Cask なら以下のコマンドラインで一発。 Homebrew Cask を使っていない場合は、XQuartz の公式サイトからインストーラをダウンロードして実行する。

$ brew cask install xquartz

次に Wine を Homebrew でインストールする。 依存するパッケージが多いので結構時間がかかる。
$ brew install wine

もし、Homebrew が入っていない場合には、公式サイトの説明に沿ってインストールする。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

次に Kindle for PC のインストーラをダウンロードする。 以下は Homebrew でインストールした wget コマンドを使ったけど、もちろん公式サイトから直接ダウンロードしてきても構わない。
$ wget --trust-server-names http://www.amazon.co.jp/kindlepcdownload
$ ls | grep -i kindle

Wine を使って、ダウンロードしてきたインストーラを実行する。
$ wine KindleForPC-installer.exe

インストール画面が表示されれば成功。 インストールは全自動で進むので、終わったら自分の Amazon アカウントを入力して使うだけ。

デフォルトでは ~/.wine 以下に Windows の仮想的なファイルシステムができている。 次に Kindle を起動するときは、そこにインストールされた実行ファイルを指定すれば良いっぽい。
$ wine ~/.wine/drive_c/Program\ Files/Amazon/Kindle/Kindle.exe


So apparently the problem with my game is in The Cider.

Basically the Cider is the emulator in the sims 3 that makes it run on a mac. EA used one that apparently was designed to really only run small programs, not something big like TS3. When this error happens, it only happens in MAC users (which is why the sims is more likely to crash on a mac and lag) and it’s because EA were too lazy to source or create an emulator that could actually support a game so big.

To find a program similar to the cider you have to install it in a mess of files and they are tricky to uninstall if you’re finding it borks up your mac too much. The only one I’ve found that Doesn’t bork up your mac too much is called XQuartz (someone on the EA sims board recommended it) However, every review of the product I’ve found doesn’t give me much insight on how to actually run it and has mentioned that it’s a giant bitch to uninstall. GIMP users recommend it however.

There has been a few bugs with it and i’m wondering if anybody has ever had to use something like XQuartz before?

Fixing matplotlib png output on Mac OS X

I recently had a problem when trying to save PNG output of a plot with matplotlib:

libpng warning: Application built with libpng-1.5.18 but running with 1.6.10
Traceback (most recent call last):
  File ".../matplotlib/backend_bases.py", line 1962, in print_png
    return agg.print_png(*args, **kwargs)
  File ".../matplotlib/backends/backend_agg.py", line 517, in print_png
    filename_or_obj, self.figure.dpi)
RuntimeError: Could not create write struct

It turns out the problem is that during installation, matplotlib found the older libpng version provided by XQuartz, but then at runtime it found the newer libpng version installed via homebrew.

I’ve struggled to find a satisfactory solution to this, beyond “switch to SVG” or “uninstall XQuartz”. The best I’ve come across is this comment by jaengelberg on github.

Basically it involves temporarily renaming the XQuartz libpng headers so they can’t be found during matplotlib installation. Here’s the process in full:

pip uninstall matplotlib
cd /opt/X11/include/libpng15
sudo mv png.h _png.h
sudo mv pngconf.h _pngconf.h
sudo mv pnglibconf.h _pnglibconf.h
pip install matplotlib
sudo mv _png.h png.h
sudo mv _pngconf.h pngconf.h
sudo mv _pnglibconf.h pnglibconf.h

MBA(late 2010, 10.8.3, JISキーボード)にてXQuartz2.7.4を使用するとキーボードがUS配列で認識されてしまうので、それの解決法メモ。

ホームディレクトリ直下に.Xmodmapというファイルを用意して、xmodmap .Xmodmapで読み込ませることで一応認識。(コピペしたらエラーが出たので、そのときはエラーに従って適宜修正)




「PythonでかんたんiOSアプリプログラミング」を購入し、 kivyをインストールしようとしたものの、機能しない。



install kivy


→素直な気持ちkivyをインストール 1)https://github.com/kivy/kivyでDL

pip install git+https://github.com/kivy/kivy.git

→"Cython is missing, its required for compiling kivy !“と表示


sudo pip install -I Cython==0.22



pip install hg+http://bitbucket.org/pygame/pygame

→hgがだめ(入ってなかった) →https://mercurial.selenic.com/downloadsでMercurialをDL+install
→pip install hg+xxxで進められたけど、Q11?を求められた


ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install sdl


sudo pip install hg+http://bitbucket.org/pygame/pygame

→Successfully installed pygame-1.9.2a0とな★


python ~/dev/sample/chap01_01/main.py