Linux基础——02 软件管理


目录
  • 02 软件管理
    • 02-01 Linux主要发行版本的软件包管理
    • 02-02 RPM包管理
      • RPM 软件管理程序: rpm
        • RPM 默认安装的路径
        • rpm软件安装、卸载与更新
        • rpm的常用参数
        • rpm的查询
      • YUM在线升级机制
        • 利用yum来进行查询、安装、升级与移除功能
        • yum的配置文件
      • dnf包管理器
      • dnf常用命令
      • 仅下载rpm包不安装
      • rpmdb问题 解决方法
      • rpm包解压
    • 02-03 dpkg包管理
      • APT工具
        • 软件源
        • APT命令行的使用
      • 安装软件包文件
      • deb文件,解压、压缩和打包全过程
        • 解包命令
        • 对修改后的内容重新进行打包生成deb包
    • 02-04 软件源更换
      • yum源更换
      • apt源更换

02 软件管理

02-01 Linux主要发行版本的软件包管理

Linux发行版本众多,我们主要以用于桌面版和用于服务器版来进行区分;

在用于桌面版的Linux系统中以Ubuntu系统使用的较多,其软件包的管理工具是apt-get/dpkg 软件包类型为:.deb

而在国产的服务器版的Linux系统中以中标麒麟的市场占有率最高,其软件包的管理工具是yum/rpm 软件包的类型为: .rpm

rpmdpkg为最常见的两类软件包管理工具,他们分别用于rpm软件包的Linux发行版本和deb软件包的Linux发行版本。软件包管理工具的作用是提供在操作系统中安装、升级、卸载软件的方法,并提供对系统中所有软件状态信息的查询。

Linux软件的安装和windows不同,Linux软件包有依赖关系,必须安装所有的依赖包,才可以安装程序。

目前在Linux界软件安装最常见的有两种,分别是:

  • dpkg:

    这个机制最早是由 Debian Linux 社群所开发出来的,透过 dpkg 的机制, Debian 提供的软件就能够简单的安装起来,同时还能提供安装后的软件信息,实在非常不错。 只要是衍生于 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软件的, 包括 B2D, Ubuntu 等等。

  • RPM

    这个机制最早是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机
    制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚。

目前新的Linux开发商都有提供[在线升级]机制,透过这个机制,原版光盘就只有第一次安装时需要用到,其他时候只要有网络,就鞥取得原本开发商所提供的任何软件!在dpkg管理机制上开发出APT的在线升级机制,RPM则依开发商的不同有Red Hat系统的yum, SuSE系统的Yast Online Update(YOU)等。

02-02 RPM包管理

RPM 软件管理程序: rpm

Q:

  1. RPM类型的文件是将软件的相关文件放置在哪里
  2. RPM的数据库在哪

Tips:

yum可以直接用来进行安装的动作,基本上rpm这个指令常用于查询检验

RPM 默认安装的路径

一般来说,RPM类型的文件在安装的时候,会先去读取文件内记载的设定参数内容,然后将该数据用来比对Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题。

若环境检查合格了,那么RPM文件就开始被安装到本地环境上。安装完毕后,该软件相关的信息就会被写入/var/lib/rpm/目录下的数据库文件中了。这个目录内的数据很重要,软件升级需求,版本之间的比较来自于这个数据库,查询系统已经安装的软件,也是从这里查询,同时,目前的RPM也提供数字签名信息,这些信息也在这个目录内记录。

常见文件目录

目录 文件内容
/etc 一些配置文件放置的目录,例如/etc/crontab
/usr/bin 一些可执行文件
/usr/lib 一些程序使用的动态函式库
/usr/share/doc 一些基本的软件使用手册与说明文件
/usr/share/man 一些 man page文件

rpm软件安装、卸载与更新

安装rpm软件 命令格式为: rpm -ivh xxx.rpm

卸载rpm软件 命令格式为: rpm -e 软件包名

升级rpm软件 命令格式为:rpm -Uvh 软件包名(会覆盖原包)

rpm的常用参数

  1. -i:安装(install) 软件
  2. -U:升级(Upgrade)旧版本软件
  3. -e:移除/删除软件
  4. -v:显示详细的处理信息
  5. -h:显示安装进度。卸载不能用

