码迷,mamicode.com
首页 > 系统相关 > 详细

Linux程序包管理工具简介

时间:2015-08-30 23:34:18      阅读:390      评论:0      收藏:0      [点我收藏+]

标签:rpm、yum、make

一、Linux程序包管理器-RPM

     RPM 的全称为Redhat Package Manager ,是由Redhat 公司提出的,用于管理Linux 下软件包的软件。Linux 安装时,除了几个核心模块以外,其余几乎所有的模块均通过RPM 完成安装。RPM 有五种操作模式,分别为:安装、卸载、升级、查询和验证。


1、RPM 安装操作

命令:

rpm -i 需要安装的包文件名

例:

rpm -i example.rpm 安装 example.rpm 包
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
[root@localhost Packages]# rpm -ivh zip-3.0-10.el7.x86_64.rpm   //安装zip
Preparing...                          ################################# [100%]
Updating / installing...
   1:zip-3.0-10.el7                   ################################# [100%]


2、RPM 查询操作

命令:

rpm -q ......


附加查询命令:

a 查询所有已经安装的包

以下两个附加命令用于查询安装包的信息

i 显示安装包的信息

l 显示安装包中的所有文件被安装到哪些目录下

s 显示安装版中的所有文件状态及被安装到哪些目录下

以下两个附加命令用于指定需要查询的是安装包还是已安装后的文件

p 查询的是安装包的信息

f 查询的是已安装的某文件信息

c: 查询程序的配置文件

d: 查询程序的文档

例:

(1)查看zip 是否被安装

[root@localhost Packages]# rpm -qa zip    //查看zip是否安装
zip-3.0-10.el7.x86_64

(2)查看 example.rpm 安装包的信息

[root@localhost Packages]# rpm -qip zip-3.0-10.el7.x86_64.rpm //查看zip安装包的信息

技术分享

 (3)查看/usr/bin/zip 文件所在安装包的信息

[root@localhost Packages]# which zip
/usr/bin/zip
[root@localhost Packages]# rpm -qf /usr/bin/zip
zip-3.0-10.el7.x86_64

(4) 查看/usr/bin/zip 文件所在安装包中的文件分别被安装到哪个目录下

[root@localhost Packages]# rpm -qlf /usr/bin/zip

技术分享



3、RPM 卸载操作

命令:

rpm -e 需要卸载的安装包

在卸载之前,通常需要使用rpm -qf命令查出需要卸载的安装包名称。


例:

[root@localhost Packages]# which zip    //查询zip命令所在路径
/usr/bin/zip
[root@localhost Packages]# rpm -qf /usr/bin/zip   //查询出zip所在的安装包名称
zip-3.0-10.el7.x86_64
[root@localhost Packages]# rpm -e zip-3.0-10.el7.x86_64  //删除zip安装包 
[root@localhost Packages]# rpm -qa | grep zip     //查询是否已经删除
bzip2-libs-1.0.6-12.el7.x86_64
gzip-1.5-7.el7.x86_64


4、RPM 升级操作

命令:

rpm -U 需要升级的包


例:

rpm -Uvh example.rpm 升级 example.rpm 软件包



5、RPM 验证操作

命令:

rpm -V 需要验证的包

   S file Size differs        #文件大小

       M Mode differs (includes permissions and file type) #模式

       5 digest (formerly MD5 sum) differs  #MD5校验码

       D Device major/minor number mismatch  #设备号

       L readLink(2) path mismatch  #路径

       U User ownership differs  #所属用户

       G Group ownership differs  #所属用户组

       T mTime differs    #修改时间

       P caPabilities differ  #

例:

[root@localhost Packages]# vim /usr/share/doc/zip-3.0/algorith.txt //添加1行,然后校验测试
[root@localhost Packages]# rpm -Vf /usr/bin/zip
S.5....T.  d /usr/share/doc/zip-3.0/algorith.txt

其中,S 表示文件大小修改过,T 表示文件日期修改过



6、RPM 的其他附加命令

--force 强制操作 如强制安装删除等

--requires 显示该包的依赖关系

--nodeps 忽略依赖关系并继续操作

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供;

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;



7、RPM数据库重建


rpm {--initdb|--rebuilddb}

  initdb: 初始化

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

  rebuilddb:重建

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

注意事项:/var/lib/rpm目录中的Packages文件不能丢失或出现问题,否则无法rpm数据无法实现重建



二、Linux程序包管理前段工具-YUM

        YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

    YUM可以同时配置多个资源库(Repository-/etc/yum.repos.d目录下),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm包时遇到的依赖性问题,保持与RPM 数据库的一致性

1、yum的配置

yum 的配置文件分为两部分:main 和repository

     ★ main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf 中。

     ★ repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repos.d 目录下的各文件中。

yum.conf 文件一般位于/etc目录下,一般其中只包含main部分的配置选项。

[main]
cachedir=/var/cache/yum/$basearch/$releasever      
                 //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库
keepcache=0      
                //安装完成后是否保留软件包,0为不保留(默认为0),1为保留
debuglevel=2     
                //Debug 信息输出等级,范围为0-10,缺省为2
logfile=/var/log/yum.log
               //yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新
exactarch=1
               //有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包 
obsoletes=1
              //这是一个update 的参数,简单的说就是相当于upgrade,允许更新陈旧的RPM包 
gpgcheck=1
            //是否检查安装包的完整性和来源合法性,1为检查,0为不检查
plugins=1
          //是否启用插件,默认1为允许,0表示不允许。
installonly_limit=5
         
bugtracker_url=
         //bug提交的url
