我怎么知道把东西放在 linux 的什么地方?

Mar*_*son 59 software-installation directory-structure

在 Windows 中安装一些东西需要点击一个按钮。但是每次我尝试在 linux 中安装一些在 APT 中找不到的东西时,我都很困惑。

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

“安装”在 APT 中找不到的扩展和应用程序时有什么魔术?

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

Mar*_*rer 33

如果它是一个遵守文件系统层次结构标准的软件,那么您应该将它放在/usr/local适当的子目录中(如binlibshare、 ...)。

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

  • 不,我指的是 OP 的“这个问题每天都困扰着我”。 (3认同)

sk2*_*910 27

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

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

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

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

如果没有预编译包,可以随时下载源代码自己编译。大多数情况下,以下操作将起作用:

./configure
make
(sudo) make install (or sudo checkinstall)
Run Code Online (Sandbox Code Playgroud)

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

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

由于您使用的是 apt,我非常建议您使用 checkinstall。你可以用它代替 make install,它会为你生成一个 .deb 包。这使得以后干净地删除软件变得更加容易。

请注意,还有一些其他编译系统,例如 cmake;并且有些软件是预编译但未打包的(在这种情况下,您可以直接从解压缩的文件夹中启动它);并且有些软件是您必须自己运行的脚本集合。来自 SVN 的新代码有时没有配置脚本,所以你必须首先运行 autoconf 工具链......等等......你看到规则有很多例外,但只要有一点经验你就可以告诉如何处理大多数这些神秘下载。Configure-Make-Checkinstall 是一个好的开始。

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

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