Concepts package management

跳转到:导航搜索
像 openSUSE 这样的 Linux 发行版是一组存储在软件包中的软件,以及管理这些应用程序作为一个整体的必要工具。

概述

软件包管理系统是一套工具,它提供了一种一致的方法来在您的系统上安装、升级和删除软件。Linux 发行版,包括 openSUSE,通常由数千个不同的软件软件包组成。

软件通过软件包分发,这些软件包链接到元数据,其中包含附加信息,例如软件用途的描述以及软件正常运行所需的依赖关系列表。它们由仓库提供,可以是本地介质(CD、DVD 或硬盘驱动器)或在线仓库。安装后,元数据存储在本地软件包数据库中,用于检索软件软件包。

Libzypp 是 openSUSE 对此类软件包管理系统的实现,并提供 YaST 软件管理 作为图形用户界面,以及 Zypper 作为命令行界面。


软件包

软件包是文件档案,包括构成软件片段的所有文件(例如应用程序本身、共享库、包含构建软件所需的文件的开发包等),以及最终,关于如何使它们工作的说明。

软件包正确地集成到为其构建的发行版中,包括安装路径、依赖关系、桌面集成、服务器的适当启动脚本等。出于这些原因,您始终应该安装为正在使用的发行版构建的软件包,包括发行版的精确版本(例如 openSUSE 12.1)。例如,不要在 openSUSE 上安装 Fedora 软件包,甚至不要在 openSUSE 12.2 上安装 openSUSE 12.1 软件包。

软件包元数据

软件包还包含进一步的信息,通常称为 元数据,例如

  • 摘要,
  • 描述,
  • 软件包中包含的文件列表,
  • 软件的版本以及软件包的发布号,
  • 何时、何地以及由谁构建的,
  • 它构建的架构,
  • 软件包中包含的文件的校验和,
  • 软件的许可证,
  • 它需要哪些其他软件包才能正常工作,
  • 等等。

软件包依赖项

软件包档案的一个重要方面是它们包含的关系。实际上,软件包还将文件与其他软件包关联起来,因为打包的应用程序需要一个执行环境(其他工具、库等)才能实际运行该应用程序。软件包依赖关系用于表达这种关系。

例如,软件包 A 需要安装软件包 B、C 和 D 才能正常工作。

  • 软件包依赖关系是传递的,这意味着当软件包 A 需要软件包 B,并且软件包 B 需要软件包 C 时,软件包 A 也需要软件包 C,这就是为什么您有时最终需要安装很多软件包,尽管您只想安装那个应用程序的原因。
  • 对库(通常名称以“lib”开头的软件包)的依赖关系非常常见,并且几乎每个应用程序都依赖于一组库软件包。

软件包和软件包依赖关系是 Linux 发行版(以及其他 BSD 和 UNIX 系统)的重要方面,因为它们提供了一种设置和管理操作系统及其应用程序的模块化方法。这对于库软件包尤其如此。例如,软件包 openssl 包含许多应用程序和其他库使用的加密库(例如用于 SSL 加密)。当新的、改进的 openssl 版本可用时,所有使用它的应用程序只需将单个软件包升级到新版本即可从中受益。

它也是维护稳定和安全系统的非常有效的方法:当安全漏洞、利用或错误影响一个或多个应用程序使用的库时,升级单个软件包将为所有应用程序修复它。

软件包格式

在 Linux 软件分发领域,本机软件基本上以三种软件包格式提供。

  • tgz(或tar.gz,tar gzip 文件)基本上是源代码档案。它们可以包含软件包维护者认为有用的任何内容。除了提取文件所需的档案格式之外,tgz 文件的内容没有标准化。需要编译才能运行软件。
  • rpmRPM 软件包管理器)是预编译的档案。由 Red Hat Linux 创建并由 LSB 标准化,它现在被许多 Linux 发行版用作其打包系统,包括 openSUSE。
  • deb(Debian)是预编译的档案,用于基于 Debian 的系统。

但是,这些系统不提供任何类型的依赖管理功能。因此,例如,如果您想安装一个依赖于 RPM 软件包 B 的 RPM 软件包 A,RPM 将只是告诉您它需要软件包 B 并停止。

然后由用户安装软件包 B,然后安装软件包 A。

现在假设软件包 B 依赖于软件包 C 和 D,并且软件包 D 依赖于软件包 E,依此类推……它很快就会变得不可能管理整个依赖树。

软件包管理器

在 openSUSE 等现代 Linux 发行版中,软件安装是通过 软件包管理器完成的。软件包管理器在 RPM(或 Debian 基于发行版的 dpkg)之上工作,从 仓库(在线服务器、CD、DVD 等)获取软件包,解决依赖关系(尝试构建依赖树)并在您的系统上安装它们。

软件包管理器还使以后删除或更新软件包变得容易。

可用于安装的软件包数量取决于您添加了哪些仓库。

openSUSE 本机软件包管理器是 YaST(GUI 和 TUI)和 zypper 命令行,尽管该发行版附带各种软件包管理工具。

软件包仓库

在可以安装软件包之前,它们必须在 软件包仓库中可用,可以是物理介质(如 CD 或 DVD)或通过互联网在线。

openSUSE 软件包仓库包括

  • 官方 软件包仓库,其中包含经过良好测试和支持的软件包
  • 第三方仓库,例如 Packman 和 Build Service 仓库。它们提供各种额外的软件包,其中一些软件包更新或由于法律原因无法包含在 openSUSE 中,尽管它们只经过了非常有限的测试。

参见


外部链接