十八、rpm软件包管理与yum仓库配置

本周内容:
1、软件包管理
    1>rpm格式(rpm命令、yum命令)
    2>源码包(编译安装)
    3>编译好的压缩包文件(解压即可用)
    rpm命令
    yum命令
    源码安装
2、磁盘管理
3、进程管理
4、网络管理
    shell基础(基本的shell脚本)
5、计划任务:crond

一、RPM软件包介绍

编程语言分类:

机器语言

汇编语言

高级语言

•   高级语言:
    •解释型语言(shell、python):
        安装:
            1>下载python写好的软件包
            2>在自己的Linux主机上安装对应版本的python解释器、依赖包
    •编译型语言(c、go...):
    C语言不支持跨平台编译,即写出来的源码包,在不同平台都要编译一次;
    go语言支持跨平台编译,且解决了依赖性;
        安装:
            1>下载源码包
            2>在自己的Linux主机上安装好编译器
            3>用编译器把源码包编译成可执行的程序
rpm包:制作好的安装程序;
源码包:须自己动手编译安装,定制安装细节;
二进制包:已经编译完毕,下载可直接用,无需安装;

二、RPM包管理

1、rpm格式(rpm命令、yum命令)

 

rpm包格式举例:

 

三、RPM包的来源

网络

挂载、卸载一个镜像文件:
挂载:
mount /dev/sr0 /opt/
mount /dev/cdrom /mnt
卸载:umount /dev/sr0
-l 挂载点或源,强制卸载
PS:不可卸载时可能在忙,切换到其他路径下强制卸载即可;
mount -o loop /root/centos7.iso /opt

新加硬盘制作文件系统,再挂载

1、格式选项
1>安装:rpm -ivh rpm包名
2>卸载:rpm -e rpm包名
3>升级:rpm -Uvh rpm包名
4>查询格式:rpm -q yum
    选项:
    -q  #查询yum软件包是否安装
    -qa #查询系统中安装的所有rpm软件包
    -qi #查询已安装包的描述信息
    -ql #查询已安装包例所包含文件
    -qc #查询指定包的所有配置文件
    -qd #查询某个包的帮助文档
    -qf #查询系统中指定文件所属的软件包
    -p  #上述选项加p,可查看未安装的rpm包
    额外选项:
    --nomd5  #不检验软件包的签名
    --nodeps #忽略依赖性安装软件,安装软件后有可能无法使用,最好是解决依赖性后再安装,不推荐使用
    --force  #强制安装软件包,只有安装和升级可强制执行,不推荐使用
2、安装    
1>若rpm包在本地:
[root@egon ~]# mount /dev/sr0 /opt
[root@egon ~]# rpm -ivh /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
2>若rpm包来自网络,
[root@egon ~]# rpm -ivh
https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent4.0.0-2.el7.x86_64.rpm 
    安装过程中若报错:curl:(60)peer's Certificate has expired
    将系统时间修改正确,再安装即可;
