Linux 运维养成记 - Linux 软件包管理

1. RPM 软件包管理

Linux 软件包分为二进制包,源码包,其中二进制包无需编译,可直接安装使用,源码包则需要编译后才能运行。通常,通过后缀的不同,可以区分二进制包和源码包,如.tar.gz.zip.rar结尾的包属于源码包,以.rpm结尾的包是二进制包。
以下为 rpm 命令参数解析:

参数 解释
-a 查询已安装的软件包
-q 询问用户,输出信息
-l 打印软件包列表
-f 查询包含 file 的软件包
-i 显示软件包信息
-v 打印输出详细信息
-U 升级 rpm 包
-h 软件安装时,打印进度条
-e 卸载软件包
–force 强制安装或卸载需要用到此参数
–nodeps 表示不依赖其他包
-R 打印该软件包所依赖的其他软件包

以下给出 rpm 包管理的一些例子:

  1. rpm -q httpd :查看 httpd 包是否安装
  2. rpm -ql httpd :查看 httpd 软件安装的路径
  3. rpm -qi httpd :查看 httpd 包的详细版本信息
  4. rpm -e httpd:卸载 httpd
  5. rpm -qa |grep httpd :检查 httpd 相关软件是否安装
  6. rpm -ivh httpd-*.rpm :安装 httpd 软件
  7. rpm -Uvh httd-*.rpm :升级 httpd 软件,后面接的软件没有安装过,系统会予以直接安装;后面接的软件有安装的旧版,系统自动更新至新版
  8. rpm -Fvh httd-*.rpm :升级 httpd 软件,后面接的软件并未安装,系统不会安装该软件;后面接的软件有安装,软件会被升级

tar 软件包管理

Linux 可以通过 tar来管理 tar、zip、bz2 等源码包的管理。
tar命令参数如下:

参数 解释
-c 创建新档
-t 列出文档中的文件
-v 显示文件处理过程
-f 指定存档,后接文件名
-r 附加到存档结尾
-x 解压文件
-z 打包或解压gz 包
-j 打包或解压bz2 包
–exclude 除去包含在内的文件

以下给出 tar 包管理的一些例子:

  1. tar -cvf xxx.tar.gz xxx :打包xxx 文件,生成 xxx.tar.gz 包
  2. tar -tf xxx.tar.gz :列出 xxx.tar.gz 包中的文件内容
  3. tar -rf xxx.tar.gz xxx.txt :将 xxx.txt 附加到存档结尾
  4. tar -xvf xxx.tar.gz :将该包解压
  5. tar -czvf xxx.tar.gz xxx :使用 gzip 格式打包并压缩 xxx 文件
  6. tar -cjvf xxx.tar.gz xxx :使用 bzip2 格式打包并压缩 xxx 文件
  7. tar -czf xxx.tar.gz * --exclude=yyy.tar.gz --exclude=zzz.tar.gz :打包压缩所有文件,排除 yyy.tar.gz 和 zzz.tar.gz 这两个文件
  8. tar -jxvf xxx.tar.gz xxx:解压 bz2 压缩包
  9. tar -zxvf xxx.tar.gz xxx:解压gz 压缩包

tar 实现 Linux 操作系统备份

生产环境中会对一些数据或目录进行日常备份,比如对/boot、/etc、/data 等目录备份,通过tar -g做增量备份,其原理是检查目录或文件的 atime、mtime、ctime 属性是否被修改,更该文件内容则 mtime 和 ctime 都会改变,但 ctime 可以在 mtime 未变化时被更该,比如修改文件权限后 mtime 时间不变,ctime 时间改变。
基于tar实现增量备份步骤如下:

  1. /mydoc 目录下创建 xxx.txt 和 yyy.txt 两个文件
cd /mydoc
touch xxx.txt yyy.txt
  1. 使用tar命令进行完整备份/mydoc 文件夹,-g参数指定快照 snapshot 文件
cd /mydoc
tar -g /data/backup/snapshot -czvf /data/backup/mydoc_2019.tar.gz *
  1. 使用 tar命令第一次完整备份mydoc 文件夹时,会生成快照文件 snapshot,后期增量会以 snapshot 文件为参考。在=再在、/mydoc下创建 zzz.txt 文件,然后增量备份。
touch /mydoc/zzz.txt
tar -g /data/backup/snapshot -czvf /data/backup/mydoc_2019_01.tar.gz *

