[ Content contribution] Linux 入门教程(七):软件包管理深入解析
Tofloor
poster avatar
玄圭SwenGway
deepin
2025-01-04 12:44
Author

Linux 入门教程(七):软件包管理深入解析

大家好!在上一节中,我们搞定了文件权限、链接以及管道重定向。今天呢,我们来聊聊一个比厨房里调料还复杂的东西——软件包管理

听说过“包子”吗?在 Linux 里,软件包就像“包子”,里面包含了你需要的程序和工具。而我们讲的就是如何通过系统里的 软件包管理工具,就像一位厨师,给你送上一份份完美的软件“包子”!不过,不是每个软件包都能一口吃到,你得先学会如何点餐、如何调味,甚至怎么自己做“包子”。

今天,我们将分两大部分来解开这个谜团——dpkgAPT


一、软件包管理是什么?

想象一下,你家里有一堆食材,每当你想做一顿美味的晚餐时,你需要从中挑选出你需要的食材。这时,你有两个选择:

  1. 自行挑选食材,做菜 —— 这就是用 dpkg 命令安装软件。
  2. 去餐厅买套餐,省事又省力 —— 这就是使用 APT,它帮你自动挑选好食材并做成美味套餐。

其实,Linux 的软件包管理系统就像是你的食材商店,包子、面条、牛排啥都有,关键看你怎么点菜。


二、Linux 软件包的种类

Linux 里的软件包分为两种类型,就像你做菜时可以选择生鲜食材(源码包)或者现成的冷冻食品(二进制包)。

  1. 源码包(Source Package):需要自己动手从源代码编译成可以使用的程序。虽然很有成就感,但也需要时间和技术支持。如果你是做菜的大厨,可以选择这种。
    • 文件格式:.tar.gz.tar.bz2
    • 适合不怕麻烦,喜欢动手的你。
  2. 二进制包(Binary Package):已经做好了的“速食包子”,只需要直接安装,马上能用。每个包子里面已经包含了所有的调味料(库文件),你不用再为依赖问题发愁。
    • 文件格式:.deb(适用于 Deepin 和 Debian 系列)或者 .rpm(适用于 Fedora 和 CentOS 系列)。
    • 适合不想太麻烦、追求高效的你。

三、dpkg:安装软件包的“手动厨师”

dpkg 就是 Linux 中一个基础的工具,它帮助你安装 .deb 文件。但它和真正的厨师不太一样——它并不关心你需要什么食材(依赖包)。如果缺了依赖,它只是无动于衷地站在那里,看着你一个个找食材。

如何用 dpkg 安装 .deb 软件包

  1. 首先,下载你需要的软件包(像“包子”一样,准备好原材料)。
  2. 然后,用 dpkg 命令安装它:
    sudo dpkg -i example-package.deb
    
  3. 如果它需要其他的“食材”(依赖包),而你忘记准备,dpkg 只能告诉你:“缺少依赖,自己解决!”

如何用 dpkg 卸载软件包

如果你吃不下这个包子了,想把它扔掉:

sudo dpkg -r example-package

dpkg 的局限性

dpkg 可以安装包子,但它不关心你是否搭配了酱料(依赖包)。它很“直接”——安装包子,不管包子好不好吃。

缺点:

  • 无法自动处理依赖问题:安装包子时,如果缺了酱料,它不会告诉你怎么找。你得自己去找。
  • 没有更新功能:如果你已经吃过一次包子,想要更新新的版本,它也不能给你送上新包子。

这时候,你就会想要更强大的工具了,别担心,APT来了!


四、APT:自动化“快餐店”式的包子安装

APT 就是高级版的包子店,它不仅会为你做包子,还会根据你缺什么酱料(依赖包),自动调配好。你只需要告诉它想吃什么,剩下的它都能搞定!

APT 的工作原理

APT(Advanced Package Tool)负责自动下载和安装 .deb 包,同时它会处理你所有的依赖关系,不需要你一个个去找配料。它就像是一个自动化的包子工厂,经过精心调配后,你的每一份包子都是最新的、最合适的版本。

  • APT 管理的软件源:APT 每次做包子时,都会去一个“大仓库”里取食材,这个仓库就叫做 软件源。APT 默认连接的是你的系统配置好的软件源,里面包含了所有可以下载的软件包。

