练习 14:包管理:Debian 包管理工具aptitude

2024-03-06 22:18

本文主要是介绍练习 14:包管理:Debian 包管理工具aptitude,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在是时候获得一些神圣的知识,向 Linux 系统添加新程序了。Linux 中的程序称为软件包,通常通过称作包管理器的工具,从网络仓库安装 。

  • 软件包通常是一个压缩的程序,你可以像这样安装软件包:aptitude install program...。为了避免安装恶意程序,所有软件包都由其创建者进行数字签名,这意味着,如果软件包在创建后修改,包管理器不允许你安装它。
  • 包管理器是一个程序,允许你安装其他程序。许多程序依赖于其他程序,例如使用对话窗口的程序通常需要一个程序,它知道如何绘制这些窗口。包管理器知道这些依赖关系,当你要求它安装一个特定的程序时,它会安装所需的所有程序,你要求的程序需要这些程序来工作。Debian 包管理器称为aptitude

网络仓库是一个包含许多软件包的站点,可以随时安装。

这是程序安装的典型概述:

你使用包管理器搜索可用的程序请求包管理器安装程序
包管理器查找安装当前程序所需的所有程序在包管理器数据库中,为安装标记它们安装所有需要的程序,包括你所需的程序下载所有需要的程序从这些软件包提取文件,放到由 FHS 标准定义的,系统上的位置对于每个程序,运行一个特殊的安装脚本,允许它执行初始操作:创建目录创建数据库生成默认配置文件...... 通过将已安装程序的状态修改为已安装,更新系统包的数据库
你能够立即运行你新安装的程序

现在是时候了解提取文件的位置。在 Linux 中,所有相同类型的文件都安装在相同的位置。例如,所有程序的可执行文件都安装在/usr/bin中,程序的文档在/usr/share/doc中,以及其它。这可能听起来有点凌乱,但它是非常有用的。一个名为 FHS 的标准文件定义了哪些文件在哪里,你可以通过调用man 7 hier来查看它 。我将在下面向你显示“文件系统层次标准”版本 2.2 的缩略版本:

  • / - 这是根目录。这是整棵树开始的地方。
  • /bin - 此目录包含在单用户模式下需要的可执行程序,并将其升级或修复。
  • /boot - 包含用于引导程序的静态文件。该目录仅保存引导过程所需的文件。映射安装程序和配置文件应该放在/sbin/etc
  • /dev - 特殊或设备文件,指的是物理设备。见mknod(1)
  • /etc - 包含机器本地的配置文件。
  • /home - 在具有用户主目录的机器上,这些通常位于该目录下。该目录的结构取决于本地管理决策。
  • /lib - 此目录应该保存共享库,它们是启动系统和在根文件系统中运行命令所必需的。
  • /media - 此目录包含可移动介质的挂载点,如 CD 和 DVD 磁盘或 USB 记忆棒。
  • /mnt - 此目录是临时装载的文件系统的挂载点。在某些发行版中,/mnt包含子目录,用作多个临时文件系统的挂载点。
  • /proc - 这是proc文件系统的挂载点,它提供运行进程和内核的信息。这个伪文件系统在proc(5)中有更详细的描述。
  • /root - 此目录通常是root用户的主目录(可选)。
  • /sbin - 类似/bin,此目录包含启动系统所需的命令,但通常不会由普通用户执行。
  • /srv - 此目录包含由该系统提供的,站点特定的数据。
  • /tmp - 此目录包含临时文件,可能会在没有通知的情况下进行删除,例如通过普通任务或在系统启动时删除。
  • /usr - 此目录通常是从单独的分区挂载的。它应该只保存可共享的只读数据,以便它可以由运行 Linux 的各种机器来挂载。
  • /usr/bin - 这是可执行程序的主目录。普通用户执行的大多数程序不需要启动或修复系统,它们不在本地安装,并且应放在该目录中。
  • /usr/local - 这是站点本地的程序的通常位置。
  • /usr/share - 此目录包含具有特定应用程序数据的子目录,可以在同一操作系统的不同架构之间共享。通常可以在这里找到,以前存在于/usr/doc/usr/ lib/usr/man中的东西。
  • /usr/share/doc - 已安装程序的文档。
  • /var - 此目录包含可能会更改大小的文件,如假脱机和日志文件。
  • /var/log - 其他日志文件。
  • /var/spool - 各种程序的假脱机(或排队)文件。
  • /var/tmp - 类似/tmp,此目录保存临时文件,不知道存储多长时间。

真的很长,但是你不需要记住它,man hier 7总是在那里。现在你只需要知道/usr/bin/usr/share/var/log

让我们再谈谈软件包和包管理器。首先让我们重复一下:

  • 每个程序都叫做软件包。
  • 包管理器管理所有软件包,即安装或卸载它们。
  • 为此,包管理器拥有一个已安装和可用软件包的数据库。

此数据库中的每个包都具有状态,指示是否安装了软件包,软件包是否可以更新,以及其它。你可以通过键入dpkg -l打印当前安装的软件包。示例输出如下所示:

user1@vm1:~$ dpkg -l | head | less -S
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                      Version                Description
+++-=====================-====================-========================================================
ii  acpi                  1.5-2                displays information on ACPI devices
ii  acpi-support-base     0.137-5              scripts for handling base ACPI  events such as the power
ii  acpid                 1:2.0.7-1squeeze4    Advanced Configuration and Power Interface event daemon

你可以看到,这些状态显示在前三列中。从这个输出可以看出,所有的包都需要安装,或者确实已安装,没有错误,因为第三列是空的。以下是所有可能的包状态列表。

第一列。预期的操作,我们想要对软件包做的事情:

  • u = 未知(未知状态)
  • i = 安装。选择该软件包进行安装。
  • r = 选择该软件包进行卸载(即我们要删除所有文件,但配置文件除外)。
  • p = 清理 选择软件包进行清理(即我们要从系统目录,甚至配置文件中删除所有东西)。
  • h = 标记为保留的包,不由dpkg处理,除非强制使用选项-force-hold

第二列。软件包状态,软件包目前是什么状态:

  • n = 未安装。该软件包未安装在你的系统上。
  • c = 配置文件。系统上只存在该包的配置文件。
  • H = 半安装。包的安装已经启动,但由于某种原因未完成。
  • U = 已解压缩。该软件包已解压缩,但未配置。
  • F = 半配置。软件包已解压缩,配置已启动,但由于某些原因尚未完成。
  • W = 触发器等待。软件包等待另一个包的触发器处理。
  • t = 触发中。软件包已被触发。
  • i = 已安装.该软件包已解压缩并配置好。

第三栏。出错的东西。

  • R = 需要恢复。标有“需要恢复”的软件包已损坏,需要重新安装。这些包不能被删除,除非强制使用选项-force-remove-reinstreq

同样,你不需要记住它,只需记住info dpkg命令,它将显示这些信息。现在不要纠结包状态,只要记住,ii状态意味着这个包一切正常。

好了,让我们安装一个名为midnight commander的程序,它是一个文件管理器,它允许你直观地浏览系统上的目录,并对你的文件执行复制,重命名或删除操作。

现在,你将了解如何搜索,安装和删除软件包。

这样做

1: aptitude search mc | grep -i 'midnight commander'
2: sudo aptitude install mc
3: dpkg -L mc | grep '/usr/bin'
4: aptitude search mc | grep -i 'midnight commander'
5: mc
6: <F10><ENTER>
7: sudo aptitude remove mc

你应该看到什么

user1@vm1:~$ aptitude search mc | grep -i 'midnight commander'
p   mc                              - Midnight Commander - a powerful file manag
p   mc-dbg                          - Midnight Commander - a powerful file manag
user1@vm1:/home/user1# sudo aptitude install mc
The following NEW packages will be installed:libglib2.0-0{a} libglib2.0-data{a} mc shared-mime-info{a}
0 packages upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,957 kB/5,157 kB of archives. After unpacking 17.0 MB will be used.
Do you want to continue? [Y/n/?] y
Get:1 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-0 amd64 2.24.2-1 [1,122 kB]
Get:2 http://mirror.yandex.ru/debian/ squeeze/main libglib2.0-data all 2.24.2-1 [994 kB]
Get:3 http://mirror.yandex.ru/debian/ squeeze/main shared-mime-info amd64 0.71-4 [841 kB]
Fetched 2,957 kB in 0s (4,010 kB/s)
Selecting previously deselected package libglib2.0-0.
(Reading database ... 24220 files and directories currently installed.)
Unpacking libglib2.0-0 (from .../libglib2.0-0_2.24.2-1_amd64.deb) ...
Selecting previously deselected package libglib2.0-data.
Unpacking libglib2.0-data (from .../libglib2.0-data_2.24.2-1_all.deb) ...
Selecting previously deselected package mc.
Unpacking mc (from .../mc_3%3a4.7.0.9-1_amd64.deb) ...
Selecting previously deselected package shared-mime-info.
Unpacking shared-mime-info (from .../shared-mime-info_0.71-4_amd64.deb) ...
Processing triggers for man-db ...
Setting up libglib2.0-0 (2.24.2-1) ...
Setting up libglib2.0-data (2.24.2-1) ...
Setting up mc (3:4.7.0.9-1) ...
Setting up shared-mime-info (0.71-4) ...
user1@vm1:~$ aptitude search mc | grep -i 'midnight commander'
i   mc                              - Midnight Commander - a powerful file manag
p   mc-dbg                          - Midnight Commander - a powerful file manag
user1@vm1:~$ mcLeft     File     Command     Options     Right
|<  ~ ---------------------.[^]>||<  ~ ---------------------.[^]>|
|'n  Name    | Size |Modify time||'n  Name    | Size |Modify time|
|/..         |P--DIR|un  6 21:49||/..         |P--DIR|un  6 21:49|
|/.aptitude  |  4096|un 25 18:34||/.aptitude  |  4096|un 25 18:34|
|/.mc        |  4096|un 25 18:41||/.mc        |  4096|un 25 18:41|
| .bash~story| 10149|un 21 12:01|| .bash~story| 10149|un 21 12:01|
| .bash~ogout|   220|un  6 21:48|| .bash~ogout|   220|un  6 21:48|
| .bashrc    |  3184|un 14 12:24|| .bashrc    |  3184|un 14 12:24|
| .lesshst   |   157|un 25 11:31|| .lesshst   |   157|un 25 11:31|
|----------------------------------------------------------------|
|UP--DIR                        --UP--DIR                        |----------- 6367M/7508M (84%) -------------- 6367M/7508M (84%) -|
Hint: The homepage of GNU Midnight Commander: http://www.midnight-
user1@vm1:~$                                                   [^]1Help  2Menu  3View  4Edit  5Copy  6Re~ov 7Mkdir 8De~te 9Pu~Dn
user1@vm1:~$ sudo aptitude remove mc
The following packages will be REMOVED:libglib2.0-0{u} libglib2.0-data{u} mc shared-mime-info{u}
0 packages upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 17.0 MB will be freed.
Do you want to continue? [Y/n/?] y
(Reading database ... 24637 files and directories currently installed.)
Removing shared-mime-info ...
Removing mc ...
Removing libglib2.0-data ...
Removing libglib2.0-0 ...
Processing triggers for man-db ...
user1@vm1:~$

解释

  1. 搜索包含mc的包名称,并在描述中仅显示包含midnight commander的包。grep -i意味着,grep应该搜索小写和大写字母,如果没有它,grep不会显示包含Midnight Commander的行,因为它们以大写字母开头。请注意,mc状态为p状态,这意味着这个包的所需操作是清理,并且由于其他两个状态列中没有任何内容,因此我们可以得出结论,该包未安装。你的man注意到了,最开始你没有安装这个包,但这也没问题,因为没有安装的软件包 默认是清除状态。
  2. 安装软件包mc。因为这个更改是系统范围的,所以这个命令需要使用超级用户,它能够写入系统中的所有目录。还要注意 debian 软件包管理器aptitude如何自动安装mc所需的libglib2.0-0libglib2.0-datashared-mime-info软件包。
  3. 显示你安装的包的可执行文件。如你所见,他们放在/usr/bin中。
  4. 调用mc
  5. 退出mc
  6. 删除mc。请注意,自动安装的软件包也会自动删除。如果在 安装mc之后,你安装一些需要这些软件包的东西,aptitude将保留它们。

这篇关于练习 14:包管理:Debian 包管理工具aptitude的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781540

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

MySql 事务练习

事务(transaction) -- 事务 transaction-- 事务是一组操作的集合,是一个不可分割的工作单位,事务会将所有的操作作为一个整体一起向系统提交或撤销请求-- 事务的操作要么同时成功,要么同时失败-- MySql的事务默认是自动提交的,当执行一个DML语句,MySql会立即自动隐式提交事务-- 常见案例:银行转账-- 逻辑:A给B转账1000:1.查询

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd