软件包管理

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

   源码包

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

相关推荐

  • CentOS 7 忘记root密码的解决之道

    1、启动时任意键暂停启动,会出现如下界面: 2、按e键进入编辑模式,将光标移动linux16开始的行,添加内核参数 rd.break 3、按 ctrl+x 组合键启动 4、查看各分区和文件系统的挂载情况,需要将 / 的模式改为 rw 5、当前系统上的 / 是在光盘上的,切换至挂载目录下的 / ,才可以修改密码 6、在 / 目录下创建autorela…

    Linux干货 2016-09-26
  • 进程和计划任务

    进程概念 内核的功用:进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能等 Process:运行中的程序的一个副本,是被载入内存的一个指令集和     进程ID(Process ID,PID)号码被用来标记各个进程     UID,GID和SELinux语境决定对文件系统…

    Linux干货 2016-09-13
  • yum命令的使用及磁盘管理中命令的使用方法(mkfs ,blkid,e2label等)

    yum      #cd /etc/yum.repos.d          #yum repolist(在 #cd下)其他命令在 #cd /etc/yum.repos.d运行          #yum-config-manag…

    2017-08-19
  • Find命令以及解压与压缩文件的相关指令

    1,find   实时查找,通过遍历指定路径完成文件的查找 查找路径:指定具体目标路径,默认为当前目录 查找条件:指定的查找标准,可以文件名,大小,类型,权限等标准进行,默认为找出指定路径下的所有文件 处理动作:对符合条件的文件做操作,默认输出至屏幕 find -maxdepth level  最大搜索目录深度 -mindept…

    2017-08-12
  • 元数据、修改时间戳、文件名通配、定义命令的别名、I/O重定向及管道

      文件的元数据 文件的数据分为两类:一类为元数据,既属性数据;一种就是数据本身:  数据是指普通文件中的实际数据  元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等 那么如何查看文件的详细信息? stat命令: 功能说明:    显示inode内容命令用法:    stat…

    Linux干货 2016-11-06
  • grep命令与正则表达式的应用示例、find命令应用示例

    grep命令与正则表达式的应用示例、find命令应用示例 显示当前系统上root、fedora或user1用户的默认shell。 使用扩展正则表达式,它支持使用A|B表示或者之意。查看用户的默认shell,cat /etc/passwd文件,根据用户名所处位置进行锚定,其最后一个字段即表示该用户的默认shell。实现方式及结果如下:   找出/et…

    Linux干货 2016-11-28