私はLinux Mint 18 Cinnamon 64ビットを使用しています。
7z
私のシステムには、次のバイナリとそのバージョンがあります。
/usr/bin/7z
7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
そして
/usr/local/share/PeaZip/res/7z/7z
7-Zip [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
私はいつも後者を使用しているので、フルパスを書くことがますます迷惑になっています。
1つを定義する必要がありますかalias
、それともよりきれいな方法がありますか?
ベストアンサー1
上記のRui F Ribeiroが提供した答えに加えて、update-alternatives
1つを提出したいと思います。同じプログラムで利用可能な異なるバイナリ間の遷移を管理することは非常に便利です。
まず、インストールされているバイナリが実際のバイナリ/usr/bin
か、単にシンボリックリンクであるかを確認してください。これは次の方法で行うことができますls -la
。
$ ls -la $(which 7z)
# If it is a binary, it will look like this:
-rwxr-xr-x 1 root root 39 Aug 15 2016 /usr/bin/7z
# If a symlink, something like this:
lrwxrwxrwx 1 root root 20 Apr 9 12:58 /usr/bin/7z -> /some/another/path/7z
バイナリを見つけたら、次のコマンドを使用して現在の場所から移動しますdpkg-divert
。
$ sudo dpkg-divert --divert /usr/bin/7z.dist --rename /usr/bin/7z
これで代替管理者を使用できるようになります。コマンドの形式は次のとおりです。
$ sudo update-alternatives --install <link> <name> <path> <priority>
7z
代替グループに2つのバイナリを追加します。
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/bin/7z.dist 10
$ sudo update-alternatives --install /usr/bin/7z 7z /usr/local/share/PeaZip/res/7z/7z 20
/usr/bin/7z
リストでは、最も優先順位の高いバイナリを指すシンボリックリンクが作成されます。何らかの理由でバイナリを切り替える必要がある場合は、次の手順を実行してください。
$ sudo update-alternatives --config 7z
対話型プロンプトで使用するバイナリを尋ねます。
There are 2 choices for the alternative 7z (providing /usr/bin/7z).
Selection Path Priority Status
-------------------------------------------------------------------------
* 0 /usr/local/share/PeaZip/res/7z/7z 20 auto mode
1 /usr/bin/7z.dist 10 manual mode
2 /usr/local/share/PeaZip/res/7z/7z 20 manual mode
Press <enter> to keep the current choice[*], or type selection number:
Selection
希望の番号を入力してEnterを押します。完璧!このアプローチの利点は、すべてのオープンシェルセッションを含むシステム全体に即座に適用されることです。別のアクションは必要ないので、PATH
必要に応じて元のバイナリに戻すのは簡単です。