IT小李
发布于 2025-10-27 / 22 阅读
0
0

Linux基础教程6 - 软件的安装和卸载

背景知识

Linux的软件安装方式与Windows有很大的不同。甚至同为Linux系统,Rocky Linux和Ubuntu之间都有很大差异。

假设我需要安装一个"htop"软件,这是一款命令行工具,主要用于监控系统运行状体。进入htop官网,找到下载页面:https://htop.dev/downloads.html,可以看到官方提供了多2种安装选择:

  • Sources - source code, provided on Github

  • Binaries - pre-compiled binaries, provided by distributions

Sources即源码,需手动执行三步进行安装:./configure(配置编译参数)→ make(编译源代码)→ make install(安装到系统)。

Binaries即预编译的二进制文件,一般可以“一键安装”。

源代码包是不区分Linux发行版的,预编译的二进制包有 "Red Hat系" 和 "Debian系"的差异。

Red Hat系包括:RHEL/Fedora/CentOS/Rocky Linux等等。

Debian系包括:Debian/Ubuntu//Kali Linux等等。

使用rpm安装软件

rpm全称是 redhat package manager,后来改成 rpm package manager,这是根据源码包编译出来的包。 rpm也是Red Hat系操作系统安装软件的方式,常用的命令有:

# 安装软件包
sudo rpm -ivh wget-1.24.5-5.el10.x86_64.rpm

# 使用url链接安装软件包
sudo rpm -ivh https://mirrors.aliyun.com/rockylinux/10/AppStream/x86_64/os/Packages/w/wget-1.24.5-5.el10.x86_64.rpm

# 查询系统里已安装的软件包
sudo rpm -qa | grep -i wget

# 查询软件包的详细信息
sudo rpm -qi wget

# 查询软件包的配置文件路径
sudo rpm -qc wget

# 反查某个文件是由哪个软件引入的
sudo rpm -qf /etc/wgetrc

# 卸载软件
sudo rpm -e wget

# 更新软件
sduo rpm -Uvh wget-1.24.5-5.el10.x86_64.rpm

在日常运维中,rpm使用的频率不高,原因有2点:

  1. 软件包得事先下载,或者找到下载链接。

  2. 需要人工处理软件包的依赖问题(如果有)。

更多的还是使用dnf/yum进行安装。

使用dnf/yum安装软件

大部分的Linux发行版,都有自己内置的“应用商店”,一般我们称之为软件仓库,里面包含了大量常用软件的.rpm包,例如 htop 软件包就可以在阿里云的镜像站里找到:https://mirrors.aliyun.com/rockylinux/10/devel/x86_64/os/Packages/h

如果想安装软件仓库里的软件,可以使用 dnf 或者 yum 命令。dnfyum 都是Red Hat系Linux发行版中用于管理 RPM 软件包的命令行工具,核心功能是安装、卸载、更新软件,以及处理依赖关系。两者的关系和区别如下:

  • yum(Yellowdog Updater Modified):早期的包管理器,曾是 Red Hat 系的默认工具(如 CentOS 7、RHEL 7 及更早版本)。

  • dnf(Dandified Yum):yum 的继任者,设计用于解决 yum 的性能问题(如依赖解析慢、内存占用高等),在 CentOS 8+、RHEL 8+、Rocky Linux 9、Fedora 22+ 中成为默认包管理器。

  • 兼容性:现代系统中,yum 通常是 dnf别名(输入 yum 实际执行的是 dnf),以兼容旧脚本。

# 使用阿里云镜像站,替换默认软件源,以提升中国大陆地区的软件安装速度
sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
    -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
    -i.bak \
    /etc/yum.repos.d/rocky*.repo

# 创建缓存数据
sudo dnf makecache

# 安装EPEL仓库,EPEL旨在为RHEL及其衍生版提供官方仓库未包含的高质量开源软件,目前阿里云不提供镜像服务,注意不要修改。
sudo dnf install epel-release
sudo dnf makecache

# 安装软件
sudo dnf install htop

# 升级软件
sudo dnf update htop

# 卸载软件
sudo dnf remove htop

# 卸载无用的依赖包
sudo dnf autoremove

# 搜索软件
sudo dnf list |grep -i htop

# 安装指定版本,短横线拼接软件名和版本号
sudo dnf install htop-3.3.0-5.el10_0

配置本地dnf源

如果服务器因为各种原因不能连接互联网,无法从互联网源下载安装软件。这时我们可以使用官方提供的DVD镜像,搭建一个本地的dnf源。

首先下载镜像,选择DVD版本;

然后通过虚拟机的CD-ROM挂载镜像,或者直接解压镜像文件到本地目录。

# 直接挂载cd-rom里的ISO文件
sudo mount /dev/cdrom /mnt

# 挂载本地ISO文件
sudo mount -o loop Rocky-10.1-x86_64-dvd1.iso /mnt

这一步操作后,我们就可以从 /mnt 目录读取ISO镜像里的文件了。

# 备份原repo
cd /etc/yum.repos.d
mkdir bak
mv *.repo bak/

创建新的 local.repo ,内容如下:

[baseos]
name=LocalAppRepo
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1

[appstream]
name=LocalAppstreamRepo
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1

刷新缓存

dnf makecache
dnf repolist

现在就可以正常使用dnf安装软件了,只是软件包的来源都来自DVD镜像

拓展

将本地文件,发布为web服务,这样不仅本机可用,在局域网里的其他机器也可以使用,即内网版本的dnf源。

首先安装nginx

sudo dnf instal nginx -y

编辑 /etc/nginx/nginx.conf ,修改以下内容:

server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root  /mnt;
        autoindex on;
        autoindex_localtime on;
        autoindex_exact_size off;
}

重启nginx,设置开机启动,关闭防火墙

sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl stop firewalld

此时即可通过浏览器访问到 /mnt 目录下的内容了,repo文件可以改成

[baseos]
name=LocalAppRepo
baseurl=http://[ip address]/BaseOS
gpgcheck=0
enabled=1

[appstream]
name=LocalAppstreamRepo
baseurl=http://[ip address]/AppStream
gpgcheck=0
enabled=1


评论