まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:desktop

IBM LinuxONE(メインフレーム版 Linux)の挑戦シリーズです。今回は RHEL6.x のインスタンス上に X Window のデスクトップ環境を導入してみます。加えてこのデスクトップ環境にリモートアクセスできるよう VNC サーバーも合わせて導入します:
2017012201


まず前提条件として LinuxONE の環境が必要になりますが、今回は「無料で最大 120 日間クラウド上の LinuxONE インスタンスが使える」という IBM LinuxONE コミュニティクラウドの環境を使って RHEL 6.x のサーバーを作り、その上に今回の環境構築を行うことにします。そこまでの環境構築手順についてはこちらを参照ください:
IBM LinuxONE コミュニティクラウドを使う(2017年1月版)


さて、LinuxONE と言っても RHEL(RedHat Enterprise Linux) であることには変わりありません。ということは普通は以下のコマンドで X Window のデスクトップ環境が導入できることをご存知の人も少なくないと思います:
# yum groupinstall "Desktop"

ということは LinuxONE でも同じコマンドを実行するだけでよいのでは・・・と思うかもしれませんが、残念ながら LinuxONE の RHEL6.x では yum は動きますが、グループ情報が登録されておらず、"groupinstall" コマンドが使えない模様でした(赤字および青字が yum groupinstall コマンド実行後の出力結果です):
# yum groupinstall "Desktop"
Loaded plugins: product-id, refresh-packagekit, search-disabled-repos, security,
              : subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Group Process
RHEL67                                                   | 3.0 kB     00:00
rhel67optional                                           | 2.9 kB     00:00
rhel67supp                                               | 2.9 kB     00:00
Warning: Group Desktop does not exist.
Error: No packages in any requested group available to install or update

ではどうするか? 要は「groupinstall がコマンドが使えないなら、install コマンドを使えばいいじゃない」というわけで、yum groupinstall コマンドで実行されるのと同じコマンドを yum install コマンドで実行してしまいましょう。この件について詳しくはこちらのブログエントリで紹介しているので、興味がある方はこちらも参照ください:
yum の groupinstall でインストールされるパッケージを確認する


具体的には以下のコマンドを実行して、"Desktop" グループに含まれるはずの個別パッケージをまとめてインストールするよう指定します:
# yum install NetworkManager NetworkManager-gnome alsa-plugins-pulseaudio at-spi control-center dbus gdm gdm-user-switch-applet gnome-panel gnome-power-manager gnome-screensaver gnome-session gnome-terminal gvfs-archive gvfs-fuse gvfs-smb metacity nautilus notification-daemon polkit-gnome xdg-user-dirs-gtk yelp control-center-extra eog gdm-plugin-fingerprint gnome-applets gnome-media gnome-packagekit gnome-vfs2-smb gok openssh-askpass orca pulseaudio-module-gconf pulseaudio-module-x11 vino

ついでというわけではないのですが、X Window のデスクトップを導入しても、ネットワーク越しにデスクトップが利用できないと意味がありません。というわけで RHEL6.x で使える VNC サーバーとして TigerVNC を導入することにします:
# yum install tigervnc-server

なお、TigerVNC の導入そのもの(インストール後の設定方法含む)について、こちらで詳しく紹介しているので一度参照ください:
CentOS に VNC サーバーを導入する


TigerVNC サーバー導入&設定後に再起動し、VNC ビューワで IP アドレスとポート番号を指定してアクセスすると、LinuxONE に導入された X Window のデスクトップ環境にアクセスできます:
2017012202


これで LinuxONE をデスクトップとして使ったり、GUI 必須のアプリケーションが利用できるようになりますね。
 

ラズベリーパイベースのラップトップ PC である PiTop を、デスクトップ環境として整備しています。さすがにメイン機として使うのは・・・ ですが、サブ機として支障なく使える程度にできないだろうか、と思っています。

ただ改めてラズパイを使ってみると、色々足りない部分も見えてきます。それら足りない部分を導入する手順を調べてみました。ちなみに PiTop で使う OS は Raspbian Jessie とします。


日本語表示

導入手順によってはインストール時にある程度設定できるので、初めから日本語表示ができる環境を手にしている人もいるかもしれませんが念のため。 以下の手順で日本語が正しく表示できるように(□みたいな文字にならないように)して、更に日本語フォントを導入します:
$ sudo raspi-config

