Linux系统中的软件管理:工具、仓库与安装方式
笔记哥 /
04-22 /
11点赞 /
0评论 /
158阅读
## 简介
Linux 系统中的软件管理体系主要包括软件包管理工具、软件仓库以及相关的依赖管理等方面。以下是详细介绍:
### 软件包管理工具
- dpkg:Debian 及其衍生系统(如 Ubuntu)使用的底层软件包管理工具。它用于安装、卸载、查询和管理.deb 格式的软件包。例如,使用 `dpkg -i package.deb` 命令可以安装名为 package.deb 的软件包。
- apt:基于 dpkg 的高级软件包管理工具,提供了更方便的命令行接口和软件仓库管理功能。可以通过 `apt update` 命令更新软件包列表,使用 `apt install package_name` 命令安装软件包。
- rpm:Red Hat 及其衍生系统(如 CentOS、Fedora)使用的软件包管理工具,用于管理.rpm 格式的软件包。例如,`rpm -ivh package.rpm` 命令可用于安装软件包。
- yum:基于 rpm 的软件包管理工具,能自动处理软件包的依赖关系,从指定的软件仓库中下载并安装软件包。通过 yum install package\_name 可以安装软件包,yum update 可以更新系统软件包。
- dnf:新一代的包管理工具,在 Fedora 等系统中逐渐取代 yum。它具有更快的运行速度和更简洁的命令语法,功能与 yum 类似,例如 dnf install package\_name 用于安装软件包。
### 软件仓库
官方软件仓库:由 Linux 发行版官方维护,包含了经过测试和认证的软件包,具有较高的稳定性和安全性。例如,Ubuntu 的官方软件仓库包含了大量的开源软件,用户可以通过 apt 工具方便地获取和安装。
第三方软件仓库:一些软件开发商或社区会提供自己的软件仓库,以方便用户获取最新版本或特定的软件。例如,Google Chrome 浏览器的官方网站提供了适用于 Linux 系统的软件仓库,用户可以将其添加到系统中,通过包管理工具进行安装和更新。
### 依赖管理
软件包之间可能存在依赖关系,即一个软件包需要依赖其他软件包才能正常运行。Linux 的软件管理体系能够自动处理这些依赖关系。当使用包管理工具安装软件包时,它会检查软件包的依赖关系,并自动下载和安装所需的依赖软件包。例如,安装一个图形化应用程序时,可能需要依赖某些图形库,apt 或 yum 等工具会自动识别并安装这些依赖库。
### 软件编译与安装
除了使用软件包管理工具安装软件外,还可以从源代码编译安装软件。这种方式可以让用户根据自己的需求对软件进行定制,但需要用户具备一定的编译知识和工具。通常,需要先下载软件的源代码,然后使用 configure 脚本进行配置,再使用 make 命令进行编译,最后使用 make install 命令将软件安装到系统中。
## linux软件包安装方式
- yum/apt:`yum/apt`命令替我们从网络下载软件包,替我们安装,如果软件包有依赖,`yum/apt`也会替我们下载并安装,但是需要网络
- rpm/dpkg:手动下载rpm/deb包,`rpm/dpkg`命令手动安装,如果有依赖手动解决
- 二进制软件包:类似于绿色软件,解压即用,一般需要简单配置,如果有依赖也需要自己解决
- 编译安装:下载软件源代码,配置、编译安装、高度自定义,遇到依赖问题自己解决
## 软件安装命令之`apt`
apt 是 Debian、Ubuntu 等 Linux 发行版中常用的高级软件包管理工具,基于 dpkg 构建,它能自动处理软件包之间的依赖关系,从软件仓库中获取并安装软件。
### 配置apt源
将apt源替换成国内的,有助于下载、更新软件包时提速.
参考:https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11dJt3Ko
**以Ubuntu22.04为例:**
```csharp
# 修改/etc/apt/sources.list文件
vim /etc/apt/sources.list
# 将文件内容替换成下列内容
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
```
### apt之查询软件
查询已经安装的所有软件
```csharp
apt list
# 查询已经安装的所有软件
apt list --installed
# 查询可升级的软件包
apt list --upgradable
```
查询指定的安装包
```csharp
# 搜索已经安装的软件包,根据关键字模糊搜索
apt search [keywords]
# 查看指定软件包的详细信息,查看指定软件包的详细信息,如版本、依赖关系等。
apt show [package_name]
# 示例apt show [package_name]
root@master:~$ apt show nginx
Package: nginx
Version: 1.24.0-2ubuntu7.3
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers
Original-Maintainer: Debian Nginx Maintainers
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 1352 kB
Provides: httpd, httpd-cgi, nginx-abi-1.24.0-1
Depends: libc6 (>= 2.34), libcrypt1 (>= 1:4.1.0), libpcre2-8-0 (>= 10.22), libssl3t64 (>= 3.0.0), zlib1g (>= 1:1.1.4), iproute2, nginx-common (= 1.24.0-2ubuntu7.3)
Breaks: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Replaces: nginx-core (<< 1.22.1-6~), nginx-extras (<< 1.22.1-6~), nginx-light (<< 1.22.1-6~)
Homepage: https://nginx.org
Download-Size: 520 kB
APT-Sources: http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages
Description: small, powerful, scalable web/proxy server
Nginx ("engine X") is a high-performance web and reverse proxy server
created by Igor Sysoev. It can be used both as a standalone web server
and as a proxy to reduce the load on back-end HTTP or mail servers.
```
### apt之安装软件
使用`apt install`可以安装软件,有`-y`选项,作用是自动回答所有询问为 “是(yes)”,避免在执行操作过程中出现交互式确认提示。
用法示例:
```csharp
# 安装nginx
apt install -y nginx
# 批量安装
apt install -y nginx git jdk
```
清理缓存并重新安装
有时,损坏的软件包可能是由于缓存文件损坏导致的。你可以清理 apt 的缓存,然后重新安装有问题的软件包。
```csharp
# 清理缓存
apt clean
# 重新安装
apt install --reinstall [package_name]
```
### apt之更新软件
更新软件包列表,确保获取到最新的软件包信息。这有助于解决因软件包信息过时导致的问题。
```csharp
# 更新所有软件包列表
apt update -y
```
升级软件包
```csharp
# 升级所有的已安装的软件包
apt upgrade -y
# 升级指定的软件包
apt upgrade [pakage_name]
# 系统全面升级,不仅会更新已安装的软件包,还会处理因依赖关系变化而需要升级的软件包。
apt full-upgrade
```
### apt之卸载软件
卸载软件包:卸载软件包但会保留配置文件。
```csharp
apt remove package_name
```
彻底卸载软件包:既卸载软件包,也会删除其配置文件。
```csharp
apt purge package_name
```
### apt之清理软件
清理缓存:删除 /var/cache/apt/archives 目录下所有已下载的软件包文件,以释放磁盘空间。
```csharp
apt clean
```
自动清理:仅删除那些无法再被下载的软件包文件。
```csharp
apt autoclean
```
自动移除:移除那些因其他软件包的卸载而不再需要的依赖软件包。
```csharp
sudo apt autoremove
```
## dpkg
`dpkg` 是 Debian 及其衍生系统(如 Ubuntu)使用的底层软件包管理工具,主要用于管理 `.deb` 格式的软件包
### dpkg之安装软件包
使用 `-i` 选项可以安装指定的 `.deb `软件包。
```csharp
# 需要将 package.deb 替换为实际的软件包文件名。不过,dpkg 安装时不会自动处理软件包的依赖关系,如果软件包有未满足的依赖,安装可能会失败。
dpkg -i package.deb
```
### dpkg之卸载软件包
移除软件包:使用 `-r` 选项可以移除指定的软件包,但会保留其配置文件。
```csharp
dpkg -r package_name
```
使用 `-P `选项可以彻底移除软件包及其配置文件。
```csharp
dpkg -P package_name
```
### dpkg查询软件包
**列出已安装的软件包**
使用 `-l` 选项可以列出系统中所有已安装的软件包,也可以通过指定软件包名称或通配符来列出特定的软件包。
```csharp
# 列出所有的已安装的软件包
dpkg -l
# 查询指定的软件包
dpkg -l nginx
```
查看软件包详细信息:使用 `-s` 选项可以查看指定软件包的详细信息,包括版本、状态、依赖关系等。
```csharp
dpkg -s package_name
```
查找文件所属的软件包:使用 -S 选项可以查找指定文件是由哪个软件包安装的。
```csharp
dpkg -S /path/to/file
```
yum和rpm后续有时间再写入
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/2484
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利