在Windows中安装某些东西只需单击一个按钮。但是每次我尝试在Linux中安装某些在APT中找不到的东西时,我都会感到困惑。
您下载了一个压缩文件夹,然后呢?如果您很幸运,可以找到自述文件,请参考一些文档,如果您很幸运,这可能会对您有所帮助。
当“安装” APT中没有的扩展程序和应用程序时,魔术是什么?
我爱linux,但是这个问题每天困扰着我。
在Windows中安装某些东西只需单击一个按钮。但是每次我尝试在Linux中安装某些在APT中找不到的东西时,我都会感到困惑。
您下载了一个压缩文件夹,然后呢?如果您很幸运,可以找到自述文件,请参考一些文档,如果您很幸运,这可能会对您有所帮助。
当“安装” APT中没有的扩展程序和应用程序时,魔术是什么?
我爱linux,但是这个问题每天困扰着我。
Answers:
如果它是服从一个软件系统层次标准比你应该把它/usr/local
和相应的子目录(如bin
,lib
,share
,...)。
其他软件应放在自己的目录下/opt
。然后,将PATH
变量设置为包括bin
目录或包含可执行文件的目录,或者创建指向的符号链接/usr/local/bin
。
这个问题没有简单的答案,但是我可以概述一下它的工作原理:
作者(“上游”)以源代码形式提供了大多数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工具链...等等,等等...您会看到该规则有很多例外,但是只要有一点经验,您就可以告诉该如何处理大多数这些神秘的下载内容。Configure-Make-Checkinstall是一个不错的开始。
PS。花一两个周末来学习如何编程,事情就会变得很明显:-)
PPS。您可能想知道为什么Linux软件作者不仅仅提供预编译的软件包,还没有提供源代码。好吧,他们有时这样做。但是不同的平台和Linux发行版都有各自的软件包格式和文件系统规则,因此,作为开发人员,您必须为每种可能的配置提供软件包-这很痛苦。Ubuntu软件包通常是最容易找到的-您应该了解PPA是什么以及它是如何工作的!
您应该签出checkinstall。代替
./configure
make
sudo make install
你做
./configure
make
sudo make checkinstall
并且您将能够像通过apt安装该软件包一样来管理该软件包。