如何更改二进制文件的现有路径,以便它指向新安装的更新版本?

如何更改二进制文件的现有路径,以便它指向新安装的更新版本?

我有一个可以用命令“run-binary”(不是实际名称)执行的二进制文件,并确定它按照以下路径执行:

john@johns-PC:~$ which run-binary
/home/john/.local/bin/run-binary

我已经下载并解压了更新版本的 run-binary。有 2 个问题:

  1. 根据“最佳实践”,我应该将新的、解压后的运行二进制文件放在哪里?
  2. 完成上述 #1 操作后,如何更新 /home/john/.local/bin/run-binary 以便“run-binary”从新安装的位置执行?

答案1

按照 PATH 设置中列出的顺序搜索可执行文件的名称。

/home/vanadium/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

因此,安装在中的可执行文件.local/bin将优先于列出的其他文件夹中具有相同名称的可执行文件。

1. 根据“最佳实践”,我应该将新的、解压后的运行二进制文件放在哪里?

一定要保留您想要使用的那个.local/bin/。如果您想使用相同的命令来启动它,则重命名以前的版本(例如.local/bin/run-binary-versionnumber)或将其移动到另一个文件夹,或者更好的是,参见下一点。

2. 完成上述 #1 后,如何更新 /home/john/.local/bin/run-binary 以便“run-binary”从新安装的位置执行?

如果要保留可执行文件的先前版本,好的做法是将每个版本放在其专用文件夹中,或者,如果是单个可执行文件,则将其放在文件夹中.local/bin但使用不同的名称,例如run-binary-versionnumber。然后,您可以在 中创建一个符号链接,并.local/bin以您通常想要运行它的方式命名,例如run-binary

这样,当你运行 时,你选择的版本就会启动run-binary。你仍然可以通过指定特定名称轻松运行其他版本run-binary-versionnumber

您可以使用文件管理器或命令创建符号链接

ln -s ~/.local/bin/run-binary-versionnumber ~/.local/bin/run-binary

答案2

这可以通过 update-alternatives 命令来处理。

我建议查看它的手册页。在那里,您可以找到安装、列出、删除、选择要执行的二进制程序的首选版本的语法。

--list 子命令的一个示例是

    $ update-alternatives --list java
    /usr/lib/jvm/java-11-openjdk-amd64/bin/java

详细文档可参见

    man update-alternatives 

相关内容