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
相关推荐
博语小屋3 分钟前
进程初识之进程状态
linux
吉凶以情迁1 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
卍郝凝卍1 小时前
云上服务器常见的存储方式和类型
大数据·服务器·数据库
柏木乃一2 小时前
Linux初步认识与指令与权限
linux·运维·服务器·shell·权限
189228048612 小时前
NX947NX955美光固态闪存NX962NX966
大数据·服务器·网络·人工智能·科技
Joemt2 小时前
ubuntu源码编译安装cmake高版本、pybind11安装、crow使用
linux·运维·ubuntu
huohuopro3 小时前
在linux(ubuntu)服务器上安装NTQQ并使用
linux·ubuntu
Jooolin3 小时前
Ubuntu?Centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·ai编程
Sadsvit3 小时前
Linux 进程管理与计划任务
linux·服务器·网络