名前の変更、名前の変更、ファイルの名前変更など、すべての名前変更操作はどうなりますか?

名前の変更、名前の変更、ファイルの名前変更など、すべての名前変更操作はどうなりますか?

私のDebianシステム(まあ、私のLMDEシステムですが十分に似ています)には少なくとも3つの異なるrenameプログラムがあります:

  • /usr/local/bin/rename:これはTom Christiansenによって書かれたPerlスクリプトです。奇妙なことに、インストールするパッケージが見つからないようです。

    $ dpkg -S /usr/local/bin/rename 
    dpkg-query: no path found matching pattern /usr/local/bin/rename
    
  • /usr/bin/prename:Robin Barkerによって書かれた別のPerlスクリプトはパッケージの一部ですperl

    $ dpkg -S /usr/bin/prename
    perl: /usr/bin/prename
    
  • /usr/bin/file-rename:明確な著者情報がない別のPerlスクリプトですが、Larry(おそらくWall)とRobin(おそらくBarker)についての言及があります。これはrenameパッケージによってインストールされ、以下にもシンボリックリンクされています/usr/bin/rename

    $ dpkg -S /usr/bin/file-rename
    rename: /usr/bin/file-rename
    

私にもそんなことがあるがrename.ulutil-linuxは無視しよう。この3つのPerlスクリプトの違いは何ですか?彼らはすべて同じマニュアルページを持っているように見え、両方man renameとも同じページをman file-rename提供します。man prename

私はスクリプトを直接見て、違いを理解しようとしましたが、これは些細なことではありません。 Debian 世界で 3 つの別々の Perl 名前変更スクリプトが必要な理由を説明するボーナスポイントです。

答え1

これがコメントであるべきかどうかはわかりませんが、答えの一部にすぎません。Bug#735134: perl: rename(1) が古い。混沌の種が散らされたようだった。具体的には:

要約すると、長年にわたり、PerlパッケージはPerlで実装されたスタンドアロンユーティリティである/usr/bin/renameを提供しました。問題は、perlパッケージにユーティリティがデフォルトでdebian /に追加され、メンテナンスされなくなるため、このユーティリティを提供したくないということです。メンテナンスリリースは個別のパッケージlibfile-rename-perlとして提供されます。

上記の内容はlibfile-rename-perl次のように置き換えられますrename

$ apt-cache show rename | head
Package: rename
Version: 0.20-3
Installed-Size: 69
Maintainer: Debian Perl Group <[email protected]>
Architecture: all
Replaces: libfile-rename-perl
Provides: libfile-rename-perl
Depends: perl
Conflicts: libfile-rename-perl
Description-en: Perl extension for renaming multiple files

したがって、PerlはrenameDebianが保守していませんが、/usr/bin/prenameDebian開発者が保守しています。renameパッケージ(明らかに呼ばれているlibfile-rename-perl)は、以下を提供するパッケージです/usr/bin/rename:シンボリックリンク、/etc/alternatives/renameそれ自体がスクリプトへのシンボリックリンク/usr/bin/file-rename

Tom ChristiansenのスクリプトはPerlモジュールにバンドルされていますUnicode::Tussle。おそらくすでにインストールされている可能性があります/usr/local/bin/rename

関連情報