软件管理体系
概述与Linux安装软件方式
软件安装方式 | 简介 | 详细特点 | 优势 | 缺点 |
---|---|---|---|---|
rpm软件包安装 | rpm是linux软件包格式买回来后只需要简单的加工就可以食用. 但是,没有相关依赖,需要自己解决. | 自己下载rpm包,自己安装。缺少依赖自己手动解决依赖. | 只要你有rpm包.通过rpm命令安装. | 缺少依赖.只能手动解决依赖. |
yum命令安装 | 依赖自行解决 | yum安装软件,替我们下载rpm包,替我们安装rpm包,缺少依赖yum替我们下载. | 自动检查依赖,自动下载安装 | 依赖网络(也可以自搭建yum仓库解决 |
编译安装 | 可以自己定义. | 编译: 源代码—>命令(二进制文件) 编译安装三部曲: ./configure(配置,备菜)—>make(编译,炒菜)—>make install (安装,上菜) | 可以自定义功能, 这个软件没有rpm包或yum安装不了. | 步骤繁琐.缺少的依赖需要自己解决.大型软件时间长. |
二进制包 | 绿色软件(解压即用) | 别人配置好,我们只需要解压,简单配置,即可使用 | 方便 | 不是所有软件都有 |
软件管理体系之rpm命令
- 目标:熟练通过rpm命令对系统软件进行(查/增)
- 小知识点:rpm包是Linux(红帽系列)软件包的格式。类似于windows.exe格式
- rpm命令,管理软件包
1)增加软件
- 安装/升级
案例01 安装软件包
- 1.U盘插入系统
- 2.挂载光盘
/dev/cdrom
#检查/mnt是否被挂载,如果挂载,umount /mnt卸载下.
#然后挂载光盘到/mnt
mount /dev/cdrom /mnt
[root@oldboy81-golden-lnb /oldboy]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@oldboy81-golden-lnb /oldboy]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 979M 0 979M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/mapper/centos_oldboy--81--golden-root 50G 8.1G 42G 17% /
/dev/sda1 1014M 138M 877M 14% /boot
/dev/mapper/centos_oldboy--81--golden-home 47G 33M 47G 1% /home
tmpfs 199M 0 199M 0% /run/user/0
/dev/loop0 2.0M 34K 1.8M 2% /inode
/dev/sr0 4.4G 4.4G 0 100% /mnt
[root@oldboy81-golden-lnb /oldboy]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 Mar 17 14:45 /dev/cdrom -> sr0
老
案例01 安装软件包 tree telnet
rpm -ivh xxxx.rpm
#删除 tree telnet
rpm -e tree telnet
#安装tree软件包
[root@oldboy81-golden-lnb ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:tree-1.6.0-10.el7 ################################# [100%]
#安装telnet
[root@oldboy81-golden-lnb ~]# rpm -ivh /mnt/Packages/telnet-0.17-65.el7_8.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:telnet-1:0.17-65.el7_8 ################################# [100%]
#错误提示 需要依赖
[root@oldboy81-golden-lnb ~]# rpm -ivh /mnt/Packages/tomcat-7.0.76-15.el7.noarch.rpm
error: Failed dependencies:
apache-commons-collections is needed by tomcat-0:7.0.76-15.el7.noarch
apache-commons-daemon is needed by tomcat-0:7.0.76-15.el7.noarch
apache-commons-dbcp is needed by tomcat-0:7.0.76-15.el7.noarch
apache-commons-logging is needed by tomcat-0:7.0.76-15.el7.noarch
apache-commons-pool is needed by tomcat-0:7.0.76-15.el7.noarch
java >= 1:1.6.0 is needed by tomcat-0:7.0.76-15.el7.noarch
tomcat-lib = 0:7.0.76-15.el7 is needed by tomcat-0:7.0.76-15.el7.noarch
2)查询
案例01 检查软件包是否安装成功
#显示系统中所有已经安装的软件包(高能预警)
rpm -qa
#方法01 rpm -qa |grep/egrep .... 推荐使用.
[root@oldboy81-golden-lnb ~]# rpm -qa |grep tree
tree-1.6.0-10.el7.x86_64
[root@oldboy81-golden-lnb ~]# rpm -qa |grep telnet
telnet-0.17-65.el7_8.x86_64
#方法02 rpm -qa 软件包名字(不能缺少内容)
[root@oldboy81-golden-lnb ~]# #方法02 rpm -qa 软件包名字(不能缺少内容)
[root@oldboy81-golden-lnb ~]#
[root@oldboy81-golden-lnb ~]#
[root@oldboy81-golden-lnb ~]# rpm -qa tree telnet
telnet-0.17-65.el7_8.x86_64
tree-1.6.0-10.el7.x86_64
[root@oldboy81-golden-lnb ~]# rpm -qa tree telnet vim
telnet-0.17-65.el7_8.x86_64
tree-1.6.0-10.el7.x86_64
案例02 检查软件包内容
#检查 tree软件包内容
[root@oldboy81-golden-lnb ~]# rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
#检查 lrzsz软件包内容
[root@oldboy81-golden-lnb ~]# rpm -ql lrzsz
/usr/bin/rb
/usr/bin/rx
/usr/bin/rz
/usr/bin/sb
/usr/bin/sx
/usr/bin/sz
/usr/share/locale/de/LC_MESSAGES/lrzsz.mo
/usr/share/man/man1/rz.1.gz
/usr/share/man/man1/sz.1.gz
案例03 检查ip命令属于哪个软件包(已安装)
- 一般来说Linux一些命令独立软件包tree,telnet…
- 还有一些命令属于一个软件包里面的,这个软件包中包含多个命令
#ip命令属于哪个软件包.
[root@oldboy81-golden-lnb ~]# rpm -ql ip
package ip is not installed
[root@oldboy81-golden-lnb ~]# #ip命令属于软件包,软件包不叫ip
[root@oldboy81-golden-lnb ~]# rpm -qf /sbin/ip
iproute-4.11.0-30.el7.x86_64
[root@oldboy81-golden-lnb ~]# rpm -ql iproute
#ifconfig命令属于哪个软件包.
[root@oldboy81-golden-lnb ~]# rpm -ql ifconfig
package ifconfig is not installed
[root@oldboy81-golden-lnb ~]# which ifconfig
/usr/sbin/ifconfig
[root@oldboy81-golden-lnb ~]# rpm -qf /sbin/ifconfig
net-tools-2.0-0.25.20131004git.el7.x86_64
案例04 检查系统软件包中的文件是否发生改变
mv /bin/zcat /tmp/
touch /bin/zcat
rpm -aV #显示出当前环境中与系统安装后(rpm安装后) 是否发生变化.
只要T 表示文件被修改mtime
5 md5表示文件内容发生变化.
[root@oldboy81-golden-lnb ~]# rpm -aV
S.5....T. c /etc/profile/CentOS-Base.repo
S.5....T. c /etc/sudoers
3)删除
- Linux下面一些不用的软件(已安装),尽量不删,关闭放着即可
4)修改
- 新旧版本替换
- 旧版本软件/命令,有漏洞
rpm -Uvh 新的软件包.rpm
系统有zabbix-agent软件 老版本
系统下载zabbix-agent新版本 升级.
#安装老版本 5.0.0
wget https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-5.0.0-1.el7.x86_64.rpm
#下载并安装
#rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
#安装新版本 5.0.21
wget https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.21-1.el7.x86_64.rpm
rpm -Uvh zabbix-agent-5.0.21-1.el7.x86_64.rpm
5)rpm命令补充
案例01 安装或删除软件时候忽略依赖关系
--nodeps
#直接安装软件包提示 没有安装依赖,安装软件包失败.
[root@oldboy81-golden-lnb ~]# rpm -ivh zabbix-agent-6.0.0-1.el7.x86_64.rpm
warning: zabbix-agent-6.0.0-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
error: Failed dependencies:
libpcre2-8.so.0()(64bit) is needed by zabbix-agent-6.0.0-1.el7.x86_64
[root@oldboy81-golden-lnb ~]#
#加上--nodeps 安装的时候忽略依赖. 强制安装.
[root@oldboy81-golden-lnb ~]# rpm -ivh --nodeps zabbix-agent-6.0.0-1.el7.x86_64.rpm
warning: zabbix-agent-6.0.0-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:zabbix-agent-6.0.0-1.el7 ################################# [100%]
6)rpm命令记录
功能 | 具体指令与含义 |
---|---|
增加(安装) | rpm -ivh |
-i install 安装 | |
-v 显示过程 | |
-h 显示过程 | |
查询 | rpm -qa 检查软件包是否安装 |
rpm -ql 检查软件包内容 | |
rpm -qf 检查指定的命令或文件属于哪个软件包 | |
rpm -aV 检查系统软件包中文件或命令与刚刚安装的时候是否变化 | |
-q query 查询 | |
-a all 所有 | |
-l list 显示软件包内容 | |
-V verify 校验/检验 | |
删除 | -e erase 删除 |
修改 | -Uvh 如果软件包存在则会升级,如果软件包不存在,则直接安装 |
-U upgrade 升级 | |
其他 | –node no deps(dependency)忽略依赖进行安装或删除 |
软件包管理体系-yum
yum源及yum源配置
1)yum源
- yum仓库,repository(repo)
- yum源(仓库):软件包存放地方(我们使用yum命令下载软件包的时候,yum源是随机的)
- yum源(仓库)类似于手机,应用商城(app store). 下载流程: 商城中输入软件名,自动下载与安装.
2)yum源配置文件
- 规定在linux使用yum命令的时候连接哪个仓库(仓库的地址)
- 配置文件目录: /etc/yum.repos.d/ yum repos(源) d(目录)
[root@hb-sre-001 yum.repos.d]# pwd
/etc/yum.repos.d
[root@hb-sre-001 yum.repos.d]# ll
总用量 4
drwxr-xr-x. 2 root root 220 8月 1 19:36 bak
-rw-r--r--. 1 root root 2523 8月 2 10:53 CentOS-7.9.repo
[root@hb-sre-001 yum.repos.d]#
- yum源的核心配置文件详解(常用的yum仓库的名字)
#Base 系统默认源.
#epel 软件仓库扩展. Extra Packages for Enterprise Linux
#yum源配置文件格式
[base] #源名字,可以随意.
name=CentOS-$releasever - Base - mirrors.aliyun.com #注释.说明下源作用与地址.
failovermethod=priority # 很少用, 如果yum源地址挂了.切换备用.
# baseurl yum仓库的地址. 这个地址要能访问到repodata目录.
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled=1 #这个源是否开启. 使用yum下载是否从这个地址下载.
gpgcheck=1 #gppcheck 是否进行检查. 对下载后的软件包进行校验. 自己搭建的yum仓库可以关闭enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#源核心配置
[base] #名字
name=这是个yum #从阿里云下载
enabled=1 #开启这个源
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ #仓库地址
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
- 没有epel源的配置方法
#如何增加 epel源.
yum install -y wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#-O大写字母O,下载到指定目录的指定文件中.(文件不存在则创建)
3)修改yum源(仓库)的配置
- 常见的镜像站
http://mirrors.aliyun.com #镜像,yum源..
https://mirrors.tuna.tsinghua.edu.cn/
#阿里云的源
[base] #源名字,可以随意.
name=CentOS-$releasever - Base - mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#清华源
[base] #源名字,可以随意.
name=CentOS-$releasever - Base - mirrors.tuna.tsinghua.edu.cn
baseurl=https:/mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos/RPM-GPG-KEY-CentOS-7
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
4)使用系统使用的yum源
yum repolist
[root@oldboy81-golden-lnb /etc/yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,745
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 509
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 3,570
repolist: 27,896
5)yum源小结
- 使用yum命令流程:yum安装软件,yum命令访问yum仓库
- yum仓库配置及配置文件格式,掌握每一行含义即可([base])
- 熟练掌握:给系统配置yum源(增加epel源,修改系统yum源(默认—>清华/阿里云)
yum指令
- yum增删改查
1)查询
yum list |grep java
yum list |grep '^java'
yum list |grep '^^java-1.8.0'
2)某个文件或命令属于哪个软件包
类似于
rpm -qf `which ifconfig`
yum search all ifconfig
yum provides ifconfig
3)查询系统yum源
yum repolist
4)查询软件包信息
yum info
5)查询yum安装过什么软件
yum history
yum history info 3
# yum日志记录
less /var/log/yum.log
6)安装
#01 必会 安装软件
yum install -y tree
#-y表示安装的时候不要询问是否安装,是否继续,默认选择yes .
#安装常用工具
yum install -y tree vim wget bash-completion bash-completion-extras lrzsz net-tools sysstat iotop iftop
htop unzip nc nmap telnet bc psmisc httpd-tools bind-utils nethogs expect
#02 重新安装
yum reinstall -y tree
#03 了解 安装软件包组
yum groups list #软件包组列表
yum groups install "软件包组名字"
#04 必会 升级
升级所有或某一个软件包。
#更新某个或多个软件包
yum install -y tree #安装或升级。
#更新所有软件包,安装完成系统后做的。
yum update #更新所有
yum upgrade #与update一致。不会更新过时命令
7)删除
不要用
通过rpm -e 删除某个或多个软件包。
#工作推荐: 通过rpm -e删除或关闭放着即可。
8)其他指令(缓存)
#生产缓存
yum makecache
#清理缓存
yum clean all
9)yum命令小结
- yum安装软件:
yum install -y tree
- yum查询软件包:
yum list ; yum provides ;yum search all
- yum删除软件包:
yum remove
- yum升级:
yum update /yum upgrade
- yum缓存处理: 清除缓存:
yum clean all;创建缓存 yum makecache
- yum localinstall 总结的时候补充下.
10)yum命令配置文件
- yum源的配置文件/etc/yum.repo.d是以.repo结尾.yum仓库.从哪里下载软件
- yum命令配置文件:yum缓存存放的位置,yum下载的rpm包是否保留
- yum命令的配置文件:/etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever #yum命令下载的软件包缓存目录
keepcache=0 #是否保留yum下载的软件包.
$basearch x86_64
$releasever 7
ll /var/cache/yum/x86_64/7/
企业项目:yum仓库搭建
- 项目背景:日常工作中需要使用到很多的软件包(rpm包),现在在一个没有网络的环境中.想安装一些软件.
- 项目目标: 安装软件,部署服务.
- 项目方案选择
- 方案01: 找个机器,开启keepcache,下载与安装常用软件包,安装服务.把对应的软件包打包并发送到对应的服务器. 优点:简单. 缺点:无
法知晓依赖关系. - 方案02: 自己搭建yum仓库,仓库中存放常用的软件包即可. 精确, 优点:随意根据自己要求定义仓库中软件包.可以变换(增减), 可以被
其他机器访问. 缺点: 搭建较为复杂. - 方案03: 折中方案,通过光盘搭建yum仓库. 优点:简单,快速. 缺点:软件包不全.只能自己使用.仅仅是本地仓库,无法互联.
- 方案01: 找个机器,开启keepcache,下载与安装常用软件包,安装服务.把对应的软件包打包并发送到对应的服务器. 优点:简单. 缺点:无
- 结果: 目前我们选择方案03, 第2阶段结束选择方案02(未来工作中.)
方案3:配置步骤:
- 1、挂载光盘
- 2、配置光盘yum源配置文件.local.repo文件()
- 3、清除缓存与注释其他yum源
#01 光盘挂载
mkdir -p /data/cdrom
mount /dev/cdrom /data/cdrom/
tail /etc/fstab
/dev/cdrom /data/cdrom iso9660 defaults 0 0
#02 书写本地光盘源的配置文件
[local]
name=this is local yum yuan
enabled=1
baseurl=file:///data/cdrom/
#baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
#注释其他的源
cd /etc/yum.repos.d/
gzip *
gzip -d local.repo.gz
#生成缓存
yum makecache
#检查本地源
yum repolist
总结
- yum源的配置:
配置文件的格式
- 配置文件的格式;
- 增加yum源(epel源)
- 更改yum源(系统默认—>阿里或清华)
- yum指令
- yum安装软件
yum install -y tree
- yum查询软件:
yum list ;yum provides /yum search all
- yum删除软件包:
yum remove
- yum升级:
yum update /yum upgrade
- yum缓存处理: 清除缓存:
yum clean all ; 创建缓存 yum makecache
- yum localinstall 自己下载rpm包,让yum解决依赖.
- yum安装软件