Linux软件包管理

1. 软件包管理简介

2. RPM包管理-rpm命令管理

2.1 包命名与依赖性

2.2 安装升级与卸载

2.3 查询

2.4 校验和文件提取

3. RPM包管理-yum在线管理

4. 源码包管理

4.1 源码包和RPM包的区别

4.2 源码包安装过程

5. 脚本包管理


1. 软件包管理简介

源码包:可以看到源代码,但是安装时间较慢,脚本安装包类似Windows安装软件, 他是写了安装界面的源码包

优点:

  1. 开源,如果有足够的能力,可以修改源代码
  2. 可以自由选择所需的功能
  3. 软件是编译安装,所以更适合自己的系统,使用更加稳定也效率更高
  4. 卸载方便,直接删除安装目录

缺点:

  1. 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出错
  2. 编译过程时间较长,安装比二进制安装时间长
  3. 因为是编译安装,安装过程中一旦报错新手很难解决

二进制包:RPM包,系统默认包,厂商已经进行了编译,看不到源代码,但是安装时间较快

优点:

  1. 包管理系统简单,只通过几个命令就可以实现包的安装,升级,查询和卸载
  2. 安装速度比源码包安装快得多

缺点:

  1. 经过编译,不再可以看到源代码
  2. 功能选择不如源码包灵活
  3. 依赖性(依赖性指的是要想安装A包就得先安装B包,要想安装B包又得先安装C包,所以只能以CBA的顺序安装RPM包,删除的时候得按ABC顺序删除安装包,基本上所有的RPM包全有依赖性)

2. RPM包管理-rpm命令管理

2.1 包命名与依赖性

RPM包命名规则
例子:Httpd-2.2.15.el6.centos.1.i686.rpm

  • Httpd 软件包包名
  • 2.2.15 软件版本
  • 15 软件发布的次数
  • el6.centos 适合的Linux平台
  • i686 适合的硬件平台(noarch 表示任何硬件平台都可以安装)
  • rpm rpm包扩展名

注意

  • Httpd-2.2.15.el6.centos.1.i686.rpm为包全名,Httpd 为包名,Linux系统命令严格区分两者
  • Linux不支持扩展名,如果自己组建rpm包,都以rpm结尾,这样更加清晰


RPM包依赖性

树形依赖:a→b→c
环形依赖:a→b→c→a:环形依赖需要把a,b,c三个同时安装
模块依赖:被依赖文件以.so.[数字]结尾的为库依赖,需要直接安装这个软件所在的软件包,安装这个包时需要进入网站 www.rpmfind.net.


2.2 安装升级与卸载

包全名:操作的包是没有安装的软件包时,而且要注意路径。(安装、省级)
包   名:操作以及安装的软件包时,是默认在搜索/var/lib/rpm中的数据库。(查询、卸载)


 RPM安装

rpm -ivh 包全名


-i 安装(install)
-v 显示详细安装信息(verbose)
-h 显示进度(hash)
–nodeps 不检测依赖性 一般不用,安装时都得显示依赖性
注意:安装一定要用包全名

RPM包升级

rpm -Uvh 包全名

-U 升级(upgrade) Linux严格控制大小写
-v 显示详细安装信息(verbose)
-h 显示进度(hash)
–nodeps 不检测依赖性 一般不用,安装时都得显示依赖性

RPM包卸载

rpm -e 包名
-e 卸载(erase)
–nodeps 不检查依赖性

2.3 查询

RPM包查询

rpm -q 包名 查询是否安装
-q 查询(query)
-a 所有(all)
rpm -qa 查询所有安装的包 
rpm -qa | grep [关键字] 查询所有含义关键字的包

rpm -qi 包名 查询安装过软件包详细信息
-i 查询软件信息(information)
-p 查询未安装包信息(package)
rpm -qip 包全名 查询没安装过软件包详细信息 因为包没有安装所以得加包全名,因为包在生产好的时候他的信息就已经生成,所以可以查到没安装好的包的信息

rpm -ql 包名 查询包中文件安装位置
-l 列表(list)
-p 查询未安装包信息(package)

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

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

安装升级包全名,其他用包名


2.4 校验和文件提取

RPM包校验

rpm -V 已安装的包名 RPM包
-V 校验指定RPM包中的文件(verify)


例子:
rpm -V httpd 显示:
S.5……T. c /etc/httpd/conf/heepd.conf