"Innternnationalisation Options" 選択
"Change Locale" 選択
"ja_JP.UTF-8" 選択し、デフォルト言語に設定し raspi-config を終了
$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big
2016072501



日本語入力

日本語が正しく表示できても、入力となると別の設定が必要です。今回は IBUS を使って日本語を入力できるよう、必要なアプリを導入して日本語入力設定を行います:
$ sudo apt-get install ibus-anthy

メニューから「設定」-「IBUS の設定」を選択
「インプットメソッド」タブで「日本語 - Anthy」を設定

2016072502

これで画面右上の IBUS アイコンをクリックすることで入力言語を切り替えることができるようになります。


Eclipse

自分がこれがないと Java アプリが作れません。というほど依存している統合開発環境である Eclipse のラズパイ版を導入します。ラズパイ用の Pleiades (ちなみに Eclipse 3.8 ベース)が用意されていたとは・・・
$ sudo apt-get install pleiades

20160728



スクリーンショット

ラズパイでスクリーンショットを撮るにはいくつかの方法があります。自分はこれまでは直接スクリーンショット撮ることはなく、VNC 経由で別PCから画面ショットを撮っていました。が、今回は折角デスクトップ環境を手に入れることができたので、単体で取得できる scrot を使うことにします:
$ sudo apt-get install scrot


その他

個人的によく使う screenvim を入れておきます:
$ sudo apt-get install screen vim

screen と同じくらい使う tmux も Raspbian 上で使うことができそうです:
$ sudo apt-get install libevent-dev libncurses5-dev
$ cd /tmp
$ wget https://github.com/tmux/tmux/archive/2.2.tar.gz
$ tar xvfz 2.2.tar.gz
$ cd tmux-2.2
$ ./configure && make
$ sudo make install

とあるメインフレームコンテストに参加するために IBM 3270 環境が必要になるのでコマンドライン版を導入します:
$ cd /tmp
$ mkdir 3270
$ cd 3270
$ wget http://downloads.sourceforge.net/project/x3270/x3270/3.3.14ga11/suite3270-3.3.14ga11-src.tgz
$ tar xavf suite3270-3.3.14ga11-src.tgz
$ cd c3270-3.3
$ ./configure && make
$ sudo make install

自分はいい歳したオッサンなので、オッサンが喜ぶような X11 アプリをまとめて導入しておきます:
$ sudo apt-get install x11-apps

これで懐かしい "xeyes" などが使えるようになります:
2016073105



その他プログラミング言語やミドルウェアについては適当に。

Java のコードからブラウザを起動できることを知りました。
環境依存とかで面倒そう、、と思っていたのですが、AWT の Desktop クラスを使うことで比較的簡単に実現できちゃいました:
import java.awt.Desktop;
import java.net.URI;

  :
  :

String uriString = "http://manholemap.juge.me/"; // 開くURL
Desktop desktop = Desktop.getDesktop();
try{
  URI uri = new URI( uriString );
  desktop.browse( uri );
}catch( Exception e ){
  e.printStackTrace();
}

  :
  :

これだけで指定した URL のページ(この例だとマンホールマップ)がデフォルトブラウザで開きます。

これがどんな時に便利かというと、一般的な Web アプリケーションの中で(サーブレットや JSP で)Java を使う時は HttpServletRequest/HttpServletResponse クラスなどから UI 部分との連携ができるのですが、スタンドアロン Java プログラムや、IBM Notes などのスタンドアロンアプリケーションから Java を使おうとすると、コードは実行できても UI 部分との連携がしにくくて、「実行結果をどうやって見せるか」の問題があるのでした。Java コンソールに出力するくらいはできても、それを見てもらうのも至難の技だし、そもそも見栄えも悪い。

その点、ブラウザを起動できてしまえば、パラメータに実行結果を含めちゃったりすることで実行結果を渡す方法もあるし、見栄えも HTML/CSS で自由度高く作れるしで、重宝します。

なお、java.awt.Desktop クラスはこれ以外でもファイルを関連付けられたアプリで開く open メソッドや、印刷する print メソッドなど、デスクトップ関連の便利なメソッドが用意されています。ノーツ系の皆さんは覚えておくと便利かも(とっくに知ってたらごめんなさい):
Desktop(Java Platform 7)






 

