码迷,mamicode.com
首页 > 其他好文 > 详细

程序包管理(下)

时间:2015-08-31 10:21:11      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:yellow   服务器   软件包   程序   依赖性   


上篇幅中我们讲述了rpm包管理器的使用命令以及使用演示方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时,所以我们今天来介绍一下rpm的前端工具yum。

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

检查yum程序包是否安装上使用命令,查看已经本机已经安装完成,并且在/etc/yum.repos.d目录下增加.repo文件。

[root@Corazon ~]# rpm -qa | grep "yum"
yum-metadata-parser-1.1.2-16.el6.x86_64
yum-3.2.29-40.el6.centos.noarch
yum-plugin-fastestmirror-1.1.30-14.el6.noarch

yum的配置文件分为两部分:

1)/etc/yum.conf # 其主要为所有仓库提供公共配置文件

2)/etc/yun.repos.conf/*.d  # 其主要为仓库的指向提供配置

什么是repo文件?

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

[root@Corazon ~]# vi /etc/yum.repos.d/centos.repo 
[base]
name=CentOS-$releasever - Base#$releasever变量定义了发行版本,通常是8,9,10等数字,$basearch变 量定义了系统的基础平台架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,这可以方便yum升级的时候选择 适合当前系统的软件包
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os # 上面的这一行是指定一个镜像服务器的地址列表,mirrorlist和baseurl只是能启用一个,不启用可以#注释掉
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ # 指向源的镜像服务器地址,可以跟多个镜像服务器地址,服务器可还有三种形式    
       ftp://# 链接ftp文件服务器
       nfs://          # windows的ntf文件系统镜像服务器
       file:///# Linux本地
      failovermethod=priority #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择
enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用
gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的



我们自己来简单编写一份.repo文件,首先现将原centos.repo文件做好备份工作

然后在编写一份新的.repo文件如下:

[root@Corazon ~]# mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.bak
[root@Corazon ~]# cd /etc/yum.repos.d/
[root@Corazon yum.repos.d]# vim centos.repo
[root@Corazon yum.repos.d]#cat /centos.repo
#
[base]
name=CentOS $releasever-Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/   #使用的是阿里云的镜像源站点
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6   # 使用本地key进行校验



yum命令:

    常用选项:

—nogpgcheck:禁止gpgcheck

-y:自动yes 确认

-q:静默模式,不输出任何消息

    常用命令:

#yum list { all | glob_exp|acvailable|installed|updates} 可以根据多种类型进行显示

# yum repolist 显示仓库列表


[root@Corazon yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
repo id                       repo name                                                     status
base                          CentOS-6 - Base - mirrors.aliyun.com                          6,575
extras                        CentOS-6 - Extras - mirrors.aliyun.com                           35
updates                       CentOS-6 - Updates - mirrors.aliyun.com                         263
repolist: 6,873


构建缓存:



安装、升级、重装以及降级

# yum install python 测试安装python,重装检查以及降级与安装大同小异

# yum reinstall python 重新安装python

# yun update python 检查python的升级包

# yum reupdate python 对python进行降级

[root@Corazon ~]# yum install python    
Dependencies Resolved
===========================================================================
 Package                  Arch                Version                     Repository         Size
===================================================================================
Updating:
 python                   x86_64              2.6.6-64.el6                base               76 k
Updating for dependencies:
 python-libs              x86_64              2.6.6-64.el6                base              5.3 M
Transaction Summary
==================================================================================
Upgrade       2 Package(s)
Total download size: 5.4 M
Is this ok [y/N]: 
Downloading Packages:
(1/2): python-2.6.6-64.el6.x86_64.rpm                                          |  76 kB     00:00
(2/2): python-libs-2.6.6-64.el6.x86_64.rpm                                                                   | 5.3 MB     00:39
------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                               138 kB/s | 5.4 MB     00:40
                                                                            4/4
Updated:
python.x86_64 0:2.6.6-64.el6
Dependency Updated:
  python-libs.x86_64 0:2.6.6-64.el6

Complete! 

卸载程序包:

# yum remove python 移除python程序包


[root@Corazon ~]# yum remove python
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package python.x86_64 0:2.6.6-64.el6 will be erased
--> Processing Dependency: python(abi) = 2.6 for package: python-urlgrabber-3.9.1-9.el6.noarch
--> Processing Dependency: python(abi) = 2.6 for package: python-pycurl-7.19.0-8.el6.x86_64
--> Processing Dependency: python(abi) = 2.6 for package: yum-3.2.29-40.el6.centos.noarch
--> Processing Dependency: python(abi) = 2.6 for package: yum-metadata-parser-1.1.2-16.el6.x86_64



查看程序包的详细信息:

# yum info python 查看python程序包的信息

 * base: mirrors.aliyun.com
  * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Installed Packages
Name        : python
Arch        : x86_64
Version     : 2.6.6
Release     : 64.el6
Size        : 78 k
Repo        : installed
From repo   : base
Summary     : An interpreted, interactive, object-oriented programming language
URL         : http://www.python.org/
License     : Python
Description : Python is an interpreted, interactive, object-oriented programming
            : language often compared to Tcl, Perl, Scheme or Java. Python includes
           : modules, classes, exceptions, very high level dynamic data types and
          : dynamic typing. Python supports interfaces to many system calls and
         : libraries, as well as to various windowing systems (X11, Motif, Tk,
            : Mac and MFC).


查看指定的特性(可以时某文件)是由哪个程序包所提供

# yum provides /bin/ls 查看ls命令是由哪个程序包所提供


[root@Corazon ~]# yum provides /bin/ls
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
coreutils-8.4-37.el6.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo        : base
Matched from:
Filename    : /bin/ls
coreutils-8.4-31.el6.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo        : installed
Matched from:
Other       : Provides-match: /bin/ls

检查可用升级

# yum check-update pam 查找pam是否有可用程序包

[root@Corazon ~]# yum check-update pam
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
pam.x86_64                                                 1.1.1-20.el6_7.1                                                  updates


构建缓存:

# yum makecache 构建元数据缓存

[root@Corazon ~]# yum makecache
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                         | 3.7 kB     00:00
base/group_gz                                                                                                | 219 kB     00:00
base/other_db                                                                                                | 2.8 MB     00:20
extras                                                                                                       | 3.4 kB     00:00
extras/prestodelta                                                                                           |  601 B     00:00
extras/other_db                                                                                              |  30 kB     00:00
updates                                                                                                      | 3.4 kB     00:00
updates/filelists_db                                                                                         | 993 kB     00:13
updates/prestodelta                                                                                          |  81 kB     00:01
updates/other_db                                                                                             |  15 MB     03:33
Metadata Cache Created
[root@Corazon ~]#


查看事物历史:

# yum histroy 


[root@Corazon ~]# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
11 | root <root>              | 2015-08-30 22:01 | Update         |    2
 10 | root <root>              | 2015-08-30 21:38 | Install        |    1
  9 | root <root>              | 2015-08-20 02:21 | Install        |    8
    8 | root <root>              | 2015-08-16 16:41 | Install        |    1
    7 | root <root>              | 2015-08-16 16:38 | I, U           |    4
      6 | root <root>              | 2015-08-16 16:00 | I, U           |   12
      5 | root <root>              | 2015-08-16 07:11 | I, U           |    2
      4 | root <root>              | 2015-08-16 06:54 | Install        |    1
      3 | root <root>              | 2015-08-16 06:48 | I, U           |    4
      2 | root <root>              | 2015-03-13 18:59 | Install        |    9
      1 | System <unset>           | 2015-03-13 18:39 | Install        |  209

history list  yu


清理本地缓存:

yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] # 可以根据自己需要进行选择清理缓存

包组管理的相关命令:

           * groupinstall group1 [group2] [...]

           * groupupdate group1 [group2] [...]

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

          * groupremove group1 [group2] [...]

          * groupinfo group1 [...]


了解完yum其实不难发现,yum确实很智能,能自动安装并解决程序包之间的依赖关系问题,但是这样便捷的工具对于高端定制的需要来说还是远远不够的,Linux是GPL协议的开源系统,而Linux上的软件大多都是免费开放源代码的,而源代码的主要作用有两点

1、软件根据用户的需要加以定制;
2、二次开发;

所以我们有必须更必须了解手动编译定制自己需要的程序包,不是吗?

首 先我们在Linux系统中至少得把开发工具安装上,比如 gcc ;perl;python;glibc;gtk;make ;automake 等开发工具或基础包;

而我们可以通过安装开发工具包组解决这类问题。

# yum groupinstall “Development tools” “Server Platform Development” 

大多是通过 三步骤来安装

./configure # 通过选项传递参数,指定启动特性、安装路径等

—help:获取器支持使用的选项

make # 检查依赖到的外部环境

make install # 最后一步安装


而有的软件是 两步骤来安装

make

make install 


所以需要注意的是安装一定要阅读以下README或INSTALL文件!


编辑完成之后还不能正常使用还需要结合安装后的配置

1)到处二进制程序目录PATH环境变量中,可以在/etc/profile.d/目录下创建一个.sh结尾的脚本程序文件,在文件内添加内容

     export= /PATH/TO/BIN:$PATH

2)导出库文件路径

在/etc/ld.so.conf/目录下创建一个以.conf 配置文件 ,导出库文件路径

导入完成之后可以使用 ldconfig 让系统重新生成缓存

3) 导出头文件

    基于链接方式实现

ln -sv  

4)导出帮助书册

编辑/etc/man/config文件 

添加一套MACPATH



程序包管理器的内容全部分享结束,过几天还会给分享一下btrfs文件和磁盘管理相关的博文,欢迎批评!谢谢




 


程序包管理(下)

标签:yellow   服务器   软件包   程序   依赖性   

原文地址:http://corazon.blog.51cto.com/9658694/1690000

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