linux-软件包管理-包管理工具(Debian 系)

news2024/9/24 0:32:39

Linux 软件包管理概述

在Linux系统中,软件包管理是系统维护的核心部分之一。通过软件包管理器,用户可以方便地安装、更新、删除和查询系统中的软件包。每个Linux发行版通常都有自己专属的包管理工具,这些工具基于不同的包格式。例如,Debian系发行版(如Ubuntu)使用的是.deb包格式,而RedHat系发行版则使用.rpm包格式。


Debian 系软件包管理工具概述

Debian系系统的包管理工具可以大致分为两类:

  1. 底层工具:如dpkg,直接操作.deb软件包,提供低级别的包管理功能。
  2. 高级管理工具:如apt(Advanced Packaging Tool)和aptitude,它们基于dpkg进行工作,提供了更高层次的功能,如自动解决依赖关系、在线安装和更新等。

1. dpkg —— 底层包管理工具

dpkg 基础

dpkg是Debian系发行版中最基础的包管理工具,专门用于安装、卸载和查询.deb包。与高级包管理器不同,dpkg不会自动解决包的依赖关系,它只能处理单个包文件,因此适合处理本地的包文件。

dpkg 常用命令
  • 安装软件包

    sudo dpkg -i package_name.deb
    

    这个命令用于安装本地的.deb包。如果安装过程中遇到依赖问题,dpkg不会自动解决。

  • 卸载软件包

    sudo dpkg -r package_name
    

    该命令卸载指定的软件包,但不会删除配置文件。

  • 完全卸载软件包

    sudo dpkg -P package_name
    

    此命令会删除软件包及其配置文件。

  • 列出已安装的包

    dpkg -l
    

    该命令列出系统中所有已安装的软件包。

  • 查询包的状态

    dpkg -s package_name
    

    查询某个软件包的安装状态和详细信息。

  • 显示包的内容

    dpkg -L package_name
    

    显示某个已安装包的所有文件列表。

dpkg 依赖管理

因为dpkg不会自动处理依赖关系,因此当手动使用它来安装包时,如果遇到依赖性问题,可以结合apt工具来解决。例如,在安装某个包失败后,可以运行以下命令来解决依赖性问题:

sudo apt --fix-broken install

2. APT —— 高级包管理工具

APT 基础

apt是Debian系系统中最常用的包管理工具之一,它基于dpkg,但具备自动解决依赖关系、从远程仓库下载软件包、批量更新系统等功能。

APT 使用的是软件源(repositories)系统,软件包存储在远程的仓库中,用户可以通过更新仓库信息来获取最新的软件包。APT 能够根据仓库中的信息自动下载并安装所需的包及其依赖项。

APT 常用命令
  • 更新软件源列表

    sudo apt update
    

    该命令从配置的远程仓库中获取最新的软件包信息和版本信息。

  • 升级系统中已安装的包

    sudo apt upgrade
    

    该命令会升级所有已安装的包到最新版本,但不会自动安装新的依赖项。

  • 安装软件包

    sudo apt install package_name
    

    该命令从仓库中下载并安装指定的软件包,同时会自动处理依赖关系。

  • 卸载软件包

    sudo apt remove package_name
    

    此命令卸载软件包,但保留配置文件。

  • 完全卸载软件包

    sudo apt purge package_name
    

    该命令不仅卸载软件包,还会删除与之相关的配置文件。

  • 自动清理不再需要的依赖包

    sudo apt autoremove
    

    这个命令会清理系统中不再需要的依赖项,例如,某些软件包被卸载后,其依赖包可能没有被自动删除。

  • 清除下载的包文件

    sudo apt clean
    

    APT 在下载软件包后,会将包文件暂时存放在/var/cache/apt/archives目录中。这个命令可以清理这些缓存文件,释放磁盘空间。

APT 仓库管理

APT 使用/etc/apt/sources.list文件来管理软件仓库。用户可以手动编辑这个文件来添加或移除仓库。每个仓库地址的格式如下:

deb http://archive.ubuntu.com/ubuntu focal main restricted

其中deb表示这是一个二进制包仓库,后面的URL是仓库地址,focal是Ubuntu 20.04的代号,mainrestricted表示软件的分类。

PPA 仓库

在Ubuntu中,用户还可以使用个人包仓库(PPA,Personal Package Archives)来安装某些第三方软件。这些仓库通常由开发者或社区维护,提供一些在官方仓库中找不到的最新版本的软件。添加PPA的方法如下:

sudo add-apt-repository ppa:user/ppa-name
sudo apt update

3. Aptitude —— 另一个高级包管理工具

Aptitude 概述

aptitude是另一个基于dpkg的高级包管理工具,它与apt功能相似,但提供了更加友好的交互式界面和更多的高级功能。aptitude可以用于解决复杂的依赖问题,并提供更详细的包信息。与apt相比,aptitude对于系统管理员来说可能是一个更强大的工具。

