软件包管理

软件包的分类,主要有以下两大类

   源码包

   二进制包(rpm包,系统默认包)

rpm包由Redhat公司提出,被众多linux发行版所采用。

优点:建立统一的数据库文件,详细记录软件包的安装、卸载等变化信息,能够自动的分析软件包依赖关系。

查询已安装的rpm软件信息:

格式:

    rpm -q[子选项] [软件名]

用法:结合不同的子选项完成不同的查询

 选项: 

   -qa:查询已安装的所有rpm软件包列表

   -qi:查询指定软件的详细信息

   -ql:查询软件包安装的目录、文件列表

   -qc:查询某软件包安装后生成的所有配置文件

   -qd:查询某软件包安装后生成的所有帮助文件

   -q –changelog:查询某软件包制作时随版本变化的changelog信息

   -q –scripts:查询某包安装或卸载时执行脚本

示例:

rpm -q bash :查询bash软件,会显示出bash这个软件是由哪个包安装以后才有的。

rpm -qa | grep bash :查询是否已经安装有bash软件包

rpm -ql postfix :查询postfix软件包安装的文件列表

-qf 可查询文件或目录属于哪个rpm软件生成的

格式:

   rpm -qf 文件名或目录名

示例:

rpm -qf /usr/bin/vim :查询vim文件属于哪个rpm软件

查询未安装的rpm包文件:

格式:

   rpm -qp[子选项] rpm包文件

用法:结合不同的子选项完成不同的查询

选项:

  -qpi:查看该软件的详细信息

  -qpl:查看包内所包含的目录、文件列表

示例:

   rpm -qpi ethtoo….rpm :查看该包的详细信息

   rpm -qpl ethtool…rpm :查看该包内包含的目录、文件列表

安装及升级rpm软件

格式:

   rpm [选项] rpm包文件

用法:不同的选项适用于不同的情况

选项:

   -i:安装一个新的rpm软件包

   -U:升级软件、若未安装,则进行安装。

   -h:以“#”号显示安装的进度

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

   -F:更新某个软件包,若未安装,则放弃安装。

   –force:强制安装、升级指定的rpm软件包

   –nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系,忽略依赖关系(不推荐使用)

   -qR:查询软件包的依赖性

   -qRp:查询未安装软件包的依赖关系

卸载rpm软件包

 格式:

    rpm -e 软件名

示例:

   rpm -e links :卸载links这个软件

rpm包的依赖关系:

树形依赖:a-b-c 

解决办法:把依赖包安装上

环形依赖:a-b-c-a

解决办法:一次性安装这几个包

模块依赖:依赖于某个包中的某个程序

解决办法:在查询网站www.rpmfind.net中搜索这个程序所在的包,然后安装就可以了。

解决软件包的依赖关系

安装有依赖关系的多个软件时:  

       被依赖的软件包需要先安装

       可同时指定多个rpm包文件进行安装

卸载有依赖关系的多个软件时

       依赖其他程序的软件需要先卸载

       可同时指定多个软件名进行卸载

维护rpm数据库:

当rpm数据库受到破坏时,可重建数据库

  rpm –rebuilddb 或者 rpm –initab

查询二进制程序依赖的库文件

 ldd /PATH/TO/BINARY_FILE

rpm包校验:

格式:

   rpm -V 已安装的包名

   -V:校验指定rpm包中的文件

检验过程中输出的内容信息解释如下

    S:文件的大小是否改变

    M:文件的类型或文件的权限是否改变

    5:文件MD5校验个是否改变(可看成是文件内容是否改变)

    D:设备的主从代码是否改变

    L:文件的路径是否改变

    U:文件的属主是否改变

    G:文件的属组是否改变

    T:文件的修改时间是否改变

rpm包的文件提取

作用:当误删除命令或者误删除某个rpm包中的文件时可以用次命令

格式: 

   rpm2cpio 包全名 | cpio -idv .文件绝对路径

YUM

yum是通过分析rpm的标头数据后,根据各软件的依赖关系制作出有依赖关系时的解决方案,然后可以自动处理软件的依赖性问题,以解决软件安装的依赖性问题。

yum的配置文件:

主配置文件: /etc/yum.conf 为各仓库指向提供公共配置文件

