web-dev-qa-db-ja.com

すべての名前変更とは何ですか:プレネーム、リネーム、ファイルリネーム?

私の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:ロビンバーカーによって書かれた別の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ページを持っているようです。man renameman file-renameおよびman prenameはすべて同じページを提供します。

スクリプト自体を調べてその違いを理解しようとすることもできますが、それは簡単なことではなく、誰かが他の人が持っていないそれぞれの機能を知っていることを願っています。 Debianの世界で3つの個別のPerl名前変更スクリプトが必要な理由を説明するボーナスポイント。

26
terdon

これがコメントであるかどうかはわかりませんが、それは部分的な回答にすぎません Bug#735134:Perl:rename(1)は古い

混乱の種と思われるものを持っています。具体的には:

要約すると、Perlパッケージは長年、Perlに実装されたスタンドアロンユーティリティである/ usr/bin/renameを提供してきました。問題は、Perlパッケージからユーティリティを提供したくないということです。これは、debian /内にローカルに追加されており、メンテナンスされていないためです。保守バージョンは、libfile-rename-Perlという別個のパッケージとして入手できます。

上記のlibfile-rename-Perlrenameに置き換えられました。

$ 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には独自のrenameがあり、これはDebianによって管理されておらず、/usr/bin/prenameを提供しています。 Debian開発者はlibfile-rename-Perlを提供するパッケージである rename パッケージ(以前は/usr/bin/renameと呼ばれていた)を維持しています:/etc/alternatives/renameへのシンボリックリンクそれ自体は/usr/bin/file-renameスクリプトへのシンボリックリンクです。

Tom Christiansenのスクリプトは、PerlのUnicode::Tussleモジュールにバンドルされています。あなたはおそらくそれをインストールし、それが/usr/local/bin/renameを提供したものです。

19
Jeff Schaller