2008年12月9日火曜日

ディスクトップエントリーファイルの中身

ディスクトップエントリーファイルxxxx.desktopの中身は?
dir2petを使用してPETパッケージを作成すると簡単にメニューエントリー用のxxxx.desktopファイルを作成する事ができる。中身を少し覗いてみたい。このファイルはSFSモジュールでも利用できるので中身をちょっとは知らないと恥ずかしい。

普通このファイルは/usr/share/applicationsの中に格納されている。
参考にAbiword-wordprocessor.desktopを開いてみる。

[Desktop Entry]
Encoding=UTF-8
Name=Abiword ワードプロセッサ   ←メニュー名称
Name[ja]=Abiword ワードプロセッサ    ←上の日本語名
Icon=abiword_16.xpm      ←アイコンファイル名
Comment=Abiword wordprocessor      ←コメント
Exec=abiword      ←起動コマンド名
Terminal=false      ←端末の使用
Type=Application      ←メニュータイプ
Categories=WordProcessor     ←カテゴリ
GenericName=Abiword wordprocessor    ←ポップアップ表示

えらくシンプルな作りである。このファイルの記述方法はPortlandのサイトで確認します。
Portland Project
http://portland.freedesktop.org/wiki/
------------------------------------------------------------------
Encoding
ファイルのエンコーディング。
Name
メニューの名称を記述する。
Icon
アイコンのファイル名を指示する。
Comment
メニューの説明を記述する。ポップアップとして表示されるので短い方が良い。
Exec
メニューから選択したときに実行されるコマンド名を指示する。
Terminal
Execで指定したコマンドを端末で実行するかどうかを指定する。値が true の場合は、コマンドが端末で実行される
コマンドを実行するウィンドウを作成しない場合は、trueにする。通常はfalse
Type
メニューのタイプを指示する。
Application: アプリケーションを起動する場合
Link: ファイル、フォルダ、または FTP サイトにリンクする場合
Categories
メニューを表示する場所を指示する。 セミコロン (;) で区切って複数指示する事ができる。カテゴリのリストについては、/usr/share/xdgの中にあるファイルを見ているので、そちらを参考にする必要がある。
--------------------------------------------------------------------
参考:@IT:GNOMEメニューにサブメニューや項目を追加するには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/717addgnomemenu.html

Puppy Linux/dir2petとtgz2petの違い

dir2petとtgz2petの違いはメニューエントリー用のxxxxx.desktopファイルが作成出来るか否かと、ライブラリなどの依存性を指示できるかどうかの違いしかない様に思う。dir2petではメニューエントリーファイルの作成を作らない選択も出来るのでバイナリーフォルダがきちんと出来ていればPETパッケージの作成はdir2petに一本化すると端末への打ち込みが少なくて良いかもしれません。

dir2pet
メニューエントリーファイルxxxx.desktopが作成できる。
ライブラリなどの依存性が指定できる。

tgz2pet
Slackwareのバイナリを一気にPETパッケージにできる。
メニューエントリーファイルは手動で作成する必要がある。
ライブラリなどの依存性は定義できない。

Puppy Linux/dir2petの使いかた

すでにあるバイナリーファイルからpetを作る方法。
dir2petを使用すると、バイナリーファイルから簡単にPETパッケージを作成する事が出来ます。基本はバイナリファイルのディレクトリ構造をPuppyのディレクトリ構造に合わせてフォルダを作成しておくことがスムーズに行かせるコツです。
指定したディレクトリをPETパッケージ化することが出来るスクリプトみたいです。メニューエントリファイル(xxxx.desktop)が無くても、これで作成する事ができます。

手順
フォルダPackageXを作成し、中にバイナリを展開し、ディレクトリ構造をPuppyに合わせます。

端末にて日本語対応のdir2petjpを

#dir2petjp PackageX