各仓库自定义: /etc/yum.repos.d/*.repo 为每一个仓库提供特有的配置

仓库文件解释

 仓库文件应以.repo结尾,每个repo配置文件中可以配置一至多个仓库

 [main] :提供公共的配置信息

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

 name:当前仓库的描述信息

 baseurl:指明仓库的访问路径

路径支持类型

 ftp服务:ftp://SERVER/PATH/TO/REPOSITORY

 http服务:http://SERVER/PATH/TO/REPOSITORY

 本地目录:file:///PATH/TO/REPOSTIROY

enabled={1|0}:当前仓库是否开启,1开启,0关闭,默认不写为开启

gpgcheck={1|0}:是否对程序包校验,1开启,0关闭,默认不写为开启

gpgkey= :指明校验文件的路径

yum的使用

格式:

  yum [选项] [命令] [包名…]

常用命令:

   install :安装

   update :升级

   downgrade :降级

   check-update:检查可用升级

   remove:卸载,所有依赖于正卸载的程序包的程序包会被一并卸载

   reinstall:重新安装

   search 关键字:根据关键字搜索软件包

   list:列表查看

   info:查看简要信息

   provides:查看某特性是由哪个软件包所提供的

   chean all:清理本地缓存

   groupinstall:安装包组

   groupupdate:升级包组

   grouplist:列表查看包组

   groupremove:卸载包组

   groupinfo:查看包组信息

   history:查看yum事物历史

   help:帮助信息

注意:安装、查询、卸载时只需提供包名即可,安装时如果某包在不同的仓库中有多个不同的版本,默认会安装最新的,如果要安装指定版本,就要指明install 包名-版本

yum命令的可选项:

-y:自动回答yes

–disablerepo=:临时禁用在配置文件中配置并启用的某个仓库

–enablerepo=临时启用指定的某仓库

–nogpgcheck:禁止做包校验

yum中的变量

  这些变量用来保存当前平台的相关信息,这些常用的变量有以下这些:

①:$raleasever:当前OS发行版的住版本号;例如:Centos6.6 x86_64,主板吧号为6

②:$arch:平台 例如:i386 i486

③:$basearch:基础平台,例如:i686,i586,i486,i386的基础平台同为i386

例如:

   在yum的配置文件中定义的baseurl路径为baseurl=http://repo.abc.com/centos/$relrasever/$basearch 且当前的系统

为Centos6.6 x86_64,实际路径就为http://repo.abc.com/centos/6/x86_64

制作本地yum源

使用本地yum源的方式有两种:

1、直接使用光盘做为yum源,仅限本机使用

2、创建本地yum仓库,然后使用http或者ftp等方式向外提供yum仓库

使用光盘作为yum源的做法

 先挂载光盘,例如:mount /dev/sr0 /media/cdrom

 在/etc/yum.repos.d目录下新建以.repo结尾的仓库文件,内容如下

 [bash]

 baseurl=file///meida/cdrom

 gpgecheck=0

 这是最简单的创建方法

创建本地yum源

1、首先安装createrepo程序包

2、确定repository的输出方式:

  a.本地输出:提供一个放置rpm包的本地路径;

   file类型

  b.网络输出:提供一个服务器.ftp或者http服务

   ftp服务:

        先安装vsftpd程序包

        文件放置在/var/ftp/pub目录中

        启动服务

   http服务:

        先安装httpd程序包

        文件放在/var/www/html目录中

        启动服务

在准备好的目录中导入rpm包文件

对此目录执行createrepo命令生成repository目录

完成

源码编译安装程序:

使用源码包编译安装的优点

    可获得最新的软件版本,及时修复bug

    根据用户需要,灵活定制软件功能

应用场合:

    安装较新版本的应用程序时

    当前安装的程序无法满足需要时

    需要为应用程序添加新的功能时

Tarball封包

     .tar.gz和.tar.bz2格式的居多

完整性校验:

     计算MD5校验和,并与官方提供的值相比较,判断是否一致

格式:

   md5sum 源码包、

源代码组织格式:

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

确认源码包的编译环境

1、编译开发工具包组:

          Development tools

          Server Platform Development

          Desktop Platform Development

          Debug Tools

2、被依赖的程序包的开发组件

①编译安装被依赖的程序

②安装相关程序的名称中包含devel的子包

项目管理工具:make

编译时可能需要按特定的次序进行编译,此时,一般会用到项目管路工具对其进行管理;

构建工具会调用合适的编译器,并根据配置文件makefile中定义的次序对源代码文件进行编译

注意:1、每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个脚本文件:configure

    功能:此脚本会收集当前系统上的开发环境中所依赖各组件的版本、特性,并检查所依赖的环境是否能满足,最后会根据Makefile.in文件         生成一个makefile文件

    2、每个项目的程序员开发完成某版本之后,会使用autoconf为程序代码生成一个makefile模板文件,即Makefile.in

编译安装源码包流程:

                 下载源码安装包文件

                     ↓

                  步骤1:tar解包

             用途:解压释放源码包到指定的目录

                     ↓

                  步骤2:./configure配置,生成makefile文件

             用途:设置安装目录、安装模块等选项

                     ↓

                  步骤3:make编译

             用途:生成可执行的二进制文件

                     ↓

                  步骤4:make install安装

             用途:复制二进制文件到系统,配置应用环境

                     ↓

                 测试、应用及维护软件

步骤1:解包

    可以根据自己的需求把解压后的包放在任何地方,当习惯上将软件包释放到/usr/src目录中

 解包后的源码包文件位置:/usr/src/软件名-版本号/目录中

步骤2:配置

    使用源码目录中的.congfigure脚本

    执行./configure –help 可查看帮助信息

    常用的配置项:

     –help:查看帮助信息

     –prefix:指定默认安装路径,默认为/usr/local目录下

     –sysconfdir:指定配置文件安装路径

     –with-CAPABILITY:依赖的程序包

     –without-CAPABILITY:不依赖的程序包

     –enable-FEATURE:启动某个特性

     –disable-FEATURE:禁用某个特性

     system types:指明系统类型(交叉编译才会用到)

            

步骤3:编译

    执行make命令 (执行make命令还是在解压后的这个目录中)

    执行make命令有时也会出现问题,例如:某个函数不满足要求等等

    执行make命令时可加上“-j”选项,-j[n],n代表cpu核心数,表示几个核心同时编译

步骤4:安装

    执行make install命令

完成

注意:前几步普通用户可执行,建议使用普通用户身份进行,最后一步根据安装路径的指定,可能会用到管理权限。

程序的运行环境:

将所定义的二进制程序安装路径加入到$PATH变量中去

在/etc/profile.d/目录中的*.sh文件中添加 PATH=$PATH:二进制程序安装路径

linux系统会在特定路径下为应用查找所依赖的库文件:/lib64,/lib,/usr/lib64,/usr/lib 自己编译安装的程序提供的库文件有可能不在系统搜索路径中,解决办法:

编辑/etc/ld.so.conf.d/*.conf文件,添加新库文件搜索路径到此,每行一个

执行ldconfig命令,重新生成库映射缓存ld.so.conf

此命令的常用选项有:

    -v:显示命令执行过程的详细信息

    -p:打印当前系统ld.so.cache中已经缓存的所有库文件目录及库文件映射列表

复制所有新生成的头文件至/usr/include目录中

创建链接(以apache为例)

ln -sv /usr/local/apache/include /usr/include/httpd

ln -sv /usr/local/apache/include/* /usr/include

修改man的配置文件/etc/man.config文件中使用MANPATH指令指向的路径,让其识别新的帮助信息。


 

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

(0)
ZJMZJM
上一篇 2016-08-25
下一篇 2016-08-25

相关推荐

  • 如何实现本地yum源的共享

    上一篇关于Linux yum客户端的配置的博客,介绍了如何通过修改本机yum配置文件来访问网络或者本地的yun sever, 本文就来介绍一下,如何把我们的本地RPM包像yum sever一样通过http或ftp网络方式共享出去。 一、准备好发行版光盘,包,元数据    CentOS-6.8-x86_64-bin-DVD1.iso二、准备…

    2017-06-17
  • 初识mysql:基本原理和使用

    一、 数据库的出现      1. 数据库是什么: 数据库简单来说,就是存储数据的地方(废话),对于用户认证这个过程来说,当用户登录服务器时, 系统需要把用户的输入的用户认证信息和存储的用户认证信息进行比对,这一过程就需要事先把所有用户的信息存储在一个数据库中,然后逐条进行比对。早起最传统的数据库当然就是文本…

    Linux干货 2015-06-04
  • bash脚本编程

    bash脚本编程之用户交互:     脚本参数     用户交互:通过键盘输入数据     read [option]…[name]…     -p: "PROMPT"      -t: TIMEOUT &…

    Linux干货 2017-01-01
  • N25-第三周作业

    1.列出当前系统所有已经登录的用户的用户名,注意同一个用户登录多次,只显示一次即可   who | cut -d" " -f1 |uniq 2.取出最后登录到当前系统的用户的相关信息    w | tail -1 3.取出当前系统上被用户当做其默认shell最多的那个shell &nbsp…

    Linux干货 2016-12-19
  • locate,find文件查找

    locate | find *** locate 路径中包含字符串 即匹配;      -n#     指定显示结果前几个      -b      只匹配路径名中的基名      &nbs…

    Linux干货 2016-08-15
  • linux运维

    linux运维大纲,学习路线图

    Linux干货 2017-10-21