软件安装和包管理器如何在 Linux 上工作

在 Linux 上安装软件涉及包管理器和软件存储库,而不是像在 Windows 上那样从网站下载和运行 .exe 文件。如果您是 Linux 新手,这似乎是一种戏剧性的文化转变。
虽然您可以在 Linux 上自行编译和安装所有内容,但包管理器旨在为您完成所有工作。使用包管理器使安装和更新软件比在 Windows 上更容易。
Linux 与 Windows
有各种各样的 Linux 发行版和各种各样的包管理器。 Linux 是从开源软件构建的,这意味着每个 Linux 发行版都使用其所需的库版本和编译选项编译自己的软件。编译 Linux 应用程序通常不会在每个发行版上运行——即使它们可以,安装也会受到竞争包格式的阻碍。如果您找到 Linux 应用程序的网站,您可能会看到不同包格式和 Linux 的各种下载链接发行版——假设应用程序的网站完全提供预编译版本。该应用程序可能会告诉您下载源代码并自行编译。

软件资料库
Linux 用户通常不像 Windows 用户那样从应用程序的网站下载和安装应用程序。相反,每个 Linux 发行版都拥有自己的软件存储库。这些存储库包含专门为每个 Linux 发行版和版本编译的软件包。例如,如果您使用的是 Ubuntu 12.04,则您使用的存储库包含专门为 Ubuntu 12.04 编译的包。 Fedora 用户使用一个存储库,里面装满了专门为他们的 Fedora 版本编译的软件包。

包管理器
将包管理器想象成一个移动应用程序商店——除了它们早在应用程序商店之前就存在了。告诉程序包管理器安装软件,它会自动从其配置的软件存储库中下载适当的程序包,安装并设置它——所有这些都不需要您点击向导或在网站上搜索 .exe 文件。发布更新时,您的包管理器会注意到并下载相应的更新。与 Windows 不同,每个应用程序都必须有自己的更新程序才能接收自动更新,包管理器处理所有已安装软件的更新——假设它们是从软件存储库安装的。

什么是包裹?
在 Windows 上,应用程序包含在 .exe 安装程序文件中,可以对系统做任何他们想做的事情,而 Linux 使用特殊的包格式。有多种软件包类型——最著名的是 Debian 和 Ubuntu 上的 DEB 以及 Fedora、Red Hat 和其他软件上的 RPM。这些包本质上是包含文件列表的档案。包管理器打开存档并将文件安装到包指定的位置。包管理器知道哪些文件属于哪些包——当你卸载一个包时,包管理器确切地知道系统上的哪些文件属于它。 Windows 不知道哪些文件属于已安装的应用程序——它让应用程序安装程序自己管理安装和卸载。
包还可以包含在安装和删除包时运行的脚本,尽管这些脚本通常用于系统设置而不是将文件移动到任意位置。

在 Linux 上安装软件
要在 Linux 上安装软件,请打开包管理器,搜索软件,然后告诉包管理器安装它。您的包管理器将完成剩下的工作。 Linux 发行版通常为包管理器提供各种前端。例如,在 Ubuntu 上,Ubuntu 软件中心、更新管理器、Synaptic 应用程序和 apt-get 命令都使用 apt-get 和 dpkg 来下载和安装 DEB 包。您可以使用任何您喜欢的实用程序——它们只是提供不同的界面。通常,您会在 Linux 发行版的菜单中找到一个简单的图形包管理器。

更新延迟
新的 Linux 用户经常注意到包管理器和存储库的一件事是新软件版本到达他们的系统之前的延迟。例如,当新版本的 Mozilla Firefox 发布时,Windows 和 Mac 用户将从 Mozilla 获取它。在 Linux 上,您的 Linux 发行版必须打包新版本并将其作为更新推出。如果您在 Linux 上打开 Firefox 的首选项窗口,您会注意到 Firefox 无法自动更新自身(假设您使用的是 Linux 发行版存储库中的 Firefox 版本)。

您也可以自己下载并安装该应用程序——例如,直接从 Mozilla 下载 Firefox——但这可能需要从源代码编译和安装软件,并且会失去包管理器的优势,例如自动、集中的安全更新。
虽然新版本的 Firefox 是优先考虑的,因为它们包含安全更新,但其他应用程序可能无法快速交付。例如,LibreOffice 办公套件的主要新版本可能永远不会作为 Linux 发行版当前版本的更新发布。为避免潜在的不稳定并留出时间进行测试,此版本可能要等到您的 Linux 发行版的下一个主要版本(例如 Ubuntu 12.10)成为发行版软件存储库中的默认版本时才可用。
为了解决这个问题,一些 Linux 发行版,例如 Arch Linux,提供“滚动发布周期”,新版本的软件被推送到主软件存储库中。这可能会导致问题——虽然您可能需要新版本的桌面应用程序,但您可能并不关心新版本的低级系统实用程序,这可能会带来不稳定性。
Ubuntu 提供了 backports 存储库,以将重要软件包的新版本引入旧发行版,尽管并非所有新版本都进入 backports 存储库。
其他存储库
虽然 Linux 发行版附带了自己的预配置存储库,但您也可以将其他存储库添加到您的系统中。完成后,您可以从该存储库安装软件存储库,并使用您的包管理器从中接收更新。您添加的存储库必须专为您的 Linux 发行版和包管理器而设计。
例如,Ubuntu 提供了种类繁多的个人软件包存档 (PPA),其中包含由个人和团队编译的软件。 Ubuntu 不保证这些存储库中软件包的稳定性或安全性,但您可以从受信任的个人添加 PPA 以下载尚未在 Ubuntu 存储库中的软件包——或者下载现有软件包的更新版本。
一些第三方应用程序也使用自己的软件存储库。例如,当您在 Ubuntu 上安装 Google Chrome 时,它会将自己的 apt 存储库添加到您的系统中。这可确保您通过 Ubuntu 的更新管理器和标准软件安装工具接收 Google Chrome 的更新。
