[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:31121] README.EUC draft



こじま@今年もあと2日と数時間,,です.

Plamo64-1.0用にREADME.EUCに追加しようと思っている内容をざっと書いてみま
した.まだドラフトなので,あちこち修正が入ると思いますがとりいそぎご参考までに.

---------------------------------------------------
○Plamo64-1.0について(2011-12-31)

手元の開発機をx86_64機能を持つCore i7にしたこともあって,
Plamo Linuxをx86_64環境用に移植しました.

移植の初期のころは64ビット用のパッケージが揃っていなかったこともあって,
x86_64 CPUのx86互換機能を用いて,32ビットと64ビット双方のライブラリを
用意するmultiarch形式にしていましたが,現在では32ビット用ライブラリは
存在しない,64ビットネィティブな環境にしています.

元々の計画では,Plamo Linuxのメジャーバージョンアップである
Plamo-5.0でサポートするアーキテクチャにx86_64を追加する予定でしたが,
両者を平行に進めるのは開発リソース的に困難だったため,
まずは過去のしがらみを断ち切れるx86_64を先行して開発し,
Plamo-5.0とは独立にPlamo64-1.0と称することにしました.

近い将来,x86版が追従してくれば,両者を合わせてPlamo-5.xと称し,
x86_64版はPlamo-5.x/x86_64 のような名称にする予定です.

Plamo64-1.0では,インストール方法や新規ユーザの登録,各種設定ファイル,
パッケージ管理システムなどは従来の仕組みを踏襲しており,
Plamo-4.xを使ったことのある人はほとんど違和感なく使えると思います.
ただし,パッケージ類を全てビルドし直したのに合わせて
ディレクトリ構成の変更やいくつか新機能の追加等も行なっています.

- /lib64, /usr/lib64 の新設

x86_64用のライブラリとx86用のライブラリを共存させるために,
x86_64用のライブラリは/lib64や/usr/lib64といった"64"を
suffixとするライブラリに収めています.このようにしておけば,
32ビット版しか存在しない商用アプリなども,必要な32ビット用の
ライブラリを/usr/lib等に用意することで動作させることができます.

なお,/lib/modules/3.1.4-plamo64/ 以下に入るカーネルモジュールや,
/lib/udev/ 以下に入るudev用のスクリプトやルールファイルなど,
64ビット用でも/lib/ 以下を使っているソフトウェアもいくつかあります.

- /usr/X11, /usr/X11R7 ディレクトリの廃止

従来のX Window System(以下X)は,/usr/X11R7/等のバージョン番号を
含めたディレクトリにインストールし,/usr/X11/等へシンボリックリンクを張って,
/usr/X11/bin/ をパスに含めるような構成にしていましたが,最近ではXも他の
OSS同様,configure ; make ; make install でビルド,インストールできる
ようになっているので,/usr/X11R7/等の独自プレフィックスは廃し,/usr/ 以下に
インストールするようにしました.そのため,X由来のコマンドは/usr/bin/に,
ライブラリは/usr/lib64/等に入っています.また,app-defaultsは,
デフォルトでは/usr/share/X11/app-defaults/ に入るようにしています.

- パッケージの圧縮形式にtxz,tbzを追加

パッケージの作成に,従来のtar + gzip(tgz)形式だけでなく,
より圧縮率の高いtar + bzip2(tbz)やtar + xz(txz)の形式も
使えるようにしました.

パッケージをインストールするinstallpkg/updatepkgは圧縮形式によって展開用
コマンドを切り替えるので特に圧縮形式を気にする必要はありません.

パッケージを作成するmakepkgも,作成するパッケージの拡張子によって圧縮方式を
切り替えるようにしているので,makepkg xxx-x86_64-P1.txz のように,
拡張子まで指定してmakepkgを実行すれば拡張子に応じた圧縮形式を適用します.

