Linux软件包管理

一、软件包介绍

`与windows相似,linux上也可以安装软件,称为软件包,linux软件分为以下三类:
在这里插入图片描述

二.rpm包管理

2.1 什么是rpm软件包
是Red-Hat Package Manager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的。
rpm软件包的格式:
在这里插入图片描述
例:MySQL-connector-odbc-5.2.5-8.e17.x86_64.rpm
软件名称:MySQL-connector-odbc
版本号:-5.2.5
版本发行次数:8
操作系统:e17
硬件平台:x86_64
后缀:rpm

rpm闭包使用的平台:redhat/centos/redora/suse

#查看自己的平台:
[root@localhost ~]# uname -m
x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

2.2管理rpm的两种命令**:**
1.rpm命令
需要手动找到需要安装的包,并且要解决所需要的依赖,较繁琐。
2.yum命令
需要rpm的包会事先存放在一个仓库里,仓库里有所需安装的所有依赖包,所以yum可以自己解决依赖包安装问题。

2.3rpm包的获取****
#1.本地ISO镜像光盘的三种挂载方法:
①[root@localhost ~]# mount /dev/cdrom /opt/
②[root@localhost ~]# mount /dev/sr0 /opt/
③[root@localhost ~]# mount -o loop /xxx.iso /opt/
查看光盘里的rpm包
root@localhost ~]# ls /opt/Packages

#3.自己去网上下载rpm包进行安装
#3.联网从yum仓库里下载rpm包

三、rpm命令

3.1 基础命令
#、 安装rpm软件包: rpm -ivh <rpm软件包全称文件>
#、删除rpm软件包:rpm -e <rpm包名>
#、升级rpm软件包:rpm -Uvh <rpm包名>
#、查询:
rpm -qa #查询系统中所有的rpm软件
rpm -qa | grep php #检索系统中已安装php的软件包
rpm -q <rpm软件包名> #查询指定软件是否安装

       #[root@egon ~]# rpm -q zip
        zip-3.0-11.el7.x86_64

rpm -qi <rpm软件包名> #查询已安装的软件包描述信息
rpm -ql <rpm软件包名> #查询已安装的软件包里所包含的文件
rpm -qc <rpm软件包名> #查询已安装的软件包配置文件

#、 [root@egon ~]# rpm -qc mariadb
/etc/my.cnf.d/client.cnf

rpm -qd <rpm软件包名> #查询已安装的软件的帮助文件
rpm -qf <指定文件路径> #查询指定文件所属软件包

#[root@egon ~]# rpm -qf /usr/sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
#在上述命令基础上加-p可以查看尚未安装的rpm软件
[root@localhost ~]# rpm -e dos2unix #先卸载,防止安装了此软件
[root@localhost ~]# rpm -qip /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qlp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qcp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
[root@localhost ~]# rpm -qdp /opt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm

额外选项:
–nomd5 #不检验软件包的签名
–nodeps #忽略依赖性安装软件,有可能无法使用
–force #强制安装,只能安装或升级使用

3.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.安装包不在本地,来自网络,如果安装中报错:curl: (60) Peer’s Certificate has expired:
现将系统时间修改正确,在重新进行安装:
[root@egon ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-
4.0.0-2.el7.x86_64.rpm

3.3安装与依赖性(哪个软件包被目标软件所需要就下载哪个软件包,以此类推)
1.[root@egon ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
httpd-tools = 2.4.6-88.el7.centos 被 httpd-2.4.6-88.el7.centos.x86_64 需要
#解决思路
[root@egon ~]# rpm -ivh /opt/Packages/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
[root@egon ~]# rpm -ivh /opt/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
2.升级rpm包
#,下载一个旧版本一个新版本
wget https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbixagent-3.0.9-1.el7.x86_64.rpm
wget https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbixagent-4.2.0-1.el7.x86_64.rpm
安装旧版本
[root@egon ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm
安装新版本 --会报错
[root@egon ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm
强制安装新版本 --force
[root@egon ~]# rpm -qa |grep zabbix
zabbix-agent-3.0.9-1.el7.x86_64
[root@egon ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm --force
两个版本同时存在
[root@egon ~]# rpm -qa |grep zabbix
zabbix-agent-3.0.9-1.el7.x86_64
zabbix-agent-4.2.0-1.el7.x86_64
卸载后采用升级安装方法
[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

四、yum管理rpm包

4.1yum介绍
yum会自动解决rpm包的依赖性问题,Yum 全称为 Yellow dog Updater Modified,它是一个在线的软件安装命令。能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
4.2 查看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
4.3 yum的常用命令说明
#仓库
yum repolist #查询可用仓库
yum repolist all # 查询可用包含禁用的仓库

#、关闭或启用yum仓库(实际上就是修改repo文件中enable的值
0 不启用 1 启用)
yum-config-manager --disable epel # 关闭仓库epel
yum-config-manager --enable epel #启用仓库epel

#查看

yum list # 查看所有可用仓库中所有软件包
yum list | less
yum grouplist #查看可用仓库所有可用的软件组

yum provides /usr/sbin/ifconfig #查询命令所属的软件包。后面可以不加路径,加命令名称(与rpm -qf的区别在于其后可以只跟命令名称)

#安装
yum install httpd #后面加上-y 可以变成非交互式
yum groupinstall “开发工具” -y # 安装组软件包,后面加上-y 可以变成非交互式
yum groups install # 同上

#卸载
yum remove httpd #卸载软件包
yum groupremove #卸载软件组
yum groups remove #同上

#重装
yum reinstall httpd #重装httpd软件包

#更新
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源(也称之为yum仓库),可以在互联网上下载仓库也可以是自己搭建的一个yum仓库。
系统常见的源:
1.自定义的本地源
2.网上下载的源,如:base源,epel源,与服务相关的源。

五、镜像文件作为yum源

1.挂载光盘镜像文件
方法一:[root@localhost ~]# mount /dev/cdrom /opt/

方法二:[root@localhost ~]# mount /dev/sr0 /opt/

方法三:[root@localhost ~]# mount -o loop /xxx.iso /opt

查看光盘里的rpm包
[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是否合法

3.检查可用仓库
[root@localhost ~]# yum repolist # ັ查询可用仓库
[root@localhost ~]# yum repolist all#查询全部仓库,包括禁用的

4.安装、卸载、查询
[root@localhost ~]# yum list # 查询可用安装包(rpm -qa查询已安装的rpm包)
[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包安装的(rpm -qi <软件名>查询已安装的软件信息)

#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 remove (卸载)
#yum update (升级)
[root@localhost ~]# yum -y update samba
[root@localhost ~]# yum -y update

4.软件组安装、卸载、查询
[root@localhost ~]# yum grouplist
[root@localhost ~]# yum groupinstall “GNOME 桌面” -y
[root@egon ~]# yum groupinstall “开发工具” -y
[root@egon ~]# yum groupremove “开发工具” -y

六、使用开源yum源(网络源)
1.下载开源yum的源头
列如下载阿里的base源:
wget(命令) -O(参数) /etc/yum.repos.d/CentOS-Base.repo(目标文件夹)
http://mirrors.aliyun.com/repo/Centos-7.repo(网络链接)

例如163的网络源:
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.163.com/.help/CentOS7-Base-163.rep

在这里插入图片描述
备份centos的源备份
[root@egon ~]# cd /etc/yum.repos.d/
[root@egon yum.repos.d]# mkdir bak
[root@egon yum.repos.d]# mv CentOS-* bak/
[root@egon yum.repos.d]# ls
bak CentOS-Base.repo epel.repo local.repo nginx.repo
[root@egon yum.repos.d]#

六、自己制作yum源
1下载好一顿rpm包,相关依赖包也在,将所有rpm包放在一个文件夹下
2.安装工具
[root@localhost ~]# yum install createrepo -y
3.创建相关目录,制作repodate
[root@localhost ~]# createrepo /aaa/
4.配置repo文件。将file指向/aaa、

[root@localhost ~]# vim /etc/yum.repos.d/soft.repo
[soft]
name=soft
baseurl=file:///aaa
enabled=1
gpgcheck=0
在这里插入图片描述
在这里插入图片描述
六、自己制作的yum源共享给别人
①在服务端上执行以下操作
1.环境准备
[root@egon ~]# systemctl stop firewalld(停止防火墙)
[root@egon ~]# systemctl disable firewalld
[root@egon ~]# setenforce 0
[root@egon ~]# sed -i 's#^SELINUX=.#SELINUX=disabled#g’ /etc/selinux/config
2.安装ftp服务
[root@egon ~]# yum install vsftpd -y
[root@egon ~]# systemctl start vsftpd
[root@egon ~]# systemctl status vsftpd # 查看服务,确保开启
[root@egon ~]# systemctl enable vsftpd
3.采集软件放在一个文件目录下
[root@egon ~]# mkdir /var/ftp/centos7
[root@egon ~]# mount /dev/sr0 /var/ftp/centos7
或者拷贝
[root@egon ~]# mount /dev/sr0 /opt
[root@egon ~]# mkdir /var/ftp/centos7
[root@egon ~]# find /opt/Packages/ -type f -name "
.rpm" |xargs -I {} cp -rp
{} /var/ftp/centos7/
②在客户端执行以下操作
1.环境准备(同1}
[root@egon ~]# systemctl stop firewalld
[root@egon ~]# systemctl disable firewalld
[root@egon ~]# setenforce 0
[root@egon ~]# sed -i ‘s#^SELINUX=.*#SELINUX=disabled#g’ /etc/selinux/config
[root@egon ~]# ping -c 2 192.168.12.42 # ping地址,确保网络通畅。
2.在客户端配置yum源
[root@egon yum.repos.d]# cd /etc/yum.repos.d/
[root@egon yum.repos.d]# mkdir bak
[root@egon yum.repos.d]# mv *.repo bak/
[root@egon yum.repos.d]# cat >> ftp.repo << EOF

[soft]
name=soft
baseurl=file://192.168.12.42/Centos7
enabled=1
gpgcheck=0
EOF
#注意:无论客户端baseurl指向的文件夹是啥,在其子目录一级必须要有一个repodate数据库。

posted @ 2020-12-10 14:54  yzmxcj  阅读(161)  评论(0)    收藏  举报