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

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

タグ:linux

恥ずかしながら、今回紹介する Linux の sc コマンドの存在を全くしりませんでした。。


sc(spreadsheet calculator) コマンドは UNIX/Linux のコンソールから使える表計算アプリケーションです。X Window で動作する GUI アプリではなく、あくまで CUI のコンソール上で動く表計算アプリケーションです。オッサン的には DOS 時代の Lotus 1-2-3 を彷彿とさせる画面に胸騒ぎを禁じえません:
2018042900


インストール方法はソースからビルドするものも含めて数通りありますが、Debian ベースの Ubuntu や Raspberry Pi であれば、apt-get コマンドを使って普通に導入できます:
$ sudo apt-get install sc

このコマンドを実行するだけで導入できます。私のラズパイで実行した時の様子がこちら↓です。コマンド実行前のライブラリの導入状況も含めた環境にも依存するとは思いますが、私の環境ではアプリケーション全体で 369 キロバイト( 0.37 メガバイト)しか使いませんでした。超軽量アプリです:
2018042901


インストール後、プロンプトで "sc" を実行すると起動します:
2018042902
 (↑ DOS 版 Lotus 1-2-3 を知っていると、この時点で感動の涙モノ)


起動後の使い方は '?' キーを入力することで参照できますが、ざっと調べた限りでカーソル移動を含めた主なものはこちらです。いわゆる vi エディタのコマンドに近い操作体系になっているので、vi 派であればすぐに使えるようになると思っています:

操作キー解説
カーソル移動(上下左右)方向キーまたは kjhlvi キーバインド
数値入力カーソル位置で = を入力してから数値を入力
文字入力カーソル位置で > を入力してから文字を入力
値の削除カーソル位置で x を入力vi キーバインド
足し算・引き算などカーソル位置で = を入力してからセルを指定して A0 + A1 のような式を入力
終了q


機能的に Excel と比較するようなレベルのものではありませんが、むかーし 1-2-3 の製品開発に関わっていた自分的にはノスタルジックを越えた何かを感じるツールです。

オラクルが、正規ライセンス購入前の勉強目的で試しにソフトウェアを利用することのできるライセンス『OTN(Oracle Technology Network)開発者ライセンス』を提供していることを今更ながら知りました:
自分用Oracle DBを「無償で」作ろう!「OTN開発者ライセンス」

※同じく無料版である IBM Db2 Express-C みたいな位置付け?と思っていたのですが、ちと違いそう。Express-C は機能としては Express Edition に近いのですが、開発者エディションというわけではありません。「サポートなしで本番利用可」なのが IBM Db2 Express-C であり、この辺りが違いと言えそうです。

※むしろ IBM Db2 Developer Community Edition の位置付けが近い感じ。


利用するには Oracle アカウントの登録が必要ですが、登録自体は無料でした。各種オラクル製品がダウンロード可能で、オラクルDBはもちろん、Java や MySQL などの製品版も対象に含まれていました。利用目的は制限されていますが、仕様、検証、開発、テストに使うことはできるとのこと。早速使ってみました。なんと 20年以上ぶりにオラクル DB をインストールしてみた顛末です(笑)。


まずは OTN ページにアクセスして "Sign In" します:
2017072101


自分の OTN ID とパスワードを指定して「サインイン」します:
2017072102


サインイン後、"Software Downloads" をクリックしてダウンロードページに移動します:
20170721025


ダウンロードページをスクロールすると、ダウンロード対象の製品一覧が見つかります。オラクルDBも新しいエディションである 12c の Enterprise/Standard Edition 含めてダウンロードできますが、自分は比較的軽量な方がいいので 11g の Express Edition を選択しました:
2017072103


オラクルDB Express 11g2 のダウンロードページです。License Agreement にチェックを入れます:
2017072104


そして対象プラットフォーム(下図は Linux x64 を選択。他に Windows 32/64 bit 版を選択可)を選ぶとダウンロードが開始されます:
2017072105