​
安装与依赖性:
[root@egon ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
错误:以来检测失败:
/etc/mime.types 被 httpd-2.4.6-88.el7.centos.x86_64 需要
 httpd-tools = 2.4.6-88.el7.centos 被 httpd-2.4.6-88.el7.centos.x86_64 需要
 libapr-1.so.0()(64bit) 被httpd-2.4.6-88.el7.centos.x86_64 需要
 libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-88.el7.centos.x86_64 需要
 #解决思路:安装提示的库:
[root@egon ~]# rpm -ivh /opt/Packages/apr-1.4.8-3.el7_4.1.x86_64.rpm
[root@egon ~]# rpm -ivh /opt/Packages/apr-util-1.5.2-6.el7.x86_64.rpm
[root@egon ~]# rpm -ivh /opt/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
[root@egon ~]# yum search mime.types #查看mtime对应的依赖包为mailcap
[root@egon ~]# rpm -ivh /opt/Packages/mailcap-2.1.41-2.el7.noarch.rpm #然后重新安装
[root@egon ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
 1:httpd-2.4.6-88.el7.centos #################################[100%] 
 
 升级rpm包:
[root@egon ~]# rpm -e zabbix-agent-3.0.9-1.el7.x86_64
[root@egon ~]# rpm -e zabbix-agent-4.2.0-1.el7.x86_64
[root@egon ~]# rpm -qa |grep zabbix
[root@egon ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
[root@egon ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm
 #升级会自动清理老版本,安装新版本
[root@egon ~]# rpm -qa |grep zabbix-agent #只留下一个新版本
zabbix-agent-4.2.0-1.el7.x86_64
[root@egon ~]#
​
练习如何下软件包:
vsftpd
samba
nfs-utils
httpd
dhcp
postfix
php
lftp
dos2unix
unix2dos
tigervnc
​
dd if=/dev/sr0 of=/root/iso/centos7.iso #挂载镜像文件

3>安装与依赖性

四、yum管理rpm包

1、yum介绍

yum自动解决依赖关系

Yum (全称为Yellow dog Updater, Modified) 是一个在Fedora和RedHat以及Centos中的 Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处 理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

查看yum命令与配置文件:

[root@localhost ~]# rpm -q yum
yum-3.4.3-161.el7.centos.noarch
[root@localhost ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf

yum命令常用选项:

仓库:
yum repolist     #查询可用仓库
yum repolist all #查看包括已启用或禁用的所有仓库状态
#关闭与启用仓库:本质:都是在修改repo文件中的enable的值,0不启用,1启用
yum- config-manager -- disable epel #关闭仓库epel
yum-conf ig-manager --enable epel   #启用仓库epel
​
查看:
yum list      #列出可用仓库中所有的软件包
yum list | less
yum grouplist #列出可用仓库中的软件组
yum provides /usr/ sbin/ifconfig #查询命令所属的软件包,可以不加路径,只写命令名字
#与rpm -qf的区别在于yum provides后可以只跟命名名
​
安装:
yum install httpd httpd- tools #加上-y选项可以变成非交互
yum groupinstall "开发工具”-y   #安装软件组,一个软件组中包含了多个软件包
yum groups install “开发工具”-y #同上
​
卸载
yum remove httpd httpd- tools http* #卸载软件包
yum groupremove“开发工具”- y.        #卸载软件组
yum groups remove "开发工具”-y       #同上
​
重装
yum reinstall httpd  #不小心删除了配置文件的时,可以reinstall-下
​
更新
yum check -update    #检查可以更新的软件包
yum update -Y        #更新所有软件包,包括内核,通常只在刚装
​
完系统时执行
yum update httpd -y  #更新某个软件包
​
缓存
yum makecache       #制作元数据缓存
yum clean all       #清理元数据缓存
vim /etc/ yum. conf #默认软件包下载安装后会自动删除
                  #设置keepcache=1即开启了软件包缓存
                  #缓存目录为配置文件中指定的cachedir
历史记录
yum history          #查看执行过的yum命令历史记录
yum history info ID号 #查看具体某一条yum命令的详细信息
yum history undo ID号 #撤销执行过的历史命令

关于安装需要注意:

无论yum安装的软件来自何方,yum时刻以自己仓库中的repodata存储的依赖关系为准,如果有多个仓库,就依次检索:

1>yum直接安装公网的rpm包,会自动查找当前系统上已有的仓库解决依赖关系:

yum install

https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/ samba-4.8.3-4.e17.x86_64.rpm

2>Yum直接安装本地的rpm包,会自动查找当前系统上已有的仓库解决依赖关系:

yum local install -y /mnt/Packages/httpd-2.4.6-88.e17.centos.x86_64.rpm

要使用yum前需要准备一个yum源(我们也称为yum仓库),这个可以是一个互联网上的仓库,也可以是本地自己搭建的仓库;仓库里面有什么呢?里面全部都是.rpm的软件包;一台linux, 可以添加N多个yum源,能搜索的软件包数量就是N个yum源之和。

PS:系统常见的两种yum源:本地源、网络源

1.自定义的本地源:

1>先挂载
#方式1:
[root@localhost ~]# mount /dev/cdrom /opt/ #通过光驱挂载
#方式2:
[root@localhost ~]# mount /dev/sr0 /opt/   ##通过光驱挂载
#方式3:
[root@localhost ~]# mount -o loop /xxx.iso /opt ##通过镜像挂载
[root@localhost ~]# ls /opt/Packages/
​
2>编辑repo文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo #文件名自定义,必须以.repo结尾
[local] #仓库的实际名字,任意
name=local #仓库的描述,任意
baseurl=file:///opt #仓库位置,可以是http:// https:// ftp:// file://
enabled=1 #1为启用仓库,0位关闭。=,默认启用
gpgcheck=0 #检查安装的rpm是否是合法的,0表示不检验
​
3>检查可用仓库
[root@localhost ~]# yum repolist     #查询可用仓库 
[root@localhost ~]# yum repolist all #查看所有仓库,包括禁用的
​
4>安装、查询、卸载
[root@localhost ~]# yum list                 #列出可用软件包
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# yum list vsftpd httpd
[root@localhost ~]# yum remove vsftpd -y
[root@localhost ~]# yum install glib* httpd -y
[root@localhost ~]# yum provides vsftp #查询某个软件(可是未安装的)由哪个rpm包提供
# yum reinstall
[root@egon ~]# rm -rf /etc/httpd/conf/httpd.conf
[root@egon ~]# yum reinstall httpd -y &> /dev/null
[root@egon ~]# ls /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf
# yum update
[root@localhost ~]# yum -y update samba
[root@localhost ~]# yum -y update
​
5>软件包租安装、查询、卸载
[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinstall "GNOME 桌面" -y
[root@egon ~]# yum groupinstall "开发工具" -y
[root@egon ~]# yum groupremove "开发工具" -y

2.网络上的源头,如: base基础源、epel扩展源、与服务相关的源(官网)

下载开源的yum源头:

例如阿里云的Base基础源:
wget -O /etc/yum.repos.d/CentOS-Base/repo
http://mirrors.aliyun.com/repo/Centos-7.repo
​
例如163的Base基础源:
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.163.com/.help/CentOS7-Base-163.repo
​
例如红帽的epel扩展源:
1>可直接下载
curl -o /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
2>也可以安装一个软件包来生成
[root@egon ~]# yum install epel-release -y
​
例如nginx逛网的软件包源:
​

五、手动配置创建yum仓库源并共享:

1>前提准备工作:准备环境

yum remove -y nginx				  #清空nginx配置环境 
systemctl stop firewalld           #关闭防火墙
systemctl disable firewalld        #永久禁用防火墙
setenforce 0                       #关闭selinux
vim /etc/sysconfig/selinux         #改为disabled,永久禁用selinux
附:实验残留清空,若无试验可不进行此步骤~
rpm -qa |grep nginx                #过滤清空nginx 
rpm -qa |grep python-daemon        #过滤清空python-daemon
rm -rf /etc/yum.repos.d/nginx.repo #清空nginx配vim

2>服务端配置

vim /etc/yum.conf		   #打开缓存keepcache=1
vim /etc/yum.repos.d/nginx.repo    #配置一个nginx官方的源文件
	[nginx-stable]
	name=nginx stable repo
	baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
	gpgcheck=1
	enabled=1
	gpgkey=https://nginx.org/keys/nginx_signing.key
	module_hotfixes=true    #保存退出
epel-release 、pyhon-daemon、vsftpd、createrepo、nginx-*#yum安装以上五个服务
PS:最后装nginx时,需把/etc/repos.d/的文件移到新建的bak里,只留nginx.repo;
systemctl restart vsftpd ;systemctl status vsftpd #确保开启
mkdir /var/ftp/centos7 #名字自定义
createrepo /var/ftp/centos7 #制作repodata数据库
mv `find /var/cache/yum/x86_64/7/ -type f -name '*.rpm'` /var/ftp/centos7/ #将所有rpm包移到此处,准备被访问
vim /etc/yum.repos.d/server.repo#新建服务端文件
	[server]
	name=server
	baseurl=ftp://centos          #只填写/var/ftp/最终的共享路径
	enabled=1
	gpgcheck=0			   #保存退出

3>客户端配置网络yum源

将Base源放到/etc/yum.repos.d/,其余.repo放到bak里,不然会影响安装vsftpd
yum install -y vsftpd       #安装vsftpd
cd /etc/yum.repos.d/        #切换到此
mkdir bak                    #创建目录
mv *.repo bak               #所有.repo文件移到此
vim client.repo              #新建客户端文件
    [client]
    name=client
    baseurl=ftp://192.168.181.8/centos7 #输入服务端的ip+最终路径
    enable=1
    gpgcheck=0              #保存退出
ping 192.168.181.8           #看能否ping通
ping通后,浏览器输入ftp://192.168.181.8 即可访问
PS:客户端baseurl指向的目录无论是什么,在该目录的子目录一级必须有一个repodata数据库。

4、源码包的下载、解压、编译、安装

 1. 官网下载
wget http://nginx.org/download/nginx-1.18.0.tar.gz
​
2. 预先安装编译安装依赖的库
yum -y install gcc gcc-c++ autoconf automake make
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
或者
LANG=C yum -y groupinstall "Development tools"
3. 解压、编译、编译安装
tar xvf nginx-1.18.0.tar.gz -C /tmp/
​
cd /tmp/nginx-1.18.0/
​
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream --with-http_gzip_static_module --with-http_sub_module
​
--prefix #指定安装的目录
/usr/local/nginx #为安装目录
​
make && make install
​
\#将程序设定一个软链接,便于后续的升级
ln -s /soft/nginx-1.16.0/ /soft/nginx

                
posted @ 2022-06-09 18:19  秋风お亦冷  阅读(113)  评论(0编辑  收藏  举报