码迷,mamicode.com
首页 > 其他好文 > 详细

Centos7.5-软件包的管理与安装

时间:2018-10-17 20:06:05      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:node   区分   uri   warning   学习   aliyun   架构   centos7系统   ash   

本节所讲内容:
- 8.1  使用rpm命令-安装-查看-卸载-rpm软件包
- 8.2  yum管理软件包
- 8.3  实战tar源码包管理-srpm源码包安装方法

8.1 软件包的管理

软件包的类型

  • rpm二进制包------》已经使用GCC编译后的
  • tar源码包-----》需要编译
  • RPM概述:RPM是RPM Package
    Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux、SUSE以及Turbo
    Linux等Linux的分发版本都有采用,可以算是公认的行业标准了。

8.1.1 rpm软件包的管理

rpm包的获取方式:

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

例1:[root@xuegod63 ~]# 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。   发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。

8.1.2 安装rpm软件

RPM工具使用分为安装、查询、验证、更新、删除等操作
命令格式:rpm [参数] 软件包
参数:

  • -i 是install的意思, 安装软件包
  • -v 显示附加信息,提供更多详细信息
  • -V 校验,对已经安装的软件进行校验
  • -h --hash 安装时输出####标记

互动:rpm使用时,什么情况下使用软件包全名,什么时候使用软件包名?

  • 全名:在安装和更新升级时候使用
  • 包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm下面进行搜索。
    当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。

8.1.2.1 从本地安装

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

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

例:

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

8.1.3 rpm查询功能

Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍
用法:rpm -q(query) 常与下面参数组合使用

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

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

针对没有安装的RPM包,要加参数: -p

[root@xuegod63 ~]# rpm -qpi /mnt/Packages/php-mysql-5.4.16-42.el7.x86_64.rpm 
。。。
Summary     : A module for PHP applications that use MySQL databases  #php使用mysql数据库的一个模块
 [root@xuegod63 mnt]# rpm -qpl  /mnt/Packages/zip-3.0-10.el7.x86_64.rpm  #查看rpm安装后,将生成哪些文件

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

rpm -V包名
rpm -Vf 文件路径

例:

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

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

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

? — 不可读文件
再后面的c 文件名,它表示的是文件类型

  • c 配置文件

  • d 普通文件

g 不该出现的文件,意思就是这个文件不该被这个包所包含

  • l 授权文件(license file)

  • r 描述文件

互动: 查看系统中所有的rpm包及安装的文件有没有被***修改

root@xuegod63 ~]# rpm -Va  > rpm_check.txt
 > # 这个> 表示标准输出重定向。 将rpm -qa 输出到屏幕上的信息重定向到 rpm_check.txt 文件中。

在文件中加一下这个参数描述
注: 检验时参考了 /var/lib/rpm 目录下的rpm数据库信息

8.1.5 rpm包卸载和升级

用法:rpm -e(erase) 包名

[root@xuegod63 ~]# rpm -qa zsh
zsh-5.0.2-28.el7.x86_64
[root@xuegod63 ~]# rpm -e zsh
[root@xuegod63 ~]# 
[root@xuegod63 ~]# rpm -qa zsh
  • 参数: --nodeps 忽略依赖,建议在卸载时不要用rpm去卸载有依赖关系的包,应该用yum

    [root@xuegod63 ~]# rpm -e --nodeps lrzsz

升级:

[root@xuegod63 ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm    #因为升级时会有一些依赖包要解决。 所以一般我们使用yum update 包  来升级。

8.1.6 解决rpm依赖关系:

[root@xuegod63 ~]# 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@xuegod63 ~]# rpm -ivh /mnt/Packages/mariadb-5.5.56-2.el7.x86_64.rpm 
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/perl-DBD-MySQL-4.023-5.el7.x86_64.rpm 
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/mariadb-server-5.5.56-2.el7.x86_64.rpm 
8.2  YUM的使用
  • yum(全称为 Yellow dog Updater,
    Modified)是一个前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记

    YUM:解决依赖关系问题,自动下载软件包,它是基于C/S架构
    C=client S=ftp\http\file
    Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍

8.2.1 配置yum源

8.2.1.1 配置本地yum源

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

[root@xuegod63 Packages]# mount /dev/cdrom /mnt/ 
[root@xuegod63 Packages]# ls /mnt/

2、配置yum源文件:

[root@xuegod63 ~]# vim /etc/yum.repos.d/centos7.repo   #必须以.repo结尾,插入以下内容
[centos7]
name=CentOS7
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

注:

[centos7]               #yum源名称,在本服务器上唯一的,用来区分不同的yum源           
name= CentOS7           #对yum源描述信息
baseurl=file:///mnt #yum源的路径,提供方式包括FTP(ftp://...)、HTTP(http://...)、本地(file:///...                                                   光盘挂载目录所在的位置)
enabled=1               #为1,表示启用yum源;0为禁用
gpgcheck=0              #为1,使用公钥检验rpm包的正确性;0为不校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7  #指定进行rpm校验的公钥文件地址

8.2.1.2 网络yum源

Centos 7 配置网络yum源
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo 

http://mirrors.aliyun.com/repo/Centos-7.repo
#wget 下载文件 ,-O 将wget下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写一个要保存的路径,这样还用原来的文件名。
查看:

[root@xuegod63 yum.repos.d]# vim /etc/yum.repos.d/CentOS-Base.repo
找到这一条:baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

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

[root@xuegod63 ~]# 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         #查看列表

8.2.2 yum使用

yum常用操作:

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

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

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

    8.2.3 yum安装开发工具软件包组

  • #yum grouplist #查看有哪些软件包组

    语法: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@xuegod63 ~]# yum remove gcc  -y    #卸载开发工具软件组中的gcc包
