14 linux
可能的重复:
典型的 Linux 程序安装在哪里
我是 Linux 新手,我想问更多关于包的问题。
在 Windows 中,我下载一个.exe文件并安装它。安装时,我定义了要存储该应用程序的路径。在该文件夹中,我拥有应用程序所需的所有文件。
但是,当我在 Linux 中使用yum或安装软件包时apt-get,我不知道该软件包安装在哪里以及该应用程序所需的文件存储在哪里。我已经看到大部分配置都在/etc目录中。但是为什么 Linux 将应用程序所需的文件存储在不同的目录中?
有人能告诉我软件包是如何安装的,它们的存储位置和方式吗?如果我对包管理的理解有误,请纠正我。
Lev*_*von 20
正如您已经注意到的那样,许多程序(二进制文件/脚本)最终位于各种配置目录(通常是 in/under )中/bin或/usr/bin与其他部分一起etc。
对于任何特定命令,您可以查看whereis
whereis prog_name
Run Code Online (Sandbox Code Playgroud)
它会给你一些关于在哪里可以找到这个命令的信息。你也可以试试哪个
which prog_name
Run Code Online (Sandbox Code Playgroud)
此外,此图形和解释/示例可能会有所帮助。
小智 5
您可以通过执行以下操作来获取给定包安装的文件列表yum:
yum install yum-utils
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样运行它:
repoquery --list yum-utils
Run Code Online (Sandbox Code Playgroud)
(显然,将第二个中的“yum-utils”替换为您想要查看其文件列表的包的名称。)
对于apt-get,您可以使用:
dpkg -L package-name
Run Code Online (Sandbox Code Playgroud)
在 Windows 下,尤其是旧版本,程序通常会在其C:\Program Files目录中存储配置文件和非常量数据。这源于程序通常是如何在单用户、非网络、非文件权限的 DOS 下安装和运行的。
从安全的角度来看,这是一个坏主意。可执行代码所在的地方应该与可修改的数据分开。这样可以更容易地应用适当的文件权限来防止未经授权的用户修改已安装的二进制文件。同样,可以与主要可执行文件分开更新的库目录也应该在一个单独的目录中。
随着 Vista 和 UAC 烦恼的出现,这一传统终于开始严重失去吸引力。
UNIX 和 Linux 从很早以前就作为多用户系统,很早就倾向于将可执行目录与其他目录分开,因为需要防止除 root 之外的用户修改已安装的二进制文件。这也是为什么有时/usr甚至/sbin有时是单独的分区 - 特别有安全意识的管理员可以只读挂载这些分区,并在需要安装/卸载时以读/写方式重新挂载它们。
包通常从包管理器安装。有各种包管理器,例如aptitude(Debian 和派生发行版)、yum(Redhat 和派生发行版)、pacman(忘记这是哪个发行版...)等等。
包管理器允许您浏览存储库、下载、安装、查询和删除软件,就像一个复杂的(和免费的)“应用程序商店”。它负责确保处理依赖项并跟踪当前安装的内容。
通常包管理器还允许对您在任何存储库之外手动下载的包执行相同的操作。如果您想从自己制作或编译的软件中创建自己的软件,也可以使用工具。
由于包本身不是可执行文件,因此您不必运行不受信任的可执行文件,而您实际上并不知道它的作用。(Windows 终于通过分发.msu's 而不是.exe's来提供更新- 但是.msi's 已经有一段时间了......)