关于软件包管理

        软件包管理

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

相关推荐

  • 设计模式(十一)代理模式Proxy(结构型)

    1.概述        因为某个对象消耗太多资源,而且你的代码并不是每个逻辑路径都需要此对象, 你曾有过延迟创建对象的想法吗 ( if和else就是不同的两条逻辑路径) ? 你有想过限制访问某个对象,也就是说,提供一组方法给普通用户,特别方法给管理员用户?以上两种需求都非常类似,并且都需要解决一个更大的问题:你如何提供…

    Linux干货 2015-07-09
  • Bash 的配置文件

    有时候,在定义了别名 alilas cls=clear  , 或者定义了 umask=033 等等,在logout 用户后再登录,会失效,因为这些本地变量,仅对当前shell生效。而要保留配置,使其永久生效,就需要将这些定义的写入配置文件中保存。下面介绍下bash的配置文件:  Bash的配置文件可以分为: profile类: /etc/…

    Linux干货 2015-04-04
  • 从需求和安全角度开始linux(一)-20151211

    突然想从需求和安全的角度来展开各种命令。因为我觉得linux中所有的常用命令基本都是需求和安全的产物。 当我打开一个CLI(command line interface)界面的linux操作系统时: 一、我希望能够看到里面有什么,因此有了ls的命令。      ls – list&nbs…

    Linux干货 2015-12-15
  • 操作系统文件管理

      在现代计算机系统中,要用到大量的程序和数据,因内存容量有限,且不能长期保存,故而平时总是把它们以文件的形式存放在外存中,需要时再随时将它们调入内存。如果由用户直接管理外存上的文件,不仅要求用户熟悉外存特性,了解各种文件的属性,以及它们在外存上的位置,而且在多用户环境下,还必须能保持数据的安全性和一致性。显然,这是用户所不能胜任、也不愿…

    Linux干货 2015-04-13
  • socket阻塞与非阻塞,同步与异步、I/O模型

    1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前…

    Linux干货 2015-04-10
  • DNS服务器—-主从服务器搭建

    一、环境准备   1、准备三台测试       主DNS服务器地址:192.168.10.203       从DNS服务器地址:192.168.10.103       测试主机地址:  192.168.10.120 …

    Linux干货 2015-05-18