Linux云计算架构-软件包管理(rpm包、yum软件仓库、源码包三种配置方式及其使用)

文章目录

  • Linux云计算架构-软件包管理
    • 1. 软件包管理
      • 1.1 源码包
      • 1.2 二进制包(RPM包、系统默认包)
    • 2. RPM包-rpm命令管理
      • 2.1 RPM命名规则
      • 2.2 RPM包依赖性(rpm包的缺点)
      • 2.3 RPM软件包安装和卸载
        • 2.3.1 RPM安装
        • 2.3.2 RPM升级
        • 2.3.3 RPM卸载
      • 2.4 RPM软件包查询
      • 2.5 RPM包校验
      • 2.6 RPM包中文件提取
    • 3. RPM包-yum在线管理
      • 3.1 配置本地yum源
      • 3.2 配置网络yum源
      • 3.3 yum软件包的使用
      • 3.4 YUM软件组的使用
    • 4. 源码包管理
      • 4.1 源码包和RPM包安装后的区别
        • 安装位置的不同
        • 安装位置的不同造成服务管理方式的不同
      • 4.2 源码包安装httpd
      • 4.3 使用脚本安装包安装Webmin(生产中不建议使用,大牛都是用纯命令的)

Linux云计算架构-软件包管理

1. 软件包管理

1.1 源码包

源码包将源码开放给用户,这也符合linux最大的特点就是开源。源码包安装时间久,主要是编译的时间久。

优点

①开源

②可以自由选择所需的功能

③软件是编译安装,适合自己的系统,更稳定效率更高

④卸载方便,直接删除就行了。

缺点

①安装过程步骤较多,容易出现拼写错误。

②编译过程时间较长

③编译安装过程中报错,新手难以解决。

源码包包括脚本安装包,即由专业人员将源码包的安装过程写成脚本的形式,简化安装步骤。

1.2 二进制包(RPM包、系统默认包)

源码包经过编译之后,形成二进制包。二进制包可从各个软件包的官网上下载。

优点

①rpm包管理系统简单,几个命令实现安装、升级、查询、卸载

②安装速度比源码包安装快得多

缺点

①经过编译,不可以看到软件包的源代码

②功能固定

③二进制包之间具有依赖性(cba[安装顺序]、abc[卸载顺序])

2. RPM包-rpm命令管理

2.1 RPM命名规则

httpd-2.2.15-15.e16.centos.1.i686.rpm

httpd 软件包名

2.2.15 软件包版本

15 发布次数

e16.centos 适用的linux平台

i686 适用的硬件平台【i686指32位操作系统包、x86_64是指64位操作系统包,64位可在32位上安装,而32位不能在64位上安装。noarch指在32位和64位上都可以运行】

rpm rpm扩展名

自己编译生成rpm包建议以.rpm结尾

包名:httpd

包全名:httpd-2.2.15-15.e16.centos.1.i686.rpm

# 查看内核的所有信息
[root@master ~]# uname -a
Linux master 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# 查看内核版本
# 适用于64位操作系统
[root@master ~]# uname -r
3.10.0-957.el7.x86_64

2.2 RPM包依赖性(rpm包的缺点)

①树形依赖abc

②环形依赖abca

③模块依赖:即安装的rpm包依赖于某一个模块。而树形依赖和环形依赖都是依赖于某一个rpm包。
可以在以下网站找到包含该模块的rpm包,然后安装即可。
www.rpmfind.net

2.3 RPM软件包安装和卸载

包全名:操作的包是没有安装的软件包,使用包全名,并且要注意路径。(在安装和升级时使用)

包名:操作已经安装的软件包,使用包名,搜素的是/var/lib/rpm下的文件。(在查询和卸载时使用)

2.3.1 RPM安装

常用语法:rpm -ivh 包全名

可使用包全名的绝对路径也可以进入到相应目录直接使用包全名

在安装的使用要把依赖包先装上!!!(特别烦)