# tbz(tar + bzip2)にも対応しているつもりですが,tbzなパッケージが存在し
# ないので,動作テストはしていません.

・updatepkgコマンドの追加

インストール済みのパッケージを,バージョンアップ等で更新する際,
以前は 

# removepkg xxx
# installpkg xxx-x86_64-P1.txz

のように,まずremovepkgで削除してから,installpkgでインストールする
必要がありましたが,この2つの処理を一気に行う/sbin/updatepkgという
コマンドを追加しました.

updatepkgでは,新しくインストールしようとしているパッケージと同名の
パッケージがインストール済みの場合,パッケージのバージョンやビルド番号を調べ,
インストールしようとしているパッケージの方が新しければ,
古いパッケージを削除した上で,新しいパッケージをインストールします.
逆に,インストール済みのパッケージの方が新しそうな場合は警告を出して
アップデートを中止します.

 $ sudo updatepkg module_init_tools-3.12-x86_64-P1.txz 
 same or newer vesion(module_init_tools-3.15) has been installed.
 installation stopped for module_init_tools-3.12-x86_64-P1.txz

数字以外のバージョン番号を持つパッケージの場合,バージョンの新旧を
比較できずにエラーになることがあります.そのような場合や,古いバージョンの
パッケージを強制的にインストールしたい場合は -f オプションを指定してください.

 $ sudo updatepkg -f module_init_tools-3.12-x86_64-P1.txz 

このオプション(-f)を指定すると,バージョン番号やビルド番号のチェックをとばして,
既存のパッケージをremovepkgして新しいパッケージをinstallpkgする処理を行います.

# updatepkg はPlamo-4.7xのころからありましたが,あまり知られていないよ
# うなので改めて紹介しておきました.

・パッケージのインストールログ

いつ,何というパッケージをインストールしたかを,/var/log/install.log に
記録するようにしました.

 ...
 i Fri Dec 16 01:32:57 UTC 2011: libreoffice3.4_ure-3.4.3_302-x86_64-P1
 i Fri Dec 16 01:32:57 UTC 2011: libreoffice3.4_writer-3.4.3_302-x86_64-P1
 i Fri Dec 16 01:32:57 UTC 2011: libreoffice_plamoenv-3.4-noarch-P1
 r Sat Dec 17 21:24:01 JST 2011: udev
 i Sat Dec 17 21:24:03 JST 2011: udev-175-x86_64-P1
 r Sat Dec 17 21:25:48 JST 2011: udisks
 i Sat Dec 17 21:25:49 JST 2011: udisks-1.0.4-x86_64-P1
 r Sat Dec 17 21:26:33 JST 2011: upower
 i Sat Dec 17 21:26:36 JST 2011: upower-0.9.15-x86_64-P1
 ...

最初に i が付いているのがインストールしたパッケージ,
r が付いているのが削除したパッケージです.システムの都合上,インストール時には
パッケージのフルネーム(udisks-1.0.4-x86_64-P1 等)が記録されますが,
削除時にはベースネーム(udisks 等)しか記録されませんのでご注意ください.
このログファイルを見れば,DVDからのインストール時に入ったパッケージと,
その後に自分で更新したパッケージの区別が付け易いと思います.

# 実は,この機能もPlamo-4.73あたりからありました.

・パッケージの分類(カテゴリ)の変更

XfceやKDEなどの統合デスクトップ環境では,
プロセス間の通信を従来のXプロトコルのレベルではなく,
Dbusを用いてOSのレベルで行うようになりました.

最近のソフトウェアはこのような新しいパラダイムに従い,
DbusやGTK/Qtといった環境を前提に開発されています.

一方,伝統的なXプロトコルレベルでプロセス間通信を行うソフトウェアも,
多くは開発が終了して obsolete になっていますが,メンテナ内で支持する人が多いので,
それらのソフトウェアは04_xclassics というカテゴリに集めることにしました.

