目录
1. RPM 软件包管理
Linux 软件包分为二进制包,源码包,其中二进制包无需编译,可直接安装使用,源码包则需要编译后才能运行。通常,通过后缀的不同,可以区分二进制包和源码包,如.tar.gz
、.zip
、.rar
结尾的包属于源码包,以.rpm
结尾的包是二进制包。
以下为 rpm
命令参数解析:
参数 | 解释 |
---|---|
-a | 查询已安装的软件包 |
-q | 询问用户,输出信息 |
-l | 打印软件包列表 |
-f | 查询包含 file 的软件包 |
-i | 显示软件包信息 |
-v | 打印输出详细信息 |
-U | 升级 rpm 包 |
-h | 软件安装时,打印进度条 |
-e | 卸载软件包 |
–force | 强制安装或卸载需要用到此参数 |
–nodeps | 表示不依赖其他包 |
-R | 打印该软件包所依赖的其他软件包 |
以下给出 rpm
包管理的一些例子:
rpm -q httpd
:查看 httpd 包是否安装rpm -ql httpd
:查看 httpd 软件安装的路径rpm -qi httpd
:查看 httpd 包的详细版本信息rpm -e httpd
:卸载 httpdrpm -qa |grep httpd
:检查 httpd 相关软件是否安装rpm -ivh httpd-*.rpm
:安装 httpd 软件rpm -Uvh httd-*.rpm
:升级 httpd 软件,后面接的软件没有安装过,系统会予以直接安装;后面接的软件有安装的旧版,系统自动更新至新版rpm -Fvh httd-*.rpm
:升级 httpd 软件,后面接的软件并未安装,系统不会安装该软件;后面接的软件有安装,软件会被升级
tar 软件包管理
Linux 可以通过 tar
来管理 tar、zip、bz2 等源码包的管理。
tar
命令参数如下:
参数 | 解释 |
---|---|
-c | 创建新档 |
-t | 列出文档中的文件 |
-v | 显示文件处理过程 |
-f | 指定存档,后接文件名 |
-r | 附加到存档结尾 |
-x | 解压文件 |
-z | 打包或解压gz 包 |
-j | 打包或解压bz2 包 |
–exclude | 除去包含在内的文件 |
以下给出 tar
包管理的一些例子:
tar -cvf xxx.tar.gz xxx
:打包xxx 文件,生成 xxx.tar.gz 包tar -tf xxx.tar.gz
:列出 xxx.tar.gz 包中的文件内容tar -rf xxx.tar.gz xxx.txt
:将 xxx.txt 附加到存档结尾tar -xvf xxx.tar.gz
:将该包解压tar -czvf xxx.tar.gz xxx
:使用 gzip 格式打包并压缩 xxx 文件tar -cjvf xxx.tar.gz xxx
:使用 bzip2 格式打包并压缩 xxx 文件tar -czf xxx.tar.gz * --exclude=yyy.tar.gz --exclude=zzz.tar.gz
:打包压缩所有文件,排除 yyy.tar.gz 和 zzz.tar.gz 这两个文件tar -jxvf xxx.tar.gz xxx
:解压 bz2 压缩包tar -zxvf xxx.tar.gz xxx
:解压gz 压缩包
tar 实现 Linux 操作系统备份
生产环境中会对一些数据或目录进行日常备份,比如对/boot、/etc、/data 等目录备份,通过tar -g
做增量备份,其原理是检查目录或文件的 atime、mtime、ctime 属性是否被修改,更该文件内容则 mtime 和 ctime 都会改变,但 ctime 可以在 mtime 未变化时被更该,比如修改文件权限后 mtime 时间不变,ctime 时间改变。
基于tar
实现增量备份步骤如下:
- /mydoc 目录下创建 xxx.txt 和 yyy.txt 两个文件
cd /mydoc
touch xxx.txt yyy.txt
- 使用
tar
命令进行完整备份/mydoc 文件夹,-g
参数指定快照 snapshot 文件
cd /mydoc
tar -g /data/backup/snapshot -czvf /data/backup/mydoc_2019.tar.gz *
- 使用
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 个步骤:
- ./configure :预编译,主要基于检测系统基准环境库是否满足 gcc 环境,生成 makefile 文件,常用参数
--prefix=path
将软件安装到指定路径。 - make :编译,基于第一步生成的 makefile 文件,进行源码编译。
- 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
:更新 httpdyum 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 源步骤如下:
- 将 iso 镜像加载到虚拟机或 CD/DVD 光驱中,然后挂载到
/mnt
目录下,挂载命令为mount /dev/cdrom /mnt/
。 - 备份
/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 文件验证
- 文件配置完成后运行
yum clean all
清空 YUM 缓存。 - YUM 光盘源构建完毕后,在使用时会有部分软件无法安装,原因是光盘中的包不完整,使用光盘源只能本机使用,局域网其他服务器无法使用。
同步外网 YUM 源
在企业中基于 ISO 镜像构建本地 YUM 源显然不能满足生产需要,那么如果能把外网的 YUM 源同步到本地就可以满足企业需要了。
获取外网 YUM 源的方法有:rsync
、wget
、reposync
,三种区别是:
rsync
:需要外网 YUM 源支持 rsync 协议
wget
:可以直接获取
reposync
:可以同步所有的 YUM 源
下面以 reposync
为例,同步外网 YUM 源步骤如下:
- 安装
reposync
命令工具
yum clean all
yum install yum-utils createrepo -y
- 通过 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/
- 下载完多有软件包后,执行
createrepo
更新本地 YUM 仓库。
createrepo /var/www/html/centos/