rpm的查询

rpm可以查询安装和未被安装的软件的信息

基本语法:

  1. rpm -q 包名 查询本地是否安装这个包
  2. rpm -qa 查询本地安装的所有rpm包
  3. rpm -qc 包名 查询安装包的配置文件
  4. rpm -ql 包名 查询安装包所有的文件与目录所在完整文件名
  5. rpm -qi 包名 查询安装包信息,包括开发商、版本与说明等
  6. rpm -qpR 包名 检查软件包依赖关系

YUM在线升级机制

由于distribution必须要先释出软件,然后将软件放置于yum服务器上面,以提供客户端来要求安装与升级用的。所以想要使用yum的功能时,需要先找到合适的yum server.

利用yum来进行查询、安装、升级与移除功能

  • 查询功能:yum [list|info|search|provides|whatprovides] 参数

  • 安装/升级功能: yum [install|update] 软件

  • 移除: yum [remove] 软件

yum的配置文件

配置文件位置:/etc/yum.repos.d/

dnf包管理器

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。

DNF(Dandified Yum)是新一代的RPM软件包管理器。DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能

DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。

dnf常用命令

命令 解释
dnf history 查看历史命令
dnf repolist 查看系统内可用的软件库
dnf search net-tools 搜索软件库中的rpm包
dnf list installed 列出所有已经安装的rpm包
dnf list available 列出可获得的所有软件包
dnf info net-tools 查看软件包信息

仅下载rpm包不安装

  1. sudo yum install --downloadonly --downloaddir=/tmp

  2. (centos7)另外一个下载RPM包的方法就是通过一个专门的包下载工具--yumdownloader。 这个工具是yum工具包(包含了用来进行yum包管理的帮助工具套件)的子集。

    1. yum install yum-utils

    下载一个RPM包:

    1. yumdownloader

rpmdb问题 解决方法

  1. /var/lib/rpm下删除 __db.*文件
  2. rpm --rebuilddb

rpm包解压

rpm2cpio xxx.rpm | cpio -div

02-03 dpkg包管理

APT工具

软件源

/etc/apt/source-list

APT命令行的使用

常用的APT命令行工具有两个,apt-get用于执行与软件包安装有关的所有操作,apt-cache用于查询软件包的相关信息。

  1. 使用apt-cache命令查询软件包

    命令 解释
    apt-cache pkgnames 列出当前所有可用的软件包
    apt-cache search httpd 查找软件包
    apt-cache show 软件包名 查看软件包的详细信息
    apt-cache depends 软件包名 查看软件包依赖
    apt-cache rdepends 软件包名 查看软件包被哪些依赖包所依赖
    apt-cache showpkg 软件包名 查看软件包的依赖关系信息
    apt-cache policy 软件包名 显示软件包的安装状态和版本信息
  2. 使用apt-get命令操作软件包

    命令 解释
    apt-get update 获取最新的软件包列表,同步/etc/apt/sources.list 和/etc/apt/sources.list.d中列出的源的索引
    apt-get upgrade 更新当前系统中所有已安装的软件包,同时更新软件包的依赖包
    apt-get install 下载、安装软件包并自动解决依赖关系
    apt-get remove 卸载指定的软件包
    apt-get autoremove 自动卸载所有未使用的软件包
    apt-get source 下载软件包的源代码
    apt-get clean 清理已下载的软件包,实际上是清除/var/cache/apt/archives 目录中的软件包,不会影响使用
    apt-get autoclean 删除已卸载的软件的软件包备份

安装软件包文件

安装: dpkg -i

卸载: dpkg -r

列出系统文件: dpkg -l

查看软件包相关信息:dpkg -s

查看已安装的软件包拥有哪些文件:dpkg -S

deb文件,解压、压缩和打包全过程

Q:

  1. 如何将deb包文件进行解包
  2. 修改要修改的文件
  3. 对修改后的内容进行生成deb包

解包命令

dpkg -X 软件包 目录位置

解压出包的控制信息在 包名/DEBIAN/下:

对修改后的内容重新进行打包生成deb包

dpkg -deb -b 包名

02-04 软件源更换

yum源更换

在/etc/yum.repos.d添加配置文件

apt源更换

Ubuntu使用文本文件/etc/apt/sources.list