分类 技术 下的文章

谷歌的 UI 工具包 Flutter 在创建移动、网页和桌面的跨平台应用程序方面越来越受欢迎。

Flutter 不是一种编程语言,而是一个软件开发工具包。Dart 是 Flutter SDK 下面使用的编程语言。

Flutter 是谷歌开源的 Fuchsia OS、谷歌 STADIA 以及许多其他软件和移动应用背后的主要框架。

如果你想使用 Flutter 进行开发,本教程将帮助你在 Ubuntu 和其他类似 Linux 发行版上搭建好你的环境。

在 Ubuntu 和其他 Linux 上用 Snap 安装 Flutter

在 Linux 上安装 Flutter 最简单的方法是使用 Snap。如果你使用的是 Ubuntu,你已经有了 Snap。对于其他发行版,请确保 启用 Snap 支持

打开终端 并在终端中使用以下命令来安装 Flutter:

sudo snap install flutter --classic

你会在你的终端上看到类似这样的东西:

一旦安装完成,就是验证它的时候了。不仅仅是 Flutter 的安装,还要验证 Flutter 正常运行所需满足的每一个依赖关系。

验证 Flutter 的依赖项

为了验证 Flutter 正确工作所需的每一个依赖项,Flutter 有一个内置选项:

Flutter doctor

这个过程开始看起来像这样:

而它完成时像这样:

正如你所看到的,我们需要 Android Studio 来工作。所以让我们来安装它。我们该怎么做呢?用 Snap 在 Linux 上安装 Android Studio 也是毫不费力的。

安装并设置好 Android Studio

在终端中,使用下面的命令来安装 Android Studio:

sudo snap install android-studio --classic

安装完毕后,从我们的操作系统菜单中打开 Android Studio。

就快完成了。现在是配置 Android Studio 的时候了。

点击下一步,如果你不想让事情复杂化,就选择“ 标准 standard ”。

选择你喜欢的主题(我喜欢“ 暗色 Darcula ”的)。

确认一切正常,然后点击“ 下一步 Next ”。

最后,点击“ 完成 Finish ”按钮。

然后等待,直到下载完成。

创建一个 Hello World Flutter 应用样本

在 Android Studio 中,进入项目,选择“ 新建 Flutter 项目 New Flutter Project ”。Flutter SDK 路径会默认设置。

在这里,神奇的事情开始出现了,这是你设置你的项目名称的地方,在这个例子中,它将被称为 “hello\_world”。

让我们选择三个可用的平台。Android、iOS 和 Web。最后,点击“ 完成 Finish ”。

项目中的主文件位于 lib/main.dart,如下图所示:

选定后,擦除文件中包含的所有内容,并将其改为本示例代码:

// Copyright 2018 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Welcome to Flutter',
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Welcome to Flutter'),
        ),
        body: const Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

重要的是,这只是向你展示 Flutter 是如何工作的,如果你确信要学习这种美丽而不可思议的语言,这里有 文档 可以看到更多关于它的信息。尝试它!

最后,选择 “Chome Web” 设备,并点击“ 运行 Run ”按钮,如下图所示;并看到神奇的效果!

你可以如此快速地创建一个 Flutter 项目,真是不可思议。跟你的 Hello World 项目打个招呼吧。

最后...

如果你想在短时间内做出漂亮的移动和网页界面的贡献,Flutter 和 Dart 是完美的。

现在你知道了如何在 Ubuntu Linux 上安装 Flutter,以及如何用它创建你的第一个应用程序。我很高兴可以为你写这篇文章,希望对你有所帮助,如果你有任何问题,请通过留言或给我发邮件来告诉我,祝你好运!

本教程由 Marco Antonio Carmona Galván 提供,他是物理学和数据科学专业的学生。


via: https://itsfoss.com/install-flutter-linux/

作者:Marco Antonio Carmona Galván 选题:lujun9972 译者:wxy 校对:wxy

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

你好!最近我和几个朋友聊天,他们提到希望知道如何使用 dig 来进行 DNS 查询,所以这是一篇关于它的速读博文。

