Linux的软件安装管理

软件包分类

  • rpm
  • yum
  • source code

源码包

源码包优点

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

源码包缺点

  • 安装过程步骤较多,较容易出错
  • 编译过程时间较长,安装比二进制包安装时间上
  • 编译安装一旦报错新手很难解决

二进制包(RPM软件包和系统默认包)

二进制包优点

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

二进制包缺点

  • 经过编译,不能在看到源码
  • 功能选择不如源码包灵活
  • 依赖性

RPM命令管理

RPM软件包来源

答:RPM软件包在系统光盘中

mkdir /mnt/cdrom # 创建光盘挂载点
mount /dev/cdrom /mnt/cdrom/ # 将光盘挂在到挂载点
mount: block device /dev/sr0 is write-protected, mounting read-only
[[email protected] ~]
# df -Th # 查看挂载情况
Filesystem     Type     Size  Used Avail Use% Mounted on
... ...
/dev/sr0       iso9660  4.2G  4.2G     0 100% /mnt/cdrom
[[email protected] ~]
# cd /mnt/cdrom/Packages/ # 进入到packages目录
[[email protected] /mnt/cdrom/Packages/]
# ls # 查看光盘下的rpm软件包
... ...
zlib-1.2.3-29.el6.i686.rpm
zlib-1.2.3-29.el6.x86_64.rpm
zlib-devel-1.2.3-29.el6.i686.rpm
zlib-devel-1.2.3-29.el6.x86_64.rpm

RPM软件包命名规则

httpd-2.2.15-29.el6.centos.x86_64.rpm为例: httpd 软件包名称 2.2.15 软件版本 29 软件发布的次数 el6.centos适合的Linux平台 x86_64 适合的硬件平台 rpm rpm软件包扩展名

RPM软件包依赖性(树形、环形、模块)

  • 树形依赖:a->b->c
  • 环形依赖:a->b->c->a
  • 模块依赖:查询网站

RPM软件包安装

软件包全名与软件包名

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

RPM软件包的安装命令

rpm -ivh 软件包全名

选项释意

  • -i (install) 安装
  • -v (verbose) 显示详细信息
  • -h (hash) 显示进度
  • --nodeps 不检测依赖性安装选项 (不建议使用的选项) 例如:使用 rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm 安装http软件包。

RPM软件包的卸载命令

rpm -e 软件包名

选项释意

  • -e (erase) 卸载
  • --nodeps 不检查依赖性卸载选项 例如:使用 rpm -e httpd-2.2.15-29.el6.centos.x86_64.rpm 卸载http软件包。

RPM软件包的升级命令

rpm -Uvh 软件包全名

选项释意

  • -U (upgrade) 升级

例如:使用 rpm -Uvh httpd-2.2.15-29.el6.centos.x86_64.rpm 升级http软件包。

rpm相关查询命令

查询软件是否安装

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

选项释意

  • -q (query) 查询

例如:使用 rpm -q gcc 查询gcc软件包是否安装。

rpm -qa 软件包名 查询所有已经安装过得RPM软件包 选项释意

  • -q (query) 查询
  • -a (all) 所有

例如:

[[email protected] /mnt/cdrom/Packages]
# rpm -qa |grep gcc # 配合管道,查询gcc相关的RPM软件包名
gcc-4.4.7-16.el6.x86_64
gcc-c++-4.4.7-16.el6.x86_64
gcc-gfortran-4.4.7-16.el6.x86_64
libgcc-4.4.7-16.el6.i686
libgcc-4.4.7-16.el6.x86_64

查询软件包详细信息

rpm -qi 软件包名

选项释意

  • -q (query) 查询
  • -i (information) 软件信息
  • -p (package) 未安装的软件包
