Debian系统简介

目录

Debian系统介绍

Debian版本介绍

Debian软件源介绍

软件包管理工具dpkg

dpkg核心指令详解

安装软件包

卸载软件包

查询软件包状态

验证软件包完整性

手动处理依赖关系

[dpkg vs apt](#dpkg vs apt)


Debian系统介绍

Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版,Debian系统是由自由和开放源代码的软件组成,并将始终保持 100% 自由,每个⼈都能自由使用、修改,以及发布,Debian 是由全球志愿者社区维护的Linux操作系统,核心特点如下:

  • **稳定优先的版本策略:**稳定版每 2-3 年发布一次,更新频率极低,追求绝对稳定;
  • **严格的自由软件原则:**通过代码透明、开放协作和社区自治,确保软件不受专有权力的束缚;
  • 全架构覆盖:Debian 支持最广泛的硬件架构,包括

主流架构: amd64(x86-64 桌面/服务器)、arm64(树莓派/物联网)、armhf(ARMv7 设备);

企业与小众架构: ppc64el(IBM PowerPC),mips64el(MIPS 嵌入式);

实验性架构 :riscv64(RISC-V 开源指令集);

Debian版本介绍

Debian软件源介绍

软件源示例

bash 复制代码
deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://deb.debian.org/debian-security bullseye-security main
deb http://deb.debian.org/debian bullseye-updates main

Debian 官方源按软件许可和依赖关系分为三大仓库,严格遵循自由软件准则:

bash 复制代码
一 main 仓库
内容: 完全符合 Debian 自由软件准则(DFSG)的软件包,无任何专有代码;
示例: GNOME、Vim、GCC 等开源工具;
特点: 官方全力支持,安全性和稳定性最高;

二 contrib 仓库
内容: 本身为自由软件,但依赖非自由软件(如专有驱动、闭源库)的包;
示例: 某些打印机驱动需依赖厂商提供的二进制固件;
特点: Debian 社区维护,但不保证所有依赖均被支持;


三 non-free 仓库
内容: 包含非自由软件(如专有驱动、闭源应用)的包;
示例: NVIDIA 显卡驱动、Adobe Flash、某些商业软件;
特点: 完全不遵循 DFSG,官方不提供支持,使用需自行承担风险;

软件包管理工具dpkg

dpkgDebian 系统的底层软件包管理工具,****dpkg只支持直接安装 .deb 格式的软件包文件;它负责软件包的安装、卸载、查询、验证等底层操作,但不自动处理依赖关系(依赖管理需手动解决或借助 apt 等上层工具),核心特点如下:

  • 直接与系统的软件包数据库(位于 /var/lib/dpkg/)交互:即通过底层工具dpkg直接读取或修改 /var/lib/dpkg/目录下的文件,以管理软件包的安装、状态、依赖关系等信息;
  • 只处理本地 .deb 文件,不涉及网络下载或源配置 :所有安装、卸载、查询等操作的对象,必须是已经下载到电脑中的 .deb 安装包,而非通过网络从软件源获取,无需修改 /etc/apt/sources.list 等源配置文件,dpkg也不会读取软件源中的软件包信息;
  • dpkgaptsynaptic 等工具的底层依赖apt 会调用 dpkg 执行实际安装 / 卸载);

dpkg核心指令详解

安装软件包

由于**dpkg** 仅检查依赖是否存在,不自动下载或安装依赖包,所以若提示依赖关系不满足,需手动安装缺失的依赖包(sudo apt install 依赖包名);

bash 复制代码
sudo dpkg -i 软件包名.deb

# 参数-i:  -install
# 作用:   将本地.deb文件解压到系统目录(/usr/bin/、/etc/)并在软件包数据库中记录安装信息 
# 示例:    sudo dpkg -i google-chrome-stable_current_amd64.deb  # 安装Chrome浏览器

卸载软件包

方式一:普通卸载(保留配置文件)

