linux软件安装管理

 

目录

1、软件包管理简介

①、源码包

②、RPM包

③、脚本安装包

2、rpm命令管理

①、RPM包的来源

②、RPM包的命名规则

③、RPM包的依赖性

④、包全名与包名

⑤、RPM安装

⑥、升级与卸载

⑦、RPM包的查询

⑧、RPM包校验

⑨、RPM包文件提取


以下是讲如何在Linux字符界面下安装软件。

1、软件包管理简介

linux中的软件安装包分为:源码包和二进制包(RPM包,系统默认包)。

①、源码包

源码包的优点是:

  • 开源,如果有足够的能力,可以修改源代码
  • 可以自由选择所需的功能
  • 软件是编译安装,所以更加适合自己的系统,更加稳定有效
  • 卸载方便

源码包的缺点是:

  • 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP(linux+apache+mysql+php)环境搭建),容易出错
  • 编译过程时间较长,安装比二进制安装时间长
  • 因为是编译安装,安装过程中一旦报错新手很难解决,不适合linux的初学者

②、RPM包

红帽系的linux系统(如centos,fedora,suse等)一般用RPM,Debian系的linux系统(如ubuntu,B2D等)则是采用dpkg机制。

RPM包是一种二进制安装包:

  • 优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快;
  • 缺点:不能看源代码;功能选择不如源代码灵活;依赖性;

③、脚本安装包

所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装的还是源码包和二进制包

  • 优点:安装简单,快捷
  • 缺点:完全丧失了自定义性

2、rpm命令管理

①、RPM包的来源

RPM包在系统光盘中

②、RPM包的命名规则

httpd-2.4.6-67.el7.centos.x86_64.rpm

httpd 软件包名
2.4.6 软件版本
67 软件发行的次数
el7.centos 适合的linux平台
x86_64 适合的硬件平台
rpm rpm包扩展名

③、RPM包的依赖性

  • 树形依赖:a->b->c
  • 环形依赖:a->b->c->a
  • 模块依赖:*.so.2等库函数文件等,会藏身于某个rpm软件包中,查询网站:www.rpmfind.net

④、包全名与包名

  • 包全名:操作的是没有安装的软件包时,使用包全名。而且要注意路径
  • 包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据库,不用注意路径

⑤、RPM安装

rpm -ivh 包全名
选项:
-i(install): 安装
-v(verbose): 显示详细信息
-h(hash)   : 显示安装进度
--nodeps     : 不检测依赖性(不推荐使用,即使能安装成功,有属性依赖的软件也无法正常使用) 

⑥、升级与卸载

升级命令为:

rpm -Uvh 包全名
选项:
-U(upgrade)升级

卸载命令为:(RPM包安装时会依据原作者的设置将文件安装到系统的各个目录中,如果手动去删除,简直要命,因此为了方便卸载,linux给出了卸载RPM包的卸载命令)

rpm -e 包名
选项:
-e(erase)卸载
--nodeps 不检测依赖性(真正的工作中同样不推荐使用)

⑦、RPM包的查询

yum方法是不支持RPM包的查询,因此学习RPM包的查询命令很有必要。

1):查询是否安装

rm -q 包名
#查询包是否安装(query是查询的意思)

rpm -qa
#查询所有已经安装的RPM包(all表示所有)

实例:

2)查询软件包详细信息

rpm -qi 包名
选项:
-i: 查询软件信息(information)
-p: 查询未安装包信息(package)

实例1:查询已安装的软件包的信息

实例2:查询未安装的软件包信息

3)查询包中文件的安装位置

rpm -ql 包名
选项:
-l:   列表(list)
-p:   查询未安装包信息(package)

实例:查看apache软件的文件的安装位置

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

rpm -qf 系统文件名
选项:
-f:     查询系统文件属于哪个软件安装包(file)

实例:查询/etc/httpd/conf/httpd.conf文件属于哪个安装包

5)查询软件包的依赖性

rpm -qR 包名
选项:
-R:      查询软件包的依赖性(requires)
-p:      查询未安装包信息(package)

⑧、RPM包校验

校验 (Verify) 的功能主要在于提供系统管理员一个有用的管理机制!作用的方式是『使用 /var/lib/rpm底下的数据库内容来比对目前 Linux 系统的环境下的所有软件文件 』也就是说,当你有数据不小心遗失, 或者是因为你误杀了某个软件的文件,或者是不小心不知道修改到某一个软件的文件内容, 就用这个简单的方法来验证一下原本的文件系统吧!好让你了解这一阵子到底是修改到哪些文件数据了!验证的方式很简单:

rpm -V 已安装的包名
选项:
-V:     校验指定的RPM包中的文件(verify)(会列出被修改过的该软件的文档名及路径)

rpm -Vp 某个RPM文件的文件名
rpm -Vf 在系统上面的某个文件
rpm -Va 列出系统上面所有可能被更改过的文件

例子:验证httpd服务的软件文档是否被修改过

首先,直接使用rpm -V httpd,发现没有任何结果:(这表明httpd的所有文件都未被更改过)然后vi /etc/httpd/conf/httpd.conf,在此文件的注释行加上一些内容(加上abc),

然后使用rpm -V httpd,结果为:

这表示,此文件被改动过了。其中具体的字母表示的意思如下:

字母含义
S文件大小是否改变
M文件的类型或文件的权限(rwx)是否被改变
5文件MD5校验和是否被改变(可以看成文件内容是否改变)
D设备的主从代码是否改变
L文件路径是否改变
U文件的属主(所有者)是否改变
G文件的属组是否改变
T文件的修改时间是否改变
P功能已经被改变

因此从rpm -V httpd命令的结果来看,该文件的大小,内容,文件的修改时间都被改变了,没有被改变的属性会用"."来代替。而其中的"c"代表文件类型是配置文件。具体的文件类型有:

字母含义
c配置文件(config file)
d普通文件(documentation)
g“鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
L授权文件(License file)
r描述文件(read me)

经过验证的功能,你就可以知道那个文件被更动过。那么如果该文件的变更是『预期中的』, 那么就没有什么大问题,但是如果该文件是『非预期的』,那么是否被入侵了呢?呵呵!得注意注意啰!一般来说,配置文件 (configure) 被更动过是很正常的,万一你的 binary program 被更动过呢? 那就得要特别特别小心啊!

⑨、RPM包文件提取

rmp2cpio 包全名 | cpio -idv .文件绝对路径

-rpm2cpio
#将rpm包转换为cpio格式的命令

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

cpio 选项 < [文件|设备]
选项:
-i:  copy-in模式,还原
-d:  还原时自动创建目录
-v:  显示还原过程

实例:提取/bin/ls文件的方法

rpm -qf /bin/ls
#查询ls命令属于哪个软件包
mv /bin/ls /tmp/
#造成ls命令误删除假象
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-47.el6.x86_64.rpm | cpio -idv ./bin/ls
#提取RPM包中的ls命令道当前目录的/bin/ls下
cp /root/bin/ls /bin/
#把ls命令复制到/bin/目录,修复丢失的ls文件

经过以上命令后提取的ls问价结果如下:(这个技巧还是很重要的,尤其是在某些系统命令文件被误删除的情况下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值