我很困惑为什么要创建 .deb 包,而不是简单地将程序放在文件夹+附加文件中并编写安装脚本。
包裹的价值是什么?
答案1
简单的答案是主要原因因为 Linux 发行版的存在是为了,嗯,分发一组连贯的包。由于您不想永远陷入相同的版本,因此您还需要一种升级方法。由于您不想安装不需要的软件,因此您需要一种方法来选择所需的软件包。由于您无法预测未来,因此稍后您将需要一种方法来更改此选择,即安装或删除软件包。由于重用是软件工程的基本原则之一,包依赖于其他包,因此您需要一种方法来处理这些依赖关系。
所有这些导致了包管理系统的创建。
包管理系统提供
- 依赖管理:一个包可以声明它需要另一个包才能工作。事实上,大多数包管理器都比这更强大,并且包实际上可以声明它需要一组具有特定版本的包中的一个才能工作。安装包时,包管理系统会自动确保满足所有依赖关系,最重要的是,继续满足所有当前安装的包的所有依赖关系。
- 安装:包管理系统提供了一种统一、标准化的包安装方式,同时确保满足所有依赖关系并且不会与已安装的包发生冲突。一般来说,每个程序都有不同的安装方式(交互式图形安装程序、交互式 CLI 安装程序、批处理 CLI 安装程序、
make install
手动./install.sh
复制文件),包管理系统有标准化的方式 (apt install
)。 - 移动:包管理系统提供了一种统一、标准化的卸载包的方法,同时确保这不会破坏任何当前安装的包。它还可以自动卸载不再需要的依赖项。没有包管理器的情况与安装类似,但更糟糕,因为许多程序根本不提供卸载它们的方法。
- 更新:这与安装类似,但更困难,因为许多程序不提供更新它们的方法。当然,在更新期间,包管理器需要注意整个系统始终保持一致。
一般来说,我们可以说包管理系统的目的是提供一致的系统系统的各个部分在哪里不合作。换句话说,不同的包不需要相互了解,包管理系统的工作就是确保它们能够很好地协同工作。