bash 复制代码
sudo dpkg -r 软件包名

# 参数-r: remove
# 作用:   删除软件包的程序文件,但保留配置文件
# 示例:   sudo dpkg -r firefox  # 卸载Firefox,保留配置

方式二:彻底卸载(删除配置文件)

bash 复制代码
sudo dpkg -P 软件包名

# 参数-P: purge(清除)
# 作用:   移除软件包及所有配置文件
# 示例:   sudo dpkg -P firefox  # 彻底卸载Firefox

查询软件包状态

方式一:查看已安装的所有软件包

bash 复制代码
dpkg -l

# 输出说明: 1. ii表示已安装且正常运行  2. rc表示已卸载但残留配置文件
      

方式二:查看单个软件包详情

bash 复制代码
dpkg -s 软件包名

#作用: 显示包的版本、描述、依赖关系、安装路径等详细信息

方式三:查看软件包安装的文件列表

bash 复制代码
dpkg -L 软件包名

# 作用: 列出该包在系统中安装的所有文件路径

验证软件包完整性

bash 复制代码
dpkg -V 软件包名

# 参数-V:    verify
# 作用:      检查已安装的软件包文件是否被篡改
# 输出说明:  若存在输出则说明文件被修改,否则表示文件完整

手动处理依赖关系

方式一:通过 apt 辅助处理

bash 复制代码
sudo apt install -f  # 自动修复依赖问题(会调用dpkg)

方式二:从官方源或第三方网站下载对应的 .deb 文件,逐一安装

dpkg vs apt

dpkg 作为底层工具直接读写 /var/lib/dpkg/ 下的文件 ,不依赖网络或软件源,只处理本地 .deb 包;

apt :作为高层工具,间接通过 dpkg 操作数据库,并额外处理网络源、依赖解析、版本冲突等复杂逻辑;
示例 :当执行**apt install package** 时,apt 会:

  1. 从网络源下载 .deb 包;
  2. 调用 dpkg -i 安装,并触发 dpkg 直接修改数据库;
  3. 自动处理依赖包的下载和安装(dpkg 本身不具备此能力)
    总结
  • dpkg核心逻辑dpkg 是 Debian 软件包管理的 "引擎",通过直接读写 /var/lib/dpkg/ 目录下的文件,实现对软件包的增、删、查、改;
  • apt/apt-get 等工具 只是 dpkg 的 "外壳",通过调用 dpkg 间接操作数据库,并补充网络源、依赖解析等功能;
bash 复制代码
关键指令记忆:

   -安装: sudo dpkg -i
   -卸载: sudo dpkg -r(普通)/-P(彻底)
   -查询: sudo dpkg -s(详情)/-L(文件列表)
   -修复: sudo apt -f install
相关推荐
藥瓿亭1 小时前
K8S认证|CKS题库+答案| 11. AppArmor
运维·服务器·docker·云原生·容器·kubernetes·cks
胖大和尚2 小时前
Linuxkernel学习-deepseek-2
linux
we199898982 小时前
Linux:守护进程(进程组、会话和守护进程)
linux·运维·服务器
小鸡脚来咯2 小时前
RabbitMQ 各类交换机
服务器·网络·rabbitmq
无脑学c++2 小时前
在Ubuntu上使用 dd 工具制作U盘启动盘
linux·运维·ubuntu
Wooden-Flute2 小时前
八、数据库恢复技术
服务器·数据库·oracle
南棱笑笑生2 小时前
20250611在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04时让4G模块EC200A-CN使用AT命令拨号上网
linux·数据库·ubuntu
SimpleForest2 小时前
ubuntu 系统分区注意事项
linux·ubuntu·分区
小声读源码2 小时前
【排错】ubuntu挂载硬盘mount报错 unknown filesystem type ‘LVM2_member‘.
linux·运维·ubuntu
ajassi20002 小时前
Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
linux·运维·服务器