Linux操作系统常用命令合集——第六篇-软件包操作(2个命令)

时间:2023-03-08 17:01:54

一、前言介绍

软件包即程序包

程序包管理

  关键词:rpm程序包管理、YUM仓库管理、源码编译安装

程序包管理:

  将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级、和校验等管理操作

管理程序包的方式:

  使用包管理器:rpm

  使用前段工具:yum

rpm包含命名方式:

  name-VERSION-release.arch.rpm

     VERSION:major.minor.release

     release.arch:

     常见的arch:

       x86:i386, i486, i586. i686

       x86_64:x64, x86_64, amd64

       powerpc:ppc

       跟平台无关:noarch

包之间:存在依赖关系

  X, Y, Z

二、命令详解

1.rpm

【命令作用】

程序包管理

【命令语法】

rpm    [选项]    [参数]

【常用选项】

(1)安装:

rpm {-i|--install} --注意花扩符号,必须包含选项[install-options] PACKAGE_FILE ...查询为软件头代表名:tree,安装为整个文件名

-v<verbose>  --显示详细过程

rpm {-i|--install}  

-h  --以显示程序包管理执行进度,每个#表示2%的进度

rpm -ivh PACKAGE_FILE ...

  [install-options]

    --test  --测试安装,但不真正执行安装过程

    --nodeps  --忽略依赖关系

    --replacepkgs  --重新安装

    --force  --强制安装直接代替nodeps和replacepkgs,但是尽量不要忽略依耐性关系

    --nosignature  --不检查来源合法性

    --nodigest  --不检查包完整性

秘钥文件:ll /etc/pki/rpm-gpg/

(2)升级:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

  upgrade  --安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”

  freshen  --安装有旧版程序包,则“升级”:如果不存在旧版程序包,则不执行升级操作

  [install-options]

    --test  --测试安装,但不真正执行安装过程

    --nodeps  --忽略依赖关系

    --oldpackage  --降级

    --fore  --强行升级

  注意:①不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核

     如果原程序包的配置文件安装后曽被修改,升级时,新版本提供的同一配置文件不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

(3)查询:

rpm {-q|--qurey} [select-options] [query-options]

  ①[select-options]  --挑选选项

  -a  --所有已安装程序包

  -f  --查看指定的文件由哪个程序包安装生成

  -p /PATH/TO/PACKAGE_FILE  --针对尚未安装的程序包文件做查询操作

  ②[query-options]  --查询选项

  -c  --查询程序的配置文件

  -d  --查询程序的文档

  -i  --查询程序的信息

  -l  --查看指定的程序包安装后生成的所有文件

常见的组合用法:

  -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

  -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...

  -qa

(4)卸载:

rpm {-e|--erase} PACKAGE_NAME ...

  --test  --测试卸载,但不真正执行卸载过程

  --nodeps  --忽略依赖关系

(5)校验(非常用):

  ①rpm {-V|--verify} [select-options] [verify-options]

  rpm -V FILE

  S  --文件大小差异

  M  --权限差异

  5  --验证码差异

  D  --主设备号和次设备号

  L  --路径差异

  U  --文件拥有者差异

  G  --文件拥有组差异

  T  --修改时间差异

  P  --特性差异

  ②包来源合法性验证及完整性验证:

  完整性验证: SHA256

  来源合法性验证: RSA

  ③公钥加密:

  对称加密:加密、解密使用同一密钥

  非对称加密:密钥是成对儿的

  ③导入所需要公钥:

  rpm --import /PATH/FROM/GPG-PUBKEY-FILE导入*

  CentOS 7  发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7 

(6)数据库维护:

RPM数据库  ll /var/lib/rpm

  ll /var/ilb/rpm  --查询数据文件

  rpm {--initdb|--rebuilddb}

    initdb  --初始化。如果事先不存在数据库,则新建之;否则,不执行任何操作

    rebuilddb  --重建。无论当前存在与否,直接重新创建数据库

【参数说明】

指定要操纵的rpm软件包

【命令示例】

2.yum

【命令作用】

YUM(Yellow dog,全称为 Yellow dog Updater,Modified)是一个FedoraRedHat以及CentOS中的Shell前段软件包管理。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum repository:yum repo

  --存储了众多rpm包,以及包的相关的元数据文件放置于特定目录下:repodata)

  文件服务器

    ftp://

    http://

    nfs://

    file:///