当我第一次使用 dig 时,我发现它有点吓人 —— 有这么多的选项!我打算把大部分的选项省略。在这篇文章中,我打算不谈 dig 的大部分选项,只谈我实际使用的选项。

我最近还了解到,你可以设置一个 .digrc 配置文件,让它的输出更容易阅读,这让它的使用变得更加轻松。

几年前我还画了一个关于 digzine 页,但我想写这篇文章来包括更多的信息。

两种类型的 dig 参数:查询和格式化

有两种主要的参数可以传递给 dig

  1. 告诉 dig 要进行什么 DNS 查询的参数
  2. 告诉 dig 如何 格式化响应的参数

首先,让我们看一下查询选项。

主要的查询选项

你通常想控制 DNS 查询的 3 件事是:

  1. 名称(如 jvns.ca)。默认情况下,查询的是空名称(.)。
  2. DNS 查询类型(如 ACNAME)。默认是 A
  3. 发送查询的 服务器(如 8.8.8.8)。默认是 /etc/resolv.conf 中的内容。

其格式是:

dig @server name type

这里有几个例子:

  • dig @8.8.8.8 jvns.ca 向谷歌的公共 DNS 服务器(8.8.8.8)查询 jvns.ca
  • dig ns jvns.cajvns.ca 进行类型为 NS 的查询。

-x:进行反向 DNS 查询

我偶尔使用的另一个查询选项是 -x,用于进行反向 DNS 查询。下面是输出结果的样子。

$ dig -x 172.217.13.174
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。

