关于软件包管理

        软件包管理

CentOS系统上使用rpm命令管理程序包

安装、卸载、升级、查询、检验、数据库维护

rpm安装:

        rpm {-i|–install} [安装-选项] 打包;包

        -h  以#符号表示安装进度

        -v  显示安装过程中的详细信息

        -vv

        -vvv

        经常使用组合:-ivh,ivvh

        例如 rpm -ivh 包文件

        安装时的选项:

        –test    测试安装,但不真正执行安装,仅报告依赖关系以及冲突信息等

        –nodeps  忽略依关系,副作用是能安装成功,但未必能运行成功

        –replacepkgs  覆盖安装–重新安装并覆盖原有的文件

        –nosignature  不被监测来源合法性

        –nodigest     不检查包完整性

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

        –foree        强制安装

        

rpm包升级:

         rpm {-U|–upgrade} [安装-选项] 打包;包 

              -U   升级或安装

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

         rpm {-F|–freshen} [安装-选项] 打包;包 

              -F   升级

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

        常用组合:-Uvh,Fvh 

        例如  rpm -Uvh 包文件

        升级选项:

        –oldpackage      降级

        –force           强制升级

升级时需要注意事项:

1  不要对内核执行升级,Linux 支持多个内核共存,可以对此直接安装新版本内核或不同版本的内核

2   如果程序包的配置文件安装后被修改,升级时,新版本的文件不会覆盖老版本的配置文件。而是把新版本的文件重命名加上后缀(.rpmnew) 之后保留

rpm包查询:

         rpm {-q|–query}[选择-选项][查询选项]

         安装选项                                                     ~]# rpm -q tree 后面准确查找包名    

         -a 所有包、                                                ~]# rpm -qa     查询当前系统安装的所有包  ~]# rpm -qa |grep "^tr"  管道给关键字查找,以tr开头的包名

         -f 查看指定的文件由哪个程序安装生成                          ~]# rpm -qf /etc/issue   查询文件是哪个包生成   

         -p  rpmfuile 针对尚未安装程序包文件做查询操作;              ~]# rpm -qp tree-1.6.0-10.el7.x86_64.rpm 

         –whatprovides 性能进程 查询指定的性能进程有哪个包所提供     ~]# rpm -q tree –whatprovides  查询这个功能是由哪个包所提供

         –whatrequires 性能进程 查询指定的性能进程被哪个包所依赖     ~]# rpm -q bash –whatrequires  查询这个功能是被哪个包所依赖  

         rpm2cpio 包文件|cpio -itv  预览包内的文件                    ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -itv

rpm2cpio 包文件|cpio -id   "*.conf" 释放包内文件

         查询选项:

         –changelog 查询rpm包的变动日志                              ~]# rpm -qc tree –changelog

         -c   查询程序的配置文件   

         -d   查询程序的文档                                          ~]# rpm -qd tree

         -i   信息                                                    ~]# rpm -qi tree

         -l   查看指定的程序包安装后生成的所有文件                    ~]# rpm -ql tree

         –scripts 程序包自带的脚本片断                               ~]# rpm -q bash –scripts

         -R   查询指定的程序包所依赖的 性能进程                       ~]# rpm -qR bash

         –provides  ;列出指定程序包所提供的 性能进程                ~]# rpm -q bash –provides

rpm卸载:

        rpm  {-e|–erase} 

         –allmatches      移除所有符合 <package> 的软件包(如果<package> 被指定未多个软件包,常常会导致错误出现)

         –nodeps                         不验证软件包依赖

         –noscripts                      不执行软件包脚本

         –notriggers                     不执行本软件包触发的任何脚本

         –test                           不真正安装,只是判断下是否能安装

包检验:rpm {-V|–verify}

               –nofiledigest                   不验证文件摘要

               –nofiles                        不验证软件包中文件

               –nodeps                         不验证包依赖

               –noscript                       不执行验证脚本

导入所需要公钥:

 ~]# rpm -K tree-1.6.0-10.el7.x86_64.rpm   检查包的完整性和签名

       

rpm数据库:

        数据库重建: /var/lib/rpm

        rpm {–initdb|–rebuilddb}

        initdb  初始化

        如果时间不存在数据库,则新建之,否则 不执行任何操作

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

  

  

  

rpm命令实现程序管理   主要核心命令

