我如何知道在 Linux 中把东西放在哪里?

我如何知道在 Linux 中把东西放在哪里?

在 Windows 中安装某些东西只需单击一个按钮。但每次我尝试在 Linux 中安装 APT 中找不到的东西时,我都会感到很困惑。

您下载了一个压缩文件夹,然后呢?如果你幸运的话,有一个自述文件,参考一些文档,如果你幸运的话,这可能会对你有所帮助。

“安装”APT 中未找到的扩展和应用程序时有何技巧?

我喜欢linux,但是这个问题每天都困扰着我。

答案1

如果它是一个遵循以下规则的软件文件系统层次结构标准比您应该将其放入/usr/local适当的子目录(如binlibshare、 ...)。

其他软件应该放在各自的目录下/opt。然后将PATH变量设置为包含bin目录或保存可执行文件的任何目录,或者创建到/usr/local/bin.

答案2

这个问题没有简单的答案,但我可以给你一个它是如何工作的概述:

大多数 Linux 软件都是由作者(“上游”)以源代码形式提供的。这使得每个拥有适合其特定平台和系统配置的编译器的人都可以下载源代码并自行编译。不幸的是,许多程序依赖于其他程序和软件库(依赖项)提供的功能。

Windows 软件通常以预编译的形式出现。这意味着所有 Windows 计算机都有一个通用可执行文件,并且安装包中通常附带有依赖项。

Linux 发行版获取源代码,为您预编译并将其作为软件包提供给您。该包不包含依赖项,但它引用它们并强制包系统也安装它们(这有时会导致混乱,您可能已经经历过这种情况)。

如果没有预编译包,您可以随时下载源代码并自行编译。大多数时候,以下方法会起作用:

./configure
make
(sudo) make install (or sudo checkinstall)

./configure 行为编译过程设置了阶段(如果不满足依赖关系,则吐出错误)。 make 行将执行 Makefile,这是一个编译程序所有部分的脚本。

传统上,您将使用 make install 来安装软件。这通常将可执行文件放在 /usr/local/bin 中。

由于您使用的是 apt,我强烈建议您使用 checkinstall。您可以使用它代替 make install,它会为您生成一个 .deb 包。这使得以后更容易彻底删除该软件。

请注意,还有一些其他编译系统,例如 cmake;有些软件是预编译但未打包的(在这种情况下,您可以直接从解压缩的文件夹中启动它);有些软件是作为脚本集合提供的,您必须自己运行。来自 SVN 的新代码有时没有配置脚本,因此您必须首先运行 autoconf 工具链...等等,等等...您会发现该规则有很多例外,但只要有一点经验,您就能够告诉如何处理大部分神秘的下载。配置-制作-检查安装是一个良好的开始。

附言。花一两个周末学习如何自己编程,事情就会变得非常明显:-)

聚苯硫醚。您可能想知道为什么 Linux 软件作者不只提供预编译包而不是源代码。嗯,他们有时会这样做。但不同的平台和 Linux 发行版都有自己的包格式和文件系统规则,因此作为开发人员,您必须为每种可能的配置提供包 - 这是一个痛苦。 Ubuntu 软件包通常是最容易找到的——您应该了解 PPA 是什么以及它是如何工作的!

答案3

你应该检查一下检查安装。代替

./configure
make
sudo make install

你做

./configure
make
sudo checkinstall

您将能够管理该软件包,就像您通过 apt 安装它一样。

答案4

有一个有效的、合理的原因,这是如此令人困惑(还有一个令人讨厌的工件原因)......

Unix 有着多用户的历史,大多数用户无权在他们被授予特定访问权限的区域之外安装应用程序。

因此,理论是,您将在主目录中构建一些内容,然后将其复制到您可以控制的区域(您自己的项目区域或共享区域)。

Windows PC 通常是单用户系统,没有这个限制,无论如何,一切都在程序文件中。

还有一个愚蠢而烦人的事实,每次新版本的 Unix 出现时,创建者都觉得有必要更改位置,但旧的位置必须仍然存在以用于自动化脚本。这为您提供了一堆具有相同目的的链接目录。

init系统更糟糕。

相关内容