软件包管理

一、软件管理程序rpm

简介:RPM是通过预编译并打包成为RPM文件格式后再加以安装的一种方式,并且还能够进行数据库的记载。

1、优点:

    1、RPM内含已经编译过的程序与设置文件等数据,可以让用户免除重新编译的困扰;

    2、RPM在被安装之前,会先检查系统的硬盘容量、操作系统版本,可避免文件被错误安装;

    3、RPM文件本身提供软件版本信息、依赖属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;

    4、RPM管理的方式使用数据库记录RPM文件的相关参数,便于升级、删除、查询与验证。

2、rpm包安装

rpm {-i|–install} [install-options] PACKAGE_FILE…

    -i : install的意思

    -v: 详细的安装画面。

    -h: 以#显示程序包管理执行进度 。

rpm -ivh PACKAGE_FILE …

rpm包安装 [install-options]

    –test: 测试安装,但不真正执行安装;dry run模式

    –nodeps:忽略依赖关系

    –replacepkgs | replacefiles

    –nosignature: 不检查来源合法性

    –nodigest:不检查包完整性

    –noscipts:不执行程序包脚本片断

        %pre: 安装前脚本; –nopre

        %post: 安装后脚本; –nopost

        %preun: 卸载前脚本;–nopreun

        %postun: 卸载后脚本; –nopostun

测试一下以前安装过的软件:

blob.png

3、rpm包升级

升级:

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

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

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

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

    rpm -Uvh PACKAGE_FILE …

    rpm -Fvh PACKAGE_FILE …

        –oldpackage:降级

        –force: 强行升级

    升级注意项

    注意:

        (1) 不要对内核做升级操作;Linux支持多内核版本并存,因此 ,对直接安装新版本内核

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

包查询

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

[select-options]

    -a: 所有包

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

    -p rpmfile:针对尚未安装的程序包文件做查询操作;

    –whatprovides CAPABILITY:查询指定的CAPABILITY 由哪个包所提供

    –whatrequires CAPABILITY:查询指定的CAPABILITY被 哪个包所依赖

rpm2cpio 包文件|cpio –itv 预览包内文件

rpm2cpio 包文件|cpio –id  “*.conf” 释放包内文件

[query-options]

    –changelog:查询rpm包的changelog

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

    -d: 查询程序的文档

    -i: information

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

    –scripts:程序包自带的脚本片断

    -R: 查询指定的程序包所依赖的CAPABILITY;

    –provides: 列出指定程序包所提供的CAPABILITY;

查询用法:

    -q  :仅查询,看后面跟的文件是否安装。

    -qa:列出所有已经安装在本机的所有软件名称。

    -qi :列出后面跟的软件的详细信息。

    -ql :列出该软件相关的文件目录所在完整文件名。

    -qc:列出该软件件所有的设置文件。

    -qd:列出该软件所有的帮助文件。

    -qR:列出该软件有关的依赖软件所含文件。

    -qp:该选项后面接的所有参数以上面的说明一致,但用途仅在于找出某个RPM文件内的信息,而非已安装的软件信息。

实例1,找出tree软件,列出跟它有关的所有目录与文件,列出tree的软件信息,找出tree的帮助文件,找出他还需要什么软件才能正常安装,

blob.png

blob.png

卸载:

rpm {-e|–erase} [–allmatches] [–nodeps] [– noscripts] [–notriggers] [–test] PACKAGE_NAME …

包校验

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

    S file Size differs:文件容量大小是否被改变

    M Mode differs :文件的类型或文件的属性(rwx是否被改变),如是否可执行等参数已被改变。

    5 formerly MD5 sum)MD5这一种的指纹骂的内容已经不同

    D Device major/minor number mismatch :设备的主/次代码已经改变;

    L readLink(2) path mismatch :Link路径已被改变;

    U User ownership differs :文件的所有者已经改变;

    G Group ownership differs :文件的所属组已经改变;

    T mTime differs :文件的创建时间已经改变;

    P capabilities differ

包来源合法性验正及完整性验正:

完整性验正:SHA256

来源合法性验正:RSA

    公钥加密:

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

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

    public key: 公钥,公开所有人

    secret key: 私钥, 不能公开

导入所需要公钥:

    rpm  -K|checksig rpmfile 检查包的完整性和签名

    rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

    rpm -qa gpg-pubkey*

rpm数据库

数据库重建:

    /var/lib/rpm

    rpm {–initdb|–rebuilddb}

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

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

2、yum

简介:

    Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包, up2date的替代工具 yum repository: yum repo,存储了众多rpm包,以及 包的相关的元数据文件(放置于特定目录repodata下)

    文件服务器: ftp:// http:// file:///

