Linux中存储的已安装软件在哪里?[重复]


11

可能重复:
在哪里安装了典型的Linux程序

我是Linux的新手,我想问更多有关软件包的信息。

在Windows中,我下载.exe并安装文件。安装时,我定义了要存储该应用程序的路径。在该文件夹中,我拥有该应用程序所需的所有文件。

但是,当我使用yum或安装Linux软件包时apt-get,我不知道该软件包安装在哪里以及该应用程序所需的文件存储在哪里。我已经看到大多数配置都在/etc目录中。但是,为什么Linux将应用程序所需的文件存储在不同的目录中?

有人可以告诉我如何安装软件包,以及在何处以及如何存储它们吗?如果我对软件包管理的理解是错误的,请纠正我。


如果您的发行版使用rpm,则可以使用rpm -q --whatprovides来查找特定文件的软件包名称,然后rpm -q -a找出软件包安装了哪些文件。
大卫·史瓦兹

有了apt-get,如果程序包安装使用dpkg -L PKGNAME,如果不使用apt-file list
雷神

Answers:


15

许多程序(二进制文件/脚本)在结束/bin/usr/bin以各种配置目录其他部分(通常是/下etc),因为你已经注意到。

对于任何特定的命令,您可以检出whereis

whereis prog_name

它将为您提供有关在何处可以找到此命令的信息。您也可以尝试哪些

which prog_name

另外,此图和说明/示例可能会有所帮助。


1
+1为whereis -对Linux

但是为什么只将配置保存在单独的目录中?

@KOU我不知道它的历史,但是可以这样来进行程序更新,而不会弄乱配置信息,因为它位于不同的目录中。这样,不同的版本可以使用相同的配置信息(假设格式等未更改,即兼容)。我只是在这里推测。您必须研究Unix / Linux文件系统的历史才能得到明确的答案。
莱文,2012年

1
我不确定将所有系统范围内的配置文件放入的决定的历史/etc/,但是将配置文件放在一个中央位置可以很容易地备份它们。(想象一下在Windows中备份系统范围的配置文件,这些文件分散在文件系统和注册表中。)
Li-aung Yip 2012年

@ Li-aungYip好点
Levon

5

在Windows(尤其是旧版本)下,程序在其C:\Program Files目录中存储配置文件和非恒定数据是很常见的。这是从通常在单用户,非网络,非文件权限的DOS下安装和运行程序的方式得出的。

从安全角度来看,这是一个坏主意。可执行代码所在的位置应与可修改的数据分开。这样,更容易应用适当的文件权限来防止未经授权的用户修改已安装的二进制文件。同样,可能与主要可执行文件分开更新的库目录也应该位于单独的目录中。

随着Vista和UAC烦恼的到来,这一传统终于开始严重失去吸引力。

UNIX和Linux早已是多用户系统,因此倾向于更早地将可执行目录与其他目录分开,因为有必要防止除root以外的用户修改已安装的二进制文件。这也是有时/usr甚至/sbin有时是单独的分区的原因-一个特别注重安全性的管理员可以以只读方式挂载这些分区,并在需要进行安装/卸载时以读/写方式重新挂载它们。

软件包通常是从软件包管理器安装的。有各种软件包管理器,例如aptitude(Debian和派生发行版),yum(Redhat和派生发行版),pacman(忘了这是哪个发行版...)等等。

程序包管理器使您可以浏览存储库,下载,安装,查询和删除软件,就像一个复杂的(免费的)“应用程序商店”。它负责确保照顾到依赖项并跟踪当前安装的内容。

通常,程序包管理器还将允许对您从任何存储库外部手动下载的程序包执行相同的操作。如果要使用自己制作或编译的软件来创建自己的工具,也可以使用工具。

由于包本身不是可执行文件,因此您不必运行不真正知道其作用的不受信任的可执行文件。(Windows最终通过分发.msu而不是s来进行更新.exe-但.msi已经存在了一段时间...)


1
回覆。pacman,用于Arch Linux

2

您可以yum通过执行以下操作获取给定软件包安装的文件列表:

yum install yum-utils

然后,您可以像这样运行它:

repoquery --list yum-utils

(显然,将第二个目录中的“ yum-utils”替换为您要查看其文件列表的软件包的名称。)

对于apt-get,您可以使用:

dpkg -L package-name

1

通常/usr/bin取决于,尽管它取决于您要安装的特定应用程序或库。


1

在Linux / Unix中,大多数程序通常不会以单个目录结尾,但其中的不同部分(可执行文件,配置文件,日志文件,文档,其他资源)通常通过符号链接分散在文件系统中。在维基百科的文章中详细介绍了标准的目录结构的正常的文件系统层次结构下,表现出不同的目录,你可以期待在每个找到。


0

/opt目录保留给类似Windows的安装,其中每个软件包都有自己的目录树。没有人使用它。我不知道为什么;可能是每次安装软件包时添加/opt/PACKAGE/bin到您的内容中$PATH都太烦人了。


/opt似乎主要用于商业/非免费软件包,例如MATLAB。
叶立昂

在我的Ubuntu 12.04上,将安装Google Chrome,/opt然后我直接从此处安装的LibreOffice 3.5也已安装。

0

Linux中的软件在范式上与Windows或Mac有所不同。在这些文件中,可执行文件及其所有支持文件都安装在一个文件夹中:Windows通常将其保留在c:\Program Files\program nameApple中/Applications/program.app。在Linux下,有更多的……公共结构。二进制文件通常位于/usr/bin,系统范围的配置位于/etc,用户特定的配置通常位于~/.program。库位于中/usr/lib,支持文件(例如,艺术品)通常位于中/usr/share/program,等等。甚至还存在一个标准,表明应该去哪里。

程序一般是由包管理器安装,rpm以及dpkg; 分别通过yumaptitude/ 自动搜索和检索它们(包括依赖关系管理)apt-get。从更高的技术层面来看,这些软件包是简单的压缩文件(我相信rpm和deb都是.tar.gz)。这些档案包含从根在文件去文件系统的碎片的一面镜子(在应该可以安装,比如一个文件/usr/bin/program将在usr/bin/program包下内相应的文件夹。

要查找有关特定软件包的信息,请使用系统的软件包管理器,如此处其他人所述。


0

票数手册页可以提供一些见解


2
尽管此链接可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。如果链接的页面发生更改,仅链接的答案可能无效。
MaQleod

@MaQleod如果您担心链接可能无效,我仅为方便起见已链接。我可以简单地用纯文本形式写“ man hier”,因为我猜您可以在任何主流Linux发行版中找到此手册页。
AnonymousLurker 2012年

2
“请参阅手册”也不是适当的答案,而是一种评论。答案实际上应该回答问题。这如何回答提出的问题?层次结构列表的重要性如何?为什么OP(或其他任何人)认为此答案值得关注?复制链接(或手册页)的相关部分并解释为什么它们在问题中很重要,那么您将回答问题,而不仅仅是发表评论。
MaQleod
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.