-x 不是魔术。dig -x 172.217.13.174 只是对 174.13.217.172.in-addr.arpa. 做了一个 PTR 查询。下面是如何在不使用 `-x’ 的情况下进行完全相同的反向 DNS 查询。

$ dig ptr 174.13.217.172.in-addr.arpa.
174.13.217.172.in-addr.arpa. 72888 IN PTR yul03s04-in-f14.1e100.net。

我总是使用 -x,因为它可以减少输入。

格式化响应的选项

现在,让我们讨论一下你可以用来格式化响应的参数。

我发现 dig 默认格式化 DNS 响应的方式对初学者来说是很难接受的。下面是输出结果的样子:

; <<>> DiG 9.16.20 <<>> -r jvns.ca
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28629
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d87fc3022c0604d60100000061ab74857110b908b274494d (good)
;; QUESTION SECTION:
;jvns.ca.           IN  A

;; ANSWER SECTION:
jvns.ca.        276 IN  A   172.64.80.1

;; Query time: 9 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Sat Dec 04 09:00:37 EST 2021
;; MSG SIZE  rcvd: 80

如果你不习惯看这个,你可能需要花点时间来筛选,找到你要找的 IP 地址。而且大多数时候,你只对这个响应中的一行感兴趣(jvns.ca. 180 IN A 172.64.80.1)。

下面是我最喜欢的两种方法,可以使 dig 的输出更容易管理:

方式 1 : +noall +answer

这告诉 dig 只打印 DNS 响应中的“答案”部分的内容。下面是一个查询 google.comNS 记录的例子:

$ dig +noall +answer ns google.com
google.com.     158564  IN  NS  ns4.google.com.
google.com.     158564  IN  NS  ns1.google.com.
google.com.     158564  IN  NS  ns2.google.com.
google.com.     158564  IN  NS  ns3.google.com.

这里的格式是:

NAME         TTL            TYPE   CONTENT
google.com   158564   IN    NS     ns3.google.com.

顺便说一下:如果你曾经想知道 IN 是什么意思,它是指“查询类”,代表“ 互联网 internet ”。它基本上只是上世纪 80、90 年代的遗物,当时还有其他网络与互联网竞争,如“ 混沌网络 chaosnet ”。

方式 2:+short

这就像 dig +noall +answer,但更短:它只显示每条记录的内容。比如说:

$ dig +short ns google.com
ns2.google.com.
ns1.google.com.
ns4.google.com.
ns3.google.com.

你可以在 digrc 中设置格式化选项

如果你不喜欢 dig 的默认格式(我就不喜欢!),你可以在你的主目录下创建一个 .digrc 文件,告诉它默认使用不同的格式。

我非常喜欢 +noall +answer 格式,所以我把 +noall +answer 放在我的 ~/.digrc 中。下面是我使用该配置文件运行 dig jvns.ca 时的情况。

$ dig jvns.ca
jvns.ca.        255在172.64.80.1中

这样读起来就容易多了!

如果我想回到所有输出的长格式(我有时会这样做,通常是因为我想看响应的权威部分的记录),我可以通过运行再次得到一个长答案。

$ dig +all jvns.ca

dig +trace

我使用的最后一个 dig 选项是 +tracedig +trace 模仿 DNS 解析器在查找域名时的做法 —— 它从根域名服务器开始,然后查询下一级域名服务器(如 .com),以此类推,直到到达该域名的权威域名服务器。因此,它将进行大约 30 次 DNS 查询。(我用 tcpdump 检查了一下,对于每个根域名服务器的 A / AAAA 记录它似乎要进行 2 次查询,所以这已经是 26 次查询了。我不太清楚它为什么这样做,因为它应该已经有了这些 IP 的硬编码,但它确实如此。)

我发现这对了解 DNS 的工作原理很有用,但我不认为我用它解决过问题。

为什么要用 dig

尽管有一些更简单的工具来进行 DNS 查询(如 doghost),我发现自己还是坚持使用 dig

我喜欢 dig 的地方实际上也是我 不喜欢 dig 的地方 —— 它显示了大量的细节!

我知道,如果我运行 dig +all,它将显示 DNS 响应的所有部分。例如,让我们查询 jvns.ca 的一个根名称服务器。响应有 3 个部分,我可能会关心:回答部分、权威部分和附加部分。

$ dig @h.root-servers.net. jvns.ca +all
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18229
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 9
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;jvns.ca.           IN  A

;; AUTHORITY SECTION:
ca.         172800  IN  NS  c.ca-servers.ca.
ca.         172800  IN  NS  j.ca-servers.ca.
ca.         172800  IN  NS  x.ca-servers.ca.
ca.         172800  IN  NS  any.ca-servers.ca.

;; ADDITIONAL SECTION:
c.ca-servers.ca.    172800  IN  A   185.159.196.2
j.ca-servers.ca.    172800  IN  A   198.182.167.1
x.ca-servers.ca.    172800  IN  A   199.253.250.68
any.ca-servers.ca.  172800  IN  A   199.4.144.2
c.ca-servers.ca.    172800  IN  AAAA    2620:10a:8053::2
j.ca-servers.ca.    172800  IN  AAAA    2001:500:83::1
x.ca-servers.ca.    172800  IN  AAAA    2620:10a:80ba::68
any.ca-servers.ca.  172800  IN  AAAA    2001:500:a7::2

;; Query time: 103 msec
;; SERVER: 198.97.190.53#53(198.97.190.53)
;; WHEN: Sat Dec 04 11:23:32 EST 2021
;; MSG SIZE  rcvd: 289

dog 也显示了 “附加” 部分的记录,但它没有明确指出哪个是哪个(我猜 + 意味着它在附加部分?) ,但它似乎没有显示“权威”部分的记录。

$ dog @h.root-servers.net. jvns.ca 
  NS ca.                2d0h00m00s A "c.ca-servers.ca."
  NS ca.                2d0h00m00s A "j.ca-servers.ca."
  NS ca.                2d0h00m00s A "x.ca-servers.ca."
  NS ca.                2d0h00m00s A "any.ca-servers.ca."
   A c.ca-servers.ca.   2d0h00m00s + 185.159.196.2
   A j.ca-servers.ca.   2d0h00m00s + 198.182.167.1
   A x.ca-servers.ca.   2d0h00m00s + 199.253.250.68
   A any.ca-servers.ca. 2d0h00m00s + 199.4.144.2
AAAA c.ca-servers.ca.   2d0h00m00s + 2620:10a:8053::2
AAAA j.ca-servers.ca.   2d0h00m00s + 2001:500:83::1
AAAA x.ca-servers.ca.   2d0h00m00s + 2620:10a:80ba::68
AAAA any.ca-servers.ca. 2d0h00m00s + 2001:500:a7::2

host 似乎只显示“答案”部分的记录(在这种情况下没有得到记录):

$ host jvns.ca h.root-servers.net
Using domain server:
Name: h.root-servers.net
Address: 198.97.190.53#53
Aliases:

总之,我认为这些更简单的 DNS 工具很好(我甚至自己做了一个 简单的网络 DNS 工具),如果你觉得它们更容易,你绝对应该使用它们,但这就是为什么我坚持使用 dig 的原因。drill 的输出格式似乎与 dig 的非常相似,也许 drill 更好!但我还没有真正试过它。

就这些了

我最近才知道 .digrc,我非常喜欢使用它,所以我希望它能帮助你们中的一些人花更少的时间来整理 dig 的输出!

有人在 Twitter 上指出,如果有办法让 dig 显示响应的简短版本,其中也包括响应的状态(如 NOERRORNXDOMAINSERVFAIL 等),那就更好了!我同意这个观点!不过我在手册中没有找到这样的选项。


via: https://jvns.ca/blog/2021/12/04/how-to-use-dig/

作者:Julia Evans 选题:lujun9972 译者:wxy 校对:wxy

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

在任何的 Linux 发行版上,你都有近乎无限的定制选项,在视觉上最明显的区别就是定制的主题。让我们来看看一些具有深色模式的 GTK 主题。

是的,我们在过去曾介绍过 最佳 Linux 主题,但这一篇是专门介绍深色主题的。曾几何时,只有程序员和系统管理员喜欢深色模式,但现在已经不是这样了。深色模式也受到了普通人的喜爱,因此我为像你这样的 Linux 桌面用户编制了这个深色主题列表。

如果你不熟悉设置桌面环境的主题,你可以看看我们的 在 GNOME 中安装主题 指南。

本文仅供参考,这并不是一个排名列表。

1、McMojave

The stock image of how McMojave looks

McMojave 是一个 GTK 主题,其灵感来自于 macOS 风格的用户界面。显然这个主题是提供给深色模式的,但它也有浅色模式,嗯……,提供给任何可能想要它的人。

McMojave GTK 主题显然支持基于 GTK 的桌面环境,如 Pantheon、Gnome、XFCE、Mate 等。但是,这个主题也 适用于 KDE 用户

为了让你的桌面环境看起来与 macOS 非常相似,你还可以安装 McMojave 圆形图标主题 以获得更完整的体验。

2、Yaru

A screenshot of the default Yaru theme on Ubuntu 21.10

YaruUbuntu 的默认 GTK(GNOME)主题。该主题的深灰色点缀着橙色,及少许黑色让我觉得很有吸引力。

现在,你可以让 Arch Linux 上的 GNOME 看起来像 Ubuntu。( ͡° ͜ʖ ͡°)

3、Pop

A look at how the Pop GTK theme looks on Pop!_OS

Pop GTK 主题 是由 System76 为他们基于 Ubuntu 的 Linux 发行版 Pop!\_OS 创建的主题。

如果你喜欢 System76 对 GNOME 在深色模式下的表现,你可以在你选择的 Linux 发行版中试用 Pop GTK 主题

如果想获得完整的 Pop-esque 的外观和感觉,在安装主题的同时,还可以安装 System76 提供的 Pop 图标

4、Nordic

Nordic GTK theme preview

你是一个喜欢简单的、有点扁平化的设计方法以及一些灰色或更多灰色的人吗?不妨看看这个基于 北欧风调色板 的主题。

Nordic GTK 主题给你的正是这样的感觉。一个基于北欧风调色板的 GTK 主题,设计简单。

5、Ultimate-Maia

Stock screenshot of the Ultimate-Maia theme

Ultimate-Maia 是一个基于 Google 的 Material 主题 设计理念的 GTK 主题。这个主题有一个精细而独特的外观和感觉,特别是有各种不同的强调色可供选择。

6、Graphite

A look at Graphite’s flat, rounded and gray characteristic

Graphite 是一个 GTK 主题,它为你的桌面环境(尤其是 GNOME)提供了一个完全独特的外观,同时保持了你的桌面环境的独特性,就像以前一样。这是一个值得一看的东西。

7、Qogir

Customization options available with Qogir GTK theme

Qogir 是一个采用了扁平化设计的 GTK 主题。Qogir 主题为你提供的不仅仅是标题按钮、复选框、单选按钮、开关等自定义选项。

8、Layan

Lyan – A very rounded-corners GTK theme

你会很高兴知道,这个列表中还包括 Layan,这是一个强调平滑、圆角的 GTK 主题,带有气泡的美感。Layan 主题也继承了 Google 的 Material 设计 指导方针的设计理念。

9、Juno

Juno 是我发现的另一个最好的对深色模式友好的 GTK 主题之一。有些人可能喜欢它的漆黑本质,有些人可能不喜欢。但是,如果你有一台 OLED 笔记本或电脑显示屏,Juno 感觉是为你而生的。

10、Ant 主题

Ant themes’ available options for customization of window appearance

Ant 是一个 GTK 主题,它从 macOS 的布局和用户界面元素中获得了一些灵感,在我看来,Ant 主题很好地实现了这一切。

11、Equilux

Equilux 主题给你一个漂亮的主题,带有精细的深色模式。这个主题能很好地与 GNOME 及 GNOME 的复刻融合在一起。我不会太多地描述这个主题,它简单而优雅。

12、Orchis-dark

Orchis Dark

Orchis Orchis-dark 是超酷的 Orchis 主题的深色变体。它为桌面提供了带有圆角和流畅界面的 iOS/macOS 触感。只需看一眼,你就可以立即猜到。

13、Elementary X

A look at Elementary X GTK theme with the settings panel open

Elementary X 是基于 elementary OS 团队为定制 GNOME 外观而开发的 GTK 主题。顺便说一句,elementary OS 是一个基于 Ubuntu 的 Linux 发行版。

总结

这篇文章中列出的主题都是非常漂亮的,而且你的选择也不限于这里列出的那些。还有其他成千上万的主题。

如果你喜欢一个主题,请在下面评论。如果你正在使用一个我没有提到的主题,也请留下评论。


via: https://itsfoss.com/dark-gtk-themes/

作者:Pratham Patel 选题:lujun9972 译者:geekpi 校对:wxy

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

Apache Cassandra 是一个自由开源的 NoSQL 数据库管理系统,用于在许多服务器上操作大量信息,提供无单点故障的高可用性。

我不打算讨论 NoSQL 数据库的细节。我将会告诉你如何在基于 Ubuntu 的 Linux 发行版上安装 Apache Cassandra。

请注意,这更多是为了实践。

在 Linux 上安装 Apache Cassandra

有多种方法可以在 Ubuntu 和其他 Linux 发行版上安装 Cassandra:

  • 使用 Apache 的官方 deb 仓库安装:适合并推荐给基于 Debian 和 Ubuntu 的发行版。如果有更新的版本,会得到自动更新。
  • 使用 Docker 安装:适用于所有 Linux 发行版。
  • 从 tarball 安装:适用于所有 Linux,但不会自动更新到新版本。

这仅仅是为了练习和体验 Apache Cassandra。如果你要在一个项目中使用它和其他服务,你必须遵循该服务的完整配置和设置指南。

我将展示前两种方法。

方法 1:使用官方仓库在 Ubuntu 和 Debian 上安装 Cassandra

在你安装和使用 Cassandra 之前,你需要在你的系统上安装 Python 和 Java。你可能需要 在 Ubuntu 上安装 Java,但 Python 通常是预装的。

你可以用下面这行来检查先决条件:

java -version && python --version

所有先决条件都安装好了?那就好。让我们来安装 Cassandra。这里的方法与 在 Ubuntu 中添加任意外部仓库 相同。

首先,将 Apache Cassandra 仓库添加到你的源列表中。下面这个添加最新的主要版本(在写这篇文章的时候)4.0 系列。

echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

Add Apache Cassandra repository

现在,下载并将 Apache Cassandra 仓库的密钥添加到服务器上的受信任密钥列表中。这样,你的系统就会信任来自你在上一步添加的仓库的软件包。

你应该确保 apt 可以通过 https 使用。

sudo apt install apt-transport-https

然后添加密钥:

wget https://www.apache.org/dist/cassandra/KEYS && sudo apt-key add KEYS

Add Apache Cassandra repository key

你已经添加了仓库。更新本地缓存,使你的系统知道这个新仓库的存在。

sudo apt update

最后,用以下命令安装 Cassandra:

sudo apt install cassandra

Installing Apache Cassandra on Ubuntu

安装完成后,Cassandra 服务会自动开始运行。如果你想的话,你仍然可以验证它:

sudo systemctl status cassandra.service

Check if Cassandra is running

你可以输入 cqlsh 连接到数据库。输入 exit 来退出这个 shell。

Entering cqlsh

这是非常基本和默认的设置。你可能需要根据你的需求来配置它。请查看 官方文档中的配置部分

方法 2:使用 Docker 安装 Apache Cassandra

这个方法适用于任何 Linux 发行版,只要你打算在 Docker 设置中使用它。

当然,你需要在你的系统上安装 Docker 来实现这个方法。这是这个方法的前提条件,我让你处理这件事情。

如果你有 Docker,使用下面的命令来拉取 Apache Cassandra 的 Docker 镜像:

sudo docker pull cassandra:latest

Pulling Apache Cassandra docker image

完成后,你可以用 docker run 命令来启动 Cassandra,像这样:

sudo docker run --name cass_cluster cassandra:latest

Running Cassandra in a container

注意: --name 选项指的是创建的 Cassandra 集群的名称。

要与之前启动的 Cassandra 节点交互,你需要初始化 CQL shell,你可以用 Docker exec 命令这样做:

sudo docker exec -it cass_cluster cqlsh

Access the cqlsh running in Docker.

恭喜! 现在你至少知道了在你的系统中安装 Apache Cassandra 的两种不同方法。

请记住,这篇文章只是一个介绍。如果你有兴趣了解更多关于 Apache Cassandra 的信息,请阅读 文档,在那里你可以找到更多关于这个神奇的 NoSQL 数据库管理系统的信息。如果这篇文章对你有帮助,请阅读并分享它。下一篇见。


via: https://itsfoss.com/apache-cassandra-ubuntu/

作者:Marco Carmona 选题:lujun9972 译者:geekpi 校对:wxy

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

Flatpak 简化了 Linux 上应用的安装。

 title=

计算机应用由许多小文件组成,它们被链接在一起以执行一系列的任务。因为它们以“应用”的形式出现,在菜单或桌面上有彩色的图标,我们大多数人认为应用是一个单一的、几乎是有形的东西。在某种程度上,这样想是令人欣慰的,因为它们感觉是可以管理的。如果一个应用实际上是散落在你的计算机上的数百个小库和资源文件的组合,那么应用在哪里?撇开存在危机不谈,当一个应用需要一个版本的库,而另一个应用需要一个不同的版本时,会发生什么?

在云计算的世界里,容器 正变得越来越流行,因为它们为应用提供了隔离和整合。你可以在一个“容器”中安装一个应用需要的所有文件。这样一来,它的库就不会受到其他应用的影响,它所占用的内存也不会将数据泄露到另一个内存空间。所有的东西最后都感觉非常像一个单一的、几乎是 有形的 东西。在 Linux 桌面上,提供了类似的技术的 Flatpak,是一个跨发行版、无守护进程、去中心化的应用交付系统。

在 Linux 上安装 Flatpak

你的 Linux 系统可能已经安装了 Flatpak。如果没有,你可以从你的包管理器中安装它:

在 Fedora、Mageia 和类似的发行版上:

$ sudo dnf install flatpak

在 Elementary、Mint 和其他基于 Debian 的发行版上:

$ sudo apt install flatpak

在 Slackware 上,Flatpak 可以从 SlackBuilds.org 获得。

选择一个 Flatpak 仓库

你可以通过在你的发行版的软件中心(如 GNOME 上的“软件”)添加一个 Flatpak 仓库,将一个应用安装为 Flatpak。Flatpak 是一个去中心化的系统,意味着任何开发软件的人都可以托管他们自己的仓库。尽管如此,在实践中,Flathub 是 Flatpak 格式的最大和最流行的应用集合。要将 Flathub 添加到 GNOME “ 软件 Software ” 或者 KDE “ 发现 Discover ” 中,请浏览 https://flatpak.org/setup ,找到适合你的发行版的说明,从第二步开始,或者直接下载 Flatpakrepo 文件。根据你的网络情况,你的软件中心可能需要几分钟的时间来与 Flathub(或另一个 Flatpak 仓库)同步。Flathub 有很多软件,但你的系统上有多少个 Flatpak 仓库是没有限制的,所以如果你发现一个有你想尝试的软件,不要害怕添加一个新的仓库。

 title=

如果你喜欢在终端工作,你可以用 flatpak 命令直接添加到仓库:

$ flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

安装一个应用

只要你在软件中心添加了 Flatpak 仓库,你就可以像往常一样浏览应用了。

 title=

点击一个看起来很吸引人的应用,阅读它,当你准备好时点击安装按钮。

在终端中安装 flatpak

如果你喜欢在终端工作,你可以把 Flatpak 当作一个专门的包管理器。你可以使用 flatpak search 命令来搜索一个应用程序:

$ flatpak search paint
Name        Description                         Application ID
CorePaint   A simple painting tool              org.cubocore.CorePaint
Pinta       Edit images and paint digitally     com.github.PintaProject.Pinta
Glimpse     Create images and edit photographs  org.glimpse_editor.Glimpse
Tux Paint   A drawing program for children      org.tuxpaint.Tuxpaint
Krita       Digital Painting, Creative Freedom  org.kde.krita

flatpak install 安装:

$ flatpak install krita

安装后,应用就会与系统中的所有其他应用一起出现在你的应用菜单或活动页上。

应用变得简单

Flatpak 通过消除版本冲突,可以使用户轻松安装应用。他们通过在自托管的平台或像 Flathub 这样的公共平台上只需要针对一种软件包格式提供应用,使分发软件变得简单。我在 Fedora Silverblue、CentOS 和 Slackware 上使用 Flatpak,我无法想象现在没有它的生活。在你的下一个应用安装中试试 Flatpak 吧!


via: https://opensource.com/article/21/11/install-flatpak-linux

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

如果你曾经试图通过电子邮件或聊天来协作处理文件,并且发现自己试图描述需要修改的地方,那么你会喜欢 diffpatch 的。

我编辑过很多文本文件。有时是代码。其他时候是角色扮演游戏(RPG)、编程书籍或一般信件的书面文字。有时候,做一个修改,而能让我的协作者把我的修改和他们原来写的东西进行比较就更好了。许多人默认使用办公套件(如 LibreOffice)的注释或更改跟踪功能。不过有时更简单的工具更有意义,为此,你可以看看像 diffpatch 这样的工具的编程历史,它们为跟踪和应用共享文件的变化提供了标准化的格式。

即使对于简单的文件,在同步两个文件时也有复杂性。一些项目被改变,另一些被保留,新的内容被添加,还有一些保持不变,但被移到文件的不同位置。如果接受所有的变化,并且用新文件替换旧文件,就很难复制变化。它也是整体不透明的。如果变化很多,就很难挑出到底发生了什么变化。

通过 diff 命令,你可以创建一个文件变化的记录,通过 patch 你可以在旧版本上“重放”这些变化,使其与新版本保持一致。

设置

假设你和我正在合作编写一个描述如何泡茶的文件。

到目前为止,文件 tea.md 包含原始的复制粘贴来的内容:

烧开水。
加热茶壶。
在茶壶中加入茶和水。
在茶壶上放置一个茶叶滤网。
浸泡 6 分钟。
将茶倒入杯中。
加入牛奶。

这似乎很合理,但总有一些优化可以做,所以你把文件发给我改进。为了澄清泡茶过程,我把文件复制为tea-revision.md,并进行编辑,最后是这样的:

在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

正如预期的那样,一些项目(“烧开水”和“将茶倒入杯中”)没有变化,而其他行(“加热茶壶”)则有增加。有些行是全新的,有些行是相同的,但顺序不同。

创建一个差异

diff 工具会显示两个文件之间的差异。有几种不同的方法来查看结果,但我认为最清楚的是 —unified(简写为 -u)视图,它显示哪些行被增加或减少了。以任何方式改变的行都被视为先减后增的行。默认情况下,diff 将其输出打印到终端。

diff 提供旧文件,然后是新文件:

$ diff --unified tea.md tea-revised.md 
--- tea.md      2021-11-13 10:26:25.082110219 +1300
+++ tea-revised.md      2021-11-13 10:26:32.049110664 +1300
@@ -1,7 +1,7 @@
+在烤箱的抽屉中加热茶壶。
 烧开水。
-加热茶壶。
-在茶壶中加入茶和水。
-在茶壶上放置一个茶叶滤网。
-浸泡 6 分钟。
+将茶叶放入茶叶滤网。
+将滤网和水加入茶壶。
+浸泡 6 分钟。用茶壶罩保温。
 将茶倒入杯中。
-加入牛奶。
+可以选择加入温牛奶。

行首的加号(+)表示在旧文件中增加了一些内容。行首的减号(-)表示被删除或改变的行。

用 diff 创建一个补丁

补丁文件就是将 diff —unified 命令的输出放到一个文件中。你可以用标准的 Bash 重定向来做这件事:

$ diff -u tea.md tea-revised.md > tea.patch

该文件的内容与输出到终端的内容完全相同。我喜欢在 Emacs 中查看补丁文件,它对每一行进行颜色编码,取决于它是被添加还是被减去。

 title=

用补丁应用修改

一旦我有了补丁文件,我就可以把它发给你,让你审查,并且可以选择应用到你的旧文件中。你可以用 patch 命令来应用一个补丁。

$ patch tea.md tea.patch

增加了一些行,减少了一些行,最后,你得到了一个与我的版本相同的文件:

$ cat tea.md
在烤箱的抽屉中加热茶壶。
烧开水。
将茶叶放入茶叶滤网。
将滤网和水加入茶壶。
浸泡 6 分钟。用茶壶罩保温。
将茶倒入杯中。
可以选择加入温牛奶。

你可以给一个文件打多少次补丁,这是没有限制的。你可以对我的修改进行迭代,生成一个新的补丁,然后发给我审核。发送修改内容而不是结果,可以让每个贡献者审查修改的内容,决定他们要保留或删除的内容,并准确地记录过程。

安装

在 Linux 和 macOS 上,你已经有了 diffpatch 命令。在 Windows 上,你可以通过 Cygwin 获得 diffpatch,或者使用 Chocolatey 搜索 diffutilspatch

如果你曾经试图通过电子邮件或聊天来协作处理文件,并且发现自己需要 描述 需要修改的地方,那么你会喜欢 diffpatch。一个结构严谨的文件,如代码或以行为单位的 Markdown,很容易进行差异比较、补丁和维护。


via: https://opensource.com/article/21/11/linux-diff-patch

作者:Seth Kenlon 选题:lujun9972 译者:wxy 校对:wxy

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