Linux软件安装管理
编辑Linux软件安装管理
软件包分类
-
源码包
-
脚本安装包
-
二进制包(RPM包,系统默认包)
Windows下的软件无法在Linux中安装
源码包
-
源码包的优点是:
-
开源,如果有足够的能力可以修改源代码
-
可以自由选择所需要的功能
-
软件是编译安装,所以更加适合自己的系统,更加稳定效率也更高
-
卸载方便
-
-
源码包的缺点
-
安装的过程步骤比较多 ,尤其是安装较大的软件集合的时候(如LAMP环境搭建),容易出现拼写错误
-
编译的过程时间比较长,安装比二进制安装时间长
-
因为是编译安装,一旦安装出错新手很难解决
-
二进制包-RPM包(系统默认包)
-
二进制包的优点
- 包管理系统简单,只通过几个命令就可以实现包的安装,升级,查找和卸载
- 安装速度比源码包安装快很多
-
二进制包的缺点
- 经过编译,不再可以看到源代码
- 功能选择不如源码包灵活,因为是软件提供者编译好的非本机编译,所以效率不如源码包的效率高
- 依赖性
脚本安装包
-
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装,但是实际的安装还是源码包或者二进制包
-
优点:安装简单快捷
-
缺点:完全丧失了自定义性
RPM命令管理
-
RPM包的来源:所有的RPM包都在系统光盘中
/mnt/cdrom/Packages
-
RPM包的命名规则
httpd-2.2.15-15.el6-centos.1.i686.rpm
- httpd 软件包名
- 2.2.15软件版本
- 15软件的发布次数
- el6.centos适合的Linux平台
- i686 适合的硬件平台
- rpm rpm包的扩展名
-
RPM包的依赖性
-
树形依赖 a->b->c;需要先安装c再安装b最后再安装c
-
环形依赖 a->b->c->a
-
模块依赖(库依赖) :查询网站
www.rpmfind.net
-
缺少相对应的库文件,而不是软件包,需要找到库文件在那个rpm包里面,然后再依赖上即可
-
-
包全名与包名:
- 包全名:操作的包是没有安装的软件包的时候使用包全名,而且要注意路径
- 包名:操作已经安装的软件包的时候,使用包名,是搜索
/var/lib/rpm
中的数据库
RPM安装
-
rpm -ivh 包全名
- 选项
-i(install)
安装 -v(verbose)
显示详细信息-h (hash)
显示进度--nodeps
不检测依赖性
- 选项
RPM包升级和卸载
rpm -Uvh 包全名
升级也相当于全新的包,需要使用包全名- 选项
- -U(upgrade) 升级
其实升级安装可以当做安装命令使用 ,若是没有安装直接安装新包,否则直接安装
RPM包卸载
-
rpm -e 包名
- 选项 :
-e(erase)
卸载 --nodeps
不检查依赖性
- 选项 :
-
这里卸载也需要按照依赖顺序进行卸载, 实际操作过程中不允许使用
--nodeps
-
和安装命令不一样的是卸载命令可以再任意的地方输入,RPM命令会自动去数据库查找
源码包卸载只需要将软件包所在的目录删掉即可
RPM包的查询
-
查询是否安装
-
rpm -q 包名
查询包是否已经安装-q (query)
-
rpm -qa
查询所有已经安装的RPM包-a(all)
- 例子
rpm -qa |grep httpd
- 例子
-
-
查询软件包的详细信息
rpm -qi 包名
- 选项: -i(information) 查询软件信息
-p
还可以查询未安装包信息(package)
-
查询包中文件安装位置
-
rpm -ql 包名
-
选项
-l
列表(list) -
选项
-p
还可以查询未安装包信息(package),即使软件未安装,也可以查看要装在哪
-
-
查询系统文件属于哪一个RPM包
rpm -qf 系统文件名(这个文件必须是rpm安装包产生不可以是手动建立或者系统临时文件)
- 选项 :-f 查询系统文件属于哪个软件包(file)
-
查询软件包的依赖性
-
rpm -qR 包名
-
选项 -R 查询软件包的依赖性(requires)
-
选项
-p
查询未安装包信息(packages)
-
实际使用直接安装即可,报了依赖性错误,再去安装依赖,这样查询的太多,不够易用
RPM包默认安装位置
RPM包校验
-
rpm -V 已安装的包名
- 选项 -V 校验指定RPM包中的文件(verify)
rpm -V httpd
#命令输出内容
S.5....T. c /etc/httpd/conf/httpd.conf
-
验证内容中的八个信息的具体内容如下
-
文件类型
RPM包中的文件提取
-
rpm2cpio 包全名 | cpio -idv .文件绝对路径
-
rpm2cpio
将rpm包转换为cpio格式的命令 -
cpio
是一个标准工具 ,他用于创建软件档案文件和从档案文件中提取文件cpio 选项 <[文件|设备]
-i
:copy-in
模式,还原-d
: 还原时自动新建目录-v
: 显示还原过程
-
通过归档文件还原丢失的命令,若是命令找不到了可以使用该方法在归档文件中找回
.
不可以省略,代表当前目录;不要在光盘目录直接提取,因为光盘是只读的
RPM包安装的缺点
* 安装过程中,rpm包的依赖性太强
* 如果所有的RPM包都是手工安装,则RPM包的使用难度较大
yum在线管理
- 官方通过访问搭建的远程服务器来自动进行包的管理,依赖(包依赖和库文件依赖),并进行下载安装rpm包;若是没有网络,也可以通过光盘建立本地yum
- RedHat yum服务属于售后支持,需要付费(但是有绕开的办法)
- yum只能安装卸载升级yum包,但是不能查询校验,需要查询校验还是得需要RPM命令
yum源文件
![img](https://gitee.com/iMist/Linux/raw/master/image2/image6.png)
mirrorlist
镜像站点和yum服务器站点baseurl
选择一个即可- enabled使容器生效,其他的有重复配置,选择一个镜像即可
- 数字证书默认生效的,防止下载到第三方的非官方包造成安全性问题
- CentOS-Base.repo 默认生效,有网络的情况下采用默认配置下载官方的包,网速慢可以更换镜像源
光盘yum源搭建
- 当没有网络的环境使用光盘搭建本地yum源
mkdir /mnt/cdrom 建立挂载点
mount /dev/cdrom /mnt/cdrom/ 挂载光盘
cd /etc/yum.repos.d/ 进入yum源目录
mv CentOS-Base.repo CentOS-Base.repo,bak 修改yum源文件后缀名,使其失效
-
使光盘yum源生效
- 注释必须顶头注释,不可以缩进
- 配置光盘源路径的三个文件,在centos5以前若是路径文件不存在会报错并且无法下载源,centos6之后会报错,但是不影响,但是还是建议注释,保留一个可用的光盘挂载路径即可
- 使enabled=1使其生效
- 其他部分不动
-
查看yum的可用软件包
yum list
确定光盘yum源起作用 ,vi 查看光盘yum源是否与当前使用的源名字一致;此时即使Linux不能联网也可以使用
其实本地yum源更加快速稳定不占用带宽,若是没有更新需求可以使用本地yum源
yum命令
-
常用yum命令
-
yum list
查询所有的可用软件安装包列表 -
yum search 关键字
搜索服务器上所有和关键字相关的包 -
yum -y install 包名
install 安装 ,-y
自动回答yes
-
例子
yum -y install gcc
安装C语言解释器 -
yum -y update 包名
升级 ,并且自动回答yes -
yum -y remove 包名
卸载并且自动应答yes -
服务器使用最小化安装,用什么软件安装什么,尽量不要卸载
yum 软件组管理命令
-
-
yum grouplist
列出所有可用的软件组列表 -
yum groupinstall 软件组名
安装指定的软件组,组名可以由grouplist查询出来 -
注意:软件组名必须是英文,第一步查看的时候若是中文的语言环境,需要
LANG=en_US
切换成英文,切换回中文LANG=zh_CN.utf8
切换回中文编码和中文语言环境 -
yum groupremove 软件组名
卸载指定的软件组yum 安装只需要包名即可,自动添加依赖包和依赖库
源码包和RPM包的区别
-
安装之前区别:概念上的区别
-
安装之后的区别:安装位置不同
-
RPM包安装的位置
-
是在默认的安装位置中
-
rpm 安装可以指定安装位置
rpm --help |grep prefix
-
rpm -e httpd
提供卸载命令,但是rpm不推荐修改默认的安装位置
- /etc/rc.d/init.d/httpd start 安装路径启动
- service httpd start 直接使用命令启动(默认安装)
-
安装不同的位置带来的影响,启动方法不一样
-
rpm包安装的服务可以使用系统服务管理命令(service) 来管理,例如rpm包安装 的apache的启动方法是:
linux标准的启动方式就是 文件路径 加上启动命令,使用默认的安装路径命令直接保存在 sbin或者bin目录下,可以直接使用
源码包安装位置
-
安装在指定位置,一般是
/usr/local/软件名/
-
源码包没有卸载命令,直接删除安装路径下的文件即可
-
源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,只能使用绝对路径对服务进行管理
-
如:
/usr/local/apache2/bin/apachectl start
源码包安装
-
安装准备 ,安装C语言编译器
gcc
,下载源码包http://mirror.bit.edu.cn/apache/httpd
若是给众多客户端进行访问,为了要求效率,建议使用源码包,若是本机使用,直接使用编译好的rpm包即可
-
安装注意事项
-
源码保存位置
/usr/local/src
-
软件安装位置 :
/usr/local
-
没有安装停止并且没有报错说明安装成功,如何确定安装过程报错:
- 安装过程停止
- 并出现 error warning 或no提示
-
-
源码包安装过程
-
下载源码包
-
解压缩下载的源码包
-
进入解压缩目录
-
./configure 软件配置与检查
- 定义需要的功能选项;
./configure --help
查看功能选项;./configure --prefix=/usr/local/apache2
指定安装路径,安装完成自动创建目录 - 检测系统环境是否符合安装要求
- 把定义好的功能选项和检测系统环境的信息都写入
Makefile
文件用于后续的编辑
- 定义需要的功能选项;
-
make
编译 -
make clean
清除缓存文件和临时文件,若是编译出错需要执行一下重新编译 -
make install
编译安装 -
若是安装出错,不仅需要清除缓存,还需要删除安装目录
4.源码包卸载 -
不需要卸载命令,直接删除安装目录即可,不会遗留任何垃圾文件
-
查看安装步骤,查看源码解压包下的 INSTALL 文件
![img](https://gitee.com/iMist/Linux/raw/master/image2/image11.png)
#### 注意事项
-
setup
弹出的界面关闭防火墙; -
注意源码包的Apache和rpm包的apache一定不可以使用相同的端口会出现端口冲突,但是可以通过两种方式同时安装
-
实际安装Apache建议使用源码包的安装,因为需要给客户端访问并且有性能需求
脚本安装
-
linux只有源码包和rpm包,只是通过脚本编写的安装命令封装了复杂的安装过程
-
补充:Nginx服务器
-
NGINX是一款轻量级的web服务器/反向代理服务器以及电子邮件(IMAP/POP3) 代理服务器,由俄国公司在2004年发布
-
Nginx与Apache,lighttpd的综合对比
Nginx的并发访问远高于Apache服务器
-
准备工作
- 关闭rpm包安装httpd和mysql ,因为脚本安装的软件会占用80端口和mysql的3306端口
- 保证yum源正常可用 ,
yum list
源配置是否正常 - 关闭selinux和防火墙
`vi /etc/selinux/config SELINUX=disabled #然后重启计算机
-
centos.sh分析
-
所谓的一键安装包,实际上还是安装的源码包与rpm包,只是把安装过程写成了脚本,便于初学者安装
-
优点:简单快捷方便
-
缺点:
- 不能定义软件安装的版本(可以在脚本中等待用户交互)
- 不能定义所需要的软件功能
- 源码包的优势丧失
-
-
下载,然后解压或者执行脚本连带下载执行脚本一键安装包
[LMNP脚本下载路径](http://lnmp.org/install.html)
-
脚本一键安装包
新版本安装变成了
./install.sh
- 0
- 0
-
分享