验证内容中的8个信息的具体内容:
S:文件大小是否改变
M:文件的类型或文件的权限(rwx)是否被改变
5:文件MD5校验和是否改变(可以看成文件内容是否改变) 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 将rpm包转换为cpio格式的命令
cpio 是一个标准工具,他用于创建软件档案文件和从档案文件中提取文件

3. RPM包管理-yum在线管理

yum软件管理命令

1. yum list 查询所有可用软件包列表
2. yum search [关键字(包名)] 搜索服务器上所有和关键字相关的包
3. yum -y install [包名] 安装软件包  -y 自动回答yes
4. yum -y update [包名] 升级软件包 -y 自动回答yes
注意:yum -y update 后必须加包名,否则就是全盘更新,包括Linux内核也会更新,Linux内核在更新完成之后需要在本地进行配置,内核才可以启动,如果你是在服务器上跑这条命令,服务器直接崩溃,永远无法连接,再也不能启动!!!

5. yum -y remove 包名 卸载包 -y 自动回答yes
注意:yum -y remove卸载会把包所有的依赖包都会卸载,有时候会把系统文件也同时卸载,小心使用,尽量不要多用!!!

Linux 服务器安装软件包原则:
最小化安装,不安装多余软件,使用什么软件安装什么软件,手工装,尽量不卸载,尤其yum卸载尽量不要用!!!

yum软件组管理命令

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

yum groupinstall “软件组名”  安装指定软件组,组名可以由grouplist查询出来,如果组名之间有空格,用双引号扩起来

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

4. 源码包管理

4.1 源码包和RPM包的区别

安装之前的区别:概念上的区别
安装之后的区别:安装位置不同

RPM包默认安装路径(绝大部分软件文件安装位置)

/etc 安装文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib 程序所使用的函数库保存位置
/usr/share/doc/ 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

源码包安装位置:
安装在指定位置当中,一般是 /usr/local/软件名/

安装位置不同带来的影响


RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的Apache的启方法是:/etc/rc.d/init.d./httpd start,service httpd start (红帽系列专有命令),RPM包的启动文件全在/etc/rc.d/init.d./里,servic会搜索RPM包所有的安装路径,所以service才能

启动RPM包软件,但是启动不了源码包软件,因为源码包在/usr/local里,和RPM包不一样,源码包启动使用绝对路径加start


4.2 源码包安装过程


这里举例(安装Apache)说明一下:

1.安装准备
安装C语言编译器
下载源码包
http://mirror.bit.edu.cn/apache/httpd/

2.注意事项
源码包保存位置:/usr/local/src
软件安装位置:/usr/local
然后确定安装过程报错:安装过程停止,并出现error,warning或者no提示,即发生错误
把电脑本机下载好的源码包传输到Linux系统或者服务器上
Windows下载WinSCP软件进行本机与虚拟机或者远程传输
Mac连接远程阿里云服务器,终端使用命令 scp进行传输:
 

3.解压下载到源码包
使用命令 tar -jxvf httpd-2.4.43.tar.bz2
如果是tar.gz压缩包可以使用 tar -zxvf 命令

4.进入解压缩目录
输入命令:cd httpd-2.4.43
INSTALL:安装说明
README:使用说明
进入安装说明:vi INSTALL
$ ./configure --prefix=PREFIX 编译前准备
$ make 进行编译
$ make install 编译安装
$ PREFIX/bin/apachectl star 启动命令
这些为详细的安装步骤,其中:
./configure为软件配置与检查 我们也称编译前准备
1.定义需要的功能选项。
2.检测系统环境是否符合安装要求
3.把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑。

4.定义安装路径
输入命令:./configure --prefix=/usr/local/apache2

5.编译:
输入命令:make 进行编译 

不会在指定位置安装任何东西  make clean 报错即可清空

6.完成编译:
输入命令:make install 编译安装

7.启动:
输入命令:/usr/local/apache2/bin/apachectl start
$ PREFIX/bin/apachectl star中 $ PREFIX为软件安装路径
 

源码包直接删除目录即可删除干净

一般访问量很大的软件需要更适合本OS,会选择源码安装

生产环境不会同时安装源码包和RPM包

5. 脚本包管理


脚本包:脚本安装包并不是独立的软件包类型,是一种源码包,是人为把安装过程写成了自动安装的脚步,只要执行脚本,定义简单的参数,就可以完成安装,非常类似于Windows下软件的安装方式。(常见于驱动包)比如安装Webmin 网页系统用户管理,图形化工具管理


安装程序以.sh结尾 下一步点回车,再输入的时候如果想删除字符按ctrl+退格键
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值