软件安装


软件安装

  • rpm
  • yum
  • 源码安装

rpm软件包的管理

rpm包的获取方式:

  1. Centos系统镜像光盘
  2. 网站 rpmfind.net
  3. 比如安装mysql、nginx软件,我们可以去它的官方网站下载:http://www.mysql.com

rpm包格式的说明

[root@love ~]# ls /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
/mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
zsh-5.0.2-28.el7.x86_64.rpm
软件名主版本号次版本号修订release(第几次发布版本)操作系统版本软件包是64位包

修订指是的第几次修改bug。 发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。

安装rpm软件

RPM工具使用分为安装、查询、验证、更新、删除等操作

命令格式:rpm [参数] 软件包

参数:

参数说明
-i是install的意思, 安装软件包
-v显示附加信息,提供更多详细信息
-V校验,对已经安装的软件进行校验
-h --hash安装时输出####标记
  • 在安装和更新升级时候使用软件包全名
  • 对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm下面进行搜索。 当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。

从本地安装

[root@love ~]# rpm -ivh /mnt/Packages/zsh-5.0.2-28.el7.x86_64.rpm
[root@love ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
/bin/zsh

从网上下载直接安装centos epel扩展源

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm   
# 安装centos epel扩展yum源。 注:epel源是对centos7系统中自带的 base源的扩展。

rpm查询功能

用法:rpm -q(query) 常与下面参数组合使用

参数说明
-a(all)查询所有已安装的软件包
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
-i显示已经安装的rpm软件包信息,后面直接跟包名
-l(list)查询软件包中文件安装的位置
-p查询未安装软件包的相关信息,后面要跟软件的命名
-R查询软件包的依赖性

示例:

[root@love mnt]# rpm -q zsh # 查询指定的包是否安装
[root@love mnt]# rpm -qa # 查询所有已安装包
[root@love mnt]# rpm -qa | grep vim # 查询所有已安装包中带vim关键字的包
[root@love ~]# which find # 查看find命令的路径
/usr/bin/find
[root@love ~]# rpm -qf /usr/bin/find # 查询文件或命令属于哪个安装包
[root@love ~]# rpm -qi lrzsz # 查询已经安装的rpm包的详细信息或作用 rpm -qi rpm包名

# 针对没有安装的RPM包,要加参数: -p
[root@love ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-42.el7.x86_64.rpm
[root@love mnt]# rpm -qpl /mnt/Packages/zip-3.0-10.el7.x86_64.rpm #查看rpm安装后,将生成哪些文件

查看软件包内容是否被修改

rpm -V 包名

rpm -Vf 文件路径

示例:

[root@love ~]# which find
/usr/bin/find
[root@love ~]# rpm -qf /usr/bin/find
findutils-4.5.11-5.el7.x86_64
[root@love ~]# rpm -Vf /usr/bin/find #检查具体文件
[root@love ~]# echo aaa >> /usr/bin/find
[root@love ~]# rpm -Vf /usr/bin/find
S.5....T. /usr/bin/find
[root@love ~]# rpm -V findutils #检查包
S.5....T. /usr/bin/find

注:如果出现的全是点,表示测试通过;出现下面的字符代表某测试的失败:

5— MD5 校验和是否改变,你也看成文件内容是否改变
S— 文件长度,大小是否改变
L— 符号链接,文件路径是否改变
T— 文件修改日期是否改变
D— 设备
U— 用户,文件的属主
G— 用户组
M— 模式 (包含许可和文件类型)
?— 不可读文件

rpm包卸载和升级

用法:rpm -e(erase) 包名

[root@love ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
[root@love ~]# rpm -e zsh
[root@love ~]#
[root@love ~]# rpm -qa zsh
# 参数: --nodeps 忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum
[root@love ~]# rpm -e --nodeps lrzsz
# 升级:
[root@love ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm #因为升级时会有一些依赖包要解决。 所以一般我们使用yum update 包 来升级。

解决rpm依赖关系:

[root@love ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm
警告:/mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
mariadb(x86-64) = 1:5.5.56-2.el7 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
perl-DBD-MySQL 被 mariadb-server-1:5.5.56-2.el7.x86_64 需要
解决:
[root@love ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm
[root@love ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm
[root@love ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm

YUM的使用

yum(全称为 Yellow dog
Updater,Modified)是一个前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
YUM:解决依赖关系问题,自动下载软件包,它是基于C/S架构 C=client S=ftp\http\file

配置yum源

  • 配置本地yum源
  1. 挂载镜像:

先确定虚拟机光驱中有加载系统镜像

[root@love Packages]# mount /dev/cdrom /mnt/
[root@love Packages]# ls /mnt/
  1. 配置yum源文件:
vim /etc/yum.repos.d/centos7.repo

插入以下内容

[centos7]               # yum源名称,在本服务器上唯一的,用来区分不同的yum源
name=CentOS7            # 对yum源描述信息
baseurl=file:///mnt     # yum源的路径,提供方式包括FTP(ftp://...)、HTTP(http://...)、本地(file:///... 光盘挂载目录所在的位置)
enable=1                # 1:表示启用yum源;0:禁用
gpgcheck=0              # 1:使用公钥检验rpm包的正确性;0:不校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # 指定进行rpm校验的公钥文件地址
  • Centos7 配置网络yum源
  1. 下载对应系统版本的repo文件
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# wget 下载文件 ,-O 将wget下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写一个要保存的路径,这样还用原来的文件名。
  1. 查看
[root@love yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
# 找到这一条:baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

注:$releasever系统的版本的值等于

[root@love ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
$basearch 等于:x86_64
排错:如果下载Centos-7.repo后,不用能
解决:打开阿里云链接:http://mirrors.aliyun.com/centos/ 找到centos7最新版本号,如:

然后执行:sed进行全文替换

[root@localhost ~]# sed -i  's/$releasever/7.4.1708/g' /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum clean all #清空一下yum缓存
[root@localhost ~]# yum list #查看列表

yum使用

yum常用操作:

[root@love ~]# yum install -y httpd #安装软件包, -y 直接安装
[root@love ~]# yum -y update #升级软件包,改变软件设置和系统设置,系统版本内核都升级
[root@love ~]# yum -y upgrade #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变
[root@love ~]# yum -y update # 不加任何包,表示整个系统进行升级
[root@love ~]# yum info httpd #查询rpm包作用  
[root@love ~]# yum provides /usr/bin/find #查看命令是哪个软件包安装的  
[root@love ~]# yum -y remove 包名 #卸载包
[root@love ~]# yum search keyword #按关键字搜索软件包

yum报错,注意的几个小问题:

  1. 确定光盘是否链接,光盘是否挂载
  2. 配置文件中格式是否正确,字母,符号有没有少写,挂载点和配置文件中设置的是否一致
  3. 网络源需要联网,操作和RPM类似,只是会自动安装依赖项。

yum安装开发工具软件包组

语法:yum groupinstall GROUPNAME

yum grouplist # 查看有哪些软件包组 显示中文,如果想变成英文,则执行以一下命令
[root@bogon Packages]# echo $LANG
zh_CN.UTF-8     
[root@bogon Packages]#LANG=en_US.UTF-8
yum grouplist
[root@localhost Packages]# yum grouplist

# 测试:
[root@love ~]# yum remove gcc -y #卸载开发工具软件组中的gcc包
[root@love ~]# yum groupinstall 'Development tools' -y #安装开发工具软件包组,安装这组软件包时,把gcc再安装上了

tar源码包管理

源码安装nginx

  1. 编译环境如gcc和 gcc-c++编译器,make
yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel # pcre: 支持正则表达式,地址重写rewrite
  1. 准备软件 : nginx-1.12.2.tar.gz
wget -c 官网下载链接
  1. 部署Nginx
[root@love ~]# tar xvf nginx-1.12.2.tar.gz
[root@love ~]# cd nginx-1.12.2
[root@love ~]#./configure --prefix=/usr/local/nginx
[root@love ~]# make -j 4
[root@love ~]# make install

详解源码安装3把斧

  1. ./configure

    • 指定安装路径,例如 --prefix=/usr/local/nginx
    • 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module
    • 和其它软件关联,例如--with-pcre
    • 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求 最终生成:Makefile
  2. make -j 4 # 按Makefile文件编译,可以使用-j 4指定4核心CPU编译,提升速度
  3. make install # 按Makefile定义的文件路径安装
  4. make clean # 清除上次的make命令所产生的object和Makefile文件。使用场景:当需要重新执行configure时,需要执行make clean

删除源码包:

安装完,删除:

make uninstall # 有时删除不干净,所以建议大家安装时,在configure步骤添加一个: --prefix 参数。这样删除或备份时,直接对删除--prefix指定的安装目录操作就可以了。

声明:Rock 版权所有,内容均为原创,欢迎转载。

转载:转载请注明原文链接 - 软件安装


我是一个程序员,致力于网页开发,我还很年轻,什么也不懂。