我正在使用 Ubuntu,通过存储库安装软件包很容易,APT 可以为您完成所有工作,但有时我需要通过互联网安装一些东西。
99% 的时间里,这些软件包都是 tarball。我读到的所有内容都告诉我,在使用存档管理器或 tar 命令本身提取存档后,运行 configure,然后 make,然后 make install 进行构建。
但是,到目前为止我下载的所有内容都没有为其编写的配置脚本。或者至少看起来是这样。
例如,我刚刚从 Java 网站下载了 JRE,希望可以使用浏览器插件。但下载说明仅涵盖解压文件,然后创建符号链接,以便您可以访问插件。
现在我的 /opt 目录中有了这个大文件。它的内容如下:
对我来说,感觉 bin、lib 等应该在不同的目录中,这是真的吗?
我下载的几乎每个 tarball 都存在同样的情况。这个不适用,但对于其他文件,我想让该程序作为链接在我的桌面上可用。但是,安装说明再次只涵盖解压,只给我留下一个目录,就像上面的目录一样。
如果我想要图标,我是否只需要自己在桌面文件夹中创建指向相应文件的链接?
我是否应该假设需要进一步配置的文件会在安装说明中提到它,或者附带配置脚本?
编辑:我知道 JRE 在存储库中可用,但是它说明了问题,因此请查看一般问题,而不仅仅是有关 JRE 的部分。
答案1
了解何时使用简单的 tarball、何时进行编译(以及所有操作)很有用
配置脚本用于编译软件,可能包含涉及附加库的编译选项或选择前缀的选项。它还确保您拥有实际编译脚本所需的一切,并生成 makefile。make 使用 makefile 来编译程序。传统上make install 将编译好的程序和相关文件复制到正确的位置,但我使用 checkinstall,它会创建一个 deb 并安装它。这还允许您共享库和其他有用的东西。'deb' 或 'RPM' 只是为特定发行版和版本编译的软件,具有一组合理的设置,并且您可以自动提取所需的共享库和依赖项
如果您已经编译了它,并且没有选项,并且以普通用户身份运行该软件,那么您可能会打包所有内容,静态编译。它是 Linux 版的“便携式”软件(在拇指驱动器意义上,而不是一次写入,几乎可以在任何地方编译)。它假设您的用户不需要其他选项,并且一切都正常工作(或者您太懒了,无法正确打包它。这种情况会发生。
虽然 HFS 对于类 Unix 系统来说是一种强制性要求,但并不是所有人都尊重这一点。在这种情况下具体的在这种情况下,我怀疑这种打包方式允许简单地使用相对文件路径,并排安装不同版本的 Java,使用 JAVA_HOME 前缀等。这完全是故意的。