Aptitude 常用命令
  • 更新软件包列表

    sudo aptitude update
    
  • 安装软件包

    sudo aptitude install package_name
    
  • 卸载软件包

    sudo aptitude remove package_name
    
  • 交互式管理界面

    sudo aptitude
    

    运行该命令后,用户可以进入aptitude的图形化界面,在其中浏览和管理软件包。


4. Snap 和 Flatpak —— 新型包管理工具

Snap

Snap是Canonical开发的一种跨发行版的包管理系统,旨在提供一种独立于操作系统版本的应用安装方式。Snap包包含应用程序和所有其依赖项,因此可以在任何支持snapd的Linux发行版上运行。

  • 安装Snap

    sudo apt install snapd
    
  • 安装Snap包

    sudo snap install package_name
    
  • 更新Snap包

    sudo snap refresh
    
  • 卸载Snap包

    sudo snap remove package_name
    
Flatpak

类似于Snap的另一个跨发行版的包管理系统是Flatpak,它由开源社区开发,允许应用程序独立于操作系统的底层依赖关系运行。

  • 安装Flatpak

    sudo apt install flatpak
    
  • 添加Flathub仓库(常用Flatpak应用仓库)

    flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
    
  • 安装Flatpak应用

    flatpak install flathub package_name
    

总结

在Debian系Linux发行版中,软件包管理工具为系统的安装、更新、删除软件包提供了便捷的手段。dpkg作为底层工具,适合处理本地的.deb包,而apt则是最常用的高级工具,负责自动化解决依赖关系并与远程仓库交互。此外,aptitude提供了更强大的包管理能力,而像SnapFlatpak这样的新兴工具则为跨发行版应用提供了更多的灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis渐进式遍历

我们知道,keys* 是一次性把所有的key都获取到,这个操作太危险,可能会一次性得到太多的key而阻塞服务器。但是通过渐进式遍历,既能够获取到所有的key,又能不会卡死服务器。 redis使用scan命令进行渐进式遍历&#xff0…

宠物去浮毛救星?希喂、小米、霍尼韦尔宠物空气净化器哪款好用

怎么有人放假也不开心? 快到的国庆假期真是愁死我了...本来我妈国庆去旅游,我就打算不回家,和我家猫过二人世界。结果突然有事,我妈取消出行,改成让我假期回家陪她。我回家容易,我家猫回去可难啊&#xff…

前端-js例子:todolist

实现效果图&#xff1a; 实现步骤&#xff1a; 1.body部分 1.首先&#xff0c;设置输入数据的框和按钮进行操作 2.设置一个表格标签&#xff08;有边框&#xff09;&#xff0c;首先在表头放置两列&#xff08;“事项”‘’操作&#xff09; <body><div class"…

初学者怎么入门大语言模型(LLM)?看完这篇你就懂了!

当前2024年&#xff0c;LLM领域发展日新月异&#xff0c;很多新的实用技术层出不穷&#xff0c;个人认为要跟上LLM的发展&#xff0c;需要掌握以下内容&#xff0c;并需要不断地跟踪学习。 入门LLM前置基础 深度学习基础知识&#xff1a;推荐李宏毅的深度学习课程Python和num…

数据结构2——单链表

目录 1.链表 1.1链表的概念及结构 1.2 链表的分类 ​编辑2.无头单链表的实现 1. 节点 2.遍历链表 3.动态增加新节点 4.查找&#xff08;修改&#xff09; 5.插入 5.1 尾插 5.2 头插 5.3 在pos之前插入x 5.4 在pos之后插入x 6.删除 6.1 尾删 6.2 头删 6.3 删除…

DPDK 简易应用开发之路 4:基于Pipeline模型的DNS服务器

本机环境为 Ubuntu20.04 &#xff0c;dpdk-stable-20.11.10 使用scapy和wireshark发包抓包分析结果 完整代码见&#xff1a;github Pipeline模型 DPDK Pipeline模型是基于Data Plane Development Kit&#xff08;DPDK&#xff09;的高性能数据包处理框架。它通过将数据流分为多…

基于SpringBoot+Vue+MySQL的旅游推荐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会的快速发展和人民生活水平的显著提高&#xff0c;旅游已成为人们休闲娱乐的重要方式。然而&#xff0c;面对海量的旅游信息和多样化的旅游需求&#xff0c;如何高效地管理和推荐旅游资源成为了一个亟待解决的问题。因此…

学习记录:js算法(四十三):翻转二叉树

文章目录 翻转二叉树我的思路网上思路递归栈 总结 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点 图一&#xff1a; 图二&#xff1a; 示例 1&#xff1a;&#xff08;如图一&#xff09; 输入&#xff1a;root [4,2,7,1…

