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

news/2024/9/19 9:02:52/ 标签: linux, debian, 运维

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.ppmy.cn/news/1527602.html

相关文章

pycharm连接远程linux服务器上的docker进行深度学习训练

实习过程中由于GPU都在服务器上,编辑代码很麻烦。并且服务器上配置了docker的环境,所以用pycharm连接远程服务器的docker进行深度学习,这样在本地调用远程服务器的GPU和环境,更方便一点,将这个过程记录下来&#xff0c…

CentOS中使用DockerCompose方式部署带postgis的postgresql(附kartoza/docker-postgis镜像下载)

场景 CentOS中使用Docker部署带postgis的postgresql: CentOS中使用Docker部署带postgis的postgresql_centos postgis插件在容器中如何安装-CSDN博客 上面使用Docker搜索和拉取kartoza/postgis时并没有任何限制。 当下如果不能科学上网时,大部分镜像源…

力扣150题——多维动态规划

交错字符串 题目 97. 交错字符串 - 力扣(LeetCode) 思路 用dp[i][j]代表s1的前i个字母和s2的前s2个字母能否交错组成s3的前ij-1的子串 状态转移方程即为 如果 s1[i-1] s3[i j - 1],并且 dp[i-1][j] 为 true,则 dp[i][j] 也…

vmware中的ubuntu系统扩容分区

1.虚拟机关机 右击虚拟机/设置,进入虚拟机设置 3.启动虚拟机,进入命令行 4.fdisk -l查看要扩展的分区名 5.resize要扩容的分区 su root parted /dev/sda resizepart 3 100% fdisk -l resize2fs /dev/sda3 df -T完成 6.其他 进入磁盘管理 fdisk /d…

oracle 如何查询表被锁

在Oracle数据库中,查询表是否被锁可以通过多种方式实现。以下是一些常用的方法来查询Oracle数据库中的表锁情况: 1. 使用V$LOCKED_OBJECT视图 V$LOCKED_OBJECT是Oracle提供的动态性能视图,用于显示当前被锁定的对象信息。通过查询该视图&am…

XML_Tomcat_HTTP

第四章 XML_Tomcat10_HTTP 一 XML XML是EXtensible Markup Language的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。 可扩展 三个字表面上的意思是XML允许自定义格式。但这不代…

使用 Istio 缓解电信 5G IoT 微服务 Pod 架构的安全挑战

在 Kubernetes 集群中部署微服务在 5G 电信中至关重要。但是,它也带来了重大的安全风险。虽然防火墙规则和代理提供了初始安全性,但 Kubernetes 中的默认通信机制(例如未加密的网络流量和缺乏访问控制)本质上是不安全的。这种不安…

《拿下奇怪的前端报错》:nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践

有些前端的小伙伴可能会好奇,nvm是什么?这里接简单介绍下,它是一个Nodejs版本管理工具。为什么需要它呢?当然是需要多个Nodejs版本的时候,那什么时候需要多个Nodejs版本?那肯定是在有点年头的公司了&#x…

使用git命令

git add . git commit -m "commit message" 拉取 git pull origin <branch-name> 推送 git push origin <branch-name> 创建新分支 git branch <new-branch-name> # 切换到新分支 git checkout <new-branch-name> 合并分支 git mer…

区块链先驱孙宇晨:引领价值传播,激发行业创新活力

​孙宇晨&#xff0c;这位被誉为“区块链布道师”的年轻企业家&#xff0c;以其独特的愿景和行动力在区块链行业中脱颖而出。作为波场TRON的创始人&#xff0c;他不仅是区块链技术的倡导者&#xff0c;更是一位不懈推动行业发展的领导者。他通过自身的努力和影响力&#xff0c;…

C++ | Leetcode C++题解之第415题字符串相加

题目&#xff1a; 题解&#xff1a; class Solution { public:string addStrings(string num1, string num2) {int i num1.length() - 1, j num2.length() - 1, add 0;string ans "";while (i > 0 || j > 0 || add ! 0) {int x i > 0 ? num1[i] - 0 …

进程监控与管理详解

一、进程的定义: 进程process是正在运行的程序,包括: 分配的内存地址空间 安全属性、包括所有权和特权 一个或多个线程 进程状态 进程的环境包括: 本地和全局变量 当前调度上下文…

算法入门-贪心1

第八部分&#xff1a;贪心 409.最长回文串&#xff08;简单&#xff09; 给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回通过这些字母构造成的最长的回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串…

清理C盘缓存的垃圾,专业清理C盘缓存垃圾的步骤与策略

在维护计算机系统的过程中&#xff0c;定期清理C盘&#xff08;通常是系统盘&#xff09;中的缓存和垃圾文件是一项至关重要的任务。这不仅能有效释放磁盘空间&#xff0c;提升系统性能&#xff0c;还能减少因磁盘空间不足导致的程序运行缓慢或错误。以下是一系列专业且安全的步…

在 Stable Diffusion 1.5 中 Lora, Dreambooth, Textual Inversion的详解指北

Lora, Dreambooth and Textual Inversion 说明 您是否想象过您可爱的宠物与埃菲尔铁塔合影的画面&#xff0c;或者想象过如何生成一张带有您朋友面孔的人工智能图像&#xff1f; 是的&#xff0c;通过稳定扩散技术的微调&#xff0c;这完全是可能的&#xff01; 创建这些场景…

LCR 023

题目&#xff1a;LCR 023 解法一&#xff1a;哈希表 将链表A所有元素放入Set中&#xff0c;遍历链表B元素&#xff0c;若某一元素在Set中存在&#xff0c;则该元素便是重复元素 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {Set<Object> set …

万兆时代 TCP/IP如何赋能以太网飞跃

科技飞速发展&#xff0c;数据传输的需求日益增长&#xff0c;尤其是在物理、科研等领域&#xff0c;对数据传输的速度、稳定性和效率提出了更高的要求。在这样的背景下&#xff0c;万兆以太网&#xff08;10Gbit Ethernet&#xff09;以其高带宽、低延迟和强大的传输能力成为众…

Pybind11的使用

目录 1. 引言1.1 Pybind11 简介1.2 为什么需要 Pybind11 2. 使用 Pybind11 进行 C 与 Python 交互2.1 基本用法2.2 编译与生成共享库2.2.1 在 Linux 下编译2.2.2 在 macOS 下编译2.2.3 编译选项详解 2.3 在 Python 中使用编译后的模块 3. 高级用法与注意事项3.1 绑定类和复杂数…

Open3D 特征点匹配(Python)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 假设有两个点云,即源点云与目标点云,这里基于目标点云每个点的FPFH特征向量为基础构建kdtree,以此我们可以以源点云中的FPFH特征向量为查询点,获取每个查询点对应的最近特征点(即目标点云中的FPFH特征向量)。…

算法打卡:第九章 动态规划part11

今日收获&#xff1a;最长公共子序列&#xff0c;不相交的线&#xff0c;最大子序和&#xff0c;判断子序列 1. 最长公共子序列 题目链接&#xff1a;1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; &#xff08;1&#xff09;dp[i][j]表示…