とすると少し変な日本語で以下の様な表示が出ます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'dir2petjp' スクリプトにようこそ。
これはディレクトリをPETパッケージに変換します。例えば、'abiword-0.5.6'と
いう名前のディレクトリがあり、その中にパッケージに必要とされるものを
何でも置きます。例えば、usr/local/bin/abiword (実行ファイル)、そして
/usr/share/applications/abiword.desktop (XDGメニューファイル)。
.desktopファイルがなくても気にしないで下さい。このスクリプトがいくつかの
簡単な質問をしてパッケージに必要な物を何でも勝手に作ってくれます。
メニューエントリを作成するならパッケージは .desktopファイルと
メニュー用に16x16ピクセルアイコンだけが必要です。
アイコンはxpmイメージで置く場所は /usr/local/lib/X11/mini-icons/
である事が望まれます。でもどこでもいいです。
ディレクトリ PackageX はパッケージ名にダッシュを続けて
アラビア数字でバージョン番号を付けます。例: abiword-0.5.6
パッケージは任意でインストール後と削除後のスクリプトを持ちます。
これは 'pinstall.sh' と 'puninstall.sh' でトップディレクトリに置かれます。
(Unleashed用に公式PETを作るには、そのREADMEファイルを読んで下さい
スクリプトを正しく作成する方法が詳しく書かれています)
上記のどれにもさらに進む必要がなければ、ここでCTRL-Cを押して
このスクリプトを終了できます。そうでなければENTERを押して下さい。
続けるにはENTERキーを押して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
まずはPETパッケージを作成するか否かの確認とメニューエントリーが必要ならばxxxx.desktopファイルが無くても作成する旨、アイコンが16x16ピクセルでxpmである事や、決められたディレクトリに入れて置いても無くても良いことなどの簡単な注意事項が書かれています。普通は単にENTERでしょう。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 1
PackageXアプリケーションのメニュー項目が必要なければ
ここで「no」とタイプして下さい(引用符なしで)。
メニュー項目が必要なら、ただENTERキーだけを押して下さい。
「no」とタイプするか、ただENTERキーを押して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここでメニューエントリーに加えるかどうかを判断しなくてはいけません。普通のアプリケーションであれば加えた方がいいでしょうが、ライブラリなどは加えても意味がないので止めます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 1B
ウィンドウマネージャメニューエントリを作成したいアプリケーション
のカテゴリを入力して下さい。公式パピーには以下のメニュー階層
があります:
('X-' カテゴリは非公式です。パピー仕様)
MENU CATEGORIES
Desktop :Settings DesktopSettings,Screensaver,Accessibility
Desktop :Country X-DesktopCountry
Desktop :Applets X-DesktopApplets
System :Config System,Monitor,Security,HardwareSettings,Core
System :Memory X-SystemMemory
System :Schedule X-SystemSchedule
Setup :Entry X-SetupEntry,PackageManager
Setup :Wizard X-SetupWizard
Setup :Utility X-SetupUtility
Utility :Sub Utility,Viewer,Development,Building,Debugger,
Utility : IDE,Profiling,Translation,GUIDesigner
Utility :Archiving Archiving
Utility :Console TerminalEmulator,Shell
Filesystem :Manager FileSystem,FileManager
Filesystem :Mount X-FilesystemMount
Filesystem :Utility X-FilesystemUtility
Filesystem :Find X-FilesystemFind
Graphic :Sub 2DGraphics,3DGraphics,Photography,Presentation,
Graphic : Chart,FlowChart
Graphic :Edit VectorGraphics,RasterGraphics
Graphic :Utility X-GraphicUtility
Document :Sub X-Document,WordProcessor,WebDevelopment
Document :TextEditor TextEditor
Document :Utility X-DocumentUtility,Dictionary
Calculate :Sub X-Calculate,Finance,Spreadsheet,ProjectManagement
Calculate :Calculators Calculator
Personal :Sub X-Personal,Calendar,ContactManagement
Personal :Utility X-PersonalUtility
Network :Dialup Dialup
Network :Sub Network,HamRadio,RemoteAccess
Internet : X-Internet,WebBrowser,Email,News,InstantMessaging,
Internet : Telephony,IRCClient,FileTransfer,P2P
Multimedia :Sub AudioVideo,Video,Player,AudioVideoEditing,Recorder,
Multimedia : Music,Audio,Midi,Mixer,Sequencer,Tuner,Video,TV
Multimedia :Burn DiskBurning
Fun : Game,Amusement,ActionGame,AdventureGame,ArcadeGame,
Fun : BlocksGame,BoardGame,CardGame,KidsGame,LogicGame,
Fun : RolePlaying,Simulation,SportsGame,StrategyGame
CATEGORIESコラムから1語を入力して下さい。:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここからはxxxxx.desktopファイルの作成になります。まずはメニューのどこにソフト名を表示させるか指示します。記入するのは右のCategoryにあるリストの中なら選びます。例えばTextEditorやWebBrowserなどとします。セミコロン(;)で区切り2箇所を指定する事も出来ます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 1C
実行ファイルの名前を入力して下さい。以下の実行可能な検索パス
にあるならば、すなわち /bin, /sbin, /usr/bin,
/usr/sbin, /root/my-applications/bin か /usr/local/bin,
パス無しで実行ファイル名だけを入力して下さい。
例: mtpaint
(もちろん、ここでパスを指定する必要があるならば
それはパッケージがインストールされた [後] のパスです)
実行ファイルの [パス] を入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここでは要するに端末から起動できる実行ファイル名を記入します。フルパスで指定する事も出来ます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 1D
ウィンドウマネージャメニューエントリで使われるアイコン名を入力
して下さい。これは16x16ピクセルのxpmファイルでなければいけません
(pngでもOKですが全てのウィンドウマネージャには合いません)。
このアイコンが /usr/local/lib/X11/mini-icons にあるならば
パスを指定する必要はありません。
アイコンがそれ以外の場所にある時はフルパスで指定しなければ
いけません。例: パッケージ gfnrename-0.4 が16x16アイコンを
/usr/local/gfnrename-0.4/icon.xpmにインストールします
(もちろん、ここでパスを指定する必要があるならば
それはパッケージがインストールされた [後] のパスです)
==16x16アイコンでなければいけません。大きくてはだめです!==
アイコンの [パス] を入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
書いてあるとおりです。メニューで表示させるアイコンの名称を入れます。例えばPackageX.xpmです。
フルパスでも指定出来ます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 1E
メニューに表示させたいアプリケーション名を入力して下さい。
それはメニューエントリの最初の単語になります。
例: Abiword
アプリケーション名を入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
メニューで表示させる名称を入れます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 2
1-3語の説明を入力して下さい。
これはとても短くなければなりません。ウインドウマネージャ
メニューエントリのアプリケーション名の直後に表示されます。
これはPETgetによるパッケージ管理のためなど
いろいろな目的に使われます。
Abiword の例では: wordprocessor
非常に[短い]説明を(引用符なしで)入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
説明文を入れます。必要無いなら入れなくても構いません。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
List of official packages built-in to Puppy:
0rootfs_skeleton 915resolution a52dec abiword abiword abiword
absvolume_puppy aiksaurus alsa alsa asapm atk audiofile aufs
autoconnect autologin axel ayttm bash bbc_provided bc bdb bin blinky
中略
yaf_splash ycalc zip zlib
上記のリストはパピーに組み込まれるパッケージです。これらは全て
(もしCDから起動していればCDの) pup_xxx.sfs ファイルにあります。
続けるにはENTERキーを押して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ENTER
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
利用できる追加の公式パッケージがここにあります。:
absvolume absvolume_puppy alltray asapm asunder autocutsel
bcrypt blackbox bluefish bogofilter bridge cairomm cdrdao
cdrtools cdw clamav cups desk_icon_theme_browndust
中略
xorg_xorg_full_dri xpdf xterm xvidcore zedit zfind zmixer
上記のPETパッケージは、pup_xxx.sfsファイルに組み込む
選択をされなかったUnleashed一式にあります。
しかしいつでも個々にインストールできます。
続けるにはENTERキーを押して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ENTER
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 3
現在作成中のPETパッケージ用の依存リストを入力して下さい。
すでにパピーに組み込んだパッケージは依存ファイルとして
はっきりと名前を付ける必要はありません(パピーの縮小ベアボーン
バージョン以外は、これら全てを組み込んでないかも知れません。
最悪の場合の状況について考えなければならないかも知れません)。
この依存リストを入力する方法を一例で示します: パッケージ
'pupdvdtool-0.5b' は以下の依存リストがあります:
+vamps,+vobcopy,+ffmpeg,+dvdauthor,+gtkdialog
各パッケージ名は先頭が「+」で始まり「,」で区切られます。
注意1: このgtkdialogはGTKライブラリを要求しますが
下位依存ファイルを指定する必要はありません。gtkdialogを
インストールする必要があれば、それ自身の依存リストがあります。
注意2: /root/.packages/packages.txtファイルで
各パッケージの依存リストを調べる事ができます。
注意3: パッケージが非公式の依存ファイルを必要としない限り
パッケージバージョン番号の指定は要求されません。
(バージョン化したどんな依存ファイルでも自動的に非公式である事 を意味します)
注意4: (何を指定して良いかわからなければ、ENTERキーを押して下さい)
(PETgetはまだいくつかの基本的な依存性をチェックします)
依存リストを入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
依存性リストを指定すると複雑になり過ぎます。普通ENTERで良いでしょう。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 4
PETパッケージはインストール時にPETget(パッケージマネージャ)に
登録しないオプションがあります。これはバグフィックスやPETパッケージに
パッチを当てる時に役立ちます。ここでは通常ENTERキーを押すだけです。
通常はパッケージをアンインストールできるようPETgetに登録したい
でしょうから。
PETパッケージをPETgetに登録しますか?
「はい」ならENTERキーを押して下さい。そうでなければ「no」と入力して下さい:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
普通ならばENTERします。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ステップ 5
ファイル ./PackageX/usr/share/applications/PackageX.desktop を作成しま した。
ファイル ./PackageX/PackageX.pet.specs を作成しました。
これはPETgetでパッケージ管理のために使われます。
ファイル ./PackageX.tar.gz を作成しました。 .petに変換中です...
PackageX.pet が作成されました。完了。
PackageX に新しい '.specs' ファイルがあります。
そして PackageX/usr/share/applications/ に新しい '.desktop' ファイルがあります。
これでディレクトリ PackageX はPETパッケージとして正しく構成されまし た
今後は二度とこのスクリプトを走らせる必要はありません。
必要ならばファイルを手で編集する事ができます。そして
次のようにしてもう一つの.petパッケージを作れます:
# tar -c -f PackageX.tar PackageX/
# gzip PackageX.tar
# tgz2pet PackageX.tar.gz
dir2petjp 終了。
#
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ここではpackage.desktopが作成され、それをtar.gzにし、更にpetに変換する作業が行われる。終了

