GNOME のメニューに追加するために
GNOME のメニューに追加するためには、ディレクトリ
/usr/share/applicationsにアプリケーションの名前.desktopというファイル(以降 desktopファイルと呼びます)をインストールする必要があります。次のような手順になります。
他の普通のファイルと同じように %installタグの部分で desktopファイルを
%{_datadir}/applicationsにインストールし、%filesの部分に入れておきます。%postタグや%postunタグの部分で
%post update-desktop-database %{_datadir}/applications %postun update-desktop-database %{_datadir}/applicationsなどのように処理します。
update-desktop-databaseコマンドはdesktop-file-utilsというパッケージに含まれています。PreReq: にdesktop-file-utilsが必要になります。
desktopファイルにはアプリケーションの名前やアイコンのファイルなどを指定する決められた書式があり、
desktop-file-utilsに含まれている desktop-file-validateコマンドで、書式にあった形で作成されているかどうかチェックできます。$ desktop-file-validatehoge.desktopソースから make する、make install するなどの部分ではこのチェックが行われないことも多いので、%checkタグの部分で、以下のようにしてチェックを行うようにしておいたほうがよいでしょう。
%check desktop-file-validate %{buildroot}%{_datadir}/applications/hoge.desktopdesktop-file-validateコマンドもdesktop-file-utilsというパッケージに含まれています。BuildRequires: にdesktop-file-utilsが必要になります。
Emacs Lisp のパッケージ
Emacsen には emacsen-common というパッケージがあり、 インストールされている Emacsen の FLAVOR の情報や、 FLAVOR ごとに、その FLAVOR で byte compile された Emacs Lisp パッケージのリストを管理するという仕組みがあります。
この仕組みを用いることで以下のようなことが可能となっています。
パッケージのインストール時に、すでにインストールされている Emacsen の FLAVOR ごとにそれぞれ byte compile して elc ファイルを作成する。
パッケージのアンインストール時に、すべての FLAVOR からパッケージの elc ファイルを削除する。
Emacsen の FLAVOR のインストール時、アンインストール時に、その FLAVOR で byte compile する、FLAVOR で byte compile した elc を削除する。
この仕組みを利用するために、Emacs Lisp のパッケージでは以下のようなことをしておきます。
%installタグの部分では byte compile していない el ファイルを %{_datadir}/emacs/site-lisp/%{name} 以下にインストールします。
Source2 や Source3 などに byte-compile と install を行うためのスクリプトAと、 byte-compile してできた elc ファイルを削除するためのスクリプトBを用意します。 インストールに使える Makefile 等がある場合は %installタグの部分で %{_datadir}/emacs/site-lisp/%{name} 以下に Makefile 等をインストールしておき、 スクリプトの中から利用できるようにします。
install 用のスクリプトAでは、 Emacsen の FLAVOR に応じて %{_datadir}/FLAVOR/site-list/%{name}/ 以下に bytecompile した elc ファイルをインストールするようにします。
uninstall 用のスクリプトBでは、 Emacsen の FLAVOR に応じてスクリプトAでインストールした elc ファイルを削除するようにしておきます。
%installタグの部分で次のようにして、スクリプトAとスクリプトBをインストールします。
%_installemacsenscript %{name} %{SOURCE2} %_removeemacsenscript %{name} %{SOURCE3}スクリプトA,B はそれぞれ /usr/lib/emacsen-common/packages/install/ , /usr/lib/emacsen-common/packages/remove/ に、 %{name} という名前でインストールされます。 これによって、スクリプトA,B は、Emacs の FLAVOR がインストール、アンインストールされた時に実行されるようになります。
%files の部分でそれぞれのスクリプトを記述しておきます。
%{_libdir}/emacsen-common/packages/install/%{name} %{_libdir}/emacsen-common/packages/remove/%{name}%postタグの部分は次のように記述しておきます。 if [ "$1" = 数字 ]; then ; fi は、インストール時、アップグレード時、アンインストール時、それぞれで違う動作をさせるためのものです。Chapter 9, rpmパッケージをつくるときの注意を参照してください。
%post # # bytecompile and install # if [ "$1" = 2 ]; then %_emacsenPackageRemove %{name} fi %_addemacsenlist %{name} %_emacsenPackageInstall %{name} %preun if [ "$1" = 0 ]; then %_emacsenPackageRemove %{name} %_removeemacsenlist %{name} fi%_emacsenPackageInstall と %_emacsenPackageRemove は スクリプトA,B を実行するためのマクロです。
%_addemacsenlist と %_removeemacsenlist は、インストール済み Emacs Lisp パッケージのリストにパッケージを登録する、削除するというマクロです。
%_installemacsenscript, %_removeemacsenscript, %_emacsenPackageRemove, %_addemacsenlist, %_removeemacsenlist の行の次の行は、空行にしておかないとエラーとなるようです。