常用 APT 命令

  • 更新软件包列表: 更新软件包仓库的菜单,保证你点的菜是最新的。

    sudo apt update
    
  • 安装软件包: 想吃什么包子就点什么。

    sudo apt install vlc
    

    这就像告诉包子店:“给我做个 VLC 包子!”

  • 卸载软件包: 如果你吃腻了包子,可以轻松“撤单”。

    sudo apt remove vlc
    
  • 升级所有软件包: 这条命令就是让包子店给你送上最新鲜、最美味的包子。

    sudo apt upgrade
    
  • 清理不再需要的包: 吃完包子以后,店里可能有一些没用的“残渣”,你可以让包子店打扫一下。

    sudo apt autoremove
    

软件源:包子店的“菜单”

APT 使用的 软件源 就像包子店的菜单,列出了可以购买的软件包。当你通过 APT 安装软件时,它会从这些软件源下载最新的包子(软件)。Deepin 系统默认使用的是 Deepin 官方源,不过你可以根据需要切换源,比如用国内的源来加速下载。

更换软件源

如果你发现从官方源下载太慢,可以换个地方试试。修改 /etc/apt/sources.list 文件,替换成国内的源:

  1. 打开配置文件:
    sudo nano /etc/apt/sources.list
    
  2. 把原来的源地址替换成国内镜像源,比如阿里云:
    deb http://mirrors.aliyun.com/deepin stable main contrib non-free
    
  3. 更新源:
    sudo apt update
    

这样,你的包子就能从更快的“包子店”里买到啦!


五、为什么 Windows 安装软件很简单,而 Linux 这么麻烦?

如果你用过 Windows,就会发现它安装软件特别简单,一般只需要下载一个 .exe 文件,双击就能安装完成。而在 Linux 中,我们常常需要安装很多“依赖”,这让很多新手感到困惑:“为什么 Linux 安装软件这么麻烦?”

原因很简单:Windows 和 Linux 的设计理念完全不同。

  1. Windows 是“封闭式”的:Windows 中的软件大多是封装好的“独立包子”,你只需要装上就能吃,而不关心有没有酱料(依赖包)。这些软件包已经包含了所需的所有配料,确保能够直接运行。但是会造成大量库文件重复出现,导致系统臃肿,且硬盘空间利用率低下,浪费硬盘空间
  2. Linux 是“模块化”设计:Linux 中的每个软件包都尽量保持独立、精简,只有当你需要的时候,它才会“拉取”其他配料(依赖包)。这虽然使得系统更高效,但也意味着安装软件时,往往需要处理更多的依赖问题。
  3. 软件源管理:在 Linux 中,你通过软件源来下载软件,而 Windows 中的软件大多数通过独立的安装程序直接下载。这也是为什么 Linux 安装时需要依赖管理,而 Windows 则不太需要。

总结

今天我们学习了 Linux 中的软件包管理,了解了 dpkgAPT 如何帮助我们安装和管理软件包。就像你在包子店里点餐一样,APT 让你享受一站式服务,自动处理所有配料和依赖。而 dpkg 虽然也能给你提供包子,但如果没有酱料,你得自己去找。

希望这节能帮助你更好地理解 Linux 中的包子(软件包)世界!如果你下次再问:“为什么 Linux 安装软件这么麻烦?”你就可以大声回答:“因为它讲究精致,讲究配料,讲究每个细节!”😁我自己都给自己雷到了,纯属扯淡😂(●'◡'●)

Reply Favorite View the author
All Replies
jjcui8595
deepin
Resources Team Moderator
2025-01-04 14:39
#1

like

Reply View the author
宁静致远
deepin
2025-01-05 08:46
#2

包子=软件包,很形象joy

Reply View the author
catubibu
deepin
2025-01-05 10:07
#3

感谢感谢,接触十几年linux了,今天才搞清楚dpkg和apt,没有正经学过linux,都是拿应用教程直接上手的,看来学学基本知识也大有好处。

我改了阿里云不成功,如下,不知啥问题?

choubb@23COM:$ sudo vim /etc/apt/sources.list
choubb@23COM:
$ sudo apt update
忽略:1 http://mirrors.aliyun.com/deepin stable InRelease
错误:3 http://mirrors.aliyun.com/deepin stable Release
404 Not Found [IP: 116.140.34.226 80]
命中:2 https://app-store-files.uniontech.com/250102153637985/appstorev23 beige InRelease
命中:4 https://community-packages.deepin.com/driver-23 driver InRelease
正在读取软件包列表... 完成
E: 仓库 “http://mirrors.aliyun.com/deepin stable Release” 没有 Release 文件。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

Reply View the author
玄圭SwenGway
deepin
2025-01-05 12:30
#4
It has been deleted!
玄圭SwenGway
deepin
2025-01-05 12:31
#5
catubibu

