您的位置:首页 > 运维架构 > Linux

Linux程序包管理rpm与yum

2014-11-27 02:09 363 查看


Linux程序包管理

Linux中软件的安装主要有两种形式:一种是直接下载源代码包自行编译后安装,另一种直接获取rpm软件包进行安装。

程序的组成部分:

二进制程序:程序的主体文件,比如我们运行一个ls命令就是一个二进制程序。

库文件:程序的公用功能模块,比如A程序需要用一个打印机,B程序也需要一个打印机就可以公用这一个模块了。在window下库文件为.dll格式,linux下为/lib/*so格式的文件。

配置文件:通过设置配置文件来改变程序启动时的运行特征。

帮助手册:使用的帮助文档。

软件的默认安装路径:

除了自行下载源码编译安装的软件可以自定义安装路径之外,rpm包的安装都是按照自身预设的安装路径进行安装,主要有以下几类

1./:系统根目录,在此安装的文件通常是os在运行时需要调用到的程序
2./usr:此目录下一般情况下是提供基本服务的软件
3./usr/local:此目录下一般情况下是用户自行安装的第三方软件
1、系统相关:

配置文件路径:/etc

二进制文件路径:/bin 、/sbin

库文件路径:/lib

2、系统提供功能服务相关

配置文件路径:/etc

二进制文件路径:/usr/bin /usr/sbin

库文件:/usr/lib

3、第三方软件:

配置文件路径/usr/local/etc

二进制文件路径:/usr/local/bin /usr/local/sbin

库文件:/usr/local/lib

4、帮助手册

主要都存放在/usr/share/man和/usr/local/share/man

在生产环境下:usr可以单独分区或者放到另一块硬盘上,软件和相关文件放在usr下重做系统或者换到另一台主机时可以直接运行。

注意:有些特殊的应用程序放置于libexec目录下

有些第三方程序安装在/opt目录中。

程序包管理器的功能:

在linux系统下安装程序时,需要将程序的不同文件放置在以上路径里面,或者更改相关系统配置文件指定到程序的目录下,如果有很多程序,配置文件有很多就大大降低了系统效率。手动安装到系统指定的目录下,就会很麻烦。所以程序包管理器的功能就是将编译好的程序打包成一个文件或有限的几个文件,可用于实现便捷地安装、卸载、升级、查询、校验等程序管理功能;

现在程序包管理器主要有2种:rpm和deb。

程序包管理器也必须有以下功能:

1、程序的组成清单(每个程序包独有):例如windows下很多软件管理器里面的程序列表。

文件清单:例如程序的安装有哪些文件。

安装卸载时运行的脚本:例如在windows下的软件卸载程序。

2、数据库(公共)

程序名及版本

程序包之间依赖关系:程序间少了一个都运行不了。

功能说明:对应包基本功用是什么。例如windows下,QQ程序是聊天(功用)的,酷狗是听音乐的。

安装生产的各文件的文件路径及校验码信息:效验码信息是提示某某文件已经改变,防止文件给莫名篡改。

程序包命名:
程序包的版本命名:
testapp-VERSION
程序包-版本号
VERSION:major.minor.release
major:主版本号:( 有重大更新,比如win xp ,win 7,win 8等等)
minor:次版本号:(修复一些漏洞,功能等等)
release:发行号,修订号 (修复小BUG,修订一些小小的东西)
rpm包的命名:name-Major.Minor.Release-release.arch.rpm
例:bash-4.3.2-1.X86_64.rpm
-Release:rpm包自己的发行号,与源代码的发行号无关;仅用于标识对rpm自身的修订,有时候,此release可能还会包含适用的OS,例如bash-4.3.2-1.centos6.X86_64.rpm
arch:使用的硬件平台
x86:i386,i486,i586,i686等;
x86_64:amd64:X86_64
powerpc:ppc
noarch:跟硬件平台无关;

获取程序包的途径:

1、系统原发行光盘或者官方站点服务器;

镜像:http://mirrours.sohu.com

2、程序项目官方站点;

如redhat官方网站

3、知名的有信誉的第三方组织或者搜索引擎;

搜索引擎:http://rpmfind.net,http://rpm.pbone.net,http://pkgs.org
4、自己制作;

建议:包安装之前要合法性验证

来源合法性

包的完整性

程序包管理器RPM和Yum的关系:

RPM(全称为 RedhatPackage Manager)是由redhat公司提供的软件包管理器 ,可以实现软件包的安装、查询、卸载、升级以及校验等但是rpm不能很好的解决软件之间的依赖关系

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

系统程序包管理rpm的应用:

安装:-ivh,--nodeps,--replacepkgs
卸载:-e,--nodeps
升级:-Uvh,-Fvh,--nodeps,--oldpackage
查询:-q,-qa,-ql,-qf,-qi,-qc,-qd,-q --changelogs,-q --provides,-q --requires
校验:-v来源合法性、完整性:--import,-K,--nodigest,--nosignature
数据库重建:--initdb,--rebuilddb

安装:-ivh,--nodeps,--replacepkgs

安装:-ivh,--nodeps,--replacepkgs

卸载:-e,--nodeps

升级:-Uvh,-Fvh,--nodeps,--oldpackage

查询:-q,-qa,-ql,-qf,-qi,-qc,-qd,-q --changelogs,-q --provides,-q --requires

校验:-v来源合法性、完整性:--import,-K,--nodigest,--nosignature

数据库重建:--initdb,--rebuilddb

系统程序包管理yum的应用:
yum是YellowdogUpdater Modified的缩写,它是一种基于自身软件库的安装,它可以通过查询软件库的连接ftp:// http:// file:///(本地,最后一斜线是本地根路径)在远程服务器或者指定的本地文件库中获取要安装的软件包,可见软件库的配置在yum的使用中是非常重要的一环。并且yum是基于rpm的一个管理工具,它能自动解决安装rpm包产生的依赖关系。

yum repository :yum仓库
存储了众多rpm包,以及包的相关元数据的文件(放在repodata目录中)服务器

yum客户端:
配置文件:指向仓库的位置以及各种配置信息,每个yum客户可以有多个可用的yum仓库:

yum的公共配置文件 /etc/yum.conf
yum repository仓库的配置文件/etc/yum.repos.d/*.repo

yum的公共配置文件 /etc/yum.conf 描述:参考http://www.cnblogs.com/mchina/archive/2013/01/04/2842275.html

yum repository仓库的配置文件/etc/yum.repos.d/*.repo描述:

yum仓库相关的命令:
仓库查看:repolist(所有仓库),list(程序包),grouplist(所有包组)

 

yum 命令

yum [options] [command] [package(包) ...]
安装:install,reinstall
卸载:erase|remove(都可以使用)
升级:update,downgrade(卸载),check-update(可用升级)
查询:list,info,search(模糊匹配),provides(指定路径)
包组:grouplist(所有包组),groupinfo "包组名称",groupinstall(安装)"GROUP_NAME",yum install @GROUP_NAME,remove@(卸载),groupremove(卸载)
选项:--enablerepo=,--disablerepo=,-y:自动回答为yes,--nogpgcheck
构建仓库:createrepo

安装:install,reinstall

卸载:erase|remove(都可以使用)

升级:update,downgrade(卸载),check-update(可用升级)

查询:list,info,search(模糊匹配),provides(指定路径)

包组:grouplist,groupinfo,groupinstall,remove,groupremove

yum 命令安装本地rpm包文件,也可以自动解决包的依赖关系。

构建仓库:createrepo

yum客户端配置的高级用法:
1、在yum客户定义仓库时可使用cost定义仓库的使用开销,默认为1000;
2、baseurl中指定路劲时可使用变量
$releaserver:基于OS发行版的主版本号
$arch:平台
$basearch:基础平台,例如i686,i586,i486,i386i系列的基础平台都是i386:
$YUM0-YUM9
例如:http://mirrors.sohu.com/centos/$releaserver/os/$basearch
3、可以使用mirrorlist指定替换baseurl;
指向一个url,此url是一个文本文件,其中保存了大量镜像服务器列表;用户使用yum仓库时,会获取此列表文件,而后通过fastestmirror插件判断哪一个镜像为访问速度最快的服务器,并以之作为本次访问的baserul;

软件包安装之tar源码包编译安装
这里以C源程序为例:
编译安装源程序的前提:

提供开发环境:开发工具和开发库
包组:Development Tools、Server Platform Development、Desktop Platform Development、Debug Tools

编译C源程序的步骤:
1、./configure 检查编译环境,并根据指定的选项确定编译特性、安装路径等;
2、make:调用所需要的编译器根据makefile配置文件定义执行编译过程。
3、make install:安装程序

以编译安装httpd-2.2.25.tar.bz为例
首先解压缩



输入本地IP,已经安装好了。

如果源程序下不存在脚本文件可以参考下列方法

编译安装源程序方法:
1、展开源代码,找INSTALL、README:不存在此类文件时,找项目官方文档;
2、根据安全说明执行安装操作;

程序安装于专用目录时,安装后的配置:
1、导出二进制程序所在路径至PATH环境中
export PATH=/usr/local/niginx/sbin:$PATH
实现永久有效的办法:
/etc/profile.d/*.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: