Skip to content

Latest commit

 

History

History
316 lines (227 loc) · 7.36 KB

14-软件管理.md

File metadata and controls

316 lines (227 loc) · 7.36 KB

Chapter 14 - 软件管理

返回

[TOC]

1. RPM (Redhat Package Manager)

RPM 包

mount /dev/cdrom /mnt
# 查看光盘中的 rpm 包
cp /mnt/AppStream/Packages/vsftpd-3.0.3-33.el8.x86_64.rpm .

RPM 软件包由四个部分组成 name-version-release.architecture

  • Name 包的名字: vsftpd
  • Version 原始软件版本号: 3.0.3
  • Release 基于该版本的软件包的发行版号: 33.el8
  • Arch 软件架构: x86_64

RPM 的使用

检查 RPM 包

rpm -q [select-options] [query-options]

# 列出所有已安装的软件包
rpm -qa
rpm -qa | grep vsftpd
rpm -qa vsftpd

# 列出软件包所安装的文件
rpm -ql vsftpd

# 列出软件包所安装的配置文件
rpm -qc vsftpd

# 列出软件包所安装的文档文件
rpm -qd vsftpd

# 列出软件包的详细信息
rpm -qi vsftpd

# 列出安装或删除软件包之前或之后运行的 Shell 脚本
rpm -q --scripts vsftpd

# 通过文件查找是由哪个软件包所安装的
rpm -qf /etc/vsftpd/vsftpd.conf

安装和卸载 RPM 包

# -i, install
rpm -ivh vsftpd-3.0.3-33.el8.x86_64.rpm

# -e, erase
rpm -evh vsftpd

升级 RPM 包

升级内核的时候,是可以多版本共存的。

# 先卸载旧版本,然后安装新版本
rpm -Uvh updated_pkg

验证 RPM 包

# 查看当前安装的包有没有被修改过
rpm -V vsftpd

# RPM 包使用私钥做过数字签名,所以可以使用红帽提供的公钥来验证包
# 1. 查找是否安装了公钥
rpm -qa | grep pubkey

# 2. 如果没有,需要导入公钥
# 使用光盘
rpm --import /mnt/RPM-GPG-KEY-redhat-release
# 使用 PKI
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

# 验证 RPM 包签名
rpm -K vsftpd-3.0.3-33.el8.x86_64.rpm

2. yum 命令

yum 全称为 YellowdogUpdater Modified,用于在Linux系统中基于 RPM 技术进行软件包的管理。它的优点是可以自动处理软件依赖关系,一次性安装全部软件。

dnf 全称为 Dandified YUM,与 yum 命令高度相同,主要是为了解决 yum 命令的运行缓慢、内存占用高等问题。

[root@server1 ~]# ls  -l `which yum`
lrwxrwxrwx. 1 root root 5 3月   8 2021 /usr/bin/yum -> dnf-3
[root@server1 ~]# ls  -l `which dnf`
lrwxrwxrwx. 1 root root 5 3月   8 2021 /usr/bin/dnf -> dnf-3

配置 YUM 服务器

# 安装 FTP 服务
rpm -ivh /mnt/AppStream/Packages/vsftpd-3.0.3-33.el8.x86_64.rpm

# 启用匿名登录
vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

systemctl restart vsftpd
systemctl enable vsftpd

# 设置防火墙
firewall-cmd --set-default-zone=trusted

# 设置 SELinux
setenforce 0
vi /etc/selinux/config
SELINUX=permissive
  • 默认情况下,服务端 ftp 共享的目录是 /var/ftp

  • 客户端访问 ftp://192.168.26.133 相当于直接访问的是服务端的/var/ftp

cd /var/ftp

mkdir dvd

# 设置共享目录,将光盘共享出去
mount /dev/cdrom dvd

vi /etc/fstab
/dev/dvd	/var/ftp/dvd	iso9660		defaults	0	0
  • 正常情况下,含有 repodata 的目录才可以作为源,dvd/AppStream/dvd/BaseOS/ 可以作为源
[root@server133 ftp]# ls dvd dvd/AppStream/ dvd/BaseOS/
dvd:
AppStream  BaseOS  EFI  EULA  extra_files.json  GPL  images  isolinux  media.repo  RPM-GPG-KEY-redhat-beta  RPM-GPG-KEY-redhat-release  TRANS.TBL