感谢感谢,接触十几年linux了,今天才搞清楚dpkg和apt,没有正经学过linux,都是拿应用教程直接上手的,看来学学基本知识也大有好处。

我改了阿里云不成功,如下,不知啥问题?

choubb@23COM:$ sudo vim /etc/apt/sources.list
choubb@23COM:
$ sudo apt update
忽略:1 http://mirrors.aliyun.com/deepin stable InRelease
错误:3 http://mirrors.aliyun.com/deepin stable Release
404 Not Found [IP: 116.140.34.226 80]
命中:2 https://app-store-files.uniontech.com/250102153637985/appstorev23 beige InRelease
命中:4 https://community-packages.deepin.com/driver-23 driver InRelease
正在读取软件包列表... 完成
E: 仓库 “http://mirrors.aliyun.com/deepin stable Release” 没有 Release 文件。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

官方源切换工具,助你分流,顺畅使用仓库资源。-论坛-深度科技

建议用官方gui的换源工具,上面那个链接。

从错误信息来看,问题出在你添加的阿里云镜像源 (http://mirrors.aliyun.com/deepin stable Release) 找不到 Release 文件,导致无法正确更新。可能的原因有以下几种:

  1. 镜像源地址错误:阿里云可能没有提供 deepin stable 版本的镜像或者你用的 URL 地址错误。
  2. 阿里云镜像更新滞后:阿里云的镜像库可能没有及时同步最新的 Deepin 稳定版,导致 Release 文件缺失。

解决方法:

  1. 确认正确的阿里云镜像源: 你可以去阿里云镜像站查看正确的 Deepin 镜像源地址:阿里云开源镜像站,确保你使用的 URL 是最新且有效的。

  2. 替换为官方 Deepin 镜像源: 如果阿里云的镜像确实有问题,可以尝试使用 Deepin 官方提供的镜像源。例如:

    sudo vim /etc/apt/sources.list
    

    将文件中的阿里云镜像源替换为官方源:

    deb http://packages.deepin.com/deepin stable main contrib non-free
    deb http://community-packages.deepin.com/deepin stable main contrib non-free
    
  3. 清理本地缓存并更新: 更新源后,执行以下命令清理本地缓存并重新尝试更新:

    sudo apt clean
    sudo apt update
    sudo apt upgrade
    
  4. 检查网络问题: 如果仍然遇到问题,确保网络连接正常,或者尝试更换网络环境来排除 DNS 或网络相关问题。

Reply View the author
catubibu
deepin
2025-01-05 14:47
#6
玄圭SwenGway

官方源切换工具,助你分流,顺畅使用仓库资源。-论坛-深度科技

建议用官方gui的换源工具,上面那个链接。

从错误信息来看,问题出在你添加的阿里云镜像源 (http://mirrors.aliyun.com/deepin stable Release) 找不到 Release 文件,导致无法正确更新。可能的原因有以下几种:

  1. 镜像源地址错误:阿里云可能没有提供 deepin stable 版本的镜像或者你用的 URL 地址错误。
  2. 阿里云镜像更新滞后:阿里云的镜像库可能没有及时同步最新的 Deepin 稳定版,导致 Release 文件缺失。

解决方法:

  1. 确认正确的阿里云镜像源: 你可以去阿里云镜像站查看正确的 Deepin 镜像源地址:阿里云开源镜像站,确保你使用的 URL 是最新且有效的。

  2. 替换为官方 Deepin 镜像源: 如果阿里云的镜像确实有问题,可以尝试使用 Deepin 官方提供的镜像源。例如:

    sudo vim /etc/apt/sources.list
    

    将文件中的阿里云镜像源替换为官方源:

    deb http://packages.deepin.com/deepin stable main contrib non-free
    deb http://community-packages.deepin.com/deepin stable main contrib non-free
    
  3. 清理本地缓存并更新: 更新源后,执行以下命令清理本地缓存并重新尝试更新:

    sudo apt clean
    sudo apt update
    sudo apt upgrade
    
  4. 检查网络问题: 如果仍然遇到问题,确保网络连接正常,或者尝试更换网络环境来排除 DNS 或网络相关问题。

谢谢, 搞定了, 源地址是这个:deb [by-hash=force] https://mirrors.aliyun.com/deepin apricot main contrib non-free, 阿里关于deepin网页:https://developer.aliyun.com/mirror/deepin?spm=a2c6h.13651102.0.0.39f91b11WPANgv

升极了上百个文件,原来的源是这个:deb https://community-packages.deepin.com/beige/ beige main commercial community, 没想到两个源差别不小啊。

Reply View the author