安装:-vih,–nodeps,–replacepkgs

卸载:-e,–nodeps

升级:-Uvh,-Fvh,–nodeps,–oldpackage

查询:-q,-qa,-qf,-qi,-qc,-q –scripts, -q –chanlog, -q –provides,-q–requires

校验:-V

导入GPG密钥:–import,-K,–nodigest,–nosignature

数据库重建:–initdb,–rebuilddb                                   

===========================================================

yum 

    yum是rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,

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

    文件服务器:ftp:

                http://

                file:///

yum配置文件:

           /etc/yum.conf              主配置文件为所有仓库提供数据

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

           创库指向的定义:

           文件以.repo 结尾; 

           root@Compro ~]# cat /etc/yum.repos.d/base.repo 

           [base]                       提供配置信息

           name=CentOS 7                当前仓库的名称

           baseurl=http://10.1.0.1/cobbler/ks_mirror/CentOS-7-x86_64/    教室里的yum源

           enabled=1                    此仓库是否为可用

           gpgcheck=0                   是否对程序包做校验

           gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    指明访问密钥路径的路径

           [仓库ID]     对于当前系统的yum来将,此仓库ID用于唯一标识此仓库指向,因此,必须唯一

           name=name    当前仓库描述信息名称

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

           enabled={1|0}    此仓库是否可被使用 1是 禁用0是可以 不写是默认

           gpgcheck={1|0}   是否对程序包做校验  

           gpgkey=          指明gpgkey文件路径

           cost= 默认为1000

           

如果使用光盘当作本地yum仓库:

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

#mount /dev/cdrom /media/cdrom

创建配置文件:

[CentOS7]

name=自定义                  当前仓库描述信息

baseurl=指明资源库的访问路径,通常为一个文件服务器上输出的某资源库,支持的类型:ftp://;http://;file:///

gpgcheck={1|10}          是否对程序包做校验

enabled={1|10}         此仓库上是否可用,默认为可用           

yum命令的语法: yum [选项] [命令] [包]

yum显示仓库列表:

                yum repolist [all|enabled|disabled]

显示程序包:

          yum list

          yum list [all | glob_ exp1 ] [glob_exp2] …             

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

安装程序包:

          yum install 包1 [包2] …

          yum reinstall 包1 [包2]…         重新安装

升级程序包:

          yum update [包1][包2]…

          yum downgrade 包1 [包2]…      降级

卸载程序包:

          yum remove | erase 包1 [包2]  …                      

                

查看程序包的信息:

          yum info name

查看指定的特性(可以是某文件)是由那个程序包所提供

yum provides | whatprovides 特性1 [特性2] …                

清理本地缓存:

          yum clean [包|元数据|expire-cache|rpmdf|plugins|all]

构建缓存:

         yum makecache            

 

搜索:

    yum  search 字符串1 [字符串2]

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

查看指定包所依赖的capabilities 

     yum deplist 包1 [包2] …

查看 yum事务历史

               yum history

               

日志:

     /var/log/yum.log

     

安装及升级本地程序包

         yum install rpmfile1 [rpmfile2] …

         yum update  rpmfile1 [rpmfile2] …

包组管理的相关命令:

         yum groupinstall group1

         yum groupupdate group1

         yum grouplist [hidden][groupwildcard]

         yum groupremove group1

         yum groupinfo group1

         

     

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

 

挂载光盘至某目录 

          例如 /media/crom  # mount /dev/cdrom /media/crom

          创建配置文件

          [CentOS7]

          name=name

          baseurl=file:///

          gpgcheck=0

          enabled=1    

yum 的命令行选项

yum [选项] 包

     –nogpgcheck     禁止进行gpg check

     -y               自动回答为"yes" 

     -q               静默模式

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

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

     –noplugins                 禁用所有插件

     

 

 =================================================================

 

                    源码编译  

程序包编译安装:

Application-VERSION-release.src.rpm–> 

安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装

源代码–>预处理–>编译–>汇编–>链接–>执行

源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系

C、C++:make (项目管理器,configure –>

Makefile.in –> makefile)

java: maven

C代码编译安装三步骤:

                    ./configure

                    通过选项传递参数,指定启动特性、安装路径等;

                    执行时会参考用户的指定以及makefile.in文件生成makefile

                    检查依赖到的外部环境,如依赖的软件包

                    [cdrom] 

                    name=centos 7 cdrom

                    baseurl=file:///mnt/cdrom

                    gpgcheck=0

                    enabled=0                   

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

                    make install   复制文件到相应路径

