玩式草子─ソフトウェアとたわむれる日々

第80回 Plamo-6.1 released

この記事を読むのに必要な時間:およそ 4 分

get_pkginfoのfile://プロトコル対応

get_pkginfoはPlamo Linux用のパッケージ更新ツールで,この連載でも紹介したように,FTPサイト上に公開されているパッケージと手元にインストール済みのパッケージの違いをチェックするような設計になっています。この場合,常に最新版のパッケージをチェックできる利点はあるものの,FTPサイト上のPlamo-6.x/以下のディレクトリはPlamo-6.1のリリース後も日々パッケージが更新されているため,公式リリースの時点で更新されていたパッケージを調べる,という使い方はできません。

一方,get_pkginfoで指定できるURLは次第に拡張され,手元にあるPlamo Linuxのツリーと比較するためにURLの指定でfile://を使うことも可能になっていました。

メンテナのようにFTPサーバからPlamo Linuxのディレクトリ一式を定期的にミラーしている場合に便利な機能です。

この機能を使えば手元にマウントしたDVDイメージをget_pkginfoのチェック先に利用できるのでは,という指摘があって,⁠なるほどそれは面白そうだ」と,pickle化したファイルリストの持ち方を少し変更し,DVDイメージにファイルリストを収めて,DVDと手元のパッケージの違いをチェックできるようにしてみました。

この機能を使うには,Plamo-6.1のDVDイメージを/cdromにマウントしている場合,-uオプションにfile:///cdrom/と指定します。プロトコル名がfile://で,探しにゆく場所が/cdrom/なので,/(スラッシュ)が3つ並ぶことにご注意ください。ダウンロード(-d)やインストール(-i)等のオプションもネットワーク経由の場合と同様に利用できます。

$ get_pkginfo -u file:///cdrom/
local package: btrfs_progs-3.19_rc2-x86_64-P1
new   package: btrfs_progs-4.3.1-x86_64-P1
URL: file:///cdrom/plamo/00_base/btrfs_progs-4.3.1-x86_64-P1.txz

local package: dhcp-4.2.7-x86_64-P1
new   package: dhcp-4.3.3_P1-x86_64-P1
URL: file:///cdrom/plamo/00_base/dhcp-4.3.3_P1-x86_64-P1.txz
...

なお,この機能はPlamo-6.1のget_pkginfo(get_pkginfo-git_20160217-noarch-P2.txz)で追加したため,Plamo-6.0環境で利用する場合,get_pkginfoは事前に更新しておく必要があります。

$ sudo updatepkg -f /cdrom/plamo/01_minimum/get_pkginfo-git_20160217-noarch-P2.txz

adduser時の文字コード指定機能

最近のデスクトップ環境やアプリケーションを使う場合,日本語の文字コード(locale)UTF-8にしておく方が都合いいことが多いので,adduserを使って新規ユーザを登録する際にlocaleとしてja_JP.UTF-8を選択できるようにしました。

# adduser 
Can you read Japanese chars on this term? [Y/n]
y
Japanese mode

新しいユーザのログイン名を指定してください(8 文字以内)。 []: alice
alice のユーザ ID は? [自動登録の場合は 1000 番台になります]: 
alice が属するグループは? [users]: 
alice は他のグループにも属しますか?
  (デフォルト設定に追加する場合 --> add:,,...
   他のどのグループにも属さない場合 --> none)
  [audio,dialout,video,cdrom,kvm,pulse,pulse-access,mlocate,libvirt]: 
alice のホームディレクトリは? [/home/alice]: 
alice が使うシェルは? [/bin/bash]: 
日本語 locale の設定
1 : ja_JP.eucJP(従来通り)
2 : ja_JP.UTF-8(今風)
alice はどちらの locale を使いますか [1]: 2
 
ウィンドウマネージャ設定
1 : Twm(ごくシンプル)
2 : Xfce Desktop(お勧め)
3 : KDE Desktop(便利だけどやや重い)
4 : MATE Desktop(GNOME2 の進化版)
alice が使う WM は? [2]:
...

ここで選択した日本語localeは~/.xinitrcに設定され,Xを起動する際に利用されます。一方,コンソールではuniconを使って日本語を表示しているためEUC-JPでないと都合悪いので,ログインした時点の日本語localeは従来通りのja_JP.eucJPにしています。

Plamo Linuxではlocaleの切り替えにCライブラリの文字コードを指定するLANGOUTPUT_CHARSETlessの出力用文字コードを指定するJLESSCHARSETの3つの環境変数を使っており,これらをまとめて変更するための~/.set_lang_bsh~/.set_lang_cshというスクリプトも用意しました。前者はsh/bash/zsh用,後者はtcsh用のスクリプトです。引数にUTF-8かEUCを指定してこのスクリプトをsourceしてやれば環境変数がまとめて切り替わります。

$ env | grep -i -e "lang" -e "charset"
JLESSCHARSET=japanese-euc
LANG=ja_JP.eucJP
OUTPUT_CHARSET=EUC-JP

$ source ~/.set_lang_bsh UTF-8
$ env | grep -i -e "lang" -e "charset"
JLESSCHARSET=japanese-utf8
LANG=ja_JP.UTF-8
OUTPUT_CHARSET=UTF-8

~/.set_lang_[bc]sh はシェルスクリプトなものの,独立したシェルスクリプトとして実行するとサブシェル内で実行されてしまうため,元のシェルの環境変数を操作することはできません。そのためsourceコマンドで実行していることにご注意ください。

なお,たいていのソフトウェアはこれらの環境変数で利用する文字コードが切り替わるものの,FDcloneのように独自の設定ファイルを利用しているソフトウェアでは別途それらの設定ファイルも修正する必要があります。また,AfterStepqvwmのようなUTF-8に対応していない古いウィンドウマネジャはUTF-8環境では利用できません。

EmacsやLibreOfficeを始め,最近の多くのソフトウェアは内部処理用にUTF-8を利用しているので,テキストファイルの中身の文字コードがEUC-JPからUTF-8に替わってもほとんど影響はありません。しかしながらファイルシステム上の文字コードはlocaleに依存するため,文字コードを変更すると以前に作っていた日本語ファイル名が正しく操作できなくなります。

図1 UTF-8環境で文字化けしたEUC-JPなファイル名の例

図1 UTF-8環境で文字化けしたEUC-JPなファイル名の例

手元ではこのような問題に対応するため,文字コード変換機能を持つSambaを利用しています。すなわち,ファイルサーバ上でSambaを動かし,ファイル名の文字コードを変換する必要がある場合は,NFSではなくSamba経由でファイルをやりとりするようにしています。

$ sudo mount -t cifs //myfileserver/raid ./raid-utf8 -o username=kojima,iocharset=utf8,passwd=xxxxx

こうしておけば./raid-utf8/以下ではEUC-JPな日本語ファイル名はUTF-8に自動変換されるので,問題なく操作することができます。

図2 Samba経由ならばEUC-JPなファイル名を利用可能

図2 Samba経由ならばEUC-JPなファイル名を利用可能


もうひとつ,Plamo-6.1で特筆すべき話題には,メンテナの田向さんがPlamo-6.1をARMベースのCPUに移植して,Rasberry Pi2上で動作可能にしたことが挙げられます。ARM用にビルドされたパッケージは動作可能な最小規模なものの,OSC2016 Tokyo/Springに来訪された方はご覧になられたように,Rasberry Pi2のコンソール上で日本語表示も実現できているそうです。このあたりの話題は,改めて担当者自身から語ってもらう予定なのでお楽しみに。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html