如何告诉 Ubuntu 在哪里安装程序以及如何知道现有程序安装在哪里?

如何告诉 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

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

在 Windows 中,如果您在任何地方运行安装程序(.exe 文件),该程序仍会安装在您的 中C:\\Program Files directory。Linux 是否也有类似的情况,所有程序都安装在一个中心位置,或者您可以在系统的任何位置安装程序?

我希望将所有已安装的程序保存在一个地方,那么从最佳实践的角度来看,哪里是正确的地方呢?换句话说,Linux 的等价物是什么C:\\Program Files

并且如何始终在此位置进行安装,是否仅需放置 tarball 并从此位置运行安装命令?

如果我使用它sudo apt-get来安装包怎么办?我怎样才能指向此位置以告诉apt-get它始终安装在那里?

答案1

类似的事情是否适用于 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来查看软件包安装的所有文件以及它们的安装位置。

答案2

通常程序安装在同一个目录下的几个目录中顶部目录,称为字首. 使用哪个顶级目录取决于谁在安装、出于什么目的以及谁将管理该软件。

前缀/usr是你的发行版所打包的软件。你应该不是在那里安装任何其他软件,因为它将要在安装和升级发行版打包的软件时混淆该发行版。

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

对于系统管理员为所有用户安装的软件,/usr/local使用前缀。

如果你是普通用户,可以自己安装软件,使用主目录作为前缀,方法是使用带前缀目录“ ”或 的--prefix选项。我当学生时经常用这个。:-)configure~/$HOME/

通常,当您使用具有正确值的configure选项执行时,软件会做正确的事。--prefixmake; make install

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

  • bin- 可执行程序,二进制文件。
  • sbin- 系统二进制文件,通常不应由普通用户执行。
  • man- 程序、库和配置文件等的手册页。
  • etc- 具有软件默认值的配置文件。
  • lib- 依赖于计算机架构(如 CPU)的程序库和数据文件。
  • share- 数据文件在不同的架构上没有差异,并且可以在不同的计算机之间共享。
  • var- 包含在程序执行期间发生变化的数据的目录,如日志文件等。

大多数目录都可以与写保护文件系统一起使用,以提高安全性。用户唯一需要写入的是目录var/

当软件更新时,这些目录需要具有写入权限。通常不需要执行任何操作,但如果需要,可以在安装期间使用写入权限重新挂载,然后在安装后使用只读权限重新挂载。但这是高级操作,我仅将其作为高级软件包管理的一个例子。

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

不同的程序有不同的安装方法。--prefix对于使用 的程序很有用configure。了解的最佳方法可能是阅读README.txt文件或类似的东西,它可能在 tar 档案中提供。

tar 存档可以解压到任何地方,比如您的主目录。安装步骤完成后,如果存储空间不足,您可以删除解压的 tar 存档。但最好保留该目录,因为您经常会使用它来卸载。

随发行版一起安装的程序apt-getaptitude始终安装在发行版的正确位置。您无法更改该位置。

答案3

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

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

然后,当您运行 make install 时,通常会将结果放在正确的位置,可能会创建菜单,但不会删除未压缩的文件。您很可能可以这样做,但您可能希望暂时保存它们以防万一。

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

相关内容