[[email protected] /mnt/cdrom/Packages]
# rpm -qi gcc # 查询已安装的软件包详细信息
Name        : gcc                          Relocations: (not relocatable)
Version     : 4.4.7                             Vendor: CentOS
Release     : 16.el6                        Build Date: 2015年07月23日 星期四 10时43分01秒
Install Date: 2015年10月30日 星期五 21时46分11秒      Build Host: c6b8.bsys.dev.centos.org
Group       : Development/Languages         Source RPM: gcc-4.4.7-16.el6.src.rpm
Size        : 19496512                         License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Signature   : RSA/SHA1, 2015年07月25日 星期六 04时41分11秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://gcc.gnu.org
Summary     : Various compilers (C, C++, Objective-C, Java, ...)
Description :
The gcc package contains the GNU Compiler Collection version 4.4.
You'll need this package in order to compile C code.
[[email protected] /mnt/cdrom/Packages]
# rpm -qip httpd-2.2.15-29.el6.centos.x86_64.rpm # 查询未安装包的详细信息
Name        : httpd                        Relocations: (not relocatable)
Version     : 2.2.15                            Vendor: CentOS
Release     : 29.el6.centos                 Build Date: 2013年08月14日 星期三 01时30分33秒
Install Date: (not installed)               Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-29.el6.centos.src.rpm
Size        : 3076447                          License: ASL 2.0
Signature   : RSA/SHA1, 2013年08月14日 星期三 01时32分39秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

查询软件包文件安装位置

rpm -ql 软件包名

选项释意

  • -q (query) 查询
  • -l (list) 列表
  • -p (package) 未安装的软件包

例如:

[[email protected] /mnt/cdrom/Packages]
# rpm -ql gcc
/usr/bin/c89
/usr/bin/c99
/usr/bin/cc
/usr/bin/gcc
/usr/bin/gcov
/usr/bin/protoize
/usr/bin/unprotoize
/usr/bin/x86_64-redhat-linux-gcc

RPM软件包默认安装位置

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

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

rpm -qf 系统文件名

选项释意

  • -q (query) 查询
  • -f (file) 查询系统文件属于那么RPM软件包

例如:

[[email protected] /mnt/cdrom/Packages]
# rpm -qf /usr/share/man/man1/gcc.1.gz # 查看gcc.1.gz文件属于哪个rpm软件包
gcc-4.4.7-16.el6.x86_64

查询软件包的依赖性

rpm -qR 软件包名

选项释意

  • -q (query) 查询
  • -R (requires) 查询软件包的依赖性
  • -p (package) 查询未安装包的信息

RPM软件包校验

rpm -V 已经安装的软件包名
[[email protected] /etc/httpd]
# rpm -V httpd # 检测出我们修改了apache的配置文件大小
S.5....T.  c /etc/httpd/conf/httpd.conf

1. 验证内容中的8个信息的具体内容如下:

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

2. 文件类型:

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

RPM软件包中文件的提取

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

rpm2cpio 将RPM软件包转换成cpio格式的命令

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

例如:系统重要文件丢失

rpm -qf /bin/ls # 查询ls命令属于哪个软件包

mv /bin/ls /tmp/. # 模拟系统ls命令删除

cat /mnt/cdrom/Packages/coreutils-8.4-31.el6.x86_64.rpm |cpio -idv ./bin/ls # 提起RPM包中ls命令到当前目录的/bin/ls下(注意因为光盘是写保护,执行该命令的时候不要在光盘目录下)

cp /root/bin/ls /bin/. # 把ls命令复制回/bin/目录下,修复文件丢失

yum在线管理

优点:将所有软件包放在官方服务器上,当进行yum在线安装的时候,可以自动解决依赖性问题。

yum源文件

cat /etc/yum.repos.d/CetnOS-Base.repo

配置 说明
[base] 容器名称,一定要放在[]中,可以自定义
name 容器说明,可以自定义
mirrorlist 镜像站点,可以注释掉
baseurl 我们的yum源服务器的地址,默认是CentOS官方的yum源服务器,是可以使用的,如果觉得慢可以改变成自定义的yum源地址
enabled 次容器是否生效,如果不写或者写成enable=1都是生效,写成enabled=0就是不生效
gpgcheck 如果是1是指rpm的数字证书生效,如果是0则不生效
gpgkey 数字证书的公钥文件保存位置,不用修改

光盘搭建yum源

挂载光盘

  1. mkdir /mnt/cdrom 建立挂载点
  2. mount /dev/cdrom /mnt/cdrom 挂载光盘
  3. mv CentOS-Base.repo CentOS-Base.repo.luo.20151101 # 修改yum源文件后缀名,使其失效
  4. vim CentOS-Media.repo编辑光盘yum源
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom/      # 地址为当前光盘挂载的地址
#        file:///media/cdrom/     # 注释不存在的地址
#        file:///media/cdrecorder/
gpgcheck=1
enabled=1    # 把enabled=0改为1,让这个yum源配置文件生效
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