dvd/AppStream/:
Packages  repodata

dvd/BaseOS/:
Packages  repodata

在客户端配置源

# 默认的源为 redhat.repo
[root@server130 ~]# cd /etc/yum.repos.d/
[root@server130 yum.repos.d]# ls
redhat.repo

# 配置FTP源
[root@server130 yum.repos.d]# vi dvd.repo
[appstream]
name=appstream
baseurl=ftp://192.168.26.133/dvd/AppStream/
enabled=1
gpgcheck=0

[baseos]
name=baseos
baseurl=ftp://192.168.26.133/dvd/BaseOS/
enabled=1
gpgcheck=1
gpgkey=ftp://192.168.26.133/dvd/RPM-GPG-KEY-redhat-release

# 查看当前可用的源
[root@server130 yum.repos.d]# yum repolist
仓库 id                                                                   仓库名称
appstream                                                                 appstream
baseos                                                                    baseos

# 查看安装包,以及在本机是否安装.
#   默认需要精确匹配包名,也可以使用 * 来模糊匹配 yum list vsftp\* or yum list 'http*'
[root@server130 yum.repos.d]# yum list vsftpd
上次元数据过期检查:0:01:13 前,执行于 2023年07月19日 星期三 21时26分27秒。
可安装的软件包
vsftpd.x86_64  		3.0.3-33.el8			appstream

# 按关键字查找安装包 yum search KEYWORD
[root@server130 yum.repos.d]# yum search vsftpd
上次元数据过期检查:0:03:11 前,执行于 2023年07月19日 星期三 21时26分27秒。
================================== 名称 精准匹配:vsftpd ===================================
vsftpd.x86_64 : Very Secure Ftp Daemon

# 查看包的详细信息
yum info PACKAGENAME

# 显示与指定的路径名匹配的软件包
yum provides /var/www/html

# 安装 yum 包
yum install vsftpd

# 卸载 yum 包
yum remove vsftpd

# 更新 yum 包
yum update vsftpd

# 查询哪个包可以提供某个命令
yum whatprovides */smbclient

[root@server130 yum.repos.d]# yum whatprovides */smbclient
上次元数据过期检查:0:28:42 前,执行于 2023年07月19日 星期三 21时26分27秒。
bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash
仓库        :@System
匹配来源:
文件名    :/usr/share/bash-completion/completions/smbclient

bash-completion-1:2.7-5.el8.noarch : Programmable completion for Bash
仓库        :baseos
匹配来源:
文件名    :/usr/share/bash-completion/completions/smbclient

samba-client-4.13.3-3.el8.x86_64 : Samba client programs
仓库        :baseos
匹配来源:
文件名    :/usr/bin/smbclient

使用 yum 管理组软件

yum 中的组是指针对特定目的一起安装的软件集合。

  • 常规组是软件包的集合
  • 环境组是常规组的集合
# 显示已安装和可用的组的集合
[root@server130 yum.repos.d]# LANG=C yum grouplist
Last metadata expiration check: 0:35:08 ago on Wed Jul 19 21:26:27 2023.
Available Environment Groups:
   Server
   Minimal Install
   Workstation
   Virtualization Host
   Custom Operating System
Installed Environment Groups:
   Server with GUI
Installed Groups:
   Container Management
   Headless Management
Available Groups:
   .NET Core Development
   RPM Development Tools
   Development Tools
   Graphical Administration Tools
   Legacy UNIX Compatibility
   Network Servers
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools

# 显示组的信息
yum group info ".NET Core Development"

# 安装一个组
[root@server130 yum.repos.d]# yum groupinstall 'Virtualization Host'

yum 模块

AppStream 中包含两种类型的内容:模块和传统的RPM包。

模块描述了属于一个整体的一组 RPM 软件包

yum 模块由三部分组成

  • name: 模块名
  • stream: 模块所包含的版本,每个版本独立接受更新
  • profile: 配置文件是为特定用例一起安装的软件包列表,比如服务器、客户端、开发、最小安装等。
yum module list

yum module list php

yum module info php

yum module install php

# 卸载和重置模块
yum module remove php
yum module reset php

createrepo 创建软件仓库和生成元数据

yum install createrepo_c.x86_64

createrepo /dir