このカテゴリにはCannaやFreeWnn, kinput2といった
伝統的なFEP(インプットメソッド)も含まれます.

このカテゴリを新設した結果,Plamo64では plamo/ 以下のカテゴリは以下の
10種類になっています.

00_base      : Plamo Linuxの動作に必須のカーネルや基本コマンド,設定ファイル等.
	       全ての環境でインストールする必要があるため,インストール時のカテゴリ
 	       選択には出てきません.

01_minimum   : gccやperl,python等,X無しでも使える重要コマンド集.サーバ機等,
               コンソール環境で使う場合はここまででたいてい間にあうはず

02_x11       : X11R7とXに必須のパッケージ群.ウィンドウマネージャはtwmのみ.

03_xclassics : AfterstepやQvwm等の伝統的なウィンドウマネージャとCanna,
               FreeWnn,kinput2等の伝統的なFEPシステム(ここまでインストー
               ルすれば10年前くらいのワークステーション環境になるはず)

04_xapps     : 最近のGUI環境の主流になっているGTK環境と主にGTKベースなアプリケーション群

05_ext       : XfceとKDEが共通に利用する,機能拡張用ライブラリを中心とした
               アプリケーション群.iBusやuim,scim等の最近のインプットメソッドも含む.

06_xfce      : シンプルながら高機能なXfce-4.8 デスクトップ環境

07_kde       : 多機能なKDE-4.7.1デスクトップ環境

08_tex       : TeXの統合パッケージtexlive-2009

09_kernel    : Linuxカーネルのソースコード

10_lof       : Office用統合ツールLibreOffice-3.4.3

これらのカテゴリのうち,00_baseはPlamo Linuxの動作に必須,01_minimumは
ほぼ必須の環境で,02_x11以降は必要に応じて取捨選択可能ですが,06_xfceの
動作には05_extのライブラリ群が必要で,05_extの動作には04_xappsと02_x11
が必要,といった依存関係が存在します.インストール時には,これらの依存
関係は自動的にチェックされ,例えば06_xfceを選択すれば(残りのカテゴリは
全て未選択でも)自動的に05_ext, 04_xapps, 02_x11, 01_minimum, 00_base が
インストールされます.

- 必要なHDD容量の増加

同じソースコードからコンパイルしても,x86_64用のバイナリはx86用のバイナリより
1,2割大きめなのに加えて,XfceやKDE等が必要とするソフトウェアをあれこれ追加した
結果,インストールに必要なHDDの容量はPlamo-4.7のころに比べて1.5から2倍くらい
必要になるようです.

Xが不要で,00_baseと01_minimumカテゴリのみを入れた場合で約1.3GB,
それに加えて,02_x11と03_xclassicsまで入れたWM環境で約2.7GB,
Xfce環境の場合で5.4GB,KDE環境の場合で7.5GB程度必要で,
texlive環境をインストールするとさらに2GBほどHDDが必要となります.
それらを合わせると,plamo/ 以下のパッケージを全てインストールするには
約10GBほどのHDD領域が必要になりますので,古いパーティションを使い回す
ような際にはご注意ください.

# タイの洪水被害の関係で直近はずいぶん値上りしていますが,2TBクラスのHDDも
# 気軽に買える値段になってきたので,ディスク容量を節約する努力は放棄しました(苦笑

- 必要なメモリの増加

x86に比べたx86_64の最大の利点は,4GB以上のメモリをPAEなどの小細工なしに使える
ことだと思っているので,使用メモリを節約するような努力も放棄しています.
そのため,搭載メモリの少ない環境ではswap処理が発生してパフォーマンスが
落ちる可能性があります.

Plamo64は4GB以下のメモリしかない環境でも動作しますが,
x86_64に対応したCPUを使っていても4GB以下のメモリしか積んでいない環境では
x86として32ビットモードで使う方が効率的だと思います.




[検索ページ] [メール一覧]
Plamo ML 公開システム