どこからでもアクセスできるクラウド上に自分のデスクトップ環境があると便利ですよね。

その OS が Windows であれば、(外部からアクセスできるようにするだけなので)環境構築自体はさほど難しくないと思います。ただ Windows の仮想環境は(Windows サーバーのライセンス代が無条件で付いてくるため)安くありません。業務上の選択肢としてはまだしも、個人の環境としてはちと非現実的です。 一方、CentOS で実現できると、多くのクラウドベンダーで無料期間が用意されていたり、安く使えたりするので個人開発者としては嬉しいわけです。一方で、主にサーバー用途向けに用意されているインスタンス上にデスクトップクライアント環境を用意するのはちょっと面倒ではあります。そもそもサーバー用途ならコマンドラインインターフェースで充分なのですが、デスクトップクライアントとなるとウィンドウシステム必須です。日本語環境が用意されているとも限りません。なので、これらからのインストールが必要になります。


というわけで、クラウド上の CentOS サーバーを、日本語デスクトップ環境に改造するまでの手続きを紹介します。具体的には IDCF クラウドの CentOS 6(64bit) を使い、以下のパッケージを追加インストールします(サーバー用途でも使いそうなパッケージはこのリストからは抜いています。必要であれば別途導入してください):
パッケージ名用途
X Window Systemウィンドウシステム
DesktopGNOME デスクトップ環境
Japanese Support日本語環境
Tiger VNC ServerVNC サーバー
LibreOfficeオフィススイート
Eclipse + JDK統合開発環境
Firefoxウェブブラウザ
Alacarteメニューカスタマイズ用ツール


まず最初に、今回作成するデスクトップ環境へは VNC を使って外部からウィンドウシステムにアクセスします。というわけで VNC 用にポートフォワード設定が必要になります。今回は 5901 番ポートで設定するので、各種クラウドのファイアウォールやポートフォワード設定で 5901 番ポートを通すように設定してください(図は IDCF クラウドでのファイアウォール設定画面ですが、使っている環境で同様の設定をしてください):
2015020603


次に日本語デスクトップ環境を構築するためのモジュールを導入します。SSH で root ログインし、以下の手順を実行します:
(リスト内の上3つのグループモジュールをまとめて導入)
# yum groupinstall "X Window System" "Desktop" "Japanese Support"

ここまでで X Window System と GNOME デスクトップ、そして日本語環境が導入されます。されますが、このままでは SSH でのみリモートアクセスできるだけで、X Window の画面を開く術がありません。せっかく X Window まで導入したので VNC を使ってウィンドウシステムを利用できるようにしましょう。このサーバーインスタンス内には VNC サーバーを導入して、5901 番ポートでアクセスできるようセットアップします:
(VNC サーバーを導入)
# yum install tigervnc-server

導入した VNC サーバーを設定します。今回は root 権限で VNC サーバーにアクセスする例を紹介しますが、一般ユーザーでアクセスする場合も同様にしてそのユーザーを指定して行ってください:
(VNC サーバーの設定変更)
# vi /etc/sysconfig/vncservers

(以下の2行のコメントを外して編集(この例では root で接続))
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp"

(VNC サーバーの接続パスワードを設定) # vncpasswd (パスワードを2回入力して設定)

設定後、改めて VNC サーバーを起動します:
(VNC サーバーの起動)
# /etc/init.d/vncserver start

起動に成功すると ~/.vnc/xstartup というファイルが作成されるので、このファイルを編集して GNOME セッションの画面をそのまま VNC で流せるように変更します:
(VNC サーバーの設定変更)
# vi ~/.vnc/xstartup

