软件包管理

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

   源码包

   二进制包(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

相关推荐

  • Linux系统操作入门(命令格式|命令帮助|基础命令)

    4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
    5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
    6、请罗列Linux发行版的基础目录名称命名法则及功用规定

    2018-03-06
  • Linux自动备份脚本

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1541163        今天网上一个朋友问了我一个shell的题目,让我帮他做下。下面是题目以及解题思路。 题目:…

    Linux干货 2016-08-15
  • 学习宣言

    已经虚度了第一个关键的10年,不能再失去下一个10年,3年内年薪20w,5年内年薪30w。

    Linux干货 2016-12-26
  • vrrp_script高可用httpd&双主httpd

      vrrp_script高可用httpd 实验拓扑: HA01 192.168.150.137     MASTER HA02 192.168.150.137     BACKUP VIP 1921.168.150.131 实验1: 通过touch一个文件来控制keepalived主机的优先级 HA01的配…

    Linux干货 2016-12-06
  • 一次简单的内核编译(二)

      前言:     此次编译是继一次简单的内核编译(一)进行操作编译的,请先查看第一篇再来看此片文章 一、使用busybox代替自己制作的init脚本,实现内核启动;  1、在这里我们使用静态编译busybox,所以需要先安装glibc-static依赖包,如果不安装会报错     2、解…

    Linux干货 2015-06-01
  • bash工作特性之命令执行状态返回值和命令行展开的讲解和实例

    命令执行状态返回值 在Linux bash中可以用命令执行状态返回值来判断命令是否运行成功,而不需去关心命令返回的结果是多少。 bash通过状态返回值来得到输出结果; 成功:返回值 0 [root@localhost tmp]# ls aaa [root@localhost tmp]# mkdir $(date +%H-%m-%S) [root@localh…

    Linux干货 2018-03-01