「代替更新」対「dpkgの再構成」

「代替更新」対「dpkgの再構成」

~からUbuntu 14.04 bashがデフォルトのシェルを使用するのはなぜですか?:

/bin/shDebian派生製品では、デフォルトでdashをrootとして実行してDashとBashを切り替えることができますdpkg-reconfigure

update-alternativesどちらもdpkg-reconfigureシンボリックリンクを使用してリンクされた実行可能ファイルを変更できます。これは正しいですか/bin/

それでは、この目的のためのupdate-alternatives違いは何ですかdpkg-reconfigure

ありがとうございます。

答え1

update-alternatives実際にシンボリックリンクを管理/binしたり、他の場所でも使用できます。それが目的です。。コラボレーションパッケージまたは手動設定が必要で、さまざまな選択肢を登録する必要があります。

dpkg-reconfigureまったく具体的ではなく、パッケージのインストール後にメンテナンススクリプトを実行します。したがって、その動作は設定された特定のパッケージに完全に依存します。bashとのdash場合、メンテナンススクリプトは/bin/shシンボリックリンクを処理するため、はい、この特別な場合はdpkg-reconfigureシンボリックリンクを管理するために使用されます。

使用せずにbash管理しない理由は、単にその可能性が有効になっていると、.ifのようなものに依存するほど強力とは見なされないからです。dashupdate-alternatives/bin/shupdate-alternatives/bin/sh何もない問題が発生して/bin/sh削除または存在しないファイルを指すと、システムは役に立たなくなり、回復も困難になり、正しく起動できません。常に使用できるように注意しbashてください。これには、事前インストール「スクリプト」(実際に事前依存性ループを防ぐためのバイナリ)の慎重な処理、関連するトリック、およびインストール後スクリプトのいくつかの最終的なタッチが含まれます。これらすべてのデザインの詳細については、以下で確認できます。dash/bin/shdpkg-divertバグ #34717(19年前)。

システム内のどのバイナリが代替を使用して処理されたか、どのバイナリが転送(管理者スクリプトで)を使用して処理されたかを確認するには、そのツールを使用します。特にdpkg-divert --list、すべての転送がリストされます。update-alternatives --listどの代替グループに興味があるかを知る必要があります。代替グループはすべてを指しているので、簡単に見つけることができるからです/etc/alternatives

答え2

このupdate-alternativesコマンドは、/ binが指すシンボリックリンクを取得する代替エントリを管理できるように、すべての代替エントリを登録する必要があります。

交換システムは、一度に複数のシンボリックリンクを管理でき、複数の交換実装を処理できるという点で非常に柔軟です。 2つ以上がインストールされている場合は、どちらを選択するかを決定するのに役立つ重みを与えます。

使用されたスキームdpkg-reconfigure dashは1つのパッケージを公開しますが、/bin/sh他のパッケージはそれを「転送」してその実装を上書きすることができるdpkgの転送システムを使用します。

dpkgの送信システムはシンボリックリンクに限定されず(ファイルも転送可能です)、基本パッケージで採用するように変更するために元のシンボリックリンク(またはファイル)を送信する必要はありませんupdate-alternatives

転送システムはしばしば転送の親に配置されるように構成されているパッケージに依存し、多くの場合構成をまったく実行しないため、代替方法ほど柔軟ではありません(新しいパッケージをインストールするだけで自動的にファイルが転送されます)。以前にインストールされたパッケージでは構成は不要です。 ) これらの制限により、dpkg の伝送システムを使用して 2 つ以上の選択肢を実装することがより困難になりました。

関連情報