当前位置: 首页 > news >正文

Linux 软件包管理详解:从命令到实战

Linux 软件包管理详解:从命令到实战

在这里插入图片描述

在 Linux 系统中,软件的安装、管理和维护是日常操作的核心。无论是简单的命令工具还是复杂的应用程序,都离不开一套规范的管理机制。本文将从 Linux 应用程序的组成入手,详细解析 RPM 包管理、YUM 仓库配置及常用操作,帮助你全面掌握 Linux 软件管理技能。

一、Linux应用程序组成

命令与应用程序的区别
  • 内部命令:是 Shell 自带的指令,比如 cd(切换目录)、exit(退出终端)、history(查看命令历史)。这些命令不需要单独的执行文件,直接集成在 Shell 中,执行速度极快。
  • 外部命令:本质是独立的可执行程序,比如 ls(列出文件)、cp(复制文件)。它们有自己的安装文件,通常存放在 /bin/sbin 目录,系统安装时会默认自带。
  • 应用程序:功能更复杂的软件,比如 nginx(Web 服务器)、mysql(数据库)。它们需要单独安装,安装路径多为 /usr/bin/usr/sbin(系统级)或 /usr/local/bin(用户自定义)。应用程序可能有图形界面(如 firefox),也可能只有命令行(如 python),运行方式由开发者定义,没有固定格式。
应用程序的组成
  • 可执行文件:普通用户可用的程序放在 /usr/bin(如 ftp 客户端),管理员专用的放在 /usr/sbin(如 vsftpd 服务端)。
  • 配置文件:几乎所有应用程序都需要配置文件,统一存放在 /etc 目录。如果配置文件较多,会创建独立子目录,比如 nginx 的配置在 /etc/nginx/
  • 日志文件:程序运行中产生的日志(如错误信息、访问记录),默认存放在 /var/log 目录,例如 /var/log/vsftpd.logvsftpd 的日志。
  • 文档资料:用户手册、帮助文档等存放在 /usr/share/doc,比如 vsftpd 的文档在 /usr/share/doc/vsftpd-3.0.2/
  • man 手册:命令的帮助手册(就是你用 man ls 查看的内容),存放在 /usr/share/man 目录。

二、RPM包:Linux的“安装包”

什么是RPM包?

RPM 是 RedHat 系列系统(如 CentOS、RHEL)的软件包格式,文件名通常长这样:coreutils-8.30-4.el7.x86_64.rpm。每个部分都有特殊含义:

  • coreutils:软件名称(核心工具集)。
  • 8.30-4:版本号(主版本 8.30,修订版 4)。
  • el7:适配的 Linux 发行版(这里是 CentOS 7/RHEL 7)。
  • x86_64:支持的硬件架构(64 位处理器);如果是 noarch,表示不限制架构(比如纯脚本软件)。
RPM 命令:管理软件

rpm 命令是 RPM 包的管理工具,功能强大,常用操作如下:

查询已安装的软件

列出所有已安装的 RPM 软件:

rpm -qa  # qa = query all,结果会非常多,建议配合 grep 筛选
rpm -qa | grep python  # 只看包含 python 的软件

查看软件的详细信息:

rpm -qi vsftpd  # qi = query info,显示 vsftpd 的版本、作者、描述等

查看软件安装的所有文件:

rpm -ql vsftpd  # ql = query list,列出 vsftpd 安装的所有文件和目录

查询某个文件属于哪个软件:
比如想知道 /usr/bin/ls 来自哪个包:

rpm -qf /usr/bin/ls  # qf = query file,结果会显示 coreutils-8.30-4.el7.x86_64

安装、卸载与更新软件

安装 RPM 包:
假设下载了 vsftpd-3.0.2-22.el7.x86_64.rpm,安装命令:

rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm
# i = install(安装),v = verbose(显示详细过程),h = hash(用 # 显示进度)

卸载软件:
卸载时只需指定软件名(无需完整文件名):

rpm -e vsftpd  # e = erase(卸载)

更新软件:
如果有新版本的 RPM 包,可用 -U 升级:

rpm -Uvh vsftpd-3.0.3-1.el7.x86_64.rpm  # U = upgrade(升级),若未安装则自动安装

强制操作:
遇到依赖错误或版本冲突时,可加 --force(强制安装 / 更新)或 --nodeps(忽略依赖):

rpm -ivh --force --nodeps somepackage.rpm  # 谨慎使用,可能导致软件运行异常

查询未安装的 RPM 包

如果想在安装前查看某个 RPM 包的信息(比如包含哪些文件),可用:

查看未安装包的详细信息:

rpm -qpi /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm  # qpi = query package info

查看未安装包会安装哪些文件:

rpm -qpl /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm  # qpl = query package list

三、YUM:自动化包管理工具

RPM 包虽然方便,但有个头疼的问题:依赖关系。比如安装 nginx 可能需要先安装 opensslpcre 等库,手动解决依赖堪称 “噩梦”。而 YUM(Yellowdog Updater Modified)就是为解决这个问题而生的。

YUM 仓库:软件的 “源头”