(#!/bin/sh の直下に以下の一行を追加)
export LANG="ja_JP.UTF-8"

  :
  :

(最後の2行をコメントして、その下に1行追加)
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
gnome-session &

最後に VNC サーバーの自動起動を ON にして、サーバーインスタンス自体を再起動します:
(VNC サーバーの自動起動)
# chkconfig vncserver on

(再起動)
# shutdown -r now

サーバーが再起動した頃を見計らって、今度は VNC クライアント(ここでは UltraVNC プロジェクトの UltraVNC Viewer)を使ってアクセスしてみます。UltraVNC Viewer をインストール&起動して、接続情報に CentOS マシンの IP アドレス:1 を入力します(最後はコロンと1):
2015020604


パスワードを聞かれたら、上記 vncpasswd コマンド実行時に指定したパスワードを入力します:
2015020605


これで X Window System 上の GNOME デスクトップ画面が表示されるはずです。ここからは GUI が使えるようになりました!:
2015020606


この時点で日本語表示はできますが、まだ日本語入力はできないと思います。そこで日本語入力のための設定を行います。メニューから システム - 設定 - 入力メソッド を選択します:
2015020607


「入力メソッド設定ツール」が起動します。「入力メソッドの機能を有効にする」にチェックが入っていて、かつ入力メソッドに「IBus を使用する」が選択されていることを確認した上で「入力メソッドの個人設定」をクリックします:
2015020608


「IBusの設定」ウィンドウが開きます。「インプットメソッド」タブ内に「日本語 - Anthy」が含まれていることを確認して「閉じる」をクリックします:
2015020609


1つ前の画面に戻り、「閉じる」をクリックして設定ツールを終了します:
2015020610


今設定した内容を反映させるため、再度システムを再起動します。メニューの アプリケーション - システムツール - 端末を選んでターミナル画面を開き、再起動コマンドを入力します:
2015020611

(再起動)
# shutdown -r now

再起動した頃を見計らって、再度 UltraVNC Viewer でアクセス&ログインします。そして同様に端末を出した後にキーボードの CTRL+SPACE を押すと、画面上部のキーボード部分が日本語入力マークに切り替わり、同時にローマ字による日本語入力が可能になります。アルファベット入力に戻すには再度 CTRL+SPACE を押します:
2015020612


ここまでで、ほぼ日本語デスクトップ環境が整いました。後は必要そうな GUI アプリケーションを yum でインストールします:
(GUIアプリ(ここでは FireFox と LibreOffice と JDK)を導入)
# yum install firefox libreoffice java-1.7.0-openjdk-devel

実はこの後、統合開発環境の Eclipse を導入します。Eclipse 自体も yum で(yum install eclipse で)導入できるのですが、yum だと最新版でないことに加え、メニューのカスタマイズ方法と合わせて紹介したいので、Eclipse だけは別途最新版をダウンロードして導入します。Eclipse は不要であっても、ウィンドウのメニューに表示されないコマンドを表示させたい場合は以下の手順を参考にしてください。

改めて、この時点で FireFox, LibreOffice, JDK がインストールされて、メニューからも実行できるようになっているはずです:
2015020613
2015020614
2015020615


では改めて Eclipse をインストールします。最新版を導入したいので先ほど導入した FireFox を起動し、http://www.eclipse.org/downloads/ から最新版の Eclipse をダウンロードします:
2015020616


ダウンロードが完了すると(僕の環境では)eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz というファイルができているはずです(異なるファイル名の場合は適宜読み替えてください)。これを適当なディレクトリ(以下の例では /opt/ 以下)に展開します:
(/tmp/ 以下にダウンロードモジュールがある場合のコマンド例)
# cd /opt
# tar xzvf /tmp/eclipse-java-luna-SR1a-linux-gtk-x86_64.tar.gz

これで /opt/eclipse/ というフォルダが作られ、その下に Eclipse 環境一式が作られているはずです。Eclipse 本体は /opt/eclipse/eclipse というファイルパスで実行できるようになっています。

ただ、この時点ではファイルを展開しただけなので、ウィンドウのメニューから Eclipse を実行することができません。yum で Eclipse をインストールすると、「プログラミング」メニュー内に Eclipse が作られる(ただし最新版ではない)ので、できれば同様に「プログラミング」メニュー内に Eclipse を追加したいものです。


というわけで、最後にメニューのカスタマイズ方法を紹介します。メニューのカスタマイズには alacarte というツールを使うと便利なので、まずは alacarte を yum でインストールして実行します:
(メニューカスタマイズツールを導入して)
# yum install alacarte

# alacarte

alacarte が起動すると、現在のメニュー内容が表示されます:
2015020617


今回は /opt/eclipse/eclipse を「プログラミング」メニュー内に追加したいので、左のメニューでは「プログラミング」を選択し、「新しいアイテム」ボタンをクリックします:
2015020618


追加したいアプリケーションの情報を入力します。種類はアプリケーション、名前は Eclipse 、そしてコマンドに実行コマンドの絶対ファイルパスを指定して、最後に「OK」ボタンをクリックします:
2015020619


1つ前の画面に戻り、「プログラミング」メニュー内に "Eclipse" が追加されたことを確認して「閉じる」をクリックします。これでメニューのカスタマイズができたはずです:
2015020620


実際にウィンドウのメニューを確認すると「プログラミング」メニュー内に "Eclipse" が追加されていることを確認できます:
 2015020621


実際に "Eclipse" を選択すると、指定された実行ファイルが呼び出されて Eclipse が起動するはずです:
2015020622


ざっとこんな感じ。一般的にはサーバー用途で使うクラウドの CentOS 環境に日本語デスクトップ環境を構築してメニューのカスタマイズまで行う手順を紹介しました。GUI へは VNC を使ってアクセスするので、Android や iPad などのタブレットにキーボードさえ付けておけば、後は各種 VNC クライアントをインストールしていれば、それらのモバイル環境からこのデスクトップ環境を呼び出して使うことだってできちゃいます。最近は Linux のデスクトップアプリケーションも充実してきており(個人的にはゲームだけがまだまだ、だと思ってます)、手軽にタブレットさえ持ち運んでいればそこそこ使えると思っています。

なお Amazon EC2 の場合、MarketPlace から CentOS を選んで導入すれば同様の手順で同じような環境が構築できると思っています。ただ Amazon AMI から提供される Amazon Linux の場合、X Window を導入できるかどうかは未確認です。 また、ここで紹介した手順は CentOS に限らず RHEL(RedHat Enterprise Linux) でも使えます。私自身は Power Linux の RHEL で同様のデスクトップ環境を構築したこともあるので、ある程度の所まではできると思っています。


私個人はここで紹介したアプリに加えて、GIMP とか Sublime Text とか IBM Notes とかといった GUI 前提のクライアントアプリケーションも導入して使ったりしています。ここで紹介しなかったアプリケーションについても、ここで紹介した方法の応用で導入できるのでは、と思っています。






最近、CentOS ベースのリモートデスクトップ環境を手に入れたので、CentOS で使える各種デスクトップツールを漁っています。

個人的に便利に使っているのが「付箋」ツール。パスワードを書いたりするつもりはないけど、ちょっとしたメモはやはりPCのデスクトップ画面に常に表示されているからこそ便利だったりするわけです。

Windows だと普通にフリーソフトがあるけど、CentOS(GNONE)でも使えないかなあ、と思って調べたら、やはり需要があるのでしょう。KDE ベースの KNotes というツールが見つかりました:


Knotes は KDE 用 PIM(Personal Information Management : 個人情報管理)ツールに含まれています。というわけで、PIM ごと KNotes をインストールします。ターミナルから、以下のコマンドを実行します:
# yum install kdepim

で、X Window のメニューから アクセサリ > KNotes を選択して起動します:
2014101901


起動したら最初に名前(タイトルバーに表示されるもの)を入力します(後でも右クリックメニューから Rename で変更できます):
2014101902


そして付箋の中身を編集して、角をドラッグ&ドロップで移動してサイズを変更するだけです:
2014101903


注意点として、この KNotes は初期状態では自動実行「しません」。なので再起動したり、一度ログアウトしてログインするなどすると消えてしまいます。情報は残っているので、再度明示的に KNotes を起動すれば元に戻りますが、どうせなら自動起動してほしいですよね。

というわけで、最後に KNotes(に限らないけど、アプリケーション全般)を自動実行させる方法を紹介します。まずはメニューから システム > 設定 > 自動起動するアプリ を選択します:
2014101904


「自動起動するアプリの設定」ダイアログが表示されたら「追加」ボタンをクリック:
2014101905


名前は適当に「付箋ツール」などと入力します。そしてコマンドには KNotes のファイルパスである "/usr/bin/knotes" と入力して、「追加」ボタンをクリックします:
2014101906


前の画面に戻ります。ここで「付箋ツール」が追加されたことを確認して「閉じる」をクリックします。これで自動起動の設定が完了しました:
2014101907


一旦ログアウトしてログインし直すか、または再起動して再ログインします。すると KNotes(付箋)は元に戻った状態でデスクトップが表示されます:
2014101908



 

このページのトップヘ