Linux的rpm包管理

我们都知道,windows的程序无法直接在linux中运行,windows中大量的木马和病毒也无法被linux识别,所有的软件包都必须针对linux再做单独的开发。

软件包分类

源码包 (把源代码直接开放的包)

脚本安装包(源码包写一个安装界面,不需要手动安装)

二进制包(RPM包、系统默认包)

源码包的优点:

1.开源,如果有足够的能力,可以修改源代码

2.可以自由选择所需的功能

3.软件是编译安装,所以更加适合自己的系统,更加的稳定也效率更高

4.卸载方便

缺点:

1.安装步骤较多,尤其在安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误

2.编译过程时间过长,安装比二进制安装时间长

3.因为是编译安装,安装过程中一旦报错新手很难解决。

二进制包的优点:

1.包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

2.安装速度比源码包安装快的多

缺点:

1.经过编译,不再可以看到源代码

2.功能选择不如源码包灵活

3.依赖性(当安装一个软件包须先安装另一个软件包)

RPM:红帽子包管理器(RedHat Package Manager)

rpm包管理方法

rpm命令管理

yum在线管理

rpm包命名规则

所有的rpm包都在光盘里,在Packages目录

httpd-2.2.15-15.el6.x86_64.rpm

httpd   2.2.15   1 5         el6.       x86_64.       rpm

软件包名 软件版本 软件发布的次数 适合的Linux平台 适合的硬件平台  rmp 扩展名

需要注意的是包名和包全名是有区别的

包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意安装路径。(如安装,升级)

包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库。(如查询,卸载)

RPM包依赖性

树形依赖:a——b——c

安装时只能先安装c,再安装b,最后安装a,卸载时卸载c,再卸载b,再卸载a

环形依赖:a——b——c——a

用一条命令把abc同时安装

模块依赖:模块依赖查询网站(www.rpmfind.net)

只要是.so.2的都为库依赖包,不是独立的包,是某一个软件包的软件,我们只要把软件所在的包安装上,也就自动安装上了,依赖性就会被解决。把需要的依赖包进行查询,如图中的是libodcinst.so.2,进去查询。

yum在线管理(解决依赖性)

实现准备一个包含所有rpm包的网站,作为我的在线服务器源,我们只要用在线命令去安装软件,不管我去依赖任何哪一个包,都不需要用用户解决,yum会自动去服务器下载需要的包,然后所有的依赖性都自己解决。

是不是非要上网?不是,除了可以拿网络yum源作为服务器,还可以拿本地光盘作为yum源,因为光盘里包含了所有的rpm包。但是是需要收费的。

 RPM常用命令

RPM  安装

rpm 【选项】 包全名 (一定是包全名,而且是绝对路径或者去/mnt/cdrom/Packages)

-i (install)   安装

-v (verbose) 显示详细信息

-h (hash)    显示进度

--nodeps       不检测依赖性 (虽然有这个选项,但根据上面的理论,你觉得会用它吗?)

当然,事项都是先将光盘挂载上的。

随机测试了个,没有出现依赖包问题,若提示出现的依赖包,就一层一层的安装。

RPM包的升级

-U  (upgrade)  升级

rpm -Uvh 包全名

需要有个比当前系统的包更高级的包,我们现在用的都是光盘中的包,没有更高级的包。

RPM 卸载

-e (erase)卸载

--nodeps  不检查依赖性

rpm -e 包名 (包名,因为是已经装过的包,在后台数据库搜索)

RPM的查询方式

安装和卸载用yum方法更为简单,因为它会自动解决依赖性,但是查询只能通过rpm命令来查询。yum有查询,但是没有rpm查询的多。

rpm -q 包名  查询包是否安装

-q (query)查询

-a(all) 所有

-l (list) 列表

rpm -qa 【包名】  查询所有已经安装过的RPM包

rpm -ql 【包名】  查询包中文件的安装位置

-p (package)    查询未安装包信息

有人看到这里就开始郁闷了,包都没安装,怎么查看安装位置啊。其实linux包安装位置是组建包的时候就决定好的,即使没安装,我们也可以查看它打算装哪

查询系统文件属于哪个RPM包

rpm -qf 系统文件文件名

-f (file)查询系统文件属于哪个软件包

必须是通过包装出来的,才能反向追查

查询软件包的依赖性

rpm -qR 包名

-R (requires)  查询软件包的依赖性

安装appach需要装这么多这么多包。。。查询已经安装过的包的依赖性没有什么意义,主要还是查询为安装包的依赖性。

RPM校验

把rpm包装完之后,把特征记录下来,然后把现在这个文件和原先的文件进行比较,看两个文件之间是否有什么变化。

rpm -V 已安装的包名

-V (verify)校验指定RPM包中的文件

没有任何提示信息,就说明是初始状态

验证内容中8个信息的具体内容如下;

S  文件的大小是否发生改变

M  文件的类型或文件权限是否被改变

5  文件MD5校验和是否改变(可以看成文件的内容是否改变)

