2022年8月

深度发布独立软件包格式:玲珑

深度操作系统预计在本月发布新的 Deepin 23 操作系统,其中将采用一种新的独立软件包格式:玲珑。 深度社区称玲珑是“统信软件自研的开源软件包格式,用于与 dpkg、rpm 等包管理系统共同实现应用包管理、分发、沙箱、集成开发工具等功能。”根据披露的特性,玲珑软件包可运行在任意 Linux 桌面环境中,运行在独立的沙箱环境,支持应用增量更新。

消息来源:深度
老王点评:看来是一种容器式软件包。确实,要打造一个“根操作系统”,是应该有个独立的软件包体系才名正言顺,但是应该有真正的软件包方面的创新才有意义。据我所知,这是国内这批“根操作系统”中第一个提出自己的软件包格式的操作系统。让我们拭目以待这个玲珑之后的进一步信息。

英特尔将在 2024 年推出 Wi-Fi 7

因为苹果正在将其设备过渡到 Wi-Fi 6E,英特尔正计划在 2024 年之前在设备中安装其下一代 Wi-Fi 7(802.11be)技术。Wi-Fi 7 是 Wi-Fi 6E(802.11ax)的继任者,带来了两倍于 5.8Gbps 的数据处理速度和更稳定的 6GHz 带宽稳定性,在处理数据时支持高达 36Gbps 带宽。苹果还没有发布任何支持 Wi-Fi 6E 的设备,有望在今年从 iPhone 14 开始支持。

消息来源:MacRumors
老王点评:前两天刚刚换了一个 Wi-Fi 路由器,支持 Wi-Fi 6,我才用上,而这都要 Wi-Fi 7 了。不知不觉中无线网络技术居然已经进步这么快了。

教科书出版商希望借助区块链来在电子书转售时挣钱

世界上最大的教科书出版商之一培生公司的 CEO 说,他希望像 NFT 和区块链这样的技术可以帮助该公司从电子书的二手销售中分得一杯羹,因为越来越多的书籍以电子书形式销售。纸质书籍,尤其是昂贵的教科书,有时候会转售七次之多,但转售不会出版商带来任何收益。而随着教科书转向数字化,教科书出版商看到了从转售中获利的可能。

消息来源:彭博社
老王点评:纸质书转售对出版商没好处是因为出版商第一次就收到了足够的钱。而电子书却给出版商带来机会,让出版商有望控制电子书的二次流通,并通过它再次获利。

学习为什么 Python 中的可观测性很重要,以及如何在你的软件开发生命周期中实现它。

 title=

你写的应用会执行很多代码,而且是以一种基本上看不到的方式执行。所以你是怎么知道:

  • 代码是否在运行?
  • 是不是在正常工作?
  • 谁在使用它,如何使用?

可观测性是一种能力,可以通过查看数据来告诉你,你的代码在做什么。在这篇文章中,主要关注的问题是分布式系统中的服务器代码。并不是说客户端应用代码的可观测性不重要,只是说客户端往往不是用 Python 写的。也不是说可观测性对数据科学不重要,而是在数据科学领域的可观测性工具(大多是 Juptyter 和快速反馈)是不同的。

为什么可观测性很重要

所以,为什么可观测性重要呢?在软件开发生命周期(SDLC)中,可观测性是一个关键的部分。

交付一个应用不是结束,这只是一个新周期的开始。在这个周期中,第一个阶段是确认这个新版本运行正常。否则的话,很有可能需要回滚。哪些功能正常运行?哪些功能有细微的错误?你需要知道发生了什么,才能知道接下来要怎么做。这些东西有时候会以奇怪的方式不能正常运行。不管是天灾,还是底层基础设施的问题,或者应用进入了一种奇怪的状态,这些东西可能在任何时间以任何理由停止工作。

在标准 SDLC 之外,你需要知道一切都在运行中。如果没有,有办法知道是怎么不能运行的,这是非常关键的。

反馈

可观测性的第一部分是获得反馈。当代码给出它正在做什么的信息时,反馈可以在很多方面提供帮助。在模拟环境或测试环境中,反馈有助于发现问题,更重要的是,以更快的方式对它们进行分类。这可以改善在验证步骤中的工具和交流。

当进行 金丝雀部署 canary deployment 或更改特性标志时,你需要知道是否要继续,还是等更长时间,或者回滚,反馈就显得很重要了。

监控

有时候你怀疑有些东西不太对。也许是一个依赖服务有问题,或者是社交网站爆出了大量你的网站的问题。也许在相关的系统中有复杂的操作,然后你想确保你的系统能完美处理。在这些情况下,你就想把可观测性系统的数据整合到控制面板上。

当写一个应用的时候,这些控制面板需要是设计标准的一部分。只有当你的应用能把数据共享给这些控制面板,它们才会把这些数据显示出来。

警报

看控制面板超过 15 分钟就像看着油漆变干一样。任何人都不应该遭受这种折磨。对于这种任务,我们要有报警系统。报警系统将可观测性数据与预期数据进行对比,当它们不匹配的时候就发出通知。完全深入研究时间管理超出了本文的范围。然而,从两方面来说,可观测应用是 报警友好的 alert-friendly

  • 它们有足够多,足够好的数据,发出的警报才是高质量的。
  • 警报有足够的数据,或者接收者可以很容易的得到数据,这样有助于找到源头。

高质量警报有三个特点:

  • 较少的错报:如果有警报,那一定是有问题了。
  • 较少的漏报:如果有问题,那一定有警报触发。
  • 及时性:警报会迅速发出以减少恢复时间。

这三个特点是互相有冲突的。你可以通过提高监测的标准来减少错误警报,代价是增加了漏报。你也可以通过降低监测的门槛来减少漏报,代价是增加错报。通过收集更多数据,你也可以同时减少错报和漏报,而代价是降低了及时性。

同时改善这三个参数就更难了。这就要求高质量的可观测性数据。更高质量的数据可以同时改善这三个特点。

日志

有的人喜欢嘲笑用打印来调试的方法。但是,在一个大多数软件都不在你本机运行的世界里,你所能做的只有打印调试。日志记录就是打印调试的一种形式。尽管它有很多缺点,但 Python 日志库提供了标准化的日志记录。更重要的是,它意味着你可以通过这些库去记录日志。

应用程序要负责配置日志的记录方式。讽刺地是,在应用程序对配置日志负责了多年以后,现在越来越不是这样了。在现代容器 编排 orchestration 环境中,现代应用程序记录标准错误和标准输出,并且信任 编排 orchestration 系统可以合理的处理日志。

然而,你不应该依赖库,或者说,其他任何地方。如果你想让操作的人知道发生了什么,使用日志,而不是打印

日志级别

日志记录的一个最重要功能就是 日志级别。不同的日志级别可以让你合理的过滤并分流日志。但是这只有在日志级别保持一致的情况下才能做到。最后,你应该在整个应用程序中保持日志级别的一致性。

选择不兼容语义的库可以通过在应用层面的适当配置来追溯修复,这只需要通过使用 Python 中最重要的通用风格做到:getLogger(__name-_)

大多数合理的库都会遵循这个约定。 过滤器 Filters 可以在日志对象发出之前就地修改它们。你可以给处理程序附加一个过滤器,这个处理程序会根据名称修改消息,使其具有合适的级别。

import logging
LOGGER=logging.getLogger(__name__)

考虑到这一点,你现在必须明确日志级别的语义。这其中有很多选项,但是下面这些是我的最爱:

  • Error:发送一个即时警告。应用程序处于一个需要操作人员引起注意的状态。(这意味着包含 CriticalError
  • Warning:我喜欢把这些称作“工作时间警报”。这种情况下,应该有人在一个工作日内关注一下。
  • Info:这是在正常工作流程中发出的。如果怀疑有问题的时候,这个是用来帮助人们了解应用程序在做什么的。
  • Debug:默认情况下,这个不应该在生产环境中出现。在模拟环境或开发环境下,可以发出来,也可以不发。如果需要更多的信息,在生产环境也可以特地被打开。

任何情况下都不要在日志中包含 个人身份信息 Personal Identifiable Information (PII)或密码。无论日志级别是什么,都是如此,比如级别更改,激活调试级别等等。日志聚合系统很少是 PII 安全 PII-safe 的,特别是随着 PII 法规的不断发展(HIPAA、GDPR 等等)。

日志聚合

现代系统几乎都是分布式的。 冗余 redundancy 扩展性 scaling ,有时是 管辖权 jurisdictional 需要更多的水平分布。微服务意味着垂直分布。登录到每个机器去查看日志已经是不现实的了。出于合理的控制原因,允许开发人员登录到机器中会给予他们更多的权限,这不是个好主意。

所有的日志都应该被发到一个聚合器。有一些商业的方案,你可以配置一个 ELK 栈,或者也可以使用其他的数据库(SQL 或则 no-SQL)。作为一个真正的低技术解决方案,你可以将日志写入文件,然后将它们发送到对象存储中。有很多解决方案,但是最重要的事情是选择一个,并且将所有东西聚合到一起。

记录查询

在将所有东西记录到一个地方后,会有很多日志。具体的聚合器可以定义如何写查询,但是无论是通过从存储中搜索还是写 NoSQL 查询,记录查询以匹配源和细节都是很有用的。

指标抓取

指标抓取 Metric Scraping 是一个 服务器拉取 server pull 模型。指标服务器定时和应用程序连接,并且拉取指标。

最后,这意味着服务器需要连接和找到所有相关的应用服务器。

以 Prometheus 为标准

如果你的指标聚合器是 Prometheus,那么 Prometheus 格式做为一个 端点 endpoint 是很有用的。但是,即使聚合器不是 Prometheus,也是很有用的。几乎所有的系统都包含与 Prometheus 端点兼容的 垫片 shim

使用客户端 Python 库给你的应用程序加一个 Prometheus 垫片,这将使它能够被大多数的指标聚合器所抓取。当 Prometheus 发现一个服务器,它就期望找到一个指标端点。这经常是应用程序路由的一部分,通常在 /metrics 路径下。不管 Web 应用的平台是什么,如果你能在一个端点下运行一个定制类型的定制字节流,Prometheus 就可以将它抓取。

对于大多数流行的框架,总有一个中间件插件或者类似的东西收集指标,如延迟和错误率。通常这还不够。你需要收集定制的应用数据:比如,每个端点的缓存 命中/缺失 hit/miss 率,数据库延迟,等等。

使用计数器

Prometheus 支持多个数据类型。一个重要且巧妙的类型就是计数器。计数器总是在前进 —— 但有一点需要注意。

当应用重置,计数器会归零。计数器中的这些“ 历时 epochs ”通过将计数器“创建时间”作为元数据发送来管理。Prometheus 知道不去比较两个不同 历时 epochs 的计数器。

使用仪表值

仪表值会简单很多:它们测量瞬时值。用它们来测量会上下起伏的数据:比如,分配的总内存大小,缓存大小,等等。

使用枚举值

枚举值对于整个应用程序的状态是很有用的,尽管它们可以以更精细的方式被收集。比如,你正使用一个 功能门控 feature-gating 框架,一个有多个状态(比如,使用中、关闭、 屏蔽 shadowing 等)的功能,也许使用枚举会更有用。

分析

分析不同于指标,因为它们要对应连续的事件。比如,在网络服务器中,事件是一个外部请求及其产生的工作。特别是,在事件完成之前事件分析是不能被发送的。

事件包含特定的指标:延迟,数量,以及可能产生的对其他服务请求的细节,等等。

结构化日志

现在一个可能的选择是将日志结构化。发送事件只发送带有正确格式的有效 载荷 payload 的日志。这个数据可以从日志聚合器请求,然后解析,并且放入一个合适的系统,这样可以对它的可见性。

错误追踪

你可以使用日志来追踪错误,也可以用分析来追踪错误。但是一个专门的错误系统还是值得的。一个为错误而优化的系统可以发送更多的错误,因为错误毕竟还是罕见的。这样它就可以发送正确的数据,并且用这些数据,它能做更多智能的事情。Python 中的错误追踪系统通常和一般的异常处理关联,然后收集数据,并且把它发到一个专门的错误聚合器。

使用 Sentry

很多情况下,自己运行 Sentry 是正确的做法。当错误发生时,就说明有些东西就出问题了。可靠地删除敏感数据是不可能的,因为一定有会出现敏感数据被发送到不应该的地方。

通常,这种工作量并不会很大:异常并不常出现。最后,这个系统并不需要很高的质量,也不需要高可靠性的备份。昨天的错误应该已经修复了,希望如此,如果没有,你还会发现的!

快速、安全、可重复:三者都要

可观测的系统开发起来更快,因为它们可以给你提供反馈。它们运行起来也更安全,因为当出问题的时候,它们也会更早的让你知道。最后,因为有反馈回路,可观测性也有助于围绕它构建可重复的过程。可观测性可以让你了解你的应用程序。而更了解它们,就胜利了一半。

磨刀不误砍柴功

构建所有的可观测层是一件困难的事情。总会让人感觉是在浪费的工作,或者更像是“可以有,但是不急”。

之后再做这个可以吗?也许吧,但是不应该。正确的构建可观测性可以加速后面所有阶段的开发:测试、监控,甚至是培训新人。在一个和科技行业一样动荡的行业,减少培训新人的工作量绝对是值得的。

事实上,可观测性很重要,所以尽早把它写出来,然后就可以在整个过程中进行维护。反过来,它也会帮你维护你的软件。


via: https://opensource.com/article/21/11/observability-python

作者:Moshe Zadka 选题:lujun9972 译者:MCGA 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

AppFlowy 旨在成为 Notion 的开源替代品,为你提供更好的隐私保护。让我们了解一下它。

虽然项目管理/笔记工具 Notion 功能非常出色,但它并不是一个开源解决方案。此外,它没有 Linux 桌面客户端。

那么,对于 Linux 用户来说,更透明、更私密和可用的替代方案是什么?

这就是 AppFlowy 大放异彩的地方!

AppFlowy 使用 Rust 和 Flutter 构建,遵循极简原则,但提供了足够的调整空间。

AppFlowy 是隐私和用户体验的完美结合

appflowy

AppFlowy 是相当新的。在它去年首次推出后,我们曾 报告 了它的发展状况。

这是一个开源项目,旨在克服 Notion 在安全和隐私方面的一些限制。它可以帮助你管理任务、添加待办事项列表、截止日期、跟踪事件、添加页面,以及为你的笔记/任务设置文本格式。

不仅仅是安全性。用户体验也很重要。而 AppFlowy 在这方面做得很好,甚至比 Notion 更好。

请注意,该项目仍处于 测试阶段

目前,该项目的目标不是提供更好的设计和功能,而是数据隐私、原生体验和社区驱动。

Notion 与 AppFlowy,如何选择?

虽然它旨在作为取代 Notion 的开源解决方案,但它可能并不适合所有人。

因此,如果你要选择 AppFlowy 而不是 Notion,你将获得以下好处:

透明度

AppFlowy 是一个开源项目,因此你可以随时查看和修改代码。

隐私

作为闭源软件,Notion 可以直接访问你在云中的私有数据。与之相比,你可以根据自己的喜好自行托管 AppFlowy。

你的所有个人数据都将保留在你身边,你可以完全控制它。开发人员还提到他们正在使用离线模式来更好的支持本地安装。

性能和原生体验

AppFlowy 使用 Rust 和 Flutter 构建,在提供现代用户体验的同时将性能置于优先位置。

不仅限于此,你还可以在 Linux 上获得良好的原生体验,这是 Notion 所没有的。

AppFlowy 的功能

appflowy screenshot 1

AppFlowy 在功能方面可能并不优越,但它确实提供了基本的功能。

随着开发的继续,你可以期待它会添加更多的功能。一些现有的功能包括:

  • 原生的跨平台支持。
  • 能够自行托管或将其安装在你的本地计算机上。
  • 可定制。
  • 数据隐私(重中之重)。
  • 单一代码库,便于更好地维护。
  • 社区驱动的可扩展性。
  • 简约的用户界面。
  • 可以添加待办事项、管理任务。
  • 文本高亮和基本的格式化。
  • 用于编辑单元格/网格的键盘快捷键。
  • 支持深色模式。

在 Linux 上安装 AppFlowy

由于它仍处于测试阶段,在默认仓库中还不可用,并且没有维护任何 PPA,也没有 Flatpak/Snap 包。

但是,你可以通过给定的命令轻松安装 AppFlowy(仅在 Ubuntu 20.04 LTS 和 Arch X86\_64 上测试过):

wget https://github.com/AppFlowy-IO/AppFlowy/releases/download/0.0.4/AppFlowy-linux-x86.tar.gz
tar -xzvf AppFlowy-linux-x86.tar.gz
cd AppFlowy

要运行 AppFlowy,请使用该命令:

./app_flowy

要在你的系统菜单中注册 AppFlowy,你必须执行以下附加步骤:

首先,你必须更改 AppFlowy 徽标的默认名称:

mv flowy_logo.svg app_flowy.svg

现在,你必须将 Linux 桌面文件模板复制为正式的 Linux 桌面文件。

cp appflowy.desktop.temp app_flowy.desktop

然后对配置文件进行一些更改。

sudo nano appflowy.desktop

在这里,你必须将 [CHANGE_THIS] 替换为图标和可执行文件的对应路径。

add location of icon and exec file

使用 CTRL + O 保存更改并使用 CTRL + X 退出。

最后,移动桌面文件,以便你的系统可以读取它。

mv app_flowy.desktop ~/.local/share/applications/.

它应该是这样的:

appflowy in system menu

无论哪种情况,你都可以查看 AppFlowy 的 官方文档 以从源代码构建它。在其官方网站上了解更多关于它的信息。

AppFlowy

总结

如果你需要具有原生 Linux 体验的简单的类 Notion 应用,AppFlowy 是一个有趣的选择。

考虑到它正在积极开发中,并且远非 Notion 的完全替代品,肯定会出现一些错误/问题。

作为 Notion 的开源替代品?它可以的!你可以使用它来管理任务、添加笔记和制作待办事项列表。


via: https://itsfoss.com/appflowy/

作者:Sagar Sharma 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linus 在 Macbook 上发布了 Linux 内核 5.19

今天,Linus Torvalds 发布了 Linux 5.19,在对新硬件方面添加了对龙芯 CPU 和 Zen 4 CPU 的支持,支持 Zstd 压缩固件,并进一步改进了性能。有趣的是,Linux 表示,这次 5.19 的发布工作是在他的苹果 MacBook 笔记本上完成的,这台笔记本运行了 Asahi Linux 为苹果 M1 Macbook 打造的 Linux 系统。Linus 说,“这是我个人期待了很久的事情,而现在终于变成了现实。”在很早之前他曾在 PPC970 设备上为 PowerPC 进行过开发,这是他第三次使用苹果硬件用于 Linux 开发。他说,“但现阶段我并没有将 MacBook Air 用于任何真实工作,我只是将其用于版本测试、启动以及现在的版本发布。”

消息来源:Phoronix
老王点评:果然 Linus 对 Asahi Linux 的工作非常满意,我寻思我也是不是把我的 M1 Macbook 换成 Asahi Linux。

Linux 内核不过 520

被称为 Linux 5.20 的开发中的内核很可能会被称为 Linux 6.0。根据 Linus Torvalds 对现代版本的划分,Linux 又到了采用下一个主要版本号的时候。他对主要版本的提升通常会在小版本更新到 19 或 20 时进行。Linux 3.19 之后是 Linux 4.0,Linux 4.20 之后是 Linux 5.0。在周日的 Linux 5.19 公告中,Linus 表示“我可能会叫它 6.0,因为我开始担心再次被大数字所迷惑”。

消息来源:Phoronix
老王点评:Linux 内核的大版本号其实没什么特别的,就是一个进位而已,你就当成内核版本号采用的是 20 进制好了。有时候可能还忘记进位了。

Python 开发者讨论从邮件列表转移到论坛

Python 项目在 2018 年开始实验使用论坛交流,作为实验的一部分,Python 核心开发者使用的邮件列表 python-committers 切换到了 Discourse 论坛。今天该邮件列表仍然存在,但主要作为发布公告使用,大部分讨论都是在论坛上进行的。一位开发者称,他不怎么访问 Discourse 而错过了有兴趣的新 PEP 讨论,希望新 PEP 能发布在 python-dev 邮件列表上。这个提议引发了讨论。最终,Python 语言指导委员会表示要将讨论的媒介切换到 Discourse 论坛,Python 的邮件列表可能要全面转向论坛了。

消息来源:Solidot
老王点评:虽然确实很多老程序员都习惯了邮件列表,但是应该与时俱进,采用更丰富、更现代的交流方式。而同时保留老的交流方式,直到没什么人继续使用它,或因为缺乏重要功能而被废弃。

fmt 命令是一个简单的文本格式化程序。我将在这里展示如何使用它来格式化文本和邮件回复。

当我为项目编写文档时,我经常以纯文本的形式编写自述文件和安装说明。我不需要使用 HTML 或者 Markdown 之类的标记语言来描述项目的功能或如何编译它。但是维护这样的文档可能会很痛苦。如果我需要更新我的 Readme 文件中的一个句子的中间位置,我需要重新格式化文本,以避免在我的其它文本中间出现一个很长或很短的行,而其它的行的格式是整整齐齐的 75 列。一些编辑器包含可以自动重新格式化文本以填充段落的功能,但并非所有的编辑器都这样做。这就是 Linux fmt 命令的用武之地。

使用 Linux fmt 命令格式化文本

fmt 命令是一个简单的文本格式化程序;它收集单词并填充段落,但不应用任何其它文本样式,例如斜体或粗体。这一切都是纯文本。使用 fmt 命令,你可以快速调整文本,使其更易于阅读。让我们从这个熟悉的示例文本开始:

$ cat trek.txt 
Space: the final
frontier. These are the voyages
of the starship Enterprise. Its
continuing mission: to explore
strange new worlds. To
seek out new life and new
civilizations. To boldly go
where no one has gone before!

在这个实例文件中,每行都有不同的长度,并且它们以一种奇怪的方式换行。如果你对纯文本文件进行大量更改,你可以会遇到类似的奇怪的换行。要重新格式化此文本,你可以使用 fmt 命令将段落的行填充为统一长度:

$ fmt trek.txt 
Space: the final frontier. These are the voyages of the starship
Enterprise. Its continuing mission: to explore strange new worlds. To
seek out new life and new civilizations. To boldly go where no one has
gone before!

默认情况下,fmt 会将文本格式化为 75 的列宽大小,但你可以使用 -w--width 选项进行更改:

$ fmt -w 60 trek.txt 
Space: the final frontier. These are the voyages of
the starship Enterprise. Its continuing mission: to
explore strange new worlds. To seek out new life and new
civilizations. To boldly go where no one has gone before!

使用 Linux fmt 命令格式化电子邮件回复

我加入了一个邮件列表,这里更喜欢纯文本电子邮件,这使得在列表服务器上归档电子邮件变得更加容易。但现实是并非每个人都以纯文本形式发送电子邮件。有时候,当我以纯文本形式回复这些电子邮件时,我的电子邮件客户端会将整个段落放在一行中。这使得在电子邮件中“引用”回复变得困难。

这是一个简单的例子。当我以纯文本形式回复电子邮件时,我的电子邮件客户端通过在每行前添加 > 字符来“引用”对方的电子邮件。对于一条短消息,可能如下所示:

> I like the idea of the interim development builds.

没有正确“换行”的长行将无法在我的纯文本电子邮件回复中正确显示,因为它只是前面带有 > 字符的长行,如下所示:

> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.

为了解决这个问题,我打开了一个终端并将引用的文本复制并粘贴到一个新文件中。然后我使用 -p--prefix 选项来告诉 fmt 在每一行之前使用什么字符作为“前缀”。

$ cat > email.txt
> I like the idea of the interim development builds. This should be a great way to test new changes that everyone can experiment with.
^D
$ fmt -p '>' email.txt
> I like the idea of the interim development builds. This should be a
> great way to test new changes that everyone can experiment with.

fmt 命令是一个非常简单的文本格式化程序,但它可以做很多有用的事情,可以帮助以纯文本形式编写和更新文档。要了解其它选项,例如 -c--crown-margin 以匹配段落前两行缩进,例如项目列表。还可以尝试使用 -t 或者 --tagged-paragraph 来保留段落中第一行的缩进,就像缩进的段落一样。-u--uniform-spacing 选项在单词之间使用一个空格,在句子之间使用两个空格。


via: https://opensource.com/article/22/7/fmt-trivial-text-formatter

作者:Jim Hall 选题:lkxed 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

从 .deb 文件安装应用 非常简单。双击它,它会在软件中心中打开,然后从那里安装它。

但是如何在 Ubuntu 或 Debian 中卸载 deb 包呢?如何删除一段时间前安装的软件包呢。

虽然这有几个如果和但是,但删除 .deb 文件的最简单和最可靠的方法是使用 apt remove 命令。

sudo apt remove program_name

如你所见,你需要在这里知道确切的包名称。这可能并不总是显而易见的。例如,如果你在 Ubuntu 上安装 Google Chrome,则该程序在命令行中称为 “google-chrome-stable”。你已经知道了吗?我猜你不知道。

在本教程中,我将详细介绍如何找到确切的包名称,然后使用它来删除应用。我还将讨论使用图形方法删除 deb 包。

从 Ubuntu 中删除通过 .deb 文件安装的软件包

在我向你展示如何从命令行删除 deb 包之前,让我们在软件中心应用中快速查看它。

方法 1:检查应用是否可以从软件中心移除

Ubuntu 有软件中心 GUI 应用,允许搜索、安装和删除应用。

搜索时,软件中心可能不会显示已安装的应用。

Searching for installed applications may not show any results in Ubuntu Software Center

但是,如果向下滚动,你仍可能在“已安装”部分下找到它。外部应用通常不带徽标显示。

Some installed applications can be found in the ‘installed’ tab of the Software Center

如果找到它,你可以通过单击“垃圾桶”图标或“删除”按钮来删除该应用。

Removing applications from the Ubuntu software center

一句话:检查是否可以从软件中心删除应用。

方法 2:使用 apt 命令删除应用

我假设你不知道该应用命令的确切名称。你可能不知道 Google Chrome 安装为 google-chrome-stable 而 Edge 安装为 microsoft-edge-stable,这很正常。

如果你知道前几个字母,那么 tab 补全可能会有所帮助。否则,你可以 使用 apt 命令列出已安装的应用 并使用 grep 搜索应用程序名称:

apt list --installed | grep -i possible_package_name

例如,你可以智能地猜测 Google Chrome 包的名称中应该包含 chrome。你可以这样搜索:

apt list --installed | grep -i chrome

在某些情况下,你可能会得到多个结果。

check if google chrome installed in ubuntu

如果你不确定这些软件包的作用,你可以随时通过以下方式获取它们的详细信息:

apt info exact_package_name

获得确切的软件包名称后,你可以使用 apt remove 命令将其删除。

sudo apt remove exact_package_name

你还可以使用 apt-get removedpkg uninstall 命令来删除。

Removing applications installed via .deb files using the apt command

方法 3:使用 Synaptic 包管理器删除 deb 应用

另一种方法是使用 Synaptic 包管理器。在 GNOME 以“软件中心”的形式创建其图形包管理器之前,Synaptic 是 Ubuntu 和许多其他发行版中的默认 GUI 包管理器。

它仍然是 Xfce 桌面环境 上的推荐工具。

首先安装它:

sudo apt install synaptic

打开 Synaptic 并搜索包名称。查找标记为绿色的已安装软件包。右键单击它们,然后单击“标记为删除”。之后点击应用。

Removing Deb packages using Synaptic package manager

对你有帮助吗?

我非常乐意使用 apt 命令删除从 .deb 文件中安装的软件包。但我可以理解,并不是每个人都喜欢使用命令行。

在删除从外部 .deb 文件安装的应用时,我发现软件中心中找不到它。软件中心还可以做的更好一些。

我希望你现在对删除 deb 包有更好的了解。如果你有任何问题,请告诉我。


via: https://itsfoss.com/uninstall-deb-ubuntu/

作者:Abhishek Prakash 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出