在linux上,一个软件包通常由二进制程序,库文件,配置文件和帮助文件组成。 其中:

二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/usr/local/sbin这几个目录下边;
库文件都放在/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib和/usr/local/lib64这些目录下;
配置文件一般都是放在/etc这个目录下;
而最基本的man帮助文件则是放在/usr/share/man这个目录下的。

在CentOS上,软件的安装方式一般有四种:

通用二进制编译:由志愿者把开发完成的源代码编译成二进制文件,打包后发布在网络上,大家都可以通过网络进行下载,到本地之后,经过解压配置就可以使用。
软件包管理器:使用包管理工具安装,有时候必须要解决软件包之间的依赖问题,例如rpm和deb等。
软件包前端管理工具:可以自动解决软件包依赖关系,例如yum和apt-get等。
源码包安装:从网络上下载软件的源码包到本地计算机,用gcc等编译工具编译成二进制文件后才能使用,有时必须要解决库文件的缺失问题。

我们这里只说CentOS上常用的rpm和yum等的用法。

CentOS上默认使用的软件包格式是rpm包。

RPM最初是由RedHat公司开发的一种软件包管理工具,最初它的全称是Redhat Package Manager,现在包括SUSE在内的很多linux发行版都使用这种软件管理工具,使得rpm成为linux的软件包管理标准,所以现在它的全称为Rpm Package Manager.

rpm包的管理器包括软件的打包,查询,校验,安装,升级,卸载,数据库管理等功能。

在CentOS上,一个rpm的命令格式为:

name-version.release.arch.rpm,其中version由主版本号,次版本号构成。

拿一个很常用的软件包主例: httpd-2.2.15-59.el6.centos.x86_64.rpm 在这里,httpd是软件包的包名,2.2.15-59依次是软件包的主发行版本号,次发行版本号和修正号等,el6.centos是软件包适用的操作系统的版本号,x86_64是软件包的架构。

rpm的命令一般都是组合使用的,常用的组合选项有:

rpm -q          查询某个软件包,一般与别的选项组合使用
rpm -qa 查询系统上已安装的所有的软件包
rpm -qf 查询系统中的某个文件是由哪个软件包所生成
rpm -qd 查询一个软件包安装后在系统生成的帮助文件
rpm -ql 查询一个软件包安装后在系统生成文件的列表
rpm -qc 查询一个软件包的配置文件
rpm -qpl 查询一个未安装软件包安装后会在系统生成的文件列表
rpm -qi 查询一个软件包的发行信息
rpm -v 显示一个软件包安装,升级,卸载的过程
rpm -K 校验一个软件包的私钥是否正确
rpm -U 升级软件包
rpm -f 强制安装,升级或卸载某软件
rpm -e 卸载软件包

rpm管理器一些其它的用法:

rpm --replacepkgs       重新安装某个软件包
rpm --initdb 初始化系统的rpm数据库
rpm --rebuilddb 重建系统的rpm数据库
rpm --import 向系统导入软件包的公钥
rpm --test 测试一个软件包是否能够安装在系统上,不真正安装
rpm --nodeps 安装软件包,不解决依赖关系
rpm --force 强制安装,升级或卸载,等同于rpm -f
rpm --scripts 查看一个软件包内的脚本
rpm --nodigest 不检查软件包的完整性
rpm --nosignature 不检查软件包来源的合法性

校验软件包的文件:

S            文件大小发生改变
M 文件权限发生改变
5 文件的md5值发生改变
D 设备的主次设备号发生改变
L 文件的链接发生改变
U 文件的属主发生改变
G 文件的属组发生改变
T 文件的最后修改时间发生改变
P 文件的能力发生改变

rpm包管理器的通用配置文件:

公钥文件位置:/etc/pki/rpm-gpg/
[root@localhost ~]# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6
RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6 数据库文件位置:/var/lib/rpm/
[root@localhost ~]# ls /var/lib/rpm
Basenames __db.003 Group Packages Requirename Triggername
Conflictname __db.004 Installtid Providename Requireversion
__db.001 Dirnames Name Provideversion Sha1header
__db.002 Filedigests Obsoletename Pubkeys Sigmd5

做为一个标准的软件包管理系统,rpm确实很强大,但是rpm软件包的依赖问题却又让所有的SA又爱又恨,因此rpm包的前端管理工具就应运而生了。

Yum ,全称为:Yellow dog Updater, Modified,是一个基于RPM 包管理的字符前端软件包管理器,它基于C/S架构,能够从配置好的yum仓库自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum的仓库由各共享的rpm包及由包之间的依赖关系的文件列表等元数据文件组成。 yum的客户端由yum配置文件,缓存元数据组成。 yum客户端的工作原理分析:

1.yum源配置完成后,yum会到各可用的yum仓库下载元数据到本地,并缓存在/var/cache/yum这个目录下。
2.当管理员想要安装某个软件时,yum会根据具体的操作请求分析缓存在系统本地的元数据,结合系统已经安装的软件包,分析出要安装或升级的软件包的列表。
3.向yum仓库请求分析出的软件包列表中的软件,下载到本地客户端完成安装。
4.本次安装完成后,清除本次安装过程中下载到本地的软件包,以节省硬盘空间。

yum主配置文件为/etc/yum.conf:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

文件格式解说:

cachedir        指的是下载软件包缓存目录
$basearch 对应为程序的版本,对yum而言指的是redhat-release版本,在使用时会替换成系统的主版本号。
$releasever 对应为系统的硬件架构,如i686,x86-64,noarch等
keepcache 软件包安装后是否保留软件包,0为不保留
logfile 为yum的系统日志文件
gpgcheck 为是否校验要安装的软件包,1为校验

yum客户端的配置文件通常位于/etc/yum.repos.d/这个目录下,以repo结尾的文件都是yum源的配置文件,yum源的配置文件可以有多个。

[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

这个是系统自带的yum源文件。yum源的配置通常由五部分组成,其中,

[base]是这个yum源的名字
name=.... 相当于是这个yum源的注释信息
baseurl=..... 指定对应yum仓库的访问方式,可以使用以下四种方式:
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/path/to/repo
本地光盘yum源 file:///path/to/repo
gpgckeck=1 校验软件包
gpgkey=... 指定公钥的位置

yum的用法:

yum [option] command

yum常用的命令有:

yum repolist {all|enabled|disabled}          列出所有/已启用/已禁用的yum源
yum list {all|installed|avaliable} 列出所有/已安装/可安装的软件包
yum info package 显示某一个软件包的信息
yum install package 安装软件包
yum reinstall package 重新安装软件包
yum remove|earse package 卸载软件包
yum whatprovides|provides files 查询某个文件是哪个软件包生成的
yum grouplist {all|installed|avaliable} 列出所有/已安装/可安装的软件包组
yum groupinfo 显示某个软件包组的信息
yum groupinstall 安装某个软件包组
yum groupremove 删除某个软件包组
yum history 查看yum使用的历史
yum clean {all|packages|metadata} 清除所有/软件包/元数据
yum makecache 生成yum元数据 
yum --nogpgcheck 不校验公钥文件
yum -y 自动进行操作

例子:

1.安装wget下载工具:

[root@localhost ~]# yum install -y wget
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base:
base | 4.0 kB 00:00 ...
epel | 4.3 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package wget.x86_64 0:1.12-10.el6 will be installed
--> Finished Dependency Resolution Dependencies Resolved =======================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================
Installing:
wget x86_64 1.12-10.el6 base 484 k Transaction Summary
=======================================================================================================================================================================
Install 1 Package(s) Total download size: 484 k Installed size: 1.8 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : wget-1.12-10.el6.x86_64 1/1
Verifying : wget-1.12-10.el6.x86_64 1/1 Installed:
wget.x86_64 0:1.12-10.el6 Complete!

2.安装开发工具包组:

[root@localhost ~]# yum grouplist | grep "Development tools"
Development tools
[root@localhost ~]# yum groupinstall -y "Development tools"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
* base:
Package 1:make-3.81-23.el6.x86_64 already installed and latest version
Package 1:pkgconfig-0.23-9.1.el6.x86_64 already installed and latest version
Package binutils-2.20.51.0.2-5.46.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package autoconf.noarch 0:2.63-5.1.el6 will be installed
--> Processing Dependency: perl >= 5.005_03 for package: autoconf-2.63-5.1.el6.noarch
--> Processing Dependency: perl >= 5.005 for package: autoconf-2.63-5.1.el6.noarch
... 中间省略
Verifying : elfutils-0.164-2.el6.x86_64 106/113
Verifying : 1:perl-Module-Pluggable-3.90-144.el6.x86_64 107/113
Verifying : byacc-1.9.20070509-7.el6.x86_64 108/113
Verifying : libXft-2.3.2-1.el6.x86_64 109/113
Verifying : libedit-2.11-4.20080712cvs.1.el6.x86_64 110/113
Verifying : libICE-1.0.6-1.el6.x86_64 111/113
Verifying : perl-XML-Parser-2.36-7.el6.x86_64 112/113
Verifying : libxcb-1.12-4.el6.x86_64 113/113
... 中间省略
Installed:
autoconf.noarch 0:2.63-5.1.el6
... 中间省略
perl-libwww-perl.noarch 0:5.833-5.el6
perl-version.x86_64 3:0.77-144.el6
pixman.x86_64 0:0.32.8-1.el6
ppl.x86_64 0:0.10.2-11.el6
rsync.x86_64 0:3.0.6-12.el6
systemtap-client.x86_64 0:2.9-7.el6
systemtap-devel.x86_64 0:2.9-7.el6
systemtap-runtime.x86_64 0:2.9-7.el6
unzip.x86_64 0:6.0-5.el6
xz.x86_64 0:4.999.9-0.5.beta.20091007git.el6
xz-lzma-compat.x86_64 0:4.999.9-0.5.beta.20091007git.el6
zip.x86_64 0:3.0-1.el6_7.1 Complete!

3.查看内核文件的信息

[root@localhost Packages]# yum info kernel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base:
Installed Packages
Name : kernel
Arch : x86_64
Version : 2.6.32
Release : 573.el6
Size : 126 M
Repo : installed
From repo : anaconda-CentOS-201508042137.x86_64
Summary : The Linux kernel
URL : http://www.kernel.org/
License : GPLv2
Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
: Linux operating system. The kernel handles the basic functions
: of the operating system: memory allocation, process allocation, device
: input and output, etc. Available Packages
Name : kernel
Arch : x86_64
Version : 2.6.32
Release : 696.el6
Size : 32 M
Repo : base
Summary : The Linux kernel
URL : http://www.kernel.org/
License : GPLv2
Description : The kernel package contains the Linux kernel (vmlinuz), the core of any
: Linux operating system. The kernel handles the basic functions
: of the operating system: memory allocation, process allocation, device
: input and output, etc.

4.在CentOS7上创建本地光盘yum源

#查看系统版本
[root@localhost home]# cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
#创建光盘挂载点
[root@localhost home]# mkdir /mnt/cdrom
#挂载系统光盘到/mnt/cdrom目录下
[root@localhost home]# mount /dev/cdrom /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
#列出/mnt/cdrom目录的内容
[root@localhost home]# ls /mnt/cdrom
CentOS_BuildTag EFI EULA GPL images isolinux LiveOS Packages repodata RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL
#进入/etc/yum.repos.d目录
[root@localhost home]# cd /etc/yum.repos.d/
#创建repo的备份目录
[root@localhost yum.repos.d]# mkdir repo.bak
#把系统原有的repo文件移动到刚创建的备份目录下
[root@localhost yum.repos.d]# mv ./*.repo repo.bak/
#编辑光盘yum的repo文件,加入以下内容,保存退出
[root@localhost yum.repos.d]# vi CentOS-Media.repo [CentOS-Media]
name=CentOS-Media
baseurl=file:///mnt/cdrom/
enabled=1
gpgcheck=0 #清除系统上yum源的元数据
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: CentOS-Media
Cleaning up everything
Cleaning up list of fastest mirrors
#生成新的yum元数据
[root@localhost yum.repos.d]# yum makecache
Loaded plugins: fastestmirror
CentOS-Media | 3.6 kB 00:00:00
(1/4): CentOS-Media/group_gz | 155 kB 00:00:00
(2/4): CentOS-Media/filelists_db | 3.0 MB 00:00:02
(3/4): CentOS-Media/primary_db | 3.0 MB 00:00:01
(4/4): CentOS-Media/other_db | 1.3 MB 00:00:00
Determining fastest mirrors
Metadata Cache Created
#安装软件进行测试
[root@localhost yum.repos.d]# yum install -y httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.el7.centos for package: httpd-2.4.6-45.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.el7.centos.x86_64
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-45.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
--> Finished Dependency Resolution Dependencies Resolved =======================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================
Installing:
httpd x86_64 2.4.6-45.el7.centos CentOS-Media 2.7 M
Installing for dependencies:
httpd-tools x86_64 2.4.6-45.el7.centos CentOS-Media 84 k
mailcap noarch 2.1.41-2.el7 CentOS-Media 31 k Transaction Summary
=======================================================================================================================================================================
Install 1 Package (+2 Dependent packages) Total download size: 2.8 M
Installed size: 9.6 M
Downloading packages:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 10 MB/s | 2.8 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mailcap-2.1.41-2.el7.noarch 1/3
Installing : httpd-tools-2.4.6-45.el7.centos.x86_64 2/3
Installing : httpd-2.4.6-45.el7.centos.x86_64 3/3
Verifying : httpd-tools-2.4.6-45.el7.centos.x86_64 1/3
Verifying : mailcap-2.1.41-2.el7.noarch 2/3
Verifying : httpd-2.4.6-45.el7.centos.x86_64 3/3 Installed:
httpd.x86_64 0:2.4.6-45.el7.centos Dependency Installed:
httpd-tools.x86_64 0:2.4.6-45.el7.centos mailcap.noarch 0:2.1.41-2.el7 Complete!

大功告成了!So easy吧~~~~~~~~~~~

CentOS的软件包的管理之rpm和yum的更多相关文章

  1. CentOS 7上的程序管理:rpm、yum和源码编译安装

    简介 在Linux的早期时代(也许吧?我猜的.也可能是Unix.),想要在系统上安装一款应用程序,是比较复杂的.需要专业的人员自行获取程序的源代码,并且编译安装,这是非常的复杂且需要一定的专业功底的, ...

  2. Linux: 软件包管理之rpm与yum [转]

    软件包的安装和卸载时很平常的事,但在Linux上面却不简单..Linux的其中一个哲学就是一个程序只做一件事,并且做好.组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂 ...

  3. 软件包管理之rpm与yum

    软件包的安装和卸载时很平常的事,但在Linux上面却不简单..Linux的其中一个哲学就是一个程序只做一件事,并且做好.组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂 ...

  4. linux入门系列6--软件管理之rpm和yum仓库

    前面系列文章中,我们对vi编辑器和46个基本命令进行了介绍,本文将演示在centos7下使用RPM和YUM安装和管理软件. 一.RPM软件包管理器 1.1 RPM背景介绍 ​ RPM(RedHat P ...

  5. Linux基础3(用户/组管理,rpm,yum,源码安装软件)

    用户管理 与用户相关的配置文件 /etc/passwd /etc/shadow /etc/skel /etc/defalut/useradd /etc/login.defs useradd userm ...

  6. 软件包管理(rpm、yum、dpkg)

    一. 大多数Linux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型,通常Linux应用软件的安装包有三种: 1) tar包,如software-1.2.3-1.tar.gz.以源码 ...

  7. 运维笔记10 (Linux软件的安装与管理(rpm,yum))

    概述:用rpm安装和管理软件(rpm解决依赖性),用yum安装与管理软件(yum解决依赖性). 1.linux的软件 linux能够说是一款改变时代的操作系统,可是一个操作系统再优秀假设没有好用的应用 ...

  8. Linux软件安装管理:rpm与yum

    目录 1. rpm包的管理 1.1 介绍 1.2 rpm包的简单查询指令 1.3 rpm 包名的基本格式 1.4 rpm其它指令 1.5 卸载rpm包 1.6 安装rpm包 2. yum 2.1 说明 ...

  9. Centos中彻底删除Mysql(rpm、yum安装的情况)

    [root@data lib]# rpm -qa¦grep mysqlmysql-5.5.25-1.el6.remi.i686mysql-libs-5.5.25-1.el6.remi.i686comp ...

随机推荐

  1. JavaSE(十一)之异常处理详解

    一.异常概述 在我们日常生活中,有时会出现各种各样的异常,例如:职工小王开车去上班,在正常情况下,小王会准时到达单位.但是天有不测风云,在小王去上班时,可能会遇到一些异常情况,比如小王的车子出了故障, ...

  2. bzoj:1299: [LLH邀请赛]巧克力棒

    原题:http://www.lydsy.com/JudgeOnline/problem.php?id=1299 众多dalao的题解已经很详细了:http://blog.csdn.net/wzq_qw ...

  3. [bzoj1819] [JSOI]Word Query电子字典

    正解是trie树...在树上跳来跳去什么的 然而在企鹅qq那题的影响下我写了hash... 添加一个字母到一个串,就相当于另一个串删对应位置上的字母. 改变某个位置上的字母,就相当于两个字符串删掉同一 ...

  4. UVALive3882-And Then There Was One-约瑟夫问题-递推

    And Then There Was One Time limit: 3.000 seconds Let's play a stone removing game. Initially, n ston ...

  5. 浏览器的统一指针事件:Pointer Event

    在早期的浏览器,输入的事件其实相对单纯,只有考虑到鼠标和键盘两种:而当时的鼠标事件,其实就是 click.mousedown.mouseup 等等的事件.但是当手机.平板开始流行时候,再移动装置上的主 ...

  6. ThinkPHP3.2基础知识(二)

    1.单入口模式的好处: 安全,灵活.可集中进行安全处理,访问统计等统一控制. 2.入口文件中为什么要判断PHP版本,TP要求PHP的版本是什么? 因为ThinkPHP3.2版本只能在PHP版本5.3. ...

  7. jvm内存模型-回收算法-和内存分配以及jdk、jre、jvm是什么关系(阿里,美团,京东面试题)

    1.什么是jvm?(1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的.(2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个 ...

  8. @requestBody注解

  9. HDU 2119 Matrix

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2119 解题思路: 处理数据,使用公式最小点覆盖数=最大匹配数,使用匈牙利算法求二分图最大匹配即可. ...

  10. ES6中promise的使用方法

    先看看ES5中异步编程的使用. let ajax = function (callBlack) { setTimeout(function () { callBlack && call ...