yum 客户端

    配置文件:

      /etc/yum.conf  --为所有仓库提供公共配置

      /etc/yum.repos.d/*.repo  --为仓库的指向提供配置

    仓库指向的定义

    [repositoryID]

    name=Some name for this repository

    baseurl=url://path/to/repository/

    enabled={1|0}

    gpgcheck={1|0}

    gpgkey=URL

    enablegroups={1|0}

    failovermethod={roundrobin|priority}

      默认为:roundrobin,意为随机挑选

    cost=

      默认为1000

【命令语法】

 yum    [选项]    [参数]、

【常用选项】

-y<yes>  --对所有的提问回答"yes"

-c  --指定配置文件

-q  --静默模式

-v  --详细模式

-d  --设置调试等级(0/10)

-e  --设置错误等级(0/10)

-R  --设置yum处理一个命令的最大等待时间

-C  --完全从缓存中运行,而不去下载或者更新任何头文件

【参数说明】

(1)command is one of(命令如下):

  install package1 [package2] [...]  --安装rpm程序包1 程序包2

  update [package1] [package2] [...]  --更新rpm程序包1 程序包2

  update-to [package1] [package2] [...]  --更新程序包1程序包2,。此命令的工作方式类似于“update”,但始终指定要更新的包的版本。

  check-update  --检查是否有可用的更新rpm软件包

  upgrade [package1] [package2] [...]  

  upgrade-to [package1] [package2] [...]

  distribution-synchronization [package1] [package2] [...]

  remove | erase package1 [package2] [...]  --删除指定的rpm程序包

  list [...]  --显示程序包的信息

  info [...]  --显示指定的rpm程序包的描述信息和概要信息

  provides | whatprovides feature1 [feature2] [...]

  clean [packages | metadata | expire-cache | rpmdb | plugins | all ]  --清理yum过期的缓存

  makecache

  groupinstall group1 [group2] [...]  --安装程序组group1和group2

  groupupdate group1 [group2] [...]  --更新程序组group1和group2

  grouplist [hidden] [groupwildcard] [...]  --查看可能批量安装的列表

  groupremove group1 [group2] [...]  --卸载程序组group1和group2

  groupinfo group1 [...]  --显示程序组group1信息

  search string1 [string2] [...]  --根据关键字string查找安装包

  shell [filename]  --进入yum的shell提示符[文件名]

  resolvedep dep1 [dep2] [...]  --显示rpm程序包1和2的依赖关系

  localinstall rpmfile1 [rpmfile2] [...]  --安装本地的rpm程序包1和2

   (maintained for legacy reasons only - use install)

  localupdate rpmfile1 [rpmfile2] [...]  --显示本地rpm程序包1和2进行更新

   (maintained for legacy reasons only - use update)

  reinstall package1 [package2] [...]

  downgrade package1 [package2] [...]

  deplist [all|enabled|disabled]  --显示rpm程序包的所有依赖

  version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]

  history [info|list|packages-ilst|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

  check

  help [command]

(2)显示仓库列表

  repolist [all|enabled|disabled]

(3)显示程序包

  list

    # yum list [all | glob_exp1] [glob_exp2] [...]

    # yum list {available|installed|updates} [glob_exp1] [...]

(4)安装程序包:

    install package1 [package2] [...]

    reinstall package1 [package2] [...] (重新安装)

(5)升级程序包

    update [package1] [package2] [...]

    downgrade package1 [package2] [...] (降级)

(6)检查可用升级

    check-update

(7)卸载程序包

    remove | erase package1 [package2] [...]

(8)查看程序包information:

    info [...]

(9)清理本地缓存

    clean [pakages | metadata | expire-cache | rpmdb | plugins | all]

(10)构建缓存

    makecache

(11)搜索:

    search string1 [string2] [...]

    以指定的关键字搜索程序包名及summary信息

(12)查看指定包所依赖的capabilities:

    deplist package1 [package2] [...]

(13)查看yum事务历史

    history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

(14)安装及升级本地程序包

    localinstall rpmfile1 [rpmfile2] [...]

     (maintained for legacy reasons only - use install)

    localinstall rpmfile1 [rpmfile2] [...]

     (maintained for legacy reasons only - use update)

(15)包组管理的相关命令

    groupinstall group1 [group2] [...]

    groupupdate group1 [group2] [...]

    grouplist [hidden] [groupwildcard] [...]

    groupremove group1 [group2] [...]

    groupinfo group1 [...]

(16)如何使用光盘当作本地yum仓库

   ①挂载光盘至某目录,例如/media/cdrom

      #mount -r -t iso9660 /dev/cdrom /media/cdrom

   ②创建配置文件

    [DVD]

    name=

    baseurl=

    gpgcheck=

    enabled=

(17)yum的命令行选项:

    --nogpgcheck  --禁止进行gpg check

    -y --自动回答为"yes"

    -q  --静默模式

    --disablerepo=repoidglob  --临时禁用此处指定的repo

    --enablerepo=repoidglob  --临时启用此处指定的repo

    --noplugins  --禁用所有插件

【命令示例】

(1)# yum install -y samba  --安装samba服务并且所有的提问默认"yes"

(2)# yum remove -y samba  --卸载samba服务并且所有提问默认"yes"

(3)# yum list rpm*  --用yum的功能找出以rpm为开头的程序包名称有哪些

(4)# yum clean all  --清除yum仓库缓存

(5)# yum makeache  --生成yum缓存

 

3.源码编译安装

  前提:准备开发环境(编译环境)

  安装软件包组"Development Tools""Development Libraries"

  C代码编译安装三步骤

    ./configure:

      (1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile

      (2)检查依赖到的外部环境

    make:

      根据makefile文件,构建应用程序

    make install

  建议:安装前查看INSTALL,README

创建yum仓库:
createrepo [options] <directory>