如图:

  1. 使用yum list命令查看修改结果
[[email protected] /etc/yum.repos.d]
# yum list 
... ...
zlib-static.x86_64    1.2.3-29.el6  c6-media
zsh.x86_64      4.3.10-7.el6     c6-media
zsh-html.x86_64   4.3.10-7.el6       c6-media

yum命令

yum安装

yum -y install 软件包名

选项释意

  • -install 安装
  • -y (yes) 自动回答yes

例如: 安装gcc编译器软件包

yum -y install gcc

yum查询

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

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

yum升级

yum -y update 软件包名

选项释意

  • -update 升级
  • -y (yes) 自动回答yes

例如:

yum -y update gcc 升级gcc编译器软件包

yum卸载(不推荐使用)

yum -y remove 软件包名

选项释意

  • -remove 卸载
  • -y (yes) 自动回答yes

服务器使用最小化安装,用什么软件安装什么,尽量不卸载。

yum软件组管理命令

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

yum grouplist

安装指定软件组

组名可以由grouplist查询得到(注意:此命令指定的软件组名必须为英文名称)

yum groupinstall 软件组名
给系统安装中文环境支持
[[email protected] /etc/yum.repos.d]
# echo $LANG # 查看目前语言环境
zh_CN.UTF-8
[[email protected] /etc/yum.repos.d]
# LANG=en # 将当前会话shell设置为en语言
[[email protected] /etc/yum.repos.d]
# yum grouplist|grep -i chinese # 搜索中文语言包
Failed to set locale, defaulting to C
   Chinese Support [zh]
[[email protected] /etc/yum.repos.d]
# yum groupinstall "Chinese Support" # 执行安装中文语言包支持
[[email protected] /etc/yum.repos.d]
# LANG=zh_CN.UTF-8 # 将当前会话shell设置为en语言

卸载指定软件组

yum groupremove 软件组名

源码包管理

源码包和RPM包的区别

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

  • RPM软件包安装的服务可以使用系统服务管理名录(service)来管理,例如RPM包安装apache的启动方法是:

    • /etc/rc.d/init.d/httpd start Linux的标准启动命令
    • service httpd start 红帽系统使用的启动命令
  • 源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中,所以只能使用绝对路径对服务的管理,如: /usr/local/apache2/bin/apachectl start 当然也可以将/usr/local/apache2/bin/apachectl脚本复制到/etc/rc.d/init.d/.下才能使用service命令管理apache

源码包的安装过程

安装准备

  • 安装C语言编译器 gcc

  • 下载源码包,这里以apache为例

注意事项

  • 源代码保存位置 /usr/local/src

  • 软件安装位置 /usr/local/.

  • 如何确定安装过程报错

    • 安装过程停止

    • 出现error、warning或者no等提示

源码包安装过程

  • 下载源码包

  • 解压缩下载的源码包

  • 进入解压缩目录(必须执行)

  • ./configure 软件配置与检查

    • 定义需要的功能选项

    • 检测系统环境是否符合安装要求

    • 把定义好的功能选项和检测系统环境的信息都写入Makefile文件用于后续的编辑

  • make 编译

    • make clean 清除之前的编译结果(在编译报错时使用)
  • make install 编译安装

脚本安装包

准备工作

  • 关闭RPM方式安装的httpd和MySQL软件包

  • 保证yum源正常使用

  • 关闭SELinux和iptables防火墙

一键安装脚本分析

所谓的一键安装包,实际上还是安装的源码软件包和RPM软件包,只是把安装过程写成了脚本,便于初学者安装。 优点:简单、快速、方便 缺点:1. 不能自定义安装软件的版本,2.不能定义所需要的软件功能 3. 源码包的优势丧失

下载

下载lnmp安装包,解压安装包并进入安装包目录:wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxvf lnmp1.2-full.tar.gz && cd lnmp1.2-full

详情参见:http://lnmp.org/download.html

results matching ""

    No results matching ""