distroverpkg=centos-release
            //指定一个软件包,yum 会根据这个包判断你的发行版本

#  This is the default, if you make this bigger yum won‘t see if the metadata
# is newer on the remote and so you‘ll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don‘t keep old packages around. If you don‘t like this checking
# interupting your command line usage, it‘s much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d



2、配置yum源

关于repo 文件的格式

     repo文件是yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库,从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!

[repositoryID]      //方括号里面的是软件源的名称,将被yum取得并识别
name=name for this repository   //这里也定义了软件仓库的名称,通常是为了方便阅读配置文件
baseurl=url://path/to/repository/  //yum源的镜像服务器地址
enabled={1|0}     //是否启用这个repo文件,默认为启用
gpgcheck={1|0}    //是否检查源里安装包的完整性及合法性
gpgkey=URL        //定义用于校验的gpg密钥的路径
enablegroups={1|0}   //是否对组启用
failovermethod={roundrobin|priority}    //从列出的baseurl中选择镜像服务器地址的顺序
	默认为:roundrobin,意为随机挑选
cost=              //花销
        默认为1000



3、yum的用法总结

  •  1、显示仓库列表:repolist [all|enabled|disabled]

  • 2、 显示程序包:list

  • 3、安装程序包:install 、reinstall(重新安装)

  • 4、升级程序包:update 、downgrade(降级)

  • 5、检查可用升级:check-update

  • 6、卸载程序包:remove 

  • 7、查看程序包相关信息:info

  • 8、查看指定的特性(可以是某文件)是由哪个程序包所提供:provides | whatprovides 

  • 9、清理本地缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

  • 10、构建缓存:makecache

  • 11、搜索:search

  • 12、查看指定包所依赖的功能:deplist

  • 13、查看yum事务历史:history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

  • 14、 安装及升级本地程序包:localinstall 、 localupdate 

  • 15、 包组管理的相关命令:        

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]    


   

三、程序包编译安装方法

(1)C代码编译安装三步骤:

前提:提供开发工具及开发环境

开发工具:make, gcc等

开发环境:开发库(glibc:标准库),头文件,通过“包组”提供开发组件

  CentOS 6: "Development Tools", "Server Platform Development"


第一步:configure脚本

   选项:通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;检查依赖到的外部环境

   --help: 获取其支持使用的选项

选项分类:

安装路径设定:

    --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/

    --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;


System types:

Optional Features: 可选特性

    --disable-FEATURE

    --enable-FEATURE[=ARG]


Optional Packages: 可选包

    --with-PACKAGE[=ARG]

    --without-PACKAGE


第二步:make:根据makefile文件,构建应用程序

第三步:make install :复制安装


(2)安装后的配置:

   (1) 导出二进制程序目录至PATH环境变量中-----/etc/profile.d/NAME.sh

    export PATH=/PATH/TO/BIN:$PATH

   (2) 导出库文件路径-----/etc/ld.so.conf.d/NAME.conf

    添加新的库文件所在目录至此文件中,然后让系统重新生成缓存:ldconfig [-v]

    (3) 导出头文件-----基于链接的方式实现:ln -sv 

    (4) 导出帮助手册-----编辑/etc/man.config文件,添加一个MANPATH


 (3) 示例:在centos6.5系统中编译安装httpd,并测试

  技术分享 

[root@localhost ~]# yum install gcc              #安装gcc编译器
[root@localhost ~]# yum groupinstall "Development tools" "Server Platform Development"
[root@localhost ~]# tar xf httpd-2.2.29.tar.bz2    #解压httpd
[root@localhost ~]# cd httpd-2.2.29
[root@localhost httpd-2.2.29]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd                             #
[root@localhost httpd-2.2.29]# make && make install  #编译安装
[root@localhost ~]# vim /etc/profile.d/apache2.sh   #创建二进制程序目录至PATH环境变量中
export PATH=/usr/local/apache2/bin:$PATH
[root@localhost ~]# cd /etc/profile.d/
[root@localhost profile.d]# chmod +x apache2.sh  #给脚本执行权限
[root@localhost profile.d]# ./apache2.sh    
[root@localhost ~]# echo $PATH    
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/apache2/bin:/root/bin
[root@localhost ~]# vim /etc/ld.so.conf.d/apache2.conf  #添加库文件
/usr/local/apache2/lib/   
[root@localhost ~]# ldconfig -v     #系统重新生成缓存
ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-504.23.4.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
ldconfig: Path `/usr/local/lib‘ given more than once
/usr/local/apache2/lib:
	libexpat.so.0 -> libexpat.so.0.5.0
	libaprutil-1.so.0 -> libaprutil-1.so.0.5.3
	libapr-1.so.0 -> libapr-1.so.0.5.1
[root@localhost ~]# ln -sv /usr/local/apache2/include /usr/include/apache2  #导出头文件
`/usr/include/apache2‘ -> `/usr/local/apache2/include‘
[root@localhost ~]# vim /etc/man.config    #导出帮助手册
MANPATH /usr/local/apache2/man
[root@localhost ~]# apachectl start      #启动apache
[root@localhost ~]# netstat -tnlp     #查看apache是否启动
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 :::80                       :::*                        LISTEN      57852/httpd

技术分享//测试成功 

至此apache服务器配置完成!!!    

本文出自 “bengbengtu” 博客,请务必保留此出处http://bengbengtu.blog.51cto.com/9505633/1689901

Linux程序包管理工具简介

标签:rpm、yum、make

原文地址:http://bengbengtu.blog.51cto.com/9505633/1689901

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!