Ubuntuマシンでコマンドrename.ul
を見つけました。 util-linux
パッケージから取得されます。
拡張子の付いた実行可能ファイルはめったに見られないので、私には奇妙です。また、ファイルがコンパイルされているので不要のようです。
歴史的または技術的な理由はありますか?
この拡張子に関連付けられているファイル形式が見つからなかったため、私も混乱しています。
拡張機能は、Debianで利用できる多数のrename
コマンドとの競合を回避するためのものです。 この変更 は Debianバグ#439647 に対応して2007年に行われました:
/ usr/bin/renameは、代替システムによって管理されます(Perlのバージョンがデフォルトです)。 util-linux 2.13〜rc3-8は、代替として登録する代わりに、独自のバイナリをそこにインストールします。
それに応じて、util-linux
rename
はrename.ul
に名前が変更されました。
それでも、rename.ul
構文はPerlバリアントとは大きく異なるため、デフォルトでは代替システムに追加されません( Debianバグ#439935 を参照)。
コメント提供者が推測しているように、おそらく 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.txt
はnano
のテキストファイルを開き、man editor
はnano
のマニュアルページを表示します。
ただし、代替システムで優先度の高いエディターをインストールする場合、たとえば、 joe
、それが自動的に新しいデフォルトになるため、editor example.txt
は代わりにjoe
を使用し、man editor
もjoe
のマニュアルページを表示します。 Sudo update-alternatives --config editor
を使用して、インストールされているエディターのどれをデフォルトにするかを選択することもできます。この方法で選択すると、自動優先順位によって上書きされることはありません。