linuxRPM命令详解
### Linux RPM 命令详解 #### 概述 RPM (Red Hat Package Manager) 是一个流行的 Linux 软件包管理系统,最初由 Red Hat 开发,后来被多个 Linux 发行版采用,如 Fedora、Mandriva、SUSE 和 Yellow Dog 等。RPM 的主要功能包括安装、卸载、升级、查询软件包等操作。 #### 基本概念 RPM 支持三种类型的软件包:二进制包(binary package)、源码包(source package)和原始源码包(raw source package)。二进制包是编译好的程序包,可以直接在目标系统上安装使用;源码包是经过预处理但未编译的源代码,通常以 .src.rpm 扩展名结尾;原始源码包是未经任何处理的源代码压缩文件。 #### 常用命令与示例 ##### 安装软件包 - `-i` 或 `--install` 用于安装新的软件包。 - `-v` 或 `--verbose` 用于提供更详细的输出信息。 - `-h` 或 `--hash` 在安装过程中打印哈希标记。 **示例:** ```bash rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm ``` - `--relocate` 选项可以用来改变安装目录。 - `--test` 选项可以测试安装,不会实际执行安装动作。 - `--oldpackage` 选项用于覆盖旧版本而不考虑依赖关系。 **示例:** ```bash rpm -ivh --relocate/=opt/gaim gaim-1.3.0-1.fc4.i386.rpm rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm ``` ##### 更新软件包 - `-U` 或 `--upgrade` 用于更新已存在的软件包。 **示例:** ```bash rpm -Uvh file.rpm ``` ##### 卸载软件包 - `-e` 或 `--erase` 用于卸载软件包。 **示例:** ```bash rpm -e file.rpm ``` ##### 查询软件包 - `-q` 或 `--query` 用于查询已安装的软件包。 - `-a` 或 `--all` 查询所有已安装的软件包。 - `-p` 或 `--package` 查询特定的软件包文件。 - `-l` 或 `--list` 列出软件包中的文件列表。 - `-d` 或 `--docfiles` 列出所有文档文件。 - `-f` 或 `--file` 查询拥有指定文件的软件包。 **示例:** ```bash rpm -qa | grep httpd # 查看是否安装了包含 httpd 关键字的软件包 rpm -ql httpd # 查看 httpd 包含哪些文件 rpm -qpi Linux-1.4-6.i368.rpm # 查看软件包安装信息 rpm -qpf Linux-1.4-6.i368.rpm # 查看软件包中的文件 ``` ##### 其他选项 - `--nodeps` 忽略依赖关系。 - `--force` 强制执行安装,即使文件已经存在也会替换。 #### 实际应用场景 1. **检查已安装软件包:** ```bash rpm -qsamba # 检查 samba 是否已安装 ``` 2. **从远程位置安装软件包:** ```bash rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm ``` #### 源码包处理 对于 `.src.rpm` 文件,可以使用以下命令进行处理: - `--recompile` 重新编译源码包。 - `--rebuild` 重新构建源码包,生成 i386.rpm 格式的可安装包。 **示例:** ```bash rpm --rebuild vim-4.6-4.src.rpm ``` #### RPM 与依赖管理 - **依赖检查与解决**:安装或更新时,RPM 会自动检查并解决依赖关系。 - **忽略依赖**:使用 `--nodeps` 可以跳过依赖检查,但不建议这样做,因为可能会导致系统不稳定。 #### RPM vs 其他包管理器 - **APT (Advanced Package Tool)**:Debian 及其衍生版(如 Ubuntu)使用的包管理器。 - **YUM (Yellowdog Updater Modified)**:RHEL (Red Hat Enterprise Linux) 和 CentOS 使用的包管理器。 - **DNF (Dandified Yum)**:Fedora 22 及之后版本使用的包管理器,是 YUM 的替代品。 #### 总结 RPM 是 Linux 系统中非常重要的工具之一,它可以帮助用户轻松地安装、更新、卸载软件包,并且支持依赖管理和查询功能。通过掌握 RPM 的基本命令和选项,用户可以更加高效地管理自己的 Linux 系统。无论是日常使用还是系统维护,了解 RPM 都是一项必不可少的技能。