[Linux] 包管理器之【APT】

news/2025/1/10 23:27:05/文章来源:https://www.cnblogs.com/johnnyzen/p/18664907

  • 续:
  • 《[Linux] Linux中安装软件的方式? - 博客园/千千寰宇》
  • 《[Linux] 包管理器之综述【RPM/DPKG|YUM/APT】 - 博客园/千千寰宇》

概述:包管理器 APT

  • APT:Advanced Packaging Tool(现名)

解释: Advanced Packaging Tool(apt),作为 原始包管理器DPKG的前端包管理工具(在线包管理器),是Linux下的一款安装包管理工具,是一个客户/服务器系统。
Debian GNU/LinuxLinux APT 的缔造者。
初衷:是利用工具来解决软件安装时候的依赖性问题。

  • APT的核心功能:用于在DebianUbuntu和相关Linux发行版上安装、更新、删除和管理deb软件包。

APTDebian 系列发行版(如 Ubuntu)使用的包管理工具。它通过 .deb 包来管理软件,且支持从网络仓库下载和安装软件。
apt是为交互使用而设计的。
最好在shell脚本中使用apt-getapt-cache,因为它们在不同版本之间向后兼容,并且有更多选项和功能
大多数apt命令必须以具有sudo权限的用户身份运行
apt是Debian及其衍生产品的主要命令行包管理器,它提供了用于搜索、管理和查询的命令行工具、有关软件包的信息以及对所有功能的低级访问
作为操作的一部分,APT使用一个文件列出可获得软件包的镜像站点地址,这个文件就是/etc/apt/sources.list

  • APT工作原理:

用户安装Linux APT客户端工具,查寻APT服务器端的资料库(repositories)上的DEB/RPM软件包信息,并分析软件包之间的依赖性然后下载并进行安装。

  • DPKG 包管理机制:

这个机制最早是由 Debian Linux 社群所开发出来的。
透过 dpkg 的机制, Debian 提供的软体就能够简单的安装起来,同时还能提供安装后的软体资讯,实在非常不错。
只要是衍生于 Debian 的其他 Linux distributions 大多使用 dpkg 这个机制来管理软体的, 包括 Debian / B2D, Ubuntu 等等。

  • dpkg 包管理器的由来:
最初只有.tar.gz的打包文件,用户必须编译每个他想在GNU/Linux上运行的软件。
用户们普遍认为系统很有必要提供一种方法来管理这些安装在机器上的软件包,当Debian诞生时,这样一个管理工具也就应运而生,它被命名为dpkg。
从而著名的“package”概念第一次出现于GNU/Linux系统中很快一个新的问题难倒了GNU/Linux制作者,他们需要一个快速、实用、高效的方法来安装软件包。
当软件包更新时,这个工具应该能自动管理关联文件和维护已有配置文件。
Debian再次率先解决了这个问题,APT(Advanced Packaging Tool)作为dpkg的前端诞生了。
APT后来还被Conectiva改造用来管理rpm,并被其它Linux发行版本采用为它们的软件包管理工具。

APT常用命令

CASE: 使用apt更新软件包数据库

  • apt实际上在可用软件包的数据库上工作。

如果数据库没有更新,系统将不知道是否有更新的软件包可用。
这就是为什么在安装任何Linux系统之后,第一件事应该是更新apt数据库。

sudo apt-get update

运行此命令时,您将看到从各种服务器检索到的软件包信息。
此命令会从配置的源(通常在 /etc/apt/sources.list 文件中)拉取最新的软件包信息。

CASE: 使用apt升级已安装的软件包

  • 更新软件包数据库后,可以升级已安装的软件包。最方便的方法是升级所有有可用更新的软件包。

您只需使用以下命令即可:

sudo apt-get upgrade

这将显示要升级的软件包数量和所有要升级的软件包

CASE:使用apt完全升级已安装的软件包

  • 升级完全升级的区别在于,如果需要升级整个系统,后者将删除已安装的软件包。
sudo apt-get full-upgrade

CASE:使用apt安装软件包

  • 安装软件包非常简单,只需运行以下命令:
sudo apt install {packageName}

CASE:使用apt移除软件包

  • 要删除已安装的软件包,请键入以下命令:
sudo apt remove {packageName}

还可以指定多个包,以空格分隔:

sudo apt remove package1 package2

remove命令将卸载给定的软件包,但可能会留下一些配置文件。
如果要删除包含所有配置文件的软件包,请使用purge(英译:净化/清洗)而不是remove

CASE: 使用apt删除未使用的软件包

  • 每当在系统上安装依赖于其他软件包的新软件包时,也会安装软件包依赖项。

删除包后,依赖项将保留在系统上。
这些剩余的软件包不再被其他任何东西使用,可以移除。
要删除不需要的依赖项,请使用以下命令:

sudo apt autoremove

CASE:使用apt生成软件包列表

  • list命令允许您列出可用、已安装和可升级的软件包。

要列出所有可用的软件包,请使用以下命令:

sudo apt list

该命令将输出所有包的列表,包括有关包的版本和体系结构的信息。要了解是否安装了特定的软件包,可以使用grep命令过滤输出

sudo apt list | grep {packageName}

CASE: 要仅列出已安装的软件包

sudo apt list --installed

CASE: 获取可升级软件包的列表

  • 在实际升级软件包之前,获取可升级软件包的列表可能很有用:
sudo apt list --upgradeable

CASE: 使用apt搜索软件包

  • 此命令允许您在可用软件包列表中搜索给定软件包:
sudo apt search {packageName}

如果找到,该命令将返回名称与搜索词匹配的包。

CASE: 使用apt显示软件包信息

  • 在删除或安装新软件包之前,有关软件包依赖项、安装大小、软件包源等的信息可能很有用。

要检索有关给定包的信息,请使用show命令:

sudo apt show {packageName}

CASE: 使用apt在不升级的情况下安装软件包

  • 如果出于某种原因,你想安装一个软件包,但不想升级,那么如果已经安装了,在这种情况下,您可以通过以下方式使用下述选项不升级:
sudo apt install <package_name> --no-upgrade

CASE: 使用apt只升级软件包

  • 如果只想升级软件包,但不想安装(如果尚未安装),可以使用以下命令进行升级:
sudo apt install <package_name> --only-upgrade

CASE: 使用apt安装软件的特定版本

  • 默认情况下,将为应用程序安装存储库中可用的最新版本。但如果不想安装最新版本,可以指定版本号。您需要知道要安装的确切版本号。

只需使用包的名称添加=version。 [3]

sudo apt install <package_name>=<version_number>
``## CASE: 使用apt清理下载文件的存档
```shell
sudo apt-get clean

CASE: 使用apt下载软件源代码

sudo apt-get source <packages>

CASE: 使用apt了解软件依赖关系

sudo apt-cache depends <packages>

CASE: 使用apt检查软件依赖关系

sudo apt-get check

CASE: 使用apt安装相关的编译环境

sudo apt-get build-dep <packages>

Y 推荐文献

  • 《[Linux] Linux中安装软件的方式? - 博客园/千千寰宇》
  • 《[Linux] 包管理器之综述【RPM/DPKG|YUM/APT】 - 博客园/千千寰宇》

X 参考文献

  • APT

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.11.7(spring boot 创建数据库)

然后搭建四层架构 controller,mapper,pojo,service创建mapper的映射文件

2024.11.8(spring boot创建数据库)

三、连接数据库 1.编写文件 在resources包下找到application.properties,将如下代码写入: spring.datasource.username=root spring.datasource.password=admin spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&cha…

2024.11.9(spring boot创建数据库)

pojo层实体类里的属性要与数据表一一对应;查询所有用户是要返回多个User,所以用List; Service层先用@Autowired注入userMapper; 然后声明方法;

django python manage.py报错TimeoutError: [WinError 10060] A connection attempt failed

diango python manage.py报错 TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 加个代理即可

4. gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器

原文地址: gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器 gazebo仿真环境中添加robotiq 2f 140的gripper_controller控制器搭建环境: ubuntu: 20.04ros: Noneticsensor: robotiq_ft300gripper: robotiq_2f_140_gripperUR: UR3reasense: D435i 通过下面几篇博…

tomcat9.0下载安装及配置图文教程

下载 官网:http://tomcat.apache.org/ 选择下载64-Bit Windows zip(Win64)2.解压到任意一个盘,如,D:\apache-tomcat-9.0.98 3.设置环境变量 CATALINA_HOME:D:\apache-tomcat-9.0.98 找到系统变量Path,添加:%CATALINA_HOME%\bin验证是否配置成功 进入Windows命令行窗口,…

3. ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境

原文地址: ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境 ur3+robotiq ft sensor+robotiq 2f 140+realsense d435i配置rviz,gazebo仿真环境搭建环境: ubuntu: 20.04ros: Noneticsensor: robotiq_ft300gripper: robotiq_2f_140_gripperUR: U…

01 Java入门

1972年C诞生贴近硬件、运行极快、效率较高 操作系统、编译器、数据库、网络系统等 指针和内存管理1982年C++诞生面向对象 兼容C 图形领域、游戏等1995年Java诞生简单性 面向对象 可移植性 高性能 分布式 动态性 多线程 安全性 健壮性Java三大版本JavaSE:标准版(桌面程序、控制…

2. ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境

原文地址: ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境 ur3+robotiq ft sensor+robotiq 2f 140配置gazebo仿真环境搭建环境: ubuntu: 20.04ros: Noneticsensor: robotiq_ft300gripper: robotiq_2f_140_gripperUR: UR3 通过上一篇博客配置好ur3、力传感器和roboti…

Git学习遇到的抽风问题记录

学习git commit和git add的区别的时候,一不小心git commit 没有加“-m”,进入了一个vim配置页面:搞了半天死活出不来,而且担心修改了不该动的东西 解决办法:输入“:”然后输入qa!//放弃任何更改并退出 解决!

咸鱼学习第一天

markdown以及编辑器obsidian的学习 1 创建新笔记Ctrl+n Ctrl+o (可以快速打开需要的笔记;可以加文档名+笔记标题)2 文档属性设置 三个“---”可以添加日期、别名、标签 3 最常用语言一个’-‘加一个空格是一个小圆点 几个“#”+一空格就是几级标题 链接设置①:如我要在…

BurpSuite实操之重发器功能使用

手动操作来触发单独的HTTP请求,并进行应用程序响应的工具,此功能用于根据不同的情况修改和发送相后的请求并分析,通过调整Request的参数,不断尝试,通过Response查看状态,从而节省在浏览器中操作的时间。 在渗透测试过程中,我们经常使用Repeater进行请求与响应的消息验证…