大模型价格战,打到了负毛利,卷or不卷?

国产大模型淘汰赛在加速。这轮淘汰赛会持续一两年&#xff0c;只有少数真正具备实力的基础模型企业能继续活下去 中国市场的大模型价格战已经打了近半年。这轮价格战已经打到了负毛利&#xff0c;而且暂时没有停止迹象。头部云厂商仍在酝酿新一轮降价。这轮降价会在今年9月下旬…

视频单目标跟踪研究

由于对视频单目标跟踪并不是很熟悉&#xff0c;所以首先得对该领域有个大致的了解。 视频目标跟踪是计算机视觉领域重要的基础性研究问题之一&#xff0c;是指在视频序列第一帧指定目标 后&#xff0c;在后续帧持续跟踪目标&#xff0c;即利用边界框&#xff08;通常用矩形框表…

printf 命令:格式化输出

一、命令简介 ​printf​ 命令在 Linux 系统中用于格式化并打印字符串到标准输出。它是 C 语言中 printf ​函数的命令行版本&#xff0c;因此其格式化选项与 C 语言中的非常相似。 相关命令&#xff1a; echo&#xff1a;通常使用 echo&#xff0c;它比较简单。printf&…

你们用过微信CRM管理系统吗?

微信CRM管理系统是近年来流行的管理软件&#xff0c;在市场上得到了很高的认可。许多企业正在应用微信CRM管理系统&#xff0c;那系统具体有些什么功能呢&#xff1f; 1、聚合聊天&#xff0c;可以管理多个微信号 2、批量多号自动加好友任务&#xff0c;设置好时间间隔以及加人…

《论软件系统架构风格》写作框架,软考高级系统架构设计师

论文真题 系统架构风格&#xff08;System Architecture Style&#xff09;是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义了一个词汇表和一组约束&#xff0c;词汇表中包含一些构件和连接件类型&#xff0c;而这组约束指出系统是如何将这些构件和连接件组合起…

李沐对大模型趋势的几点判断,小模型爆发了!

李沐是上海交通大学 2011 届计算机科学与工程系本硕系友。他曾担任亚马逊资深首席科学家&#xff0c;加州大学伯克利分校和斯坦福大学的访问助理教授&#xff0c;是前 Marianas Labs 联合创始人&#xff0c;深度学习框架 Apache MXNet 的创始人之一。目前是 BosonAI 联合创始人…

C++之STL—string容器

本质&#xff1a;类 class 封装了很多方法&#xff1a;查找find&#xff0c;拷贝copy&#xff0c;删除delete 替换replace&#xff0c;插入insert 构造函数 赋值操作 assign&#xff1a; 字符串拼接 &#xff0b; append&#xff1a; string查找和替换 没查找到&#xff0c;po…

【刷题2—滑动窗口】最大连续1的个数lll、将x减到0的最小操作数

目录 一、最大连续1的个数lll二、将x减到0的最小操作数 一、最大连续1的个数lll 题目&#xff1a; 思路&#xff1a; 问题转换为&#xff1a;找到一个最长子数组&#xff0c;这个数组里面0的个数不能超过k个 定义一个变量count&#xff0c;来记录0的个数&#xff0c;进窗口、…

时序预测 | Python实现KAN+LSTM时间序列预测

时序预测 | Python实现KAN+LSTM时间序列预测 目录 时序预测 | Python实现KAN+LSTM时间序列预测预测效果基本介绍程序设计预测效果 基本介绍 时序预测 | KAN+LSTM时间序列预测(Python) KAN作为这两年最新提出的机制,目前很少人用,很适合作为时间序列预测的创新点,可以结合…

【重学 MySQL】三十八、group by的使用

【重学 MySQL】三十八、group by的使用 基本语法示例示例 1: 计算每个部门的员工数示例 2: 计算每个部门的平均工资示例 3: 结合 WHERE 子句 WITH ROLLUP基本用法示例注意事项 注意事项 GROUP BY 是 SQL 中一个非常重要的子句&#xff0c;它通常与聚合函数&#xff08;如 COUNT…

MySQL和SQL的区别简单了解和分析使用以及个人总结

MySQL的基本了解 运行环境&#xff0c;这是一种后台运行的服务&#xff0c;想要使用必须打开后台服务&#xff0c;这个后台服务启动的名字是在安装中定义的如下图&#xff08;个人定义MySQL88&#xff09;区分大小写图片来源 可以使用命令net start/stop 服务名&#xff0c;开…

实验十八:IIC-EEPROM实验

这个实验比较复杂,是目前第一个多文件项目 KEY1-4:P3^0-P3^3 IIC_SCL=P2^1; IIC_SDA=P2^0; //定义数码管位选信号控制脚 LSA=P2^2; LSB=P2^3; LSC=P2^4; 代码 main.c #include "public.h" #in