Puppy Linux/SFSモジュールとは何か?

PuppyLinuxで利用出来るSFSモジュールとはどんな物でしょう。PuppyではPETパッケージと違いとても大きなアプリケーションソフトをパッケージングするのに使用されています。SFSの作り方を見れば分かるとおり、SFSとは単にSquashFSで圧縮されたパッケージです。と言うかそのものです。

SQUASHFS
http://squashfs.sourceforge.net/

SquashFSは私自身よく知らないシステムなので、資料探しに頑張りましたが、日本語資料の少なさにはガッカリしました。未知の物を理解するにはやはり何らかの資料が欲しいところです。頑張って英文の How To を読みましょう。

この圧縮方法は読み取りは出来るが、書き込みは出来ない仕様になっています。「高圧縮な高速読み込み専用圧縮システム」とでも言えばいいでしょか。色々な所で利用されているらしくLinuxのLiveCD用のデータ圧縮が身近かも知れません。LiveCDは普通読み込みだけですし、データサイズを小さく出来るとしたら便利なツールです。

SquashFSで圧縮出来るのはファイルだけではなくディレクトリごと圧縮できます。普通の圧縮ファイルと同じで圧縮、解凍で利用する事もできますが、FDやUSBメモリみたいにマウントして利用することが出来ます。この機能をうまくPuppyでは利用してSFSモジュールと言うものが出来ているのだと考えられます。