ダウンロードできれば後はインストールするだけですが、Linux 版のオラクルDB Express 11g2 の場合、インストールするにはメモリが 2GB 必要です(足りないとインストーラーが止まります)。充分なスワップメモリが確保されていない環境の場合は動的にスワップファイルを増やす必要があります。その方法や手順は以下を参照ください:
Linux の SWAP 領域を増やす


改めて Linux 版の場合は zip された rpm ファイルがダウンロードされます。なので 64bit Linux 上でダウンロードしたファイルを unzip し、Disk1 フォルダ以下にある rpm ファイルを指定してインストールします:
# unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip
# cd Disk1
# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
準備中...                ########################################### [100%]
   1:oracle-xe              ########################################### [100%]
Executing post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.


「root で /etc/init.d/oracle-xe configure を実行しろ」というメッセージが表示されているので、このコマンドを実行して初期セットアップを実行します。セットアップ時の選択肢は全てデフォルトのままで、明示的に指定したのはパスワード(と確認パスワード)だけです:
# /etc/init.d/oracle-xe configure

Oracle Database 11g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 11g Express
Edition.  The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.  Press <enter> to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:

Specify a port that will be used for the database listener [1521]:

Specify a password to be used for database accounts.  Note that the same
password will be used for SYS and SYSTEM.  Oracle recommends the use of
different passwords for each database account.  This can be done after
initial configuration: (パスワード指定)
Confirm the password: (確認パスワード指定)

Do you want Oracle Database 11g Express Edition to be started on boot (y/n) [y]:

Starting Oracle Net Listener...Done
Configuring database...Done
Starting Oracle Database 11g Express Edition instance...Done
Installation completed successfully.


これでセットアップ完了、、のはず、ですが、この後の作業を便利に行うための追加作業をしておきます。オラクル DB をコマンドラインから操作する場合に便利な環境変数が /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh(および /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.csh)コマンドによって設定されます。なので、/etc/bashrc などに以下の1行を追加して、対象ユーザーがログインする際にこの環境変数設定が行われるようにしておきます:
. /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh

改めてログインし直して(この環境変数設定を有効にして)、SQL*Plus を実行し、system DB に対して SQL を実行してみます:
# sqlplus system

SQL*Plus: Release 11.2.0.2.0 Production on 土 7月 22 01:54:50 2017

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

パスワードを入力してください:


Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
PL/SQL Release 11.2.0.2.0 - Production
CORE    11.2.0.2.0      Production
TNS for Linux: Version 11.2.0.2.0 - Production
NLSRTL Version 11.2.0.2.0 - Production

SQL>

動きましたー! 懐かしい(Solaris の前の)SunOS 以来のオラクル DB インストール体験でした。いやあ、再びオラクルをインストールする日が来るとは・・・

Linux を使っている時に、ディスクの余った領域を SWAP ファイルとして作成し、SWAP 領域を増やす手順です。OS を起動したまま、サービスを止めることなく変更します。


まず増やす前の状態を確認しておきます:
# free -m
             total       used       free     shared    buffers     cached
Mem:           996        918         77          3          3        586
-/+ buffers/cache:        328        667
Swap:         1023          1       1022

現在のスワップは約 1GB(1023 MB)になっています。この領域を 1024 MB 増やして、約 2GB にします。

方法としては /var/swapfile という 1GB のファイルを作り、このファイルをスワップとして利用します:
# dd if=/dev/zero of=/var/swapfile bs=1M count=1024
# mkswap /var/swapfile
# swapon /var/swapfile

ここまでの作業が出来たら改めて状態を確認します:
# free -m
             total       used       free     shared    buffers     cached
Mem:           996        918         77          3          3        586
-/+ buffers/cache:        328        667
Swap:         2047          1       2046

SWAP メモリが約 2GB に増えました。なお、このまま元の状態(SWAP メモリ 1GB)に戻す場合は swapoff コマンドを利用します:
# swapoff /var/swapfile

