软件包管理

一、软件管理程序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

相关推荐