D  设备的中,从代码是否发生改变

L  文件的路径是否改变

U  文件的所有者是否改变

G  文件的所属组是否改变

T  文件的修改时间是否改变

文件类型:

c  配置文件 (config file)

d  普通文件  (documentation)

g  “鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含

l   授权文件(license file)

r   描述文件(read me)

RPM包中文件提取

最常用的是误操作,不小心删除某个文件,不需要重新安装服务

rpm2cpio 包全名 |

cpio -idv .文件绝对路径

rpm2cpio   将rmp包转换为cpio格式的命令

cpio  是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件。

cpio 【选项】 <【文件|设备】

-i  copy-in模式,还原

-d  还原时自动新建目录

-v  显示还原过程

首先查看下ls属于哪个软件包,然后用mv造成误删的假象,再用rpm2cpio提取出ls文件来。

这条命令的意思是把

/mnt/cdrom/Packages/coreutils-8.4.31.el6.x86_64.rpm 转变成cpio格式,然后管道命令从转换后的文件中提取/bin/ls保存到当前路径

RPM包管理——yum 在线管理

rpm安装的依赖性非常多,安装非常麻烦,yum就是为了解决依赖性所产生的方法,你只需告诉你的系统需要安装哪个包,它就会自动到服务器上下载软件包,同时,把他依赖的软件包也会自动下载,会自动安装所有的包。

网络yum源

[base]    容器名称,一定要放在[]中

name     容器说明,可以自己随便写

mirrorlist  镜像站点,这个可以注释掉

baseurl    我们的yum源服务器的地址,默认是redhat官方的源服务地址,是可以使用的,当然你也可以更改你喜欢的yum源地址

enabled    此容器是否生效,如果不写或者写成enabled=1都是生效的,写成enabled=0

就是不生效

gpgcheck   如果是1是指rpm的数字证书生效,如果是0则不生效

gpgkey    数字证书的公钥文件保存位置,不用改

网络yum源默认是配置好的,什么都不用更改,直接利用官方网站的yum源服务器进行性下载安装升级

常用yum命令

1.查询

yum list  查询所有可用软件包列表

yum search 关键字  搜索服务器上所有和关键字相关的包

包名和包全名的概念只对rpm命令生效,所以搜索的时候输入包名就可以了,不像rpm,它没有安装,就得输入包全名,yum是去服务器搜索

安装

yum -y install 包名

install  安装

-y  自动回答yes

升级

yum -y update 包名

update  升级

卸载

yum -y remove 包名

remove  卸载

升级和下载都需注意,后面不加包名就是升级和卸载所有,卸载所有大家都知道,但就是卸载某个软件,之前提过依赖包的问题,安装a需要依赖包b,安装b需要依赖包c,他/它会先安装c再安装b,最后才是我们想要的软件a,卸载的时候,会先卸载软件a,再下载依赖包b,最后卸载依赖包a,但依赖包a被不止一个软件c所依赖,yum卸载把依赖包c卸载了,导致其他软件无法使用,甚至系统依赖a,导致系统崩溃。升级所有,会把linux内核也升级了,升级玩linux内核后,需要做下配置如果是在远程登录的话,那么就无法连接了。所以建议安装使用最小化安装,不安装多于软件,尽量不卸载

yum软件组管理命令

yum grouplist   列出所有可用的软件组列表

yum groupinstall 软件组名  (安装指定软件组,组名可以有grouplist查询出来,组名有空

格,用双引号括起来)

yum groupremove  软件组名  卸载指定软件组

光盘yum源搭建

1.挂载光盘

mount /dev/cdrom /mnt/cdrom

2.让网络yum原文件失效

将enabled该为0,也可以将后缀名更改为不是repo结尾的

3.修改光盘yum源文件an

baseurl=file:///mnt/cdrom   光盘的挂载地址(这里是三个///,file://是协议名,第三个/是跟路径)

源码包安装:

上面说了源码包和rpm包的区别,还有个很大的区别的就是安装的位置的区别。

rpm是安装在默认位置中


/etc


配置文件安装目录


/usr/bin


可执行的命令的安装目录


/usr/lib


程序所使用的函数库保存位置


/usr/share/doc


基本的软件使用手册保存位置


/usr/share/man


帮助文件保存位置

源码包安装位置

安装在指定位置中,一般是/usr/local/软件名

/etc/init.d/包名 start

service 包名 start (红帽专有命令,一开始玩kali的时候...你们懂得)不管是什么方法,service去搜索的是安装的默认路径,归根到底是用绝对路径的方式

安装

1.安装c语言gcc的编辑器