このままだと次回起動時には SWAP メモリは 1GB に戻ります。次回起動時以降は SWAP メモリ 2GB の状態で起動させたい場合は、以下のコマンドを実行して /etc/fstab ファイルを書き換えます:
# echo "/var/swapfile        swap                    swap    defaults        0 0" >> /etc/fstab

 

IBM LinuxONE(メインフレーム版 Linux)に IBM Domino をインストールすることに挑戦してみました:2017012200


いくつか前提を紹介します。まず LinuxONE の環境は IBM LinuxONE コミュニティクラウド上の RHEL 6.x のサーバーインスタンスを使うことにします(最大 120 日間無料で使えます)。また IBM Domino を導入する際にはその環境に X Window のデスクトップ GUI が必要です。これらの環境を用意するまでの手順はこちらを参照ください:
IBM LinuxONE コミュニティクラウド上で X Window のデスクトップ環境を構築する


次に IBM Domino ですが、これは無料で入手できるものではありません。IBM Domino のサブスクリプション契約をお持ちで、インストールモジュールをダウンロードする権利をお持ちの人のみが入手可能なものです。

(訂正)
IBM Domino は IBM 無料トライアルダウンロードプログラムに含まれており、IBM LinuxONE 向けのエディションもこの対象でした:
https://www.ibm.com/developerworks/downloads/ls/lsds/

2017012302


IBM ID をお持ちか作成いただくことで、こちらからトライアル版をダウンロードしてご利用いただくことも可能です:
2017012301



(有効なサブスクリプション契約をお持ちの場合は、)"Linux for z System" 向けの IBM Domino の最新版をダウンロードしてください。ちなみに 2017/Jan/22 時点では V9.0 英語版がパーツ番号 CIBM5EN で検索することで見つけることができるはずです。ファイル名は DOMINO_9.0_64BIT_LIN_ZS_EN.tar でした。このファイルを入手済みであるとして、以下を紹介します。

LinuxONE に限らないのですが、Linux 版の IBM Domino は導入前に root ではない実行時のユーザーおよびそのグループを OS 内に作成しておく必要があります。以下、notes グループの notes ユーザーによって実行する前提として、これらのグループとユーザーを作成しておきます:
# groupadd notes
# useradd notes -g notes

ユーザーを作成したら、ダウンロードしたインストールモジュールファイルを展開し、zlinux64/domino フォルダ内のインストーラー(install)をコマンドラインから実行してインストール作業を行います:
# cd /data
# ls
DOMINO_9.0_64BIT_LIN_ZS_EN.tar

# tar xvf DOMINO_9.0_64BIT_LIN_ZS_EN.tar

# cd zlinux64/domino

# ./install

インストーラーを実行すると、次のようなインストール画面に切り替わります。ここから次へは TAB、変更時はスペース+変更内容+Enter で、必要に応じてオプションを編集しながらインストーラーの作業を進めます:

2017012002


LinuxONE で利用する場合、唯一意識すべきはインストール先のディスクだと思われます。比較的メインディスクに空きがない状態で導入するには /data 以下を指定して導入するようにします。以下の例はデータディレクトリをデフォルトの /local/notesdata から /data/local/notesdata に変更している様子です:
2017012003


最終確認画面が表示されています。問題なければ TAB キーでインストールが開始されます:
2017012004


インストールが完了しても、IBM Domino の場合はセットアップを行わないと動きません。というわけでセットアップに移りますが、その前に1つ作業があります。 xhost の設定をしておかないとセットアップ時に利用する GUI のウィンドウが開かないのです。

またここからは X Window システムのデスクトップ GUI 環境が必要になります。というわけでまずは VNC クライアントを使ってこのサーバーのデスクトップを開いてターミナルを起動し、この xhost コマンドで notes ユーザーの画面でインストーラーウィンドウが開くようにしておきます:
# xhost +local:notes

そのまま続けて notes ユーザーに su し( root ユーザーでは server は起動しません)、ノーツデータディレクトリがカレントディレクトリになっている状態から server を実行します。これ実はサーバーの起動手順と同じですが、最初の一回はセットアップモードでの起動が行われます:
# su - notes

$ cd /data/local/notesdata
$ /opt/ibm/domino/bin/server

すると GUI に Domino セットアップのフラッシュスクリーンが表示され・・・
2017012005


しばらくすると、見慣れた Domino サーバーセットアップの画面に遷移します。ここからはいつもの(Windows とかの)セットアップと同じです:
2017012006


セットアップが完了し、再度 server コマンドを実行すると、今度は Domino サーバーがコンソール内で起動し、Domino サーバーとして利用可能になります:
zdomino


IBM Domino は有料のソフトウェア製品であり、この製品(特に IBM z Systems 版)を無料で入手する方法は限られてしまいますが、その手段をお持ちの方であればのインストールモジュールを入手する方法がちと面倒ではありますが、IBM Domino はメインフレーム上のパブリッククラウド Linux に導入して使うまでの環境は(IBM LinuxONE コミュニティクラウドを使うことで)無料で用意できることになります。

試験的な利用も含め、パブリッククラウド上で IBM Domino の環境を作って動かしてみたい、という方は是非一度お試しください。

CentOS や RHEL で便利に利用されているパッケージ管理コマンドの "yum" 。このコマンドの便利な使い方の1つが groupinstall と呼ばれる機能です。ある環境を用意しようとした際に複数のパッケージを導入しないといけない場合、その複数のパッケージを1つの「グループパッケージ」のまとまりとみなし、グループパッケージ1つを指定して導入することで環境構築が可能になります。

個人的によく使う例で紹介すると、GUI のデスクトップ環境であれば "Desktop"、日本語サポート環境であれば "Japanese Support" などです。それぞれ以下のコマンドで導入できます:
(デスクトップ環境)
# yum groupinstall "Desktop"
(日本語サポート環境) # yum groupinstall "Japanese Support"

上記のようにグループパッケージを指定するだけでまとまったパッケージを導入できるのは便利なのですが、ではこれらのコマンドで実際にどのようなパッケージが導入されるのかを調べる方法はあるでしょうか? その答が yum の groupinfo コマンドです。例えば "Desktop" で何が導入されるのかを確認するには以下のようなコマンドを実行します(黒字が入力、青字が出力結果です):
# yum groupinfo "Desktop"
  :
  :
グループ: デスクトップ
 説明: シンクライアントとして使用できる最低限のデスクトップ
 強制的なパッケージ:
   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
 オプション パッケージ:
   sabayon-apply
   tigervnc-server
   xguest


同様に "Japanese Support" の場合は以下のようになりました:
# yum groupinfo "Japanese Support"
  :
  :
グループ: 日本語のサポート
 Language: ja
 標準パッケージ:
   ipa-gothic-fonts
   ipa-mincho-fonts
   ipa-pgothic-fonts
   ipa-pmincho-fonts
   vlgothic-fonts
   vlgothic-p-fonts
 条件付パッケージ:
   autocorr-ja
   eclipse-nls-ja
   ibus-anthy
   kde-i18n-Japanese
   kde-l10n-Japanese
   libreoffice-langpack-ja
   man-pages-ja
   poppler-data


これらの結果の中の「強制的パッケージ」と「標準パッケージ」が groupinstall コマンドによって導入されます。また「オプションパッケージ」や「条件付きパッケージ」が導入可能になります。

滅多にはないのですが、CentOS/RHEL の環境によっては "yum groupinstall" コマンドが使えないこともあります。その場合はここに記載した情報を使って "yum install" で同様の環境構築が可能になります。

※ここに記載されていないグループパッケージを導入する場合は、"yum groupinfo" の使える環境でパッケージを確認し、そこにリストされたパッケージを "yum install" する、という形になります。


このページのトップヘ