参数 作用
-i 安装
-v 显示详细信息
-h 显示安装进度
–nodeps 不检测依赖性(一般在生产环境中不用这个参数)
# 本地镜像安装rpm包
# 可以看到lrzsz的rpm包的版本号是0.12.20-36.el7,运行在64位操作系统上
# 安装好lrzsz软件包后,可以在xshell中使用rz和sz命令传输文件。
[root@master ~]# df -h
/dev/sr0                        4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
[root@master ~]# ll /run/media/root/CentOS\ 7\ x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 
-rw-rw-r--. 1 root root 79376 7月   4 2014 /run/media/root/CentOS 7 x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
[root@master ~]# rpm -ivh /run/media/root/CentOS\ 7\ x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 
警告:/run/media/root/CentOS 7 x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:lrzsz-0.12.20-36.el7             ################################# [100%]
[root@master ~]# rpm -q lrzsz
lrzsz-0.12.20-36.el7.x86_64

2.3.2 RPM升级

-U 升级upgrade
rpm -Uvh 包全名

建议使用yum update升级软件包,可以解决rpm包依赖问题。

2.3.3 RPM卸载

在任何目录下都能执行卸载语句。
-e 卸载erase
rpm -e 包名
注意:安装的时候顺序(abc),卸载的时候倒序(cba)

[root@master ~]# rpm -e lrzsz
[root@master ~]# rpm -q lrzsz
未安装软件包 lrzsz

2.4 RPM软件包查询

参数 作用
-q 查询已安装的软件包(query)
-a 所有的(all)
-i 软件包信息(information)
-p 未安装的软件包(package),要用包全名才能查询到
-l 包中文件列表(list)
-f 查询系统文件属于哪个包(file)[反向追查]
-R 查询软件包的依赖性
# 最简单的形式,必须要有-q参数
# 安装过的包用包名,未安装的包用包全名
[root@master ~]# which find
/usr/bin/find
# 查询该文件属于哪个rpm软件包
[root@master ~]# rpm -qf /usr/bin/find
findutils-4.5.11-6.el7.x86_64
# 查询该软件包的包依赖
[root@master ~]# rpm -qR findutils
# 显示rpm包详细信息
[root@master ~]# rpm -qi findutils
# 查询该rpm包是否被安装
[root@master ~]# rpm -qa | grep findutils
findutils-4.5.11-6.el7.x86_64
# 查询下lrzsz软件包是否安装
[root@master ~]# rpm -qpi /run/media/root/CentOS\ 7\ x86_64/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm 

2.5 RPM包校验

作用:用来校验rpm包里的文件是否有被修改。

运行以下语句,若无提示信息,则没有被修改。

rpm -V 包名

校验内容里的信息解读:

– 第一部分–文件的修改情况–

SM5DLUGT

S:文件大小是否改变

M:文件类型和文件大小是否改变

5:文件MD5校验是否改变,或者说文件内容是否改变

D:设备的代码是否改变

L:文件路径是否改变

U:文件的所有者是否改变

G:文件的所属组是否改变

T:文件的修改时间是否改变

– 第二部分–文件类型–

c:配置文件(config file)

d:普通文件(documentation)

g:毒文件(ghost file),不该出现的文件

l:授权文件(license file)

r:描述文件(read me)

2.6 RPM包中文件提取

作用:当误操作删除了某个重要的配置文件或者某个命令,如/bin/ls,可以使用RPM包查询找出该文件属于哪个RPM包,再从该RPM包中进行文件提取,最后覆盖即可。

#查询被删除文件属于哪个rpm包
rpm -qf 文件的绝对路径
#提取rpm包里的对应文件到当前目录下
rpm2cpio 包全名 | cpio -idv .文件绝对路径
#复制文件到指定路径 
cp ./bin/ls /bin/ls

rpm2cpio:将rpm格式转化为cpio格式

cpio:标准工具,用于创建软件归档文件和从归档文件中提取指定文件

-i:copy-in模式,还原

-d:还原时自动新建目录

