如何告诉Ubuntu在哪里安装程序以及如何判断现有程序的安装位置?

我是Ubuntu / Linux的新手,目前使用的是Ubuntu Server。 只想弄清楚一些基本的东西。

你怎么知道你在哪里安装程序。 例如,我刚安装了Sphinx搜索引擎,将我从他们网站下载的tarball放到我的:

/home/sphinx 

目录。 我创建了sphinx目录来放置tarball。然后我运行了这些命令:

 tar xvzf sphinx-0.9.8.1.tar.gz cd sphinx-0.9.8.1/ ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql 

然后这些:

 make sudo make install 

现在我有很多文件位于我运行这些命令的目录中。 这是我的Spynx安装还是安装在其他地方?

在Windows中,如果您在程序仍将安装在C:\ Program Files目录中的任何位置运行安装程序(.exe文件)。 类似的东西适用于所有程序都安装在中央位置的linux,或者你可以在系统的任何地方安装程序。

问题

  1. 我希望将所有已安装的程序保存在一个位置,以便在最佳实践方面适合这样做。 换句话说,什么是Linux相当于C:\ Program Files?

  2. 如何总是在这个位置安装,只是放置tarball并从这个位置运行安装命令?

  3. 如果我使用sudo apt-get来安装软件包呢? 我如何指向这个位置告诉apt-get始终安装在那里?

类似的东西适用于所有程序都安装在中心位置的linux

在Linux中大致相当于Windows安装目录

  • \Windows = /bin
  • \Windows\System32 = /lib/sbin
  • \Program Files = /usr/bin/usr/lib

我希望将所有已安装的程序保存在一个位置,以便在最佳实践方面适合这样做。 换句话说,什么是Linux相当于C:\ Program Files?

那将是/usr下的目录,特别是/usr/bin/usr/lib

如何总是在这个位置安装,只是放置tarball并从这个位置运行安装命令?

  • 不,您在运行安装命令时的位置几乎不重要。

  • 您通过apt-get (或aptitude )安装的程序几乎总是在/usr正确结束。 但是你从源代码编译的程序和make install会经常会出现在/usr/local/bin/usr/local/lib等中,你可能会遇到问题,因为Debian / Ubuntu中用户安装的路径是/usr而不是/usr/local

  • 从源代码编译时,将此开关添加到configure: ./configure --prefix=/usr 。 这样,当您make install ,文件将最终出现在正确的目录中

  • 另请checkinstall程序,该程序跟踪从源安装程序编译的程序包的文件,生成deb文件,并允许轻松卸载/重新安装。

如果我使用sudo apt-get来安装软件包呢? 我如何指向这个位置告诉apt-get始终安装在那里?

apt-get / dpkg自动处理这个问题。 您可以使用dpkg -L name-of-package查看程序包安装的所有文件及其安装位置。

通常程序安装在一个顶级目录下的几个目录中,称为前缀 。 使用哪个顶级目录取决于谁正在安装,为了女巫目的以及谁将管理软件。

前缀/usr是由您的发行版打包使用的软件。 您不应该在那里安装任何其他软件,因为在安装和升级分发包装的软件时,它混淆分发。 所以不要在那里安装自己编译的软件。 这不是一个好主意,除非你真的知道你做了什么。 除非您是Debian或Ubunut开发人员,否则通常不会。 反正我也不会这样做。

对于商业软件,使用前缀/opt 。 它保留给他们干扰最少的发行版和本地系统管理员。

对于系统管理员为所有用户安装的软件,使用前缀/usr/local 。 从商业或分销安装中解脱出来并且不会干扰它们。 因此,作为系统管理员,您可以使用它(如果您具有root权限,则您是系统管理员)。

如果您是普通用户自己安装软件,可以使用主目录作为前缀,使用--prefix选项configure前缀目录“ ~/ ”或$HOME/ 。 当我还是学生时,我经常使用它。 🙂

当你使用带有正确值的选项--prefix执行configure然后make; make install时,软件通常做正确的事情make; make install make; make install

在任何这些前缀下,您通常会在标准安装中找到这些目录。

  • bin – 可执行程序,二进制文件。
  • sbin – 系统二进制文件,通常不应由普通用户执行。
  • man – 程序,库和配置文件等的手册页。
  • etc – 配置文件,包含软件的默认值。
  • lib – 依赖于计算机中的体系结构(如CPU)的程序库和数据文件。
  • share – 在不同体系结构上没有不同的数据文件,可以在不同的计算机之间共享。
  • var – 在程序执行期间更改数据的目录。 像记录文件等

这些目录中的大多数可以与写保护文件系统一起使用以提高安全性。 用户需要写入的唯一一个是var/目录。 当软件更新时,这些目录显然(?)需要具有写入权限。 这可以通过在安装期间具有写权限的重新装入来完成,然后在安装后以只读方式重新装入。 但这是先进的,我只是将它作为高级包管理的一个例子。

/ (根目录)下也有一些目录在任何其他前缀下都不存在,例如/dev/tmp/proc/srv (对于服务器数据目录,但它们通常位于/var/lib/var/www和这样的目录,因此您需要更改配置以使用此目录。我建议您在运行服务器时执行此操作。仅使用/var/来测试标准安装)。

  1. Linux不是MS Windows。 您可以安装许多程序放置程序。 这取决于谁安装和谁。 在我的post中阅读它。 注意。 RedHat使用/usr作为Debian / Ubuntu使用/usr/local 。 了解您的发行版。
  2. 不同的程序有不同的安装方法。 --prefix对于使用configure程序很有用。 最好的方法是阅读README.txt文件或类似的东西,你可能会在tar存档中提供它。 tar存档可以在任何地方提取,例如您的主目录。 完成安装步骤后,如果存储空间不足,则可以删除提取的tar存档。 但是,除非您已正确测试安装,否则不要提前做到这一点。
  3. 使用apt-getaptitude安装的程序始终安装在适当的分发位置。 你不能改变那个地方。

使用正常安装从存储库安装程序时,它将安装到正确的位置,在正确的位置创建配置文件(function类似于Windows注册表),并自动创建菜单项。

当您下载文件时(非首选,但在应用程序不在存储库中时通常是必需的),那么您所做的第一件事就是运行tar,相当于在Windows上解压缩。 这会创建您最有可能看到的文件。

然后,当你运行make install时,通常会将结果放在正确的位置,也许会创建菜单,但它不会删除未经编译的文件。 你最有可能这样做,但你可能想暂时保存它们以防万一。

这是一篇关于Debian目录结构的有趣文章。