web-dev-qa-db-ja.com

/usr/bin/rename.ulに拡張子があるのはなぜですか?

Ubuntuマシンでコマンドrename.ulを見つけました。 util-linuxパッケージから取得されます。

拡張子の付いた実行可能ファイルはめったに見られないので、私には奇妙です。また、ファイルがコンパイルされているので不要のようです。

歴史的または技術的な理由はありますか?

この拡張子に関連付けられているファイル形式が見つからなかったため、私も混乱しています。

4
rad164

拡張機能は、Debianで利用できる多数のrenameコマンドとの競合を回避するためのものです。 この変更Debianバグ#439647 に対応して2007年に行われました:

/ usr/bin/renameは、代替システムによって管理されます(Perlのバージョンがデフォルトです)。 util-linux 2.13〜rc3-8は、代替として登録する代わりに、独自のバイナリをそこにインストールします。

それに応じて、util-linuxrenamerename.ulに名前が変更されました。

それでも、rename.ul構文はPerlバリアントとは大きく異なるため、デフォルトでは代替システムに追加されません( Debianバグ#439935 を参照)。

6
muru

コメント提供者が推測しているように、おそらく Debian Alternativesシステム が動作しています。

ディストリビューションに同じ名前のファイルを含む複数のパッケージがある場合、パッケージの作成者はそれについて知る必要があり、管理者がそれらのどれを使用するかを選択するためのメカニズムが必要です。したがって、競合するすべてのファイルの名前が変更され(通常はサフィックスが付けられますが、これはパッケージメタデータで指定できます)、元のファイル名は/etc/alternatives/<original filename>を指すシンボリックリンクになります。これは、名前が変更されたファイルの1つを指す別のシンボリックリンクになります。

システム管理者は、update-alternativesツールを使用して、元の名前で指すファイルのバージョンを選択できます。他のバージョンには、新しい名前を使用して引き続きアクセスできます。

update-alternativesツールは、物事の「家族」を処理できるため、たとえば、従来とOpenBSDの両方のnetcatをインストールし、Sudo update-alternatives --config ncを使用してデフォルトを何らかの方法で切り替えると、対応するmanページ名も切り替わります。

一般的な例は/usr/bin/editorです。 Debianスタイルのシステムでは、これは他のプログラムが「このシステムのデフォルトのテキストエディタが何であれ」を取得するために使用できるシンボリックリンクです。最小限のインストール後、デフォルトでnanoになる可能性が高いため、editor example.txtnanoのテキストファイルを開き、man editornanoのマニュアルページを表示します。

ただし、代替システムで優先度の高いエディターをインストールする場合、たとえば、 joe、それが自動的に新しいデフォルトになるため、editor example.txtは代わりにjoeを使用し、man editorjoeのマニュアルページを表示します。 Sudo update-alternatives --config editorを使用して、インストールされているエディターのどれをデフォルトにするかを選択することもできます。この方法で選択すると、自動優先順位によって上書きされることはありません。

5
telcoM