Har*_*van 15 executable software-installation gnome3
我有时会遇到未提供.deb或.rpm仅作为可执行文件提供的软件。
例如Visual Studio Code、WebStorm或Kerbal Space Programm。
对于这个问题,我将以 Visual Studio Code 作为参考点。
该软件以压缩包的形式提供。
解压缩时,我留下了一个名为的文件夹VSCode-linux-x64,其中包含一个名为Code.
我可以双击Code或用我的终端指向它/home/user/Downloads/VSCode-linux-x64/Code来执行它。
但是,我想知道是否有安装此应用程序的正确方法。
我想要实现的是:
vscode从终端中的任何文件夹写入,它会自动执行 Visual Studio Code。附加信息:
编辑:
我决定给@kba 答案,因为他的方法更适合我的备份解决方案,除此之外。让脚本执行二进制文件使您可以添加参数。
但公平地说,@John WH Smith 的方法和@kba 的一样好。
kba*_*kba 16
要按名称调用程序,shell 会搜索$PATH环境变量中的目录。在 Debian 中,$PATH您的用户的默认值应该包括/home/YOUR-USER-NAME/bin(即~/bin)。
首先确保目录~/bin存在,如果不存在则创建它:
mkdir -p ~/bin
Run Code Online (Sandbox Code Playgroud)
您可以将二进制文件符号链接到该目录以使其可用于 shell:
mkdir -p ~/bin
ln -s /home/user/Downloads/VSCode-linux-x64/Code ~/bin/vscode
Run Code Online (Sandbox Code Playgroud)
这将允许您vscode在命令行或命令启动器上运行。
注意:您也可以将二进制文件复制到$PATH目录中,但如果它们依赖于相对路径,则可能会导致问题。
但是,一般而言,最好使用操作系统提供的方法(apt-get、deb 包)或软件项目的构建工具正确安装软件。这将确保正确设置依赖路径(如启动脚本、手册页、配置等)。
更新:还反映了Thomas Dickey 的评论和Faheem Mitha 的回答,我通常对作为带有顶级二进制文件的 tarball 并希望从那里运行的软件做些什么:
把它放在一个合理的位置(按照标准的顺序/opt,/usr/local或者你主目录中的一个文件夹,例如~/build),并在一个$PATH位置(例如/usr/local/bin或~/bin)创建一个可执行脚本包装器,该位置更改为该位置并执行二进制文件:
#/bin/sh
cd "$HOME/build/directory"
exec ./top-level-binary "$@"
Run Code Online (Sandbox Code Playgroud)
由于这会模拟更改到该目录并手动执行二进制文件,因此可以更轻松地调试诸如不存在的相对路径之类的问题。
根据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\"Program Name"),其中“package”是描述软件包的名称,“provider”是提供商的 LANANA 注册名称。
欲了解更多信息,我还建议阅读本了其它的U&L的问题,这与悫差异的交易/opt和/usr/local。/usr/local在这种情况下,我个人会避免,特别是如果我不是我正在安装的程序的构建者。
从二进制 zip 存档或 tarball 创建分发二进制包是完全可能的,实际上也很容易,就像您的 Visual Studio Code 示例一样。
是的,像debs 和rpms这样的Linux 发行版二进制包通常是从源代码生成的,但并非必须如此。并且通常(尽管并非总是)可以将生成的分发二进制包安装在“正确”的位置以符合分发策略。
在随机专有 tarball 的情况下,如果有一种方法可以正确安装软件,例如 makefile 中的安装目标,那么它可以与分发打包机器一起使用。否则,这可能涉及“手动”将文件映射到“正确”的位置,这可能需要大量工作。虽然创建这样的包可能看起来很奇怪,但它仍然具有包管理的主要好处之一,即干净安装和卸载。当然,这样的包永远不会被任何名副其实的 Linux 发行版所接受,但这不是您的问题。