注意增量包名不能与第一次的包名重复,增量备份后通过tar -tf可以看到/data/backup/mydoc_2019_add.tar.gz包里只有 zzz.txt 文件。
此外,
如果需要将boot分区备份到root家目录
tar -cvzpf /root/boot.tar.gz /boot/*
这里一定要加p,保留权限,否则无法启动系统
文件或系统恢复时用以下命令:
tar -xvpfz /root/boot.tar.gz
警告:这会把你分区里所有文件替换成压缩文档里的文件!

源码安装

源码包安装分为以下 3 个步骤:

  1. ./configure :预编译,主要基于检测系统基准环境库是否满足 gcc 环境,生成 makefile 文件,常用参数--prefix=path将软件安装到指定路径。
  2. make :编译,基于第一步生成的 makefile 文件,进行源码编译。
  3. make install :安装,编译完成之后将相关的文件安装到系统中。

YUM 软件包管理

yum工具可以从指定的服务器自动下载 RPM 包并自动安装,还可以处理依赖关系。

YUM 工作原理

YUM 运行时需要依赖两个部分:YUM 源和 YUM 客户端。
YUM 客户端安装所有的 RPM 包都是来自 YUM 源端服务器,YUM 源通过 HTTP 或 FTP 服务器发布。YUM 客户端能从源端下载依赖包是因为在 YUM 源端生成了 RPM 包的基准信息,包括 RPM 包版本,配置文件,依赖关系。YUM 客户端下载软件包时,系统会查找/etc/yum.repos.d下面以.repo结尾的文件。CentOS 文件名为“CentOS-Base.repo”,该文件配置了 YUM 源的镜像地址。

YUM 企业案例

YUM 格式如下:

yum [ command ] [ package ] -y | -q	//-y表示安装过程中自动确认 yes,-q 表示不显示安装过程

YUM 常用参数如下:

  • yum install httpd :安装 httpd 服务
  • yum list httpd :显示 httpd 服务安装的情况
  • yum list :显示所有已安装及可安装的软件包
  • yum remove httpd :删除 httpd 软件包,这个命令一定要慎用,它会删除所有依赖包及系统包
  • yum update httpd :更新 httpd
  • yum check-update :检查可更新程序
  • yum info httpd :显示 httpd 包的信息
  • yum provides :列出软件包提供哪些文件
  • yum provides "*/rz" :列出 rz命令是有那个软件包提供
  • yum deplist httpd :查看 httpd 依赖情况
  • yum clean package :清除缓存目录下的软件包
  • yum clean all :清除缓存目录下的软件包及旧的 headers

基于ISO 镜像构建 YUM 本地源

一般 YUM 客户端需要连外网,但企业机房为安全,保密会禁外网,因此需要建立 YUM 本地源。
构建本地 YUM 源步骤如下:

  1. 将 iso 镜像加载到虚拟机或 CD/DVD 光驱中,然后挂载到/mnt 目录下,挂载命令为mount /dev/cdrom /mnt/
  2. 备份/etc/yum.repos.d/CentOS-Base.repo,同时在/etc/yum.repos.d目录下创建" media.repo "文件,文件配置如下:
[ yum ]
name = CentOS6				#YUM源显示的名称
base = file:///mnt				#ISO镜像挂载目录
enabled = 1						#是否使用该 YUM 源
gpgcheck = 1						#是否检查 GPG-KEY
gpgkey = file:///mnt/RPM-GPG-KEY-CentOS-6				#指定挂载目录下的 GPG-KEY 文件验证
  1. 文件配置完成后运行yum clean all清空 YUM 缓存。
  2. YUM 光盘源构建完毕后,在使用时会有部分软件无法安装,原因是光盘中的包不完整,使用光盘源只能本机使用,局域网其他服务器无法使用。

同步外网 YUM 源

在企业中基于 ISO 镜像构建本地 YUM 源显然不能满足生产需要,那么如果能把外网的 YUM 源同步到本地就可以满足企业需要了。
获取外网 YUM 源的方法有:rsyncwgetreposync,三种区别是:
rsync:需要外网 YUM 源支持 rsync 协议
wget:可以直接获取
reposync:可以同步所有的 YUM 源
下面以 reposync为例,同步外网 YUM 源步骤如下:

  1. 安装 reposync命令工具
yum clean all
yum install yum-utils createrepo -y
  1. 通过 reposync 命令获取外网 YUM 源所有软件包,-r指定 repolist id,默认不加-r表示获取/etc/yum.repos.d/CentOS-Base.repo中定义的外网所有 YUM 源的软件包,-p参数表示指定下载软件的路径。
reposync -r base -p /var/www/html/centos/
reposync -r updates -p /var/www/html/centos/
  1. 下载完多有软件包后,执行createrepo更新本地 YUM 仓库。
createrepo /var/www/html/centos/

猜你喜欢

转载自blog.csdn.net/weixin_45181224/article/details/91383332
今日推荐