-v :显示还原过程

3. RPM包-yum在线管理

yum(Yellow dog Updater, Modified)

为了解决RPM包安装的依赖性。
缺点:对于redhat而言,yum的使用是要收费的。对于Centos,yum的使用是免费的。

基于 RPM 包管理,能够从指定的服务器上下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐的一次次下载、安装。

3.1 配置本地yum源

在目录/etc/yum.repos.d/下创建文件,编写以下内容。为了不让网络yum源影响到本地yum源,可以重命名网络yum源或者将网络yum源移动到其他目录下。

# 使用光盘镜像配置yum源
# 一个yum源的组成
# enabled不写则默认生效,即值为1
[root@master ~]# cat /etc/yum.repos.d/centos7.repo 
[base]
name=CentOS-7-Base
baseurl=file:///media/cdrom
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

# 使用了数字证书校验rpm包,需导入数字证书到相应目录
[root@master ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@master ~]# ll /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
-rw-r--r--. 1 root root 1690 11月 23 2018 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

# 临时挂载光盘并使用
[root@master ~]# mkdir /media/cdrom
[root@master ~]# mount /dev/cdrom /media/cdrom
# 永久挂载光盘
[root@master ~]# vim /etc/fstab
/dev/cdrom /media/cdrom iso9660 defaults 0 0
选项 作用
[name] 容器名称
name 容器作用
mirrorlist 镜像站点,一般不写。
baseurl yum源服务器的地址
enabled 容器是否生效,1或不写都是生效,0为生效。
gpgcheck RPM数字证书是否生效,1生效,0不生效。在生产中建议使用数字证书。
gpgkey 数字证书的公钥地址保存位置,需导入数字证书。

3.2 配置网络yum源

在yum源的配置文件中,baseurl支持三种形式,分别是file、ftp、http。baseurl使用http即是使用了网络yum源。

阿里开源镜像:https://developer.aliyun.com/mirror/

阿里yum网络源:http://mirrors.aliyun.com/repo/

centos7镜像源:http://mirrors.aliyun.com/repo/Centos-7.repo

centos8镜像源:http://mirrors.aliyun.com/repo/Centos-8.repo

centos镜像:https://mirrors.aliyun.com/centos/

centos7数字证书下载地址:https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

centos8数字证书下载地址:https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

# 删除其他yum源
[root@master ~]# rm -f /etc/yum.repos.d/*

# 下载centos7镜像源
[root@master ~]# wget -O /etc/yum.repos.d/centos7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@master ~]# ll /etc/yum.repos.d/centos7.repo 

# 网络yum源不需要挂载就可以直接使用

3.3 yum软件包的使用

# 查询所有可用的软件包列表
yum list
# 查询服务器上所有与关键字相关的包
yum search 包名
# 查看软件包的作用
yum info httpd
# 查看命令是哪个软件包提供的
[root@master ~]# which find
/usr/bin/find
[root@master ~]# yum provides /usr/bin/find

# 安装
yum install -y 包名

# 升级
# 若使用yum update -y是升级所有软件包,包括linux内核的升级,远程操作时会导致服务器的崩溃无法开机,慎用,建议不用。
yum update -y 包名

# 建议使用以下方法升级软件包,不改变内核
yum upgrade

# 卸载
# 卸载某个rpm包,其所依赖的rpm包也会被卸载,而可能出现其他rpm包也是依赖这些rpm包的,导致其他功能无法使用或服务器直接崩溃。
yum remove -y 包名
# 注意:安装服务器,用什么装什么,尽量不要用yum卸载。

3.4 YUM软件组的使用

# 查询所有可用的软件组列表
[root@master ~]# yum grouplist

# 中文软件组名
[root@master ~]# echo $LANG
zh_CN.UTF-8
[root@master ~]# LANG=US.UTF-8
# 英文软件组名
[root@master ~]# echo $LANG
US.UTF-8

