• 软件包管理


    决定Linux发布版质量最重要的因素就是软件包系统(packaging systems)和社区支持的活跃度。软件包管理在在系统上安装和维护软件的一种方法。现在大多数人都可以通过从他们的Linux发布商那儿获取并安装软件包来满足他们的软件需求。这和Linux早期必须下载并编译源代码(source code)安装软件形成鲜明对比。

    不同的发布版使用不同的软件包系统,通常,为一个版本制作的软件包不会与其他版本兼容。大多数发布版主要分成两个阵营:Debian的.deb阵营和Red Hat的.rpm阵营。虽然有一些如Gentoo、Slackware和Foresight的例外,但是大多数版本都基于这两种基本系统的一种。

    主要的软件包系统
    软件包系统 发布版(部分列表)
    Debian风格 (.deb) Debian, Ubuntu, Xandros, Linspire 
    Red Hat风格 (.rpm) Fedora, CentOS, Red Hat Enterprise Linux, OpenSUSE, Mandriva, PCLinuxOS

    软件包系统

    软件包管理主要包含三个方面:包格式规范(the package format specification)、包处理工具(the package handler)和包管理工具(the package manager)。

    软件包管理的基础是包文件(package files)的格式,包文件是软件包系统的基本单元。软件包文件一般分为二进制包(binary packages)和源代码包(source packages)。一个源代码包可以生成一个或者多个二进制包,但多数情况下只能生成一个二进制包。包文件是组成软件包的文件(一些程序和支持程序的数据文件)的压缩集合。DEB和RPM分别是两大阵营的包格式。deb文件有三部分组成:debian-binary、control.tar.gz和data.tar.gz。debian-binary指明使用的deb格式版本(由于格式会随着时间的改进),control.tar.gz打包了包管理工具所需要的控制信息,data.tar.gz包含软件包在根文件系统下的安装位置。rpm文件使用网络字节序在磁盘上存储,在逻辑上可以被分成四个独立的分区:lead、signature、header和archive。

    包处理工具是低层次的工具,主要负责软件安装、删除、查询状态(软件是否安装、删除、清除、保持等)和显示包文件信息等任务。在linux包管理上,删除软件(remove)是指将软件安装的文件删除但不删除软件的配置文件,清除软件(purge)是指将安装的文件和配置文件都清除掉。debian阵营的包处理命令是dpkg (dselect是dpkg的前端工具,现在已不建议使用),Red Hat阵营的包处理命令是rpm。下表是两大阵营的包处理命令的对比列表:

    功能描述 dpkg rpm
    显示包文件的信息 dpkg --info rpm -qpi
    显示包文件的内容 dpkg --contents rpm -qpl
    安装软件 dpkg --install rpm -i
    忽略所需要满足的依赖关系,强制安装软件 dpkg --install --force-depends rpm -i --nodeps
    强制覆盖属于其他包的文件,安装软件 dpkg --install --force-overwrite rpm -i --replacefiles
    删除软件 dpkg --remove n/a
    清除软件 dpkg --purge rpm -E
    显示包的信息 dpkg --list rpm -qa
    显示包的安装位置 dpkg --listfiles rpm -ql
    查询包状态 dpkg --status rpm -pi
    查询安装的文件属于哪个包 dpkg --search rpm -pf

     包管理工具是高层次的工具,主要负责元数据查找和依赖关系解析。debian阵营的包管理命令是apt-get和aptitude (aptitude是apt-get的前端工具并记录了为了满足依赖关系而自动安装的包的状态)。Red Hat阵营的包管理命令是yum。下表是两大阵营的包管理命令的对比列表:

    功能描述 apt-get yum
    查找软件包 apt-cache search yum search
    显示包信息 apt-cache show yum info
    显示该包的依赖信息 apt-cache depends n/a
    显示依赖该包的信息 apt-cache rdepends n/a 
    显示该包的依赖与被依赖信息 apt-cache showpkg n/a 
    安装软件包 apt-get install yum install 
    只下载软件包(不安装) apt-get install --download-only (保存在/var/cache/apt/archives/) yum install --download-only (默认在/var/cache/yum)
    删除软件(不删除配置文件) apt-get remove n/a
    清除软件 apt-get remove --purge yum remove
    更新软件源中的软件包列表数据库 apt-get update n/a
    软件更新 apt-get upgrade yum update
    系统版本升级 apt-get dist-upgrade yum --obsoletes update
    下载软件包的源代码 apt-get source (保存到当前工作目录) n/a
    将源代码编译成二进制包时安装其依赖的文件 (否则无法编译) apt-get build-dep n/a
    查找提供某个位置文件(可以是没有安装到本地系统上)的软件包 apt-file search yum provides

     对于debian阵营来说,dpkg需要维持debian软件包数据库的一致性,任何威胁数据库的一致性状态的举动都会被禁止(除非明确指明);apt-get则恰恰相反,会尽最大可能去满足用户的请求。

  • 相关阅读:
    leetcode 105. 从前序与中序遍历序列构造二叉树
    leetcode 96. 不同的二叉搜索树
    leetcode 21. 合并两个有序链表
    leetcode 617. 合并二叉树
    leetcode 101. 对称二叉树
    欧拉定理和扩展欧拉定理。
    [NOI2018] 屠龙勇士
    [SDOI2010]古代猪文
    [SDOI2013]方程
    扩展Lucas定理
  • 原文地址:https://www.cnblogs.com/purgiant/p/3515878.html
Copyright © 2020-2023  润新知