Changes between Initial Version and Version 1 of docs/making-rpm/specific/alternatives


Ignore:
Timestamp:
2013/02/20 02:32:42 (11 years ago)
Author:
yasumichi
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • docs/making-rpm/specific/alternatives

    v1 v1  
     1[wiki:docs Vine Linux ドキュメント] / [wiki:../../ RPM パッケージの作成方法] / [wiki:../ パッケージ固有の作法等について] /  
     2alternatives を利用するパッケージ 
     3 
     4= alternatives を利用するパッケージ = 
     5 
     6alternatives については update-alternatives による標準コマンドの切り替え にまとめられています。('''FIXME''': リンク先作成後リンク貼る) 
     7 
     8alternatives に登録する場合には %post と %preun で次のようにします。 
     9 
     10{{{ 
     11#!sh 
     12%post 
     13if [ "$1" = "1" ]; then 
     14        %{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 
     15fi 
     16 
     17%preun 
     18if [ "$1" = "0" ]; then 
     19        %{_syssbindir}/update-alternatives --remove 総称名 選択候補 
     20fi 
     21}}} 
     22 
     23Provides と Requires を指定します。 
     24 
     25{{{ 
     26#!sh 
     27Provides: 総称名 リンク名 
     28Requires: update-alternatives 
     29Requires(post,preun): %{_syssbindir}/update-alternatives 
     30}}} 
     31とします。 
     32 
     33Provides の リンク名 については、無くても問題はありませんが、%files には書かれないファイルなので、Provides に書いておいたほうがよいと思います。 
     34 
     35%post での登録と %preun での削除は、インストール時とアンインストール時だけに必要で、アップグレード時に実行してしまうと問題があるので、"$1" が 1 の場合(インストール時)と 0 の場合(アンインストール時)だけ処理するように if 文 にしておきます。 
     36 
     37%post での処理を、パッケージのアップグレード時にも行ってしまうと、パッケージのインストール後にユーザが優先度を変更していた場合、それを無視してパッケージ側で優先度を勝手に変更してしまうことになります。 
     38 
     39新規パッケージではなく、既存のパッケージの %post,%preun に update-alternatives の処理を追加する場合には、次のようにするとよいかもしれません。 
     40 
     41{{{ 
     42#!sh 
     43%post 
     44if [ "$1" = "1" ]; then 
     45if [ "`%{_sysbindir/update-alternatives --list '総称名' | grep -c 'リンク名'`" = "0" ]; then 
     46%{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 
     47fi 
     48fi 
     49 
     50%preun 
     51if [ "$1" = "0" ]; then 
     52%{_syssbindir}/update-alternatives --remove 総称名 選択候補 
     53fi 
     54}}} 
     55 
     56%triggerin と %triggerpreun と %preun を用いることで、他のパッケージが持っているファイルを alternatives で登録するようなパッケージを作ることもできます。 
     57 
     58{{{ 
     59#!sh 
     60Provides: 総称名 リンク名 
     61Requires: update-alternatives 
     62Requires(preun,triggerin,triggerpreun): %{_syssbindir}/update-alternatives 
     63 
     64%preun 
     65if [ "$1" = "0" ]; then 
     66        %{_syssbindir}/update-alternatives --remove-all 総称名 
     67fi 
     68 
     69%triggerin -- 対象となるパッケージ 
     70if [ "$1" = "1" ]; then 
     71        echo triggerin scriptlet by %{name} start 
     72        %{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 
     73        echo triggerin scriptlet by %{name} end 
     74fi 
     75 
     76%triggerpreun -- 対象となるパッケージ 
     77if [ "$1" = "0" ]; then 
     78        echo triggerpreun scriptlet by %{name} start 
     79        %{_syssbindir}/update-alternatives --remove 総称名 選択候補 
     80        echo triggerin scriptlet by %{name} end 
     81fi 
     82}}}