yum配置文件:

    yum客户端配置文件:

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

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

仓库指向的定义:

    [repositoryID] 容器的名字

    name:说明容器的意义

    baseurl=容器的实际网址

    enabled=1:启动容器 0:关闭容器

    gpgcheck=是否需要查询证书

    gpgkey=数字证书所在位置一般使用默认值

    enablegroups={1|0}

    failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选;

    cost=n 默认为1000

yum命令的用法: yum [options] [command] [package …]

    yum-config-manager –disable “仓库名"  禁用仓库

    yum-config-manager –enable  “仓库名” 启用仓库 yum-config-manager

显示仓库列表:

    repolist [all|enabled|disabled]

显示程序包:list

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

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

安装程序包:

    install package1 [package2] […]

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

升级程序包:

    update [package1] [package2] […]

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

检查可用升级:

     check-update

卸载程序包: 

    remove | erase package1 [package2] […]

查看程序包information: 

    info […]

查看指定的特性(可以是某文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] […]

清理本地缓存:

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

构建缓存: 

    makecache

搜索:

    search string1 [string2] […]

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

查看指定包所依赖的capabilities: deplist package1 [package2] […]

查看yum事务历史:

        history [info|list|packages-list|packages-info|

        summary|addon-info|redo|undo|

        rollback|new|sync|stats]

        yum history

        yum history info 6

        yum history undo 6

日志 :

    /var/log/yum.log

安装及升级本地程序包:

    * localinstall rpmfile1 [rpmfile2] […] (用install替代)

    * localupdate rpmfile1 [rpmfile2] […] (用update替代)

包组管理的相关命令:

    groupinstall group1 [group2] […]

    groupupdate group1 [group2] […]

    grouplist [hidden] [groupwildcard] […]

    groupremove group1 [group2] […]

    groupinfo group1 […]

yum的命令行选项:

    –nogpgcheck:禁止进行gpg check

    -y: 自动回答为“yes”

    -q:静默模式

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

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

    –noplugins:禁用所有插件

yum仓库

yum的repo配置文件中可用的变量:

    $releasever: 当前OS的发行版的主版本号

    $arch: 平台,i386,i486,i586,x86_64等

    $basearch:基础平台;i386

    $YUM0-$YUM9:自定义变量

创建yum仓库: 

    createrepo [options] <directory>

实例:yum安装tree软件

blob.png

原创文章,作者:502795641,如若转载,请注明出处:http://www.178linux.com/38951

(0)
502795641502795641
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • Linux bash中的命令行展开介绍及应用示例

    Linux bash中的命令行展开介绍及应用示例 在Linux bash中可以使用命令行展开特性一步完成需要分开成多步完成的操作,达到事半功倍的效果。在Linux指令参数位置使用"{}" 将相应的参数括起来,括号中的参数以逗号分隔,然后bash在执行这一指令时会自动将括号中的内容进行展开。 相关示例如下: 同时创建多个目录,在/tmp目录…

    Linux干货 2016-11-07
  • 搭建属于自己的DNS

    1、搭建主renzituo.com服务器     ①、在192.168.10.4主机上安装bind程序             yum -y install bind   &nbs…

    2017-04-16
  • 正则表达式基础知识及grep、egrep详解

    什么是正则表达式     在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们…

    Linux干货 2016-08-08
  • linux初期了解

    计算机的组成及其功能 计算机有运算器,控制器,存储器,输出设备和输入设备组成: 1.运算器:运算器又称算术逻辑单元(Arithmetic Logic Unit简称ALU)。它是计算机对数据进行加工处理的部件,包括算术运算2.控制器:控制器负责从存储器中取出指令,并对指令进行译码 3.存储器:存储器是计算机记忆或暂存数据的部件。 4.输入设备:输入设备是给计算…

    Linux干货 2016-10-30
  • 磁盘分区磁盘管理及挂载

    磁盘分区 fdisk提供交互式接口管理分区,操作均在内存中完成,没有直接同步到磁盘;直到使用w命令保存至磁盘中。 语法: 1.查看分区使用信息:     fdisk -l [-u] [device…]:列出指定磁盘设备上的分区情况; 2.管理分区    fdisk d…

    Linux干货 2016-08-31
  • 搭建lnmp实现动静分离

    LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。 (nginx主机)web 处理静态内容 172.16.250.149 (fpm server   mariad bserver)处理动态内容 172.16.253.131 以上为两台CentOS7.3主机 试验拓扑图如下:   ==…

    2017-07-22