- コンパクトで軽量な日本語ディストリビューション -
alternatives については update-alternatives による標準コマンドの切り替え にまとめられています。
alternatives に登録する場合には %post と %preun で次のようにします。
%post
if [ "$1" = "1" ]; then
%{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度
fi
%preun
if [ "$1" = "0" ]; then
%{_syssbindir}/update-alternatives --remove 総称名 選択候補
fi
Provides と Requires を指定します。
Provides: 総称名 リンク名
Requires: update-alternatives
Requires(post,preun): %{_syssbindir}/update-alternatives
とします。
Provides の リンク名 については、無くても問題はありませんが、%files には書かれないファイルなので、Provides に書いておいたほうがよいと思います。
%post での登録と %preun での削除は、インストール時とアンインストール時だけに必要で、アップグレード時に実行してしまうと問題があるので、"$1" が 1 の場合(インストール時)と 0 の場合(アンインストール時)だけ処理するように if 文 にしておきます。
%post での処理を、パッケージのアップグレード時にも行ってしまうと、パッケージのインストール後にユーザが優先度を変更していた場合、それを無視してパッケージ側で優先度を勝手に変更してしまうことになります。
新規パッケージではなく、既存のパッケージの %post,%preun に update-alternatives の処理を追加する場合には、次のようにするとよいかもしれません。
%post
if [ "$1" = "1" ]; then
if [ "`%{_sysbindir/update-alternatives --list '総称名' | grep -c 'リンク名'`" = "0" ]; then
%{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度
fi
fi
%preun
if [ "$1" = "0" ]; then
%{_syssbindir}/update-alternatives --remove 総称名 選択候補
fi
%triggerin と %triggerpreun と %preun を用いることで、他のパッケージが持っているファイルを alternatives で登録するようなパッケージを作ることもできます。
Provides: 総称名 リンク名
Requires: update-alternatives
Requires(preun,triggerin,triggerpreun): %{_syssbindir}/update-alternatives
%preun
if [ "$1" = "0" ]; then
%{_syssbindir}/update-alternatives --remove-all 総称名
fi
%triggerin -- 対象となるパッケージ
if [ "$1" = "1" ]; then
echo triggerin scriptlet by %{name} start
%{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度
echo triggerin scriptlet by %{name} end
fi
%triggerpreun -- 対象となるパッケージ
if [ "$1" = "0" ]; then
echo triggerpreun scriptlet by %{name} start
%{_syssbindir}/update-alternatives --remove 総称名 選択候補
echo triggerin scriptlet by %{name} end
fi