如何安装可执行文件

如何安装可执行文件

我有时会遇到未提供.deb.rpm仅作为可执行文件提供的软件。
例如视觉工作室代码,网络风暴或者坎巴拉太空计划

对于这个问题,我将以Visual Studio Code作为参考点。

该软件以压缩包形式提供。
解压缩时,我留下一个名为 的文件夹,VSCode-linux-x64其中包含名为 的可执行文件Code
我可以双击Code或用我的终端指向它/home/user/Downloads/VSCode-linux-x64/Code来执行它。
但是,我想知道是否有正确的方法来安装此应用程序。

我想要实现的是:

  • 我可以放置以这种方式提供的所有应用程序/软件(可执行文件)的一个地方
  • 终端支持(这意味着例如:我可以vscode从终端中的任何文件夹写入,它将自动执行 Visual Studio Code。

附加信息:

  • 桌面环境:侏儒3
  • 操作系统:德班

编辑:
我决定给@kba 答案,因为他的方法更适合我的备份解决方案,除此之外。让脚本执行二进制文件使您可以添加参数。
但公平地说,@John WH Smith 的方法与@kba 的方法一样好。

答案1

要通过名称调用程序,shell 会搜索$PATH环境变量中的目录。在 Debian 中,您的用户的默认值$PATH应包括/home/YOUR-USER-NAME/bin(即~/bin)。

首先确保该目录~/bin存在,如果不存在则创建它:

mkdir -p ~/bin

您可以将二进制文件符号链接到该目录,以使其可供 shell 使用:

mkdir -p ~/bin
ln -s /home/user/Downloads/VSCode-linux-x64/Code ~/bin/vscode

vscode这将允许您在命令行或命令启动器上运行。

注意:您还可以将二进制文件复制到$PATH目录,但如果它们依赖于相对路径,则可能会导致问题。

不过,一般来说,最好使用操作系统(apt-get、deb 包)或软件项目的构建工具提供的方式正确安装软件。这将确保正确设置相关路径(如启动脚本、手册页、配置等)。

更新:也反映出托马斯·迪基的评论法希姆·米萨的回答我通常对带有顶级二进制文件的 tarball 形式的软件执行以下操作:

将其放在一个合理的位置(按照标准合规性的顺序/opt,/usr/local或主目录中的文件夹(例如),并在某个位置(例如或)~/build创建可执行脚本包装器,该包装器更改为该位置并执行二进制文件:$PATH/usr/local/bin~/bin

#/bin/sh
cd "$HOME/build/directory"
exec ./top-level-binary "$@"

由于这模拟了对该目录的更改并手动执行二进制文件,因此可以更轻松地调试诸如不存在的相对路径之类的问题。

答案2

根据TLDP/opt可能是此类软件的好地方。我自己用它来存储一些与打印机相关的工具,以及Skype的“动态”版本(正如kba所说,“终端支持”可以通过PATH相应地设置变量来实现)。

更一般地说,我倾向于/opt“安装”打包为可执行文件的专有软件,但这可能只是我的情况。此外,我倾向于避免使用这种软件,因为我通常不确定一旦运行它会做什么。

我选择的另一个原因/opt是因为它通常适用于第三方独立代码,这些代码不依赖于其/opt/'package'目录之外的任何文件(以及其他opt目录,例如/etc/opt)。

在任何情况下,其他包文件都不能存在于 /opt、/var/opt 和 /etc/opt 层次结构之外,除了那些必须驻留在文件系统树中特定位置才能正常运行的包文件。 [...] 一般来说,支持系统上的包所需的所有数据都必须存在于 /opt/'package' 中,包括要复制到 /etc/opt/'package' 和 /var/opt/' 中的文件package' 以及 /opt 中的保留目录。

发布源代码的优点之一是人们可以配置编译过程,根据系统的具体情况提供自定义库/标头路径。当开发人员决定将代码作为可执行文件发布时,这种优势就会消失。恕我直言,此时,开发人员不再被允许假设他/她的程序的依赖项将可用(这就是为什么所有内容都应该与可执行文件一起打包)。

要在此处安装的任何软件包都必须在单独的 /opt/'package' 或 /opt/'provider' 目录树中找到其静态文件(即额外的字体、剪贴画、数据库文件)(类似于 Windows 安装的方式)新软件到其自己的目录树 C:\Windows\Progam Files\"程序名称"),其中“package”是描述软件包的名称,“provider”是提供商的 LANANA 注册名称。

有关更多信息,我还建议阅读其他 U&L 问题/opt,它处理和之间的差异/usr/local。我个人会避免/usr/local这种情况,特别是如果我不是那个建成我正在安装的程序。

答案3

从二进制 zip 存档或 tarball 创建分发二进制包是完全可能的,而且实际上非常容易,如 Visual Studio Code 示例中所示。

deb是的,像s 和s 这样的Linux 发行版二进制包rpm通常是从源代码生成的,但并非必须如此。通常(尽管并非总是)可以安排一些东西,以便生成的分发二进制包将东西安装在“正确”的位置以符合分发策略。

在随机专有 tarball 的情况下,如果有一种方法可以正确安装软件,例如 makefile 中的安装目标,那么它可以与分发包装机器一起使用。否则,这可能涉及“手动”将文件映射到“正确”的位置,这可能需要大量工作。虽然创建这样的包可能看起来很奇怪,但它仍然具有包管理的主要好处之一,即全新安装和卸载。当然,这样的软件包永远不会被任何名副其实的 Linux 发行版所接受,但这不是你的问题。

答案4

ln -s </path/to/executable> /usr/local/bin/<program-name>应该做这项工作。本地软件的标准位置是/opt,因此我建议在使用上面的命令安装之前将软件文件夹/文件移动到那里。

相关内容