# 安装和卸载都是使用英文的软件组名
# 安装软件组
[root@master ~]# yum groupinstall GNOME Desktop
# 卸载软件组
[root@master ~]# yum groupremove GNOME Desktop

4. 源码包管理

4.1 源码包和RPM包安装后的区别

安装位置的不同

①RPM包安装位置:

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

除了以上文件外,有些RPM包还有其他的安装路径。可使用命令rpm -ql 包名查询。

②源码包安装位置: 安装在指定位置,默认是:/usr/local/软件名/

安装位置的不同造成服务管理方式的不同

①RPM包安装的服务可以使用系统服务管理命令(service或者systemctl)

# 三种方式启动rpm包安装的服务
# 传统的启动服务方式
/etc/rc.d/init.d/httpd start

service httpd start

systemctl start httpd

②源码包安装的服务不可以使用系统服务管理命令。只能从绝对路径中启动。

源码包服务启动文件的绝对路径 start

4.2 源码包安装httpd

# 安装C语言编辑器
[root@master ~]# yum install -y gcc
# 下载源码包
# httpd官网源码下载地址:http://archive.apache.org/dist/httpd/
# 最新版本httpd源码包:http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
# 官网源比较慢,建议下载到本地再上传到linux服务器
# 可以使用Winscp工具上传到linux服务器
# 源码包保存位置 /usr/local/src
# 软件安装位置 /usr/local/httpd
# 如何确认安装过程报错,出现以下情况才算报错:安装过程停止并且出现error、warning、no等提示。(报错了很难解决)
# 解压源码包
[root@master ~]# tar xzvf httpd-2.2.9.tar.gz 
# 进入源码包文件夹
[root@master ~]# cd httpd-2.2.9/
# 根据以下文件,可以查看一个陌生的源码包的基本信息和安装信息。
# README   说明文件
# INSTALL  安装文件
# 编译前准备 
# ./configure --prefix=安装路径
#定义需要的功能选项
#检测系统环境是否符合安装要求
#把定义好的功能选项和检测系统环境信息都写入Makefie文件中,用作后续的编辑。
[root@master httpd-2.2.9]# ./configure --prefix=/usr/local/httpd
# 编译
# 如果在编译前准备和编译过程中报错,可以使用make clear清空编译过程中产生的临时文件。
[root@master httpd-2.2.9]# make
# 编译安装
[root@master httpd-2.2.9]# make install
# 启动httpd服务
[root@master httpd-2.2.9]# /usr/local/httpd/bin/apachectl start
# 打开firefox,输入192.168.8.112,可以看到出现It works!
# 通过上述步骤,httpd已经安装完毕。
# 卸载httpd只需要删除安装目录即可。即rm -rf /usr/local/httpd/
# 如果安装的服务对外开放,访问量大,建议使用源码包安装。

4.3 使用脚本安装包安装Webmin(生产中不建议使用,大牛都是用纯命令的)

脚本安装包是大神弄好的一个自动化安装的脚本,运行就可以极为简便的安装软件。但比较少。
Webmin是一个基于Web的linux系统管理界面,可以通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务。

# 下载
[root@master ~]# wget https://prdownloads.sourceforge.net/webadmin/webmin-1.941.tar.gz
# 解压
[root@master ~]# tar xzvf webmin-1.941.tar.gz
# 运行脚本
[root@master ~]# cd webmin-1.941/
[root@master webmin-1.941]# ./setup.sh
# 安装位置
# Config file directory [/etc/webmin]:Enter
# 日志文件位置
# Log file directory [/var/webmin]:Enter
# perl安装位置
# Full path to perl (default /usr/bin/perl):Enter
# Webmin占用端口号
# Web server port (default 10000):Enter
# 登录用户名及密码
# Login name (default admin):Enter
# Login password:
# Password again:

# 登录网址
http://master:10000/
# 或者
http://192.168.8.112:10000/
# 如果发现打不开,请检查网络及防火墙。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上就是软件包管理的全部内容了,学习永不止步!!!

你可能感兴趣的:(Linux云计算架构工程师)