web-dev-qa-db-ja.com

異なる「名前変更」コマンドの違いは何ですか?

Ubuntu 14.04以降、少なくとも3つのrenameコマンドがあります。

  1. renameutil-linuxパッケージで提供されます。 man rename.ul を参照してください
  2. renameパッケージで提供されるPerlman prename を参照
  3. renameパッケージで提供されるrenameman file-rename を参照

質問:

  • これらのコマンドの違いは何ですか?
  • 同じ名前を使用して異なるコマンドを提供する複数のパッケージがあるのはなぜですか?それは偶然ではないでしょうか?
  • Perlパッケージに「フル」renameコマンドを含めるか、renameコマンドをまったく含めないのは簡単ではありませんか?少なくともUbuntu 17.04までこの一見不完全なように見える分割が維持されるのはなぜですか?

この質問はU&Lですでに尋ねられています(後でわかりました)。
すべての名前変更の内容:prename、rename、file-rename?

13
dessert

(偶然ではない場合)同じ名前を使用して異なるコマンドを提供する2つのパッケージがあるのはなぜですか?

それは珍しいことではありません。作成者は通常、考えている最も単純なコマンド名を選択するため、2人がファイルの名前を変更するコマンドを記述した場合、おそらく両方ともrenameという名前を付けます。これが Debian Alternatives system の背後にある理由の1つです。同じ名前のコマンドを提供するパッケージを共存させ、あるパッケージを別のパッケージに置き換えることができます。たとえば、複数のAWK実装があります-mawkoriginal-awkgawk(これらはすべて自分自身をawkと呼びます)。代替システムを使用すると、それらをすべて同時にインストールし、デフォルトのawkとしてそれらを簡単に切り替えることができます。

この特定の場合、prenameはPerlソースコードから取得されます。 Debianパッケージメンテナーは元々renameがPerlのものでしたが、util-linuxからのrenameに対応するために代替システムに切り替えました。それから誰かが Perlのファイル名を変更するモジュール でPerlのrenameの改良版を書き、それが別の代替手段として追加されました。しかし、それはファイルの名前を変更するためのPerlモジュールでさえありません。

Perlパッケージに「フル」renameコマンドを含めるか、renameコマンドをまったく含めないのは簡単ではありませんか?少なくともUbuntu 17.04までこの一見不完全なように見える分割が維持されるのはなぜですか?

この状況がどのように進化したかについては、 Debianバグ#735134 をご覧ください。 Debianのメンテナーは一般に、作業コマンドを別のものに置き換えるなどの抜本的なことを行う場合、少なくとも1つのリリースを行うことを好みます。 prenameはjessieのために保持されていましたが、現在はバスターのために削除されています。さらに、rename.ulの互換性が低すぎるため、renameは代替システムの下にないようです。 renamefile-renameになります。

Ubuntuは一般にDebianからパッケージの変更を選択するため、Debianのrenameに起こることは遅かれ早かれ、おそらく18.04にUbuntuによって選択されます。 17.10には遅すぎるようです。

これらのコマンドの違いは何ですか?

基本的に、prenamefile-renameの両方がPerl式を実行してファイルの名前を変更します。 file-renameは積極的に保守されており、より多くのオプションをサポートしています。 rename from util-linuxはまったく異なる動作をし、パターンに関する独自のルールを持っています。

8
muru