[root@xuegod63 ~]# yum groupinstall ‘Development tools‘  -y  #安装开发工具软件包组,安装这组软件包时,把gcc再安装上了

8.3 实战tar源码包管理-srpm源码包安装方法

8.3.1 源码安装nginx

    1. 编译环境如gcc和 gcc-c++编译器,make
    1. 准备软件 : nginx-1.12.2.tar.gz

部署Nginx

# yum -y install gcc gcc-c++ make zlib-devel pcre pcre-devel openssl-devel

pcre: 支持正则表达式,地址重写rewrite
开始安装

源码编译3把斧:./configure  , make  ,make install
[root@xuegod63 ~]# tar xvf nginx-1.12.2.tar.gz
[root@xuegod63 ~]# cd nginx-1.12.2
[root@xuegod63 ~]#./configure  --prefix=/usr/local/nginx
[root@xuegod63 ~]#  make -j 4
[root@xuegod63 ~]#  make install

3. 详解源码安装3把斧

./configure

  • a. 指定安装路径,例如 --prefix=/usr/local/nginx
  • b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter
    --with-http_ssl_module
  • c. 和其它软件关联,例如--with-pcre
  • d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
  • 最终生成:Makefile

    #make -j 4 #按Makefile文件编译,可以使用-j 4指定4核心CPU编译,提升速度 # make install #按Makefile定义的文件路径安装 # make clean //清除上次的make命令所产生的object和Makefile文件。使用场景:当需要重新执行configure时,需要执行make clean

8.3.2 删除源码包:

安装完,删除:

make  uninstall   

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

8.3.3 实战2:源码编译出错的5个种完美解决方法

从windows上传extundelete文件到linux,安装xmanager  v5   或者CRT
解压并安装extundelet
[root@xuegod63 extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2 
[root@xuegod63 ~]# cd extundelete-0.2.4
[root@xuegod63]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm 
[root@xuegod63 extundelete-0.2.4]# ./configure   #检查系统安装环境
Configuring extundelete 0.2.4
configure: error: Can‘t find ext2fs library

源码编译出错后,常见解决方法:
共5种方法

  • 方法1:[root@xuegod63 Packages]# rpm -ivh ext2fs^C #按两下tab键。
    一般情况,ext2fs就是要安装的软件包的名字开头。如果存在 自动补全
  • 方法2:[root@xuegod63 Packages]# ls ext2fs #查找完整关键字
  • 方法3:[root@xuegod63 Packages]# ls 2fs #查找部分关键字
  • 方法4: 终极大招 http://www.rpmseek.com/index.html
  • 方法5: 使用yum去搜索

    [root@xuegod63 Packages]# yum search ext2fs

安装库:

[root@xuegod63 Packages]# rpm -ivh e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm 
warning: e2fsprogs-libs-1.41.12-11.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                                                            ########################################### [100%]
    package e2fsprogs-libs-1.41.12-11.el6.x86_64 is already installed
  • 互动:这里显示库已经安装,但是configure时又说找不到。怎么办?
  • 解决:安装了库,却显示找不到。 这种情况: 需要安装库的开发文件

    [root@xuegod63]# rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm

扩展:技巧
查看rpm包安装后生成的文件:

[root@xuegod63 Packages]#rpm -qpl e2fsprogs-devel-1.41.12-11.el6.x86_64.rpm | more
[root@xuegod63 extundelete-0.2.4]# make  -j 4  
[root@xuegod63 extundelete-0.2.4]# make install  #安装
[root@xuegod63 extundelete-0.2.4]# ls /usr/local/bin/extundelete   #查看安装后的文件
/usr/local/bin/extundelete

总结,软件安装方法特点:

  • rpm+yum:方便,软件版本低。稳定性好、管理方便。性能稍差。 源码编译安装:麻烦,软件版本新,可以定制。稳定性稍差、管理稍差。性能好。
    源码编译安装:主要是安装LAMP或LNMP 架构时,我们会用

8.3.4 安装.src.rpm源码包的方法(了解)

srpm: Source RPM 的意思,也就是这个 RPM 档案里面含有原始码( Source Code )。

上传lrzsz-0.12.20-27.1.el6.src.rpm 到linux的/root目录 
[root@xuegod63 ~]# rpm -e lrzsz  #先卸载软件包

编译:
[root@xuegod63 ~]# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm #根据将src.rpm中源码文件编译成可执行的二进制文件。
若顺利执行成功则会在root用户家目录下生成一个:/root/rpmbuild目录。
在/root/rpmbuild/RPMS/x86_64/目录下生成lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm这个rpm文件。

#rpm -ivh rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el7.centos.x86_64.rpm   #安装

Linux架构师高薪入口:

1.学神IT教育官方网站:http://xuegod.ke.qq.com

2.10年行业资深老鸟MK:QQ2659153446

3.加入Linux技术交流QQ群:722287089,即可获得以下福利:

①定期分享免费学习资料与视频(工具+笔记+拓展实战)
②10年行业资深老鸟在线答疑:技能+实战+项目分享+高薪就业
③有机会免费领取Linux云计算集群架构师4册书籍
微信公众号:
技术分享图片
MK老师微信号:
技术分享图片
总结:

  • 8.1 使用rpm命令-安装-查看-卸载-rpm软件包
  • 8.2 yum管理软件包
  • 8.3 实战tar源码包管理-srpm源码包安装方法

Centos7.5-软件包的管理与安装

标签:node   区分   uri   warning   学习   aliyun   架构   centos7系统   ash   

原文地址:http://blog.51cto.com/xuegod/2301289

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!