开发工具:

         autoconf: 生成configure脚本

         automake:生成Makefile.in

         注意:安装前查看 安装自带文档

开源程序源代码的获取:

官方自建站点:

apache.org (ASF:Apache Software Foundation)

mariadb.org

代码托管:

SourceForge.net

Github.com

code.google.com

c/c++编译器: gcc(GNU C Complier)

编译C源代码:

       准备:提供开发工具及开发环境

             开发工具:make,gcc等

             开发环境:开发库,头文件

             glibc:标准库

       实现:通过“包组”提供开发组件

CentOS 6:

Development Tools

Server Platform Development

CentOS 7:

Development Tools

Development and Creative Workstation

编译安装:

        第一步:configure 脚本

        选项:指定安装位置、指定启用的特性

        安装路径设定:./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2/

可选特性:

–disable-FEATURE

–enable-FEATURE[=ARG]

可选包:

–with-PACKAGE[=ARG],依赖包

–without-PACKAGE,禁用依赖关系     

     

安装后的配置:

二进制程序目录导入至PATH环境变量中;

编辑文件:

 [root@Compro ~]# vim /etc/profile.d/http2.sh

 PATH=$PATH:/usr/local/http2/bin

导入库文件路径:

 编辑/etc/ld.so.conf.d/NAME.conf

 添加新的库文件所在目录至此文件中

让系统重新生成缓存:

 ldconfig[-v]    

     

导入头文件

基于链接的方式实现:

ln -sv

导入帮助手册

编辑/etc/man.config|man_db.conf文件

添加一个MANPATH     

[root@Compro ~]# vim /etc/man_db.conf

MANDATORY_MANPATH /usr/local/http2/ma

     

     

     

     

     

     

     

     

     

     

 

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

(0)
小马哥小马哥
上一篇 2016-08-30
下一篇 2016-08-30

相关推荐

  • HAproxy reload config file with uninterrupt session

    HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great option if you are in the market for a load balancer and need to keep your cos…

    Linux干货 2015-04-03
  • 小巧精悍——常见文本处理工具用法及技巧总结

    小巧精悍——常见文本处理工具用法及技巧总结 Linux最重要的哲学思想就是:一切皆文件。可见文件及文件操作在Linux当中是多么的重要。在Linux系统中我们也会经常用到各种文本文件处理的操作,熟练使用这些小巧精悍的文本处理工具,在关键时刻往往展现非凡的神奇功效。常见文本处理小工具:cat、hexdump、nl、less、head、tail、cut、tr、r…

    Linux干货 2016-11-05
  • corosync + pacemaker搭建高可用mysql

    一、实验图     二、环境准备  1)确保时间同步 [root@SQL1 ~]# crontab -e  */5 * * * * /usr/sbin/ntpdate 172.16.2.15 [root@SQL2 ~]#…

    Linux干货 2015-06-30
  • rpm包管理

    前言    RPM(简称RPM,全称为The RPM Package Manager)是在Linux下广泛使用的软件包管理器。RPM此名词可能是指.rpm的文件格式的软件包,也可能是指其本身的软件包管理器(RPM Package Manager)。最早由Red Hat研制,现在也由开源社区开发。RPM通常随附于Linux发行版,…

    Linux干货 2015-05-13
  • openvpn安装配置过程

    前言     之前为了方便远程办公时访问公司的内部系统,如:svn、OA、wiki、禅道等等;通通在防火墙上做了端口映射。然后有个内部系统被黑了,各种弱口令没办法。果断关闭端口映射,看来还是得搭建个VPN服务器,vpn设备感觉大材小用。马上就想到了开源的openvpn,下面就来介绍openvpn的安装配置过程。 ope…

    Linux干货 2015-05-11
  • PHP数组实际占用内存大小的分析

    我们在前面的php高效写法提到,尽量不要复制变量,特别是数组。一般来说,PHP数组的内存利用率只有 1/10, 也就是说,一个在C语言里面100M 内存的数组,在PHP里面就要1G。下面我们可以粗略的估算PHP数组占用内存的大小,首先我们测试1000个元素的整数占用的内存: <?php      &nb…

    系统运维 2015-05-28