2.下载源码包 (http://mirror.bit.edu.cn)

3.解压下载的源码包

4.进入解压路径(进入一般都会有INSTALL安装说明和README使用说明,可以查看安装说明进行安装)

1../configure 软件配置与检查(定义需要的功能选项,检测系统环境是否符合安装要求,把定义好的功能选项和检测系统环境的信息都写入Makefile,用于后续的编辑)

2.make 进行编译

3.make install 编译安装

源码包卸载直接把目录删除就行了

脚本安装包

认为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。

同样的,下载软件,解压缩,进入压缩目录,只想能够安装脚本

./setup.sh 执行下一步下一步,是不是回到的windows的感觉,源码安装只是简单的介绍下,我平时常用的就是用rpm命令进行查询,然后用yum进行安装。

时间: 2024-08-25 16:24:36

Linux的rpm包管理的相关文章

Linux基本命令——RPM包管理工具

WHAT?什么是RPM? RPM是一种软件包格式,文件的扩展名为".rpm",其管理机制最早由Red Hat公司提示,后来随着版本升级,融入更多的优秀特性,先已成为众多Linu发行版中公认的软件包管理标准. WHY?为什么要使用它? RPM包管理器通过建立统一的文件数据库,对在Linux系统中安装.卸载.升级的各种.rpm软件包进行详细的记录,并能够自动分析软件包之间的依赖关系,保持各应用程序在一个协调.有序的整体环境中运行. WHERE?在哪里使用? 很多Linux主流的软件都有.r

Linux之rpm包管理

rpm包管理 注意:内核不推荐升级,如果需要新版内核,可进行安装,linux可多版本内核共存,启动时进行内核选择即可,以免造成不稳定因素./var/lib/rpm 不要破坏,几乎不可重建,重建后数据也没有 主要掌握:rpm -qa "vsft*" 查询vsft开头的包rpm -e vsftpd 卸载rpm -q vsftpd &> /dev/null | rpm -i /media/Packages/vsftpd- 安装rpm -ql tree:查询包内文件rpm -qf

Linux学习—rpm包管理

前言 在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

Linux下RPM包管理

概述 一种用于互联网下载包的打包及安装工具,它包含在某些linux分发版中.它生成具有.RPM扩展名的文件.RPM是Redhat Package Manager(Redhat软件包管理工具)的缩写.这一文件格式虽然打上了Redhat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux.S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用.可以算是公认的行业标准了. RPM包的名称格式 apache-1.3.23-11.i386.rpm - “apache”:软件名

Linux中rpm包管理器

包全名: 1.操作的包是没有安装的软件包时,使用全名,而且要注意路径 2.例如:jdk-8u131-linux-x64.rpm包名: 1.操作的是已经安装好的软件包,使用包名,是搜索/var/lib/rpm/中的文件数据库 2.例如:jdk-8u131-linux-x64 1.安装 rpm -ivh jdk-8u131-linux-x64.rpm 参数:-ivh 说明:安装.显示信息.显示进度 备注: a.用rpm命令安装的时候,需要跟包全名 b.rpm安装过程中,可能会出现依赖的关系,不让你装

linux软件包管理——rpm包管理

软件运行环境API:Application Programming Interface 应用程序接口(应用程序和操作系统之间的接口) 凡是符合该api标准的应用程序都可以在支持该api的操作系统上编译通过 程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接  静态编译:自身包含所有需要调用的库文件  动态编译:自身不包含,需要时调用共享库文件(.so文件)ABI:Application Binary Interface 应用程序二进制接口 规定了二进制文件的格式.

linux软件包管理之一(rpm包管理)

开场白 1.软件的安装卸载是很平常的事情,但是在linux上面却也这么的不简单.Linux的其中一个哲学思想就是 一个程序只做一件事,并且做好. 组合小程序来完成复杂任务.这样做有很多好处.但世界上的东西总是两面的,有得必有失.各个小程序之间往往会存在着复杂的依赖关系. 2.再往前走一步.软件最初的安装方式只有一种,那就是源代码编译安装,这种方式安装的软件更贴近本机的系统运行环境,但也更复杂.不仅要解决软件之间的依赖关系(所依赖的软件还要再编译安装),还要配置开发编译环境(可能会抓狂的),一切都

【Linux相识相知】rpm包管理

我们日常在使用Windows的时候,如果要安装某个软件,最简单的方法就是在程序包的官网直接下载软件包到本地,一般是以.exe或者.msi格式的文件,然后一直下一步下一步就能安装成功了,但是在使用linux的操作系统的时候也许不是这么的友好,即使现在有的linux发行版也可以通过简单的搜索点击安装来实现软件包的安装,但这并不一种很好的安装方法,因为你必须安装桌面环境,消耗和占用一定的内存资源,除非只是你日常使用.本次博客就如何使用rpm命令来实现centos上的软件包的安装与管理,rpm也许不是最

Linux程序包管理之rpm包管理

Linux程序包管理 软件包管理 功能:将编译好的程序的各组成文件打包成一个或几个程序包文件,为了方便的实现程序包的安装.升级.卸载.查询.校验.数据库维护. API:Application ProgramInterface应用程序接口: ABI:Application BinaryInterface应用二进制接口: Unix-like和linux在ABI层次是相同的 linux程序包:ELF格式: 但是与Windows相差甚远 windows程序包:exe,msi格式: API层次兼容不一定A