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


10

我是Ubuntu / Linux的新手,目前使用Ubuntu Server。只是想找出基本的东西。

您如何知道要在哪里安装程序。例如,我刚刚安装了Sphinx搜索引擎,方法是将从他们的网站下载的压缩包放置到我的网站上:

/home/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中,如果您运行安装程序(.exe文件),则该程序仍会安装在C:\ Program Files目录中。在将所有程序都安装在中央位置的linux上是否适用类似的规定,还是可以在系统上的任何位置安装程序?

问题

  1. 我宁愿将所有已安装的程序放在一个位置,那么就最佳实践而言,什么是正确的位置?换句话说,Linux等效于C:\ Program Files?

  2. 以及如何始终在此位置安装,仅是将tarball放置并从该位置运行安装命令的问题?

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

Answers:


15

在所有程序都安装在中央位置的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 --prefix=/usr。这样,当make install文件最终位于正确的目录中时

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

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

apt-get/ dpkg自动处理。您可以dpkg -L name-of-package用来查看软件包安装的所有文件以及它们的安装位置。


感谢您的详细回答,只是一个问题。由于您说“不。运行安装命令时您所处的位置几乎无关紧要。”,这是否意味着既然我已经安装了程序,就可以安全地删除从压缩包中提取的/ home / sphinx /中的Sphinx文件夹了。并在其中运行install和made命令?这是否等同于我已经运行以安装程序但现在没有用的安装程序?
JakeRow123 2012年

1
是的,您可以删除从压缩包中提取的文件夹-本质上就像安装程序被提取到的“临时”文件夹一样,现在不再有用了。这是一个很好的问题,我将编辑答案以包括此信息。
ish 2012年

可以,但是使用'make uninstall'卸载它们会遇到问题。在Debian / Ubuntu中,永远不要在前缀/或/ usr中安装软件,而应使用/ usr / local。为什么,因为/ usr / local是为本地管理员创建的,所以您就是JakeRow123,以安装他们自己的程序。/和/ usr仅适用于Debian软件包。如果在此安装,那么通道太大了,您会遇到问题。因此,在编译自己的文件时,请使用命令'--prefix = / usr / local'进行配置。然后'make; sudo make install'将在此处安装程序。
安德斯

@Anders make uninstall不是标准功能,在许多程序源中均未找到。此外,/usr/localUbuntu通常不在Ubuntu上,可能会在尝试运行程序或尝试进行编译时引起问题(由于中包含了/usr/local)。
ish 2012年

请勿将软件安装在错误的位置,例如/ usr下,而不是在正确的位置,例如/ usr / local。如果未正确设置计算机/用户环境,则应使用PATH修复故障。在/或/ usr下安装将给您带来麻烦。相信我。到那里去做。没什么好玩的。完全没有 当您使用configure命令进行设置时,一些带有autoconfig的程序都会被卸载。其他没有帮助的人,应该报告一个错误……
Anders 2012年

4

通常,程序安装在顶层目录下的几个目录中,这两个目录称为prefix。使用哪个顶级目录取决于谁安装,出于何种目的以及谁将管理软件。

前缀/usr是您的发行版附带的已使用软件。您应该安装任何其他软件存在,因为它在安装和分发包装升级软件时混淆的分布。因此,请勿在此安装您自己的编译软件。除非您真的知道自己在做什么,否则这不是一个好主意。而且,除非您是Debian或Ubunut开发人员,否则通常不会。反正我不会那样做。

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

对于系统管理员为所有用户安装的软件,使用前缀/usr/local。无论是商业安装还是配电安装,都不会干扰它们。因此,作为系统管理员,您可以使用它(如果您具有root特权,则您是系统管理员)。

如果您是自己安装软件的普通用户,则可以使用主目录作为前缀,方法是使用带有前缀目录“ ”或“ 。” 的--prefix选项。当我还是学生的时候,我用了很多。:-)configure~/$HOME/

通常,当您configure使用--prefix具有正确值的选项执行时,软件会执行正确的操作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。有很多地方可以放置要安装的程序。这取决于谁安装以及为谁安装。在我的帖子中阅读。注意。RedHat /usr用作Debian / Ubuntu的用法/usr/local。了解您的分布。
  2. 不同的程序具有不同的安装方法。--prefix对于使用的程序很有用configure。最好的了解方法可能是读取README.txt文件或类似的东西,而tar归档文件中可能随附了该文件。tar归档文件可以在任何位置提取,例如您的主目录。安装步骤完成后,如果存储空间不足,则可以删除提取的tar归档文件。但是,除非您已正确测试了安装,否则请尽早这样做。
  3. 随程序一起安装apt-getaptitude安装的程序始终安装在正确的发行位置。你不能改变那个地方。

2

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

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

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

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


不错的文章,只是它没有引用/ usr / local来安装自己的软件,以免与系统和发行版(如Ubuntu)软件包安装的软件发生冲突。在/或/ usr下安装您自己的软件是为了解决问题,可能仅是解决问题的问题是重新从头开始安装系统...
Anders 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.