| | 1 | [wiki:docs Vine Linux ドキュメント] / [wiki:../../ RPM パッケージの作成方法] / [wiki:../ パッケージ固有の作法等について] / |
| | 2 | alternatives を利用するパッケージ |
| | 3 | |
| | 4 | = alternatives を利用するパッケージ = |
| | 5 | |
| | 6 | alternatives については update-alternatives による標準コマンドの切り替え にまとめられています。('''FIXME''': リンク先作成後リンク貼る) |
| | 7 | |
| | 8 | alternatives に登録する場合には %post と %preun で次のようにします。 |
| | 9 | |
| | 10 | {{{ |
| | 11 | #!sh |
| | 12 | %post |
| | 13 | if [ "$1" = "1" ]; then |
| | 14 | %{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 |
| | 15 | fi |
| | 16 | |
| | 17 | %preun |
| | 18 | if [ "$1" = "0" ]; then |
| | 19 | %{_syssbindir}/update-alternatives --remove 総称名 選択候補 |
| | 20 | fi |
| | 21 | }}} |
| | 22 | |
| | 23 | Provides と Requires を指定します。 |
| | 24 | |
| | 25 | {{{ |
| | 26 | #!sh |
| | 27 | Provides: 総称名 リンク名 |
| | 28 | Requires: update-alternatives |
| | 29 | Requires(post,preun): %{_syssbindir}/update-alternatives |
| | 30 | }}} |
| | 31 | とします。 |
| | 32 | |
| | 33 | Provides の リンク名 については、無くても問題はありませんが、%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 |
| | 44 | if [ "$1" = "1" ]; then |
| | 45 | if [ "`%{_sysbindir/update-alternatives --list '総称名' | grep -c 'リンク名'`" = "0" ]; then |
| | 46 | %{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 |
| | 47 | fi |
| | 48 | fi |
| | 49 | |
| | 50 | %preun |
| | 51 | if [ "$1" = "0" ]; then |
| | 52 | %{_syssbindir}/update-alternatives --remove 総称名 選択候補 |
| | 53 | fi |
| | 54 | }}} |
| | 55 | |
| | 56 | %triggerin と %triggerpreun と %preun を用いることで、他のパッケージが持っているファイルを alternatives で登録するようなパッケージを作ることもできます。 |
| | 57 | |
| | 58 | {{{ |
| | 59 | #!sh |
| | 60 | Provides: 総称名 リンク名 |
| | 61 | Requires: update-alternatives |
| | 62 | Requires(preun,triggerin,triggerpreun): %{_syssbindir}/update-alternatives |
| | 63 | |
| | 64 | %preun |
| | 65 | if [ "$1" = "0" ]; then |
| | 66 | %{_syssbindir}/update-alternatives --remove-all 総称名 |
| | 67 | fi |
| | 68 | |
| | 69 | %triggerin -- 対象となるパッケージ |
| | 70 | if [ "$1" = "1" ]; then |
| | 71 | echo triggerin scriptlet by %{name} start |
| | 72 | %{_syssbindir}/update-alternatives --install リンク名 総称名 選択候補 優先度 |
| | 73 | echo triggerin scriptlet by %{name} end |
| | 74 | fi |
| | 75 | |
| | 76 | %triggerpreun -- 対象となるパッケージ |
| | 77 | if [ "$1" = "0" ]; then |
| | 78 | echo triggerpreun scriptlet by %{name} start |
| | 79 | %{_syssbindir}/update-alternatives --remove 総称名 選択候補 |
| | 80 | echo triggerin scriptlet by %{name} end |
| | 81 | fi |
| | 82 | }}} |