~からUbuntu 14.04 bashがデフォルトのシェルを使用するのはなぜですか?:
/bin/sh
Debian派生製品では、デフォルトで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のようなものに依存するほど強力とは見なされないからです。dash
update-alternatives
/bin/sh
update-alternatives
/bin/sh
何もない問題が発生して/bin/sh
削除または存在しないファイルを指すと、システムは役に立たなくなり、回復も困難になり、正しく起動できません。常に使用できるように注意しbash
てください。これには、事前インストール「スクリプト」(実際に事前依存性ループを防ぐためのバイナリ)の慎重な処理、関連するトリック、およびインストール後スクリプトのいくつかの最終的なタッチが含まれます。これらすべてのデザインの詳細については、以下で確認できます。dash
/bin/sh
dpkg-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 つ以上の選択肢を実装することがより困難になりました。