标签:程序包管理
概述:
在系统管理中,软件包的管理是最重要的,是系统管理的基础的基础,只有我们学会了软件包的管理才能谈得上其它的应用,软件包的安装、更新、查询,以及几个常用的软件包管理工具rpm、yum、编译。
不同发行版系统程序包管理器:
Debian:dpt、dpkg、deb
Redhat:rpm
S.u.S.E: rpm、.rpm
一、Rpm
1.概述:rpm包里包含可执行的二进制程序,这个程序和window是的软件包中的.exe文件类似是可执行的;一个rpm包中 的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其他特定版本文件,这就是软件包的依赖关 系;依赖关系并不是Linux特有的,windows操作系统中也是同样存在的,比如我们在windows系统中运行3D游戏,在 安装的时候,他可能会提示,要安装Direct 9;linux和windows的系统原理是差不多的。
2.rpm包命名格式
re-pppoe - 3.1 - 5 . X86_64 .rpm
软件名称 版本信息 发布次数 适合硬件平台 扩展名
3.获取程序包的途径
(1)系统发行版的光盘或者官方的文件服务器(或镜像站点)
(2)项目的官方站点
(3)第三方组织
(a)EPEL
(b)搜索引擎
(4)检查其合法性、来源合法性、程序包的完整性
4.rpm的使用权限
Rpm软件的安装、删除、更新只有root权限才能使用,对于查询功能任何用户都可以操作,如果普通用户拥有安装 目录的权限,也可以进行安装
5.rpm的使用用法
1)通过rpm命令查询一个rpm包是否安装了,也是通过rpm数据库来完成的,所以我们要经常用下面的两个命令来初 始化rpm数据库;
注:第二个命令要花好长时间,有时rpm系统出了问题,不能安装和查询,大多是这里出了问题。
2)rpm命令:rpm
安装:-i
升级:-U
卸载:-e
查询:-q
校验:-V
数据库维护:--builddb、--initdb
* 安装:rpm -ivh file.rpm
参数:-i:install的意思
-v:查看更详细的安装信息
-vv:查看更详细的输出
-h:以安装信息栏显示安装的进度,每个#表示2%的进度
--test:测试安装,检查并报告依赖关系及冲突消息等
--nodeps:忽略依赖关系,不建议,虽能安装成功,但不保证能运行成功。
--replacepkgs:重新安装
注意:rpm可以自带脚本
四类:--noscripts
preinstall:安装过程开始之前运行的脚本,%pre,--nopre
postinstall :安装过程完成之后运行的脚本,%prost.--nopost
preuninstall :卸载过程真正开始执行之前运行的脚本,%preun,--nopreun
postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun
--nosignature:不检查包签名信息,不检查来源合法性
--nodigest:不检查包完整性信息
语法结构:
*升级:
区别: -Uvh :后面接的软件即使没有安装过,则系统将予以直接安装,若后面接的软件有安装过旧版本,则系统自动 更新至新版
-Fvh:如果后面接的是软件并未安装到你的linux系统上,则该软件不会被安装。即只有已安装到你的linux系统内的软 件会被“升级”。
--oldpackage:降级
--force:强制升级
注意:1.不要对内核做升级操作,linux支持多内核版本并存,因此,直接安装新版本内核
2.如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版 本的配置文件,而是把新版本的配置文件重命名后提供。
*卸载:rpm -e 软件包名
--allmatches:卸载所有匹配指定名称的程序包的各版本
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式
举例:我想移除lynx包,完整的操作应该是:
如果有依赖关系,您也可以用--nodeps忽略依赖的检查来删除,但尽可能不要这么做,最好用软件包管理 器system-config-packages来删除或者添加软件;
*查询:
rpm {-q|--query} [select-options] [query-options]
rpm的查询功能是极为强大,是极为重要的功能之一
1)查询系统已安装的软件:
rpm -q 软件名
2)查看系统中所有已经安装的包,要加-a参数;
rpm -qa
3)如果分页查看,再加一个管道|和more命令
rpm -qa |more
4)在所有已经安装的软件包中查找某个软件,比如说 gaim;可以用 grep 抽取出来
rpm -qa|grep gaim
5)查询一个已经安装的文件属于哪个软件包
rpm -qf 文件名 注:文件名所在的绝对路径要指出
6)查询已安装软件包都安装到何处
rpm -ql 软件名
7)查询一个已安装软件包的信息
rpm -qi 软件名
8)查询一下已安装软件的配置文件
rpm -qc 软件名
9)查看一个已经安装软件的文档安装位置
rpm -qd 软件名
10)查看一下已安装软件所依赖的软件安装包及文件
rpm -qR 软件名
11)查看一个软件包的用途、版本等信息
rpm -qpi file.rpm
12)查看一个软件包所包含的文件
rpm -qpl file.rpm
13)查看一个软件包的配置文件
rpm -qpc file.rpm
14)查看一个软件包的依赖关系
rpm -qpR file.rpm
*导入签名
*校验:
rpm {-V|--verify} [select-options] [verify-options]
参数:-V:后面加的是软件名称,若该软件所含的文件被改动过,才会列出来
-Va:列出目前系统上面所有可能被改动过的文件
-Vp:后面加的是文件名称,列出该软件内可能被改动过的文件。
-Vf:列出某个文件是否被改动过
u S:文件的容量大小是否被改动
u M:文件类型或文件的属性是否被改变,如是否可被执行等参数已被改变
u 5:MD5这一种指纹码的内容已经不同
u D:设备的主、次代码已经改变
u L:Link路径已被改变
u U:文件的所有者已被改变
u G:文件的所属用户组已被改变
u T:文件的创建时间已被改变
u 所以,如果当一个设置文件所有的信息都被改变过,那么它的显示就会是:
SM5DLUGT C filename
文件类型有下面类型;
u C:设置文件
u d:文档
u g鬼文件,通常是该文件不被某个软件所包含,较少发生
u l:授权文件
u r:自述文件
*数据库重建:
rpm管理器数据库路径:/var/lib/rpm/
二:Yum
概述: yum是通过分析rpm的标题数据后,根据各软件的相关性制作出属性依赖时的解决方案,然后可以自动处理软 件的依赖属性的问题,以解决软件安装或删除与升级的问题。
文件服务器:
ftp://
http://
nfs://
file://
yum客户端配置文件:/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
配置本地yum源
1.挂载系统安装光盘
#mount /dev/cdrom /mnt/cdrom
2.配置本地yum源
#cd /etc/yum.repos.d
3.#ls
会看到四个repo文件
CentOS-Base.repo是yum网络资源的配置文件
CentOS-Media.repo是yum本地资源的配置文件
4. 修改配置文件vim /CentOS-Media.repo
5.禁用默认的yum网资源
将yum网络源配置文件改名为CentOS-Base.repo.bam,(mv /CentOS-Base.repo /CentOS-Base.repo.bak),否则会先在网络源 中寻找适合的包,改名之后直接从本地源读取。
6.显示仓库列表
yum repolist
关于repor文件的格式
所有repository服务器设置都应该遵循如下格式:
l serverid是用于区别各个不同的repository,必须有一个独一无二的名称
l name是对repository的描述,支持像$releasever、$basearch这样的变量
l baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
l 其中url支持的协议有http:// ftp:// file:// 三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:
l 其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch 这样的变量。url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
其中gpgcheck、exclude的含义和[main]部分相同,但只对服务器起作用,failovermethode有两个选项roundrobin和 priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失败则使用下一个, 依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin.
配置国内yum源
系统默认的yum源速度往往不尽人意,为了达到快速安装的目的,在这里修改yum源为国内源。
A、修改/etc/yum.repos.d/CentOS-Base.repo
B、按照repo格式进行仓库指向的定义
C、yum repolist 进行仓库列表检查是否指向成功
yum的repo配置文件中可用的变量
$releasever:当前OS的发行版的主版本号;
$arch:平台
$basearch:基础平台
$YUM0-$YUM9
查询功能:
yum [option] [查询工作项目] [相关参数]
主要参数:
-y:当yum要等待用户输入时,这个选项可以自动提供yes的响应。
--installroot=/some/path:将该软件安装在/some/path中而不使用默认路径
[查询工作项目][相关参数]这方面的参数有:
search:搜索某个软件名称或者是描述的重要关键字
list: 列出目前yum所管理的所有的软件名称与版本,有点类似于rpm -qa
Info:同上,不过有点类似于rpm -qai的运行结果
provides:从文件去搜索软件!类似于rpm -qf的功能
安装/升级功能:yum [install|update] 软件
yum [option] [查询工作项目] [相关参数]
参数:
Install:后面接要安装的软件
update:后面接要升级的软件,若要整个系统都升级,就直接update即可。
删除功能:yum [remove] 软件
编译安装
1.概述:
当前的一些开发者为了程序能在更好的能在不同的发行系统中运行,由于每个系统发行商对于程序的文件格式不一 样,因此开发者便提供源代码给用户,让用户自己通过编译安装来适应本系统。
2.编译流程:
Testapp-VERSION-release.src.rp.---->安装后,使用rpmbuild命令制作成二进制格式的rpm包----->安装
第一步:由于SRPM需要重新编译,而编译的过程当中,我们至少需要有make与其相关的程序,及gcc、c、c++等其 他的编译用的程序语言来进行编译。同时还要安装“Development Tools”,”Server Platfrom Development”开发组 件。
第二步:configure脚本
选项:指定安装位置、指定启用的特性
--help:获取其支持使用的选项
选项分类:
安装路径设定:
--prefix=/PATH/TO/SOMEWHERE:指定默认安装位置,默认为/usr/local
--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置
第三步: make
第四步:make install
第五步:安装后的配置
(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
提示:如果configure安装为默认路径,就无须安装后配置文件。。
本文出自 “lkm” 博客,请务必保留此出处http://boblkm.blog.51cto.com/10835326/1731024
标签:程序包管理
原文地址:http://boblkm.blog.51cto.com/10835326/1731024