YUM 通过 “仓库”(Repository)管理软件包,仓库本质是一个存储大量 RPM 包的服务器(本地目录或远程地址)。所有仓库配置文件都放在 /etc/yum.repos.d/ 目录,文件名必须以 .repo 结尾(比如 base.repo)。

一个典型的仓库配置文件(server.repo)长这样:

[a]  # 仓库标识(必须唯一)
name=aa  # 仓库名称(自定义,方便识别)
baseurl=file:///mnt/  # 仓库路径(本地目录/file://,HTTP地址/http://,FTP地址/ftp://)
enabled=1  # 是否启用该仓库(1=启用,0=禁用)
gpgcheck=0  # 是否校验软件包签名(0=不校验,1=校验,新手建议设为0)
YUM 常用命令:

YUM 命令简单直观,自动处理依赖关系,常用操作如下:

安装软件:

yum -y install vsftpd  # -y 表示自动确认,无需手动输入 y

卸载软件:

yum -y remove vsftpd  # 会自动卸载无用的依赖(谨慎,可能误删关联软件)

管理软件包组:

Linux 中有些功能需要多个软件配合(比如开发工具集),这些软件被打包成 “软件包组”:

# 列出所有可用的软件包组
yum group list# 安装“开发工具”组(包含 gcc、make 等编译工具)
yum -y groupinstall "Development Tools"# 卸载软件包组
yum -y group remove "Development Tools"

更新软件:

# 更新指定软件
yum -y update vsftpd# 更新系统中所有可更新的软件(包括内核,谨慎操作,可能导致兼容性问题)
yum -y update

查询软件:

# 查看软件是否已安装
yum list installed vsftpd# 搜索软件(包括已安装和可用的)
yum search vsftpd# 查看软件详情
yum info vsftpd

清理缓存:

YUM 会缓存下载的 RPM 包和仓库信息,长期不清理会占用空间:

yum clean all  # 清理所有缓存
yum makecache  # 重建缓存(加快后续操作速度)
DNF:YUM 的升级版本

在 CentOS 8、Fedora 等新系统中,YUM 已被 dnf 取代。DNF 兼容 YUM 的所有命令,且性能更好(依赖解析更快)。

常用 DNF 命令示例:

dnf -y install nginx        # 安装软件
dnf -y remove nginx         # 卸载软件
dnf check-update            # 检查更新
dnf repolist enabled        # 列出启用的仓库

四、实验:软件安装

需求:用本地光盘作为 YUM 仓库,安装 vsftpd
  1. 挂载光盘镜像
    假设系统光盘已挂载到 /mnt

    mount /dev/cdrom /mnt  # 物理机插入光盘,虚拟机需加载 ISO 镜像
    
  2. 创建仓库配置文件

    vim /etc/yum.repos.d/local.repo
    

    写入以下内容:

    [local]
    name=Local CDROM Repo
    baseurl=file:///mnt
    enabled=1
    gpgcheck=0
    

    安装 vsftpd

    yum -y install vsftpd
    

    验证安装

    rpm -q vsftpd  # 查看是否安装成功
    systemctl start vsftpd  # 启动服务
    
http://www.lryc.cn/news/602963.html

相关文章:

  • 计算机网络编程-Socket通信以及实战
  • STM32 USB HOST 驱动FT232 USB转串
  • 安装anaconda后,如何进入python解释器
  • SSH 远程控制及相关工具
  • 常见的JVM虚拟机的参数详解
  • “量子通信”
  • 【C语言网络编程基础】TCP并发网络编程:io多路复用
  • 五自由度磁悬浮轴承转子:基于自适应陷波器的零振动攻克不平衡质量扰动的终极策略
  • linux du、df命令使用教程
  • 面向对象设计原则和设计模式分类
  • 开源AI智能体-JoyAgent集成Deepseek
  • C++模板元编程从入门到精通
  • [论文阅读] 人工智能 | 机器学习工作流的“救星”:数据虚拟化服务如何解决数据管理难题?
  • [机缘参悟-236]:通过AI人工神经网络理解人的思维特征:惯性思维、路径依赖、适应性、不同场合不同言行、经验、概率、常规与特殊情形(正态分布)、环境适应性
  • 5 分钟上手 Firecrawl
  • Java项目:基于SSM框架实现的社区团购管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+远程部署】
  • js的学习1
  • 如何理解有符号数在计算机中用​​补码​​存储
  • 阿里给AI To C战略戴上眼镜
  • 案例开发 - 日程管理 - 第三期
  • Android Handler 完全指南
  • 【QT搭建opencv环境】
  • 商城系统-项目测试
  • redis未授权getshell四种方式
  • Ubuntu24安装MariaDB/MySQL后不知道root密码如何解决
  • 基于STM32设计的智慧果园云监测系统_256
  • 基于Uniapp及Spring Boot的奢侈品二手交易平台的设计与实现/基于微信小程序的二手交易系统
  • linux安装zsh,oh-my-zsh,配置zsh主题及插件的方法
  • 机器学习基础-numpy
  • OpenMP 并行编程核心机制详解:从变量作用域到同步优化