Ubuntu 和 Debian Linux 中的 12 个 Apt 命令示例

2023-10-29

apt 命令是 Linux 操作系统中最强大、最通用的工具之一。它为用户提供了一个功能强大且易于使用的包管理系统,可用于轻松管理和安装软件。使用 apt 命令,用户可以快速轻松地从系统中搜索、安装、升级和卸载软件应用程序。

本指南详细概述了 apt 命令,并解释了如何使用它来管理 Linux 系统上的软件。它解释了可用的不同命令和选项,并概述了如何使用它们来管理软件、解决软件依赖性以及保持系统平稳高效地运行。

apt 包管理器在多个 Linux 发行版中使用,包括:

  • Debian 及其衍生产品(例如 Ubuntu 和 Linux Mint)
  • 卡利Linux
  • Linaro
  • SteamOS

更新 Apt 索引(apt update)

在使用 Apt 包管理器之前,您需要更新包存储库。包存储库是包含有关可用包的信息的在线数据库。要更新包存储库,请使用 update 命令:

sudo apt update 

这将从存储库下载最新的包信息。

安装软件包(apt install)

默认情况下,Apt 包管理器将安装包的最新可用版本。要安装名为“foo”的包,请输入:

sudo apt install foo 

但是,有时您可能需要安装特定版本的软件包。为此,请在安装软件包时使用 = 运算符,后跟版本号。例如,要安装 foo 包的 1.2 版本,请运行以下命令:

sudo apt install foo=1.2 

搜索包(apt search)

您可以使用`apt search`命令后跟搜索字符串。例如,要搜索与单词“foo”相关的包,请运行以下命令:

sudo apt search foo 

这将显示与关键字匹配的包列表。

使您的系统保持最新(易于升级)

使用 Apt 包管理器管理包的最重要的最佳实践之一是使您的系统保持最新状态。定期发布新版本的软件包以修复错误和安全漏洞。要更新系统,请使用升级命令:

sudo apt upgrade 

这会将所有已安装的软件包升级到最新的可用版本。

要升级特定的软件包,您应该使用带有以下命令的 apt install 命令`--only-upgrade` option.

sudo apt --only-upgrade install foo 

仅当已安装该软件包时,才会安装该软件包的最新版本。

将软件包降级到以前的版本

要将软件包降级到以前的版本,请使用带有 = 运算符和以前版本的版本号的 install 命令。例如,要将软件包 foo 降级到版本 1.2,请运行以下命令:

sudo apt install foo=1.2 

请注意,这将覆盖软件包的当前版本,因此请务必在降级之前进行必要的备份。

删除软件包(易于删除)

您可以使用“aptremove”命令来删除特定的软件包。例如,要删除软件包 foo,请运行以下命令:

sudo apt remove foo 

这将删除该包,但会留下其他包仍然需要的任何依赖项。

删除未使用的依赖项(apt autoremove)

当您安装一个软件包时,它可能会引入其他软件包作为依赖项。这些依赖项是包正常运行所必需的。但是,一旦删除该包,可能就不再需要这些依赖项。要删除这些未使用的依赖项,请使用 autoremove 命令:

sudo apt autoremove 

这将删除任何已安装的软件包不再需要的任何依赖项。

使用 Apt Pinning 控制包升级

Apt pinning 允许您控制升级哪些软件包以及何时升级。如果您想阻止特定软件包升级到较新版本,这可能很有用。要使用 Apt 固定,您需要编辑 /etc/apt/preferences 文件并添加固定规则。

例如,要防止升级 foo 包,请将以下行添加到`/etc/apt/首选项` file:

1
2
3
Package: foo
Pin: version *
Pin-Priority: 1001

这将阻止软件包 foo 被升级,但如果发现安全漏洞,它仍然会被更新。

使用Apt快照回滚软件包升级

如果出现问题,Apt 快照允许您将软件包升级回滚到以前的版本。要创建快照,请使用 apt-mark 命令将所有已安装的软件包标记为“手动”:

sudo apt-mark manual `apt-mark showmanual` 

然后,使用 apt-get 命令创建快照:

sudo apt-get install apt-rdepends 
sudo apt-rdepends -d --state-show=installed package_name > apt-snapshot.txt 

Replace “包裹名字”与你的包名称。这将创建一个名为 apt-snapshot.txt 的快照文件,其中包含所有已安装的软件包及其依赖项的列表。要回滚到以前的快照,请使用 apt-get install 命令并指定快照文件:

sudo apt-get install --reinstall -y \
      -o APT::Get::ReInstall=true \
      -o APT::Get::Show-Upgraded=true \
      -o Debug::pkgProblemResolver=true \
      -f -V < apt-snapshot.txt 

显示包信息(apt show)

此命令允许您查看有关特定包的所有信息,包括其版本、依赖项等。使用 apt show,您可以快速了解某个软件包的用途以及它是否适合您的系统。您还可以检查以确保您拥有最新版本的软件包,甚至在必要时将其降级。因此,如果您是一位正在寻找详细软件包信息的 Linux 用户。

sudo apt show foo 

因此,如果您是正在寻找详细软件包信息的 Linux 用户,您可以使用`适当的显示`快速轻松地找到它。

清理包缓存(apt clean)

Apt 包管理器会保存您已安装或下载的所有包的缓存。随着时间的推移,该缓存会变得很大并占用大量磁盘空间。要清理包缓存并释放磁盘空间,请使用 clean 命令:

sudo apt clean 

这将从缓存中删除不再需要的所有包。

结论

在本文中,我们介绍了使用 Apt 包管理器的一些高级技术。我们向您展示了如何安装特定版本的软件包、将所有软件包升级到最新版本、将软件包降级到以前的版本、删除未使用的依赖项以及清理软件包缓存。这些技术可以帮助您更有效地管理 Linux 系统上的包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu 和 Debian Linux 中的 12 个 Apt 命令示例 的相关文章

  • WPF-Prism CanExecute 方法未被调用

    我正在编写一个简单的登录用户控件 其中包含两个文本框 用户名和密码 和一个登录按钮 我希望仅在填写用户名和密码字段时启用登录按钮 我正在使用 Prism 和 MVVM LoginViewModel 包含一个名为 LoginCommand 的
  • 命令行命令中的“$”是什么意思?

    我经常发现命令行命令以美元符号在安装许多东西的说明中 例如安装Ruby in Ubuntu 该网站说使用以下命令 sudo apt get install ruby full 什么是 代表 The 不是命令的一部分 它告诉您该命令需要以普通
  • 使用 C# 向 USB 连接的 GPRS 调制解调器发送 AT 命令

    任何人都可以给我一个关于如何访问连接到 USB 端口的 GPRS 调制解调器的良好指示或指南 我应该为我的程序制作一个 USB 驱动程序以将 AT 命令发送到调制解调器吗 或者就像一个路由器 我可以使用IP地址访问它 谢谢 如果 Windo
  • 如何检查 Django 版本

    我必须使用Python http en wikipedia org wiki Python 28programming language 29 and Django http en wikipedia org wiki Django 28w
  • 执行内联powershell脚本

    我正在尝试从任务计划程序调用内联 powershell 脚本 以便在触发特定事件时发送电子邮件 我无法在任务计划程序操作窗口中使用本机 发送电子邮件 操作 因为 SMTP 服务器需要 SSL 并且无法在操作窗口中指定此操作 因此 我希望 启
  • 我可以通过 DataTrigger (XAML) 调用函数吗?

    我在 xaml cs 中有一个我想调用的函数 xaml cs private void treeView SelectedItemChanged object sender EventArgs e treeView ScrollToCent
  • 通过 Java 执行 ADS 相关的 Powershell 命令不起作用,使用 2 种不同的方式时会出现 2 种不同的错误

    我一直在尝试通过 java 在 powershell 会话中执行一组命令 但还没有成功 我的目标是在 AD 中搜索域为 domain com 的计算机对象 我从一个命令开始 不幸的是 以下命令在我的 powershell 提示符下成功运行
  • 从 UNIX 树中删除路径前缀

    我对 UNIX 命令有一个要求 我有一条与此类似的路径 path to file manyfiles extensions 现在我想要的输出类似于 file manyfiles extensions 现在我可以列出 path to 和 pa
  • 如何在 Linux 中创建别名? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 假设我想为 srm 创建一个别名 安全删除 这样每次使用 srm 时 都会运行交互式 rm 命令 例如rm i 需要对必要的配置文件进行此
  • 日期格式到cron格式转换

    我想将日期格式更改为 cron 日期格式 怎么办 日期格式 2018 05 15 17 30 00 cron 格式 30 17 15 05 您可以通过多种方式做到这一点 但这是更简单的方法之一 bin bash DATESTR 2018 0
  • ContextMenu 命令绑定未随数据源更新

    在我的 WPF 应用程序中 有一个可以从中选择项目的列表 然后 所选项目将显示在 ContentControl 中以进行进一步交互 根据所选项目的类型 可以有多个 在 ContentControl 中使用适当的 DataTemplate 到
  • 在 Wheezy 7.8 (Raspbian) 上安装 R 3.1.2 失败

    我是 Linux 新手 尝试在我的 Raspberry 上安装最新的 R 版本 我的 Raspberry 在 Wheezy 7 8 上运行 我按照指示操 作on CRAN http cran r project org bin linux
  • 我的 apt 安装 boost 时搞砸了

    在Ubuntu上 gt sudo apt get install libboost all dev Reading package lists Done Building dependency tree Reading state info
  • Powershell命令:rm -rf

    rm是删除item 但是参数是多少 rf做或表示 每当我输入 help rf 时 它都会打印 powershell 中可用命令的完整列表 如果您输入会发生什么rm rf在 powershell 中 通过阅读周围的资料 我发现它会删除驱动器上
  • `npm i` 命令有什么作用?

    什么是i在 npm CLI 中执行命令 我看到它是这样使用的 npm i package The iflag 是一个别名install so npm i package 是相同的 npm install package 从文档中 npm i
  • MySQL 错误:#1142 - SELECT 命令被拒绝给用户

    我在一台服务器上的某个查询时遇到问题 在我测试过的所有其他地方 它工作得很好 但在我想使用它的服务器上 它不起作用 这是关于以下 SQL SELECT facturen id AS fid projecten id AS pid titel
  • IN 语句中的数据上下文 ExecuteCommand 参数

    运行自定义的最佳方式是什么sql声明使用IN从 C LinQ 到 sql 数据上下文 我努力了 db ExecuteCommand UPDATE tblCard SET used 1 WHERE id IN 0 AND customer i
  • MVVM 中的事件而不是命令?

    在MVVM的各种教程中经常会指出 MVVM的目标不是消除代码隐藏 并且代码隐藏中的一些事件处理可能仍然是必要的 在什么场景下您需要在代码隐藏中编写事件而不是在视图模型中使用命令 一般来说 如果您的代码与 UI 逻辑相关 请将其保留在视图的
  • APT:Post-Invoke 在 debian:bookworm-slim 上失败

    我有一个 Jenkins 管道 它使用docker dind 20 在这个过程中我做 FROM ruby 3 2 slim bookworm apt get update 当我尝试使用我的本地构建映像 MacOS ventura 时dock
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs

随机推荐

  • 破解极验(geetest)验证码

    最近在搞爬虫的时候在好几个网站都碰到了一种叫做geetest的滑动条验证码 一直没有太好的办法只能在触发这个验证码后发个报警去手动处理一下 http www geetest com exp embed是他们官网的样例 后来研究了下觉得要破解
  • FindBugs Bug Descriptions

    FindBugs Bug Descriptions This document lists the standard bug patterns reported byFindBugs version 1 3 9 Summary Descri
  • 【力扣】三数之和

    给你一个包含 n 个整数的数组 nums 判断 nums 中是否存在三个元素 a b c 使得 a b c 0 请你找出所有和为 0 且不重复的三元组 注意 答案中不可以包含重复的三元组 示例 1 输入 nums 1 0 1 2 1 4 输
  • KEIL 生成bin文件

    1 首先对于keil5其编译生成的HEX文件 一般通过勾选如下 在进行ISP烧写时 就可以通过传送HEX文件进行烧写 2 对于烧写而言不仅仅可以通过HEX文件进行烧写 还可以通过BIN文件进行烧写 且BIN文件比HEX文件更小 设置BIN文
  • Rust的内存安全三原则:所有权、借用及生命周期

    我们接下来要探讨的概念是Rust的内存安全及其零成本抽象原则的核心 它们让Rust能够在编译期检测程序中内存安全违规 在离开作用域时自动释放相关资源等情况 我们将这些概念称作所有权 借用和生命周期 所有权有点类似核心原则 而借用和生命周期是
  • 时序预测

    时序预测 MATLAB实现2 DCNN卷积神经网络时间序列预测 目录 时序预测 MATLAB实现2 DCNN卷积神经网络时间序列预测 预测效果 基本介绍 研究背景 模型结构 建模流程 程序设计 学习总结 参考资料 预测效果 基本介绍 一种基
  • Dolby与DTS杜比环绕与DTS环绕音响

    转自 http blog sina com cn s blog a15db8ae0101dlz7 html 杜比环绕与DTS环绕具有的相近之处在于它们都是属于有损的数字压缩技术 这种称为 感性的 数据压缩技术是基于人类心理声学上所具备的听音
  • AndroidStudio运行程序时启动虚拟机出现x86 emulation currently requires hardware acceleration!问题解决方法

    这个问题是没有安装intelhaxm android exe这个软件 找到 SDK安装目录 一般在C盘下C Users admini AppData Local Android Sdk extras intel Hardware Accel
  • C++:采用vector实现二分查找及其变种总结

    主要分为六种情况 闭区间 半开区间 中位值在循环之外的半开区间二分查找首个序列 中位值在循环之外的半开区间二分查找末尾序列 以及中位值在循环之外的完全开区间二分查找首个序列和中位值在循环之外的完全开区间二分查找末尾序列 include
  • 微信小游戏开发之四:使用three.js引擎

    一 前言 微信小游戏中最魔性的 跳一跳 就是基于three js 引擎开发的 看这里 不要再让我发邮箱了 源码放到github上了 GitHub地址 请自行下载 二 下载 three min js 打开页面 复制代码到本地 三 引用 使用如
  • Qt之输入对话框(QInputDialog)的相关参数(Qt::InputMethodHints)和(QLineEdit::EchoMode)学习

    本文参考文章 Qt 编程 输入对话框 QInputDialog 的使用 学习笔记 前言 QInputDialog类提供了一个简单的便捷对话框 可以从用户那里获取用户录入的单个值 当前Qt提供了五个静态接口函数用于获取常用的数据类型参数 单文
  • 【华为OD机试真题2023 JS】上班之路

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 上班之路 知识点BFS搜索广搜 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 Jungle生活在美丽的蓝鲸城 大马路都是方方正正 但是每天马路的封闭情况都不一样
  • 在 Bash 中获取明天的日期:实用演练

    在系统管理和 shell 脚本世界中 操作日期和时间的能力至关重要 无论是用于计划任务 日志轮换还是简单地为文件添加时间戳 了解如何在脚本中使用日期都可以节省大量时间和精力 Bash Bourne Again Shell 为此提供了一组强大
  • 使用 PHP 和 Docker 设置开发环境

    本地开发环境对于 PHP 开发人员测试和调试应用程序至关重要 传统上 开发人员会依赖 XAMPP MAMP 或 WAMP 等工具 它们为本地开发提供成熟的 LAMP 堆栈 Linux Apache MySQL PHP 然而 随着应用程序变得
  • 如何使用 Iptables 在 Linux 中阻止 IP 地址

    Iptables 是 Linux 操作系统中内置的强大且灵活的防火墙工具 它用于建立 管理和配置IP数据包过滤规则表 Iptables 的常见用途之一是阻止或限制来自特定 IP 地址或 IP 地址范围的访问 本文提供了有关如何使用 Ipta
  • 如何在 Python 中创建和读取列表

    Python 是一种流行的编程语言 具有广泛的应用范围 包括数据科学 Web 开发和自动化 Python 中最基本 最重要的数据结构之一是列表 列表是值或项目的集合 可以是任何数据类型 包括字符串 整数 浮点数 甚至其他列表 在本文中 我们
  • 如何在 MacOS 上安装 Golang

    Go 是 Google 于 2009 年开发的一种编译型编程语言 由于其性能 可读性和简单性 它在软件开发行业中广受欢迎 Go 是一种通用编程语言 它的代码片段感觉很自然 与 C 或 Java 等其他语言相比 它可以用更少的代码行编写 Go
  • 什么是 Apache Prefork、Worker 和 Event MPM(多处理模块)

    Apache 是最流行的 Linux Web 服务器 大多数Linux系统管理员的学习阶段都是从Apache httpd Web服务器开始的 甚至我在学习过程中也使用过Apache Web服务器 在初始级别 系统管理员使用 Apache 他
  • 如何在 Debian 8 上安装 Ansible (Jessie)

    Ansible 是一种自动化工具 用于从单台计算机管理多个远程主机 它为您提供了针对大量远程主机的轻松配置 例如 您在多台机器上执行相同的任务 Ansible 为您提供了自动执行这些任务的选项 本教程将帮助您在 Debian 8 Jessi
  • Ubuntu 和 Debian Linux 中的 12 个 Apt 命令示例

    apt 命令是 Linux 操作系统中最强大 最通用的工具之一 它为用户提供了一个功能强大且易于使用的包管理系统 可用于轻松管理和安装软件 使用 apt 命令 用户可以快速轻松地从系统中搜索 安装 升级和卸载软件应用程序 本指南详细概述了