Linux软件安装管理

一、软件包管理简介
1、软件包分类
1)源码包
#脚本安装包
2)二进制包(RPM包、系统默认包)

2、源码包
源码包的优点是:
— 开源,如果有足够的能力,可以修改源代码
— 可以自由选择所需的功能
— 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高
— 卸载方便
源码包的缺点
— 安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
— 编译过程时间较长,安装比二进制安装时间长
— 因为是编译安装,安装过程中一旦报错新手很难解决

3、RPM包
二进制包的优点:
— 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
— 安装速度比源码包安装快的多

二进制包缺点:
— 经过编译,不再可以看到源代码
— 功能选择不如源码包灵活
— 依赖性

4、脚本安装包
所谓的脚本安装包,就是把复杂的软件包安装过程写成了程序脚本,初学者可以执行程序脚本实现一键安装。但实际安装还是源码包和二进制包
— 优点:安装简单、快捷
— 缺点:完全丧失了自定义性

二、RPM命令管理
1、RPM包命名规则
1)RPM包的来源
RPM包在系统光盘中(Packages)

2)RPM包命令原则
httpd-2.2.15-15.el6.centos.1.i686.rpm
— httpd软件包名
— 2.2.15软件版本
— 15软件发布的次数
— el6.centos适合的Linux平台
— i686适合的硬件平台
— rpm rpm包扩展名

3)RPM包依赖性
— 树形依赖:a->b->c
— 环形依赖:a->b->c->a
— 模块依赖:模块依赖,查询网站:www.rpmfind.net

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

2)RPM安装
rpm -ivh 包全名
选项:
— -i(install):安装
— -v(verbose):显示详细信息
— -h(hash):显示进度
— –nodeps:不检测依赖性

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

4、卸载
rpm -e 包名
选项:
— -e(erase):卸载
— –nodeps:不检查依赖性

5、RPM包查询
1)查询是否安装
rpm -q 包名
#查询包是否安装
— -q(query):查询

rpm -qa
#查询所有已经安装的RPM包
— -a(all):所有

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

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

RPM包默认安装位置
The RPM package default installation location

4)查询系统文件属于哪个RPM包
rpm -qf 系统文件名
选项:
— -f(file):查询系统文件属性于哪个软件包

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

6、RPM包校验
1)RPM包校验
rpm -V 已安装的包名
选项:
— -V(verify):校验指定RPM包中的文件

验证内容中的8个信息的具体内容如下:
— S:文件大小是否改变
— M:文件的类型或文件的权限(rwx)是否被改变
— 5:文件MD5校验和是否改变(可以看成文件内容是否改变)
— D:设备的主从代码是否改变
— L:文件路径是否改变
— U:文件的属主(所有者)是否改变
— G:文件的属组是否改变
— T:文件的修改时间是否改变

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

2)RPM包中文件提取
rpm2cpio 包全名 | cpio -idv .文件绝对路径
— rpm2cpio
#将rpm包转换为cpio格式的命令
— cpio
#是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

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

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

三、yum在线管理
1、Yum源文件

[root@localhost ~]# vi /etc/yum.repos.d/CentOS-Base.repo
-- [base]:容器名称,一定要放在[]中
-- name:容器说明,可以自己随便写
-- mirrorlist:镜像站点,这个可以注释掉
-- baseurl:我们的yum源服务的地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址
-- enabled:此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效
-- gpgcheck:如果是1是指RPM的数字证书生效,如果是0则不生效
-- gpgkey:数字证书的公钥文件保存位置,不用修改

2、光盘搭建yum源
1)挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom
#建立挂载点
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
#挂载光盘

2)使用网络yum源失效

[root@localhost ~]# cd /etc/yum.repos.d/
#进入yum源目录
[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak
#修改yum源文件后缀名,使其失效

3)使光盘yum源生效

[root@localhost ~]# vim CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/  #地址改为你自己的光盘挂载地址如:file:///mnt/cdrom
        file:///media/cdrom/
        file:///media/cdrecorder/  #注释这两个不存在的地址
gpgcheck=1
enabled=0      #把enabled=0改为enabled=1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

3、yum命令
1)常用yum命令
(1)查询

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

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

(2)安装

[root@localhost ~]# yum -y install 包名
选项:
-- install:安装
-- -y:自动回答yes
例如:
[root@localhost ~]# yum -y install gcc

(3)升级

[root@localhost ~]# yum -y update 包名
选项:
--  update:升级
-- -y:自动回答yes

(4)卸载

[root@localhost ~]# yum -y remove 包名
选项:
-- remove:卸载
-- -y:自动回答yes

2、YUM软件组管理命令

[root@localhost ~]# yum grouplist
#列出所有可用的软件组列表

[root@localhost ~]# yum groupinstall 软件组名
#安装指定软件组,组名可以由grouplist查询出来

[root@localhost ~]# yum groupremove 软件组名
#卸载指定软件组

四、源码包管理
1、源码包和RPM包的区别
1)安装之前的区别:概念上的区别

2)安装之后的区别:安装位置不同

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

4)安装位置不同带来的影响
#RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是

[root@localhost ~]# /etc/rc.d/init.d/httpd start
或
[root@localhost ~]# service httpd start
#service命令是redhat系统专有的命令

#而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
[root@localhost ~]# /usr/local/apache2/bin/apachectl start

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

2)安装注意事项
#源代码保存位置:/usr/local/src/
#软件安装位置:/usr/local/
#如何确定安装过程报错:
— 安装过程停止
— 并出现error、warning或no的提示

3)源码包安装过程

#下载源码包
#解压缩下载的源码包
[root@localhost ~]# tar -zxvf httpd-2.2.9.tar.gz
#进入解压缩目录
[root@localhost ~]# cd httpd-2.2.9
#./configure 软件配置与检查
-- 定义需要的功能选项。
-- 检测系统环境是否符合安装要求。
-- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编译。
[root@localhost ~]# ./configure --prefix=/usr/local/apache2
#指定安装路径
[root@localhost ~]# make 
#预编译
[root@localhost ~]# make clean
#如果出错使用这个清除编译
[root@localhost ~]# make install 
#编译安装

五、脚本安装包
强大的Nginx服务器
#Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POPS)代理服务器,由俄国公司在2004年发布
Nginx comparison with Apache, Lighttpd

准备工作
#关闭RPM包安装的httpd和MySQL
#保证yum源正常使用
#关闭SELinux和防火墙

[root@localhost ~]# vi /etc/selinux/config
SELINUX=enforcing   #改为 SELINUX=disabled
#关闭SELinux

下载LAMP
http://lnmp.org/install.html

#脚本一键安装包
[root@localhost ~]# wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh

centos.sh脚本分析
#所谓的一键安装包,实际上还是安装的源码包与RPM包,只是把安装过程写成了脚本,便于初学者安装
#优点:简单、快速、方便
#缺点:
— 不能定义安装软件的版本
— 不能定义所需要的软件功能(源码包的优势丧失)

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据