分类 技术 下的文章

Fedora 33 Workstation 是我们这个免费的、领先的操作系统的最新版本。你现在就可以从官方网站下载它。Fedora 33 Workstation 中有一些新的和值得注意的变化。请阅读如下更多细节。

GNOME 3.38

Fedora 33 Workstation 为各类用户提供了最新版本的 GNOME 桌面环境。在 Fedora 33 Workstation 中的 GNOME 3.38 包含了许多更新和改进,包括:

一个新的 GNOME Tour 应用

现在,新用户会看到一个“新的 Tour 应用,重点展示了桌面的主要功能,并为第一次使用 GNOME 的用户提供一个很好的欢迎页”。

The new GNOME Tour application in Fedora 33

拖动重排序应用

GNOME 3.38 用一个单一的可定制的、一致的视图取代了之前分开的“常用”和“所有”应用视图,这允许你重新排列应用并将它们组织到自定义文件夹中。只需点击并拖动即可移动应用。

GNOME 3.38 Drag to Reorder

改进屏幕录制

GNOME Shell 中的屏幕录制基础架构已被改进,以利用 PipeWire 和内核 API。这将有助于减少资源消耗并提高响应速度。

GNOME 3.38 还提供了许多额外的功能和改进。查看 GNOME 3.38 发行说明以获得更多信息。

B-tree 文件系统

正如之前宣布的,新安装的 Fedora 33 将默认使用 Btrfs。每一个新的内核版本都会为 Btrfs 增加一些特性和增强功能。变更日志有一个完整的总结,它介绍了每个新内核版本给 Btrfs 带来的功能。

Swap on ZRAM

Anaconda 和 Fedora IoT 多年来一直默认使用 swap-on-zram。在 Fedora 33 中,将默认启用 swap-on-zram,而不是交换分区。查看 Fedora wiki 页面了解更多关于 swap-on-zram 的细节。

默认使用 Nano

新的 Fedora 33 将把 EDITOR 环境变量默认设置为 nano。这个变化影响了一些命令行工具,当它们需要用户输入时,会打开一个文本编辑器。在早期的版本中,这个环境变量的默认值并没有被指定,而是由各个应用程序来选择一个默认的编辑器。通常情况下,应用程序会使用 vi 作为它们的默认编辑器,因为它是一个小应用,通常在大多数 Unix/Linux 操作系统的基础安装中都可以使用。由于 Fedora 33 的基本安装中包含了 nano,而且 nano 对于初学者来说更加直观,所以 Fedora 33 将默认使用 nano。当然,想要使用 vi 的用户可以在自己的环境中覆盖 EDITOR 变量的值。详见Fedora 修改请求获取更多信息。


via: https://fedoramagazine.org/whats-new-fedora-33-workstation/

作者:Gregory Bartholomew 选题:lujun9972 译者:geekpi 校对:wxy

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

大家好!每隔一段时间,我就会发现一款我非常喜欢的新软件,今天我想说说我最近喜欢的一款软件:ninja

增量构建很有用

我做了很多小项目,在这些项目中,我想设置增量构建。例如,现在我正在写一本关于 bash 的杂志,杂志的每一页都有一个 .svg文件。我需要将 SVG 转换为 PDF,我的做法是这样的:

for i in *.svg
do
    svg2pdf $i $i.pdf # or ${i/.svg/.pdf} if you want to get really fancy
done

这很好用,但是我的 svg2pdf 脚本有点慢(它使用 Inkscape),而且当我刚刚只更新了一页的时候,必须等待 90 秒或者其他什么时间来重建所有的 PDF 文件,这很烦人。

构建系统是让人困惑的

在过去,我对使用 makebazel 这样的构建系统来做我的小项目一直很反感,因为 bazel 是个大而复杂的东西,而 make 对我来说感觉有点神秘。我真的不想使用它们中的任何一个。

所以很长时间以来,我只是写了一个 bash 脚本或者其他的东西来进行构建,然后就认命了,有时候只能等一分钟。

ninja 是一个极其简单的构建系统

ninja 并不复杂!以下是我所知道的关于 ninja 构建文件的语法:创建一个 rule 和一个 build

rule 有一个命令(command)和描述(description)参数(描述只是给人看的,所以你可以知道它在构建你的代码时在做什么)。

rule svg2pdf
  command = inkscape $in --export-text-to-path --export-pdf=$out
  description = svg2pdf $in $out

build 的语法是 build output_file: rule_name input_files。下面是一个使用 svg2pdf 规则的例子。输出在规则中的 $out 里,输入在 $in 里。

build pdfs/variables.pdf: svg2pdf variables.svg

这就完成了!如果你把这两个东西放在一个叫 build.ninja 的文件里,然后运行 ninja,ninja 会运行 inkscape variables.svg --export-text-to-path --export-pdf=pdfs/variables.pdf。然后如果你再次运行它,它不会运行任何东西(因为它可以告诉你已经构建了 pdfs/variables.pdf,而且是最新的)。

Ninja 还有一些更多的功能(见手册),但我还没有用过。它最初是为 Chromium 构建的,所以即使只有一个小的功能集,它也能支持大型构建。

ninja 文件通常是自动生成的

ninja 的神奇之处在于,你不必使用一些混乱的构建语言,它们很难记住,因为你不经常使用它(比如 make),相反,ninja 语言超级简单,如果你想做一些复杂的事情,那么你只需使用任意编程语言生成你想要的构建文件。

我喜欢写一个 build.py 文件,或者像这样的文件,创建 ninja 的构建文件,然后运行 ninja

with open('build.ninja', 'w') as ninja_file:
    # write some rules
    ninja_file.write("""
rule svg2pdf
  command = inkscape $in --export-text-to-path --export-pdf=$out
  description = svg2pdf $in $out
""")

    # some for loop with every file I need to build
    for filename in things_to_convert:
        ninja_file.write(f"""
build {filename.replace('svg', 'pdf')}: svg2pdf {filename}
""")

# run ninja
import subprocess
subprocess.check_call(['ninja'])

我相信有一堆 ninja 的最佳实践,但我不知道。对于我的小项目而言,我发现它很好用。

meson 是一个生成 ninja 文件的构建系统

我对 Meson 还不太了解,但最近我在构建一个 C 程序 (plocate,一个比 locate 更快的替代方案)时,我注意到它有不同的构建说明,而不是通常的 ./configure; make; make install

meson builddir
cd builddir
ninja

看起来 Meson 是一个可以用 ninja 作为后端的 C/C++/Java/Rust/Fortran 构建系统。

就是这些!

我使用 ninja 已经有几个月了。我真的很喜欢它,而且它几乎没有给我带来让人头疼的构建问题,这让我感觉非常神奇。


via: https://jvns.ca/blog/2020/10/26/ninja--a-simple-way-to-do-builds/

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

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

树莓派是什么已经无需介绍。这台起初是为 DIY 爱好者打造的低规格电脑,现在可以作为全功能桌面使用了。

随着树莓派 400 的发布,使得它更加适合作为家庭电脑使用。树莓派 400 基本上是一台藏身于键盘内微型计算机。

如果你还记得,Commodore 64 在 1982 年时也是一台键盘形式的电脑。尽管树莓派 400 并不是独一无二的,但对于树莓派这样的成功产品来说,这是一个令人心仪的产品。

树莓派 400 概观

它是基于树莓派 4 的(带有 4GB 内存),并已调整附加了冷却器。它采用四核处理器,速度比以往更快。

除了易用性和便携性,它还可以为你节省很多桌面空间。而且,就像我一样,如果你打算买一台备用电脑来测试东西,我想我可能会选择树莓派 400,而不是组装另一台 PC 或基于 Linux 的迷你 PC

尽管我在下面提到了它的技术规格,但你可以观看官方视频来了解它的外观,以及它所承诺的是否可以满足作为你的家用电脑的需求。

树莓派 400 技术规格

  • 博通 BCM2711 四核 Cortex-A72(ARM v8)64 位 SoC @ 1.8GHz
  • 4GB LPDDR4-3200
  • 双频(2.4GHz 和 5.0GHz)IEEE 802.11b/g/n/ac 无线局域网
  • 蓝牙 5.0,BLE
  • 千兆以太网
  • 2 个 USB 3.0 和 1 个 USB 2.0 端口
  • 水平 40 针 GPIO 头
  • 2 个 micro HDMI 端口(支持最高 4Kp60)
  • H.265(4Kp60 解码);H.264(1080p60 解码,1080p30 编码);OpenGL ES 3.0 图形
  • micro SD 卡插槽,用于操作系统和数据存储
  • 78 或 79 键的小型键盘(取决于地区差异)
  • 5V DC,通过 USB 连接器
  • 工作温度:环境温度 0℃ 至 +50℃。
  • 最大尺寸 286 毫米 × 122 毫米 × 23 毫米

定价与供应

这是你付出 70 美元,所能得到的最好的现代家用电脑,只需一个键盘就可以简单的携带到任何地方(你只需要一个屏幕连接)。

你可以花 70 美元只买树莓派 400,也可以花 100 美元买完整的套装,它还包括一个 USB 鼠标、micro HDMI 转 HDMI 线、USB-C 电源、一本初学者指南和一张预装了树莓派操作系统的 SD 卡。

如果你想知道,对于键盘布局的支持,新闻稿中是这样提到的:

在发布时,我们支持英语(英国和美国)、法语、意大利语、德语和西班牙语的键盘布局,并(首次)提供翻译版的新手指南。在不久的将来,我们计划支持与我们的官方键盘相同的语言集。

换句话说,一开始他们就支持所有主要的键盘布局。所以,对于大多数人来说,这应该不是问题。

除了键盘布局的细节外,下面是你如何获得树莓派 400 的方法:

英国、美国和法国的树莓派 400 套件电脑现在就可以购买。意大利、德国和西班牙的产品正在送往树莓派授权经销商的路上,他们应该在下周就会有货。

我们预计,印度、澳大利亚和新西兰的授权经销商将在今年年底前拿到套件和电脑。我们也在迅速推出其他地区的合规认证,因此树莓派 400 将在 2021 年的前几个月在全球范围内上市。

当然,如果你在剑桥附近的任何地方,你可以前往树莓派商店,今天就可以领取你的树莓派 400。

总结

在远程办公成为新常态的当下,树莓派 400 绝对是令人印象深刻的好东西,也是非常有用的。

你对新的树莓派 400 有什么看法?打算买一台吗?在下面的评论中告诉我你的想法。


via: https://itsfoss.com/raspberry-pi-400/

作者:Ankush Das 选题:lujun9972 译者:wxy 校对:wxy

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

虚拟表是什么以及如何使用。

在最近的发布的 Apache Cassandra 4.0 测试版中的众多新增功能中, 虚拟表 virtual table 是一个值得关注的功能。

在以前的 Cassandra 版本中,用户需要访问 Java 管理扩展 Java Management Extensions JMX) 来查看 Cassandra 的细节,如运行中的 压实 compaction 、客户端、度量和各种配置设置。虚拟表消除了这些挑战。Cassandra 4.0 测试版让用户能够从一个只读的系统表中以 Cassandra 查询语言 Cassandra Query Language (CQL)行的形式查询这些细节和数据。

以下是之前 Cassandra 版本中基于 JMX 的机制是如何工作的。想象一下,一个用户想要检查集群中某个节点的压实状态。用户首先要建立一个 JMX 连接,在节点上运行 nodetool compactionstats。这个要求马上就给用户带来了一些复杂的问题。用户的客户端是否配置了 JMX 访问?Cassandra 节点和防火墙是否配置为允许 JMX 访问?是否准备好了适当的安全和审计措施,并落实到位?这些只是用户在处理 Cassandra 以前版本时必须面对的其中一些问题。

在 Cassandra 4.0 中,虚拟表使得用户可以利用之前配置的驱动来查询所需信息。这一变化消除了与实现和维护 JMX 访问相关的所有开销。

Cassandra 4.0 创建了两个新的 键空间 keyspace 来帮助用户利用虚拟表:system_viewssystem_virtual_schemasystem_views 键空间包含了用户查询的所有有价值的信息,有用地存储在一些表中。system_virtual_schema 键空间,顾名思义,存储了这些虚拟表的所有必要的模式信息。

 title=

重要的是要明白,每个虚拟表的范围仅限于其节点。任何虚拟表查询都将返回的数据,只对其协调器的节点有效,而不管一致性如何。为了简化这一要求,已经在几个驱动中添加了支持,以便在这些查询中指定协调器节点 (Python、DataStax Java 和其他驱动现在提供了这种支持)。

为了说明这一点,请查看这个 sstable_tasks 虚拟表。这个虚拟表显示了对 SSTables 的所有操作,包括压实、清理、升级等。

 title=

如果用户在以前的 Cassandra 版本中运行 nodetool compactionstats,则会显示相同类型的信息。 在这里,这个查询发现该节点当前有一个活动的压缩。它还显示了它的进度以及它的键空间和表。得益于虚拟表,用户可以快速收集这些信息,并同样有效地获得正确诊断集群健康状况所需的能力。

需要说明的是,Cassandra 4.0 并没有去除对 JMX 访问的需求。JMX 仍然是查询某些指标的唯一选择。尽管如此,用户会欢迎简单地使用 CQL 来获取关键集群指标的能力。由于虚拟表提供的便利,用户可能会将之前投入到 JMX 工具的时间和资源重新投入到 Cassandra 本身。客户端工具也应该开始利用虚拟表提供的优势。

如果你对 Cassandra 4.0 测试版及其虚拟表功能感兴趣,请试试试它


via: https://opensource.com/article/20/10/virtual-tables-apache-cassandra

作者:Ben Bromhead 选题:lujun9972 译者:geekpi 校对:wxy

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

作为一个工程师,我们经常与命令行打交道,但除了工作用的命令,你是否尝试过让命令来替代你生活中方方面面?

为了让更多的爱好者可以用命令行作为自己的有效工具,Linux 中国特别邀请了三位作者,撰写了《命令行生存指南》,希望可以通过这个系列的文章,让你换一个视角,来看待命令行的存在。如果你想体验一下不一样的命令行,那就不妨来看看今天的《命令行生存指南》。

本次的内容为试读内容,也欢迎你针对今天的内容提出自己的意见和建议。

操作概述

你会不会经常陷入这么一个情景:计划晚上早点睡叫,然而无奈总是一不小心玩过头了。你需要一种方法强制让你到时间了就要关机去睡觉了,这该怎么做呢?

Kgotobed 是一个很变态的内核模块。它会强制 Linux 在特定时间关闭,而你却毫无办法(即使你是 root 用户)。

概念和术语

内核模块允许 Linux 内核在运行时动态地向其中插入和删除代码。这些模块是具有独立功能的程序,可以被单独编译,但无法独立运行。模块在运行时作为内核的一部分在内核空间内运行。

操作实战

场景一:使用 Kgotobed 强制关机

难度★★★
演示发行版archlinux
涉及命令gotobed
安装

在 archlinux 上要安装 kgotobed,首先需要安装 dkmslinux-headers 这两个包:

sudo pacman -S dkms linux-headers --noconfirm

然后去 github 上克隆它的源代码:

git clone https://github.com/nikital/kgotobed.git

最后我们对源代码进行手工编译:

cd kgotobed/
sudo make install

make install 命令会完成以下三件事情:

  1. 通过 DKMS 注册 kgotobed.ko
  2. 安装 gotobed 命令到 /usr/local/bin
  3. 在 systemd 中注册、启用并运行 kgotobed.service
使用

直接运行 gotobed 就能看到设置的强行关机的时间:

[vagrant@archlinux kgotobed]$ gotobed 22:00
Current bedtime is 2018-04-13 01:00:00
Setting bedtime to 2018-04-12 22:00:00
Bedtime will be in 10 hours 32 minutes

不过你不能把时间调到更晚……

[vagrant@archlinux kgotobed]$ gotobed 2:00
Current bedtime is 2018-04-13 01:00:00
Error: Attempting to postpone bed time, it doesn't work like this...

要想调整默认时间,你需要修改 /etc/systemd/system/kgotobed.service

原始的 kgotobed.service 内容如下所示:

[Unit]
Description=kgotobed: Poweroff at bedtime
After=dkms.service

[Service]
Type=oneshot
ExecStartPre=/sbin/modprobe kgotobed
Environment=TIME=01:00
ExecStart=/usr/local/bin/gotobed -f ${TIME}

[Install]
WantedBy=multi-user.target

我们将其中的 TIME=01:00 改成 TIME=02:00 后重启系统,再次执行 gotobed 可以看到时间已经修改了:

[vagrant@archlinux ~]$ gotobed 
Current bedtime is 2018-04-13 02:00:00
删除 kgotobed

要逃脱强制关机的命运,几乎唯一的办法就是卸载 kgotobed 了。

我们可以在源代码目录中执行 make uninstall 进行卸载:

[vagrant@archlinux ~]$ cd kgotobed/
[vagrant@archlinux kgotobed]$ sudo make uninstall
dkms remove kgotobed/1.0 --all

-------- Uninstall Beginning --------
Module:  kgotobed
Version: 1.0
Kernel:  4.15.15-1-ARCH (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

kgotobed.ko:
 - Uninstallation
   - Deleting from: /usr/lib/modules/4.15.15-1-ARCH/extra//
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod...........

DKMS: uninstall completed.

------------------------------
Deleting module version: 1.0
completely from the DKMS tree.
------------------------------
Done.
rm -f /usr/local/bin/gotobed
rm -f /etc/systemd/system/kgotobed.service
systemctl daemon-reload
[vagrant@archlinux kgotobed]$ 

小练习

请按照自己的需求更改强制关机的时间。

如何清除 APT 缓存?你只需使用这个 apt-get 命令选项:

sudo apt-get clean

但是,清理 APT 缓存不仅仅是运行上面的命令。

在本教程中,我将解释什么是 APT 缓存、为什么会使用它、为什么你要清理它,以及关于清理 APT 缓存你应该知道的其他事情。

我将在这里使用 Ubuntu 作为参考,但由于这是关于 APT 的,因此它也适用于 Debian 和其他基于 Debian 和 Ubuntu 的发行版,比如 Linux Mint、Deepin 等等。

什么是 APT 缓存?为什么要使用它?

当你使用 apt-getapt 命令安装一个软件包时(或在软件中心安装 DEB 包),APT 包管理器会以 .deb 格式下载软件包及其依赖关系,并将其保存在 /var/cache/apt/archives 文件夹中。

下载时,apt 将 deb 包保存在 /var/cache/apt/archives/partial 目录下。当 deb 包完全下载完毕后,它会被移到 /var/cache/apt/archives 目录下。

下载完包的 deb 文件及其依赖关系后,你的系统就会从这些 deb 文件中安装包

现在你明白缓存的用途了吧?系统在安装软件包之前,需要一个地方把软件包文件存放在某个地方。如果你了解 Linux 目录结构,你就会明白,/var/cache 是合适的地方。

为什么安装包后要保留缓存?

下载的 deb 文件在安装完成后并不会立即从目录中删除。如果你删除了一个软件包,然后重新安装,你的系统会在缓存中查找这个软件包,并从这里获取它,而不是重新下载(只要缓存中的软件包版本与远程仓库中的版本相同)。

这样就快多了。你可以自己尝试一下,看看一个程序第一次安装,删除后再安装需要多长时间。你可以使用 time 命令来了解完成一个命令需要多长时间time sudo apt install package_name

我找不到任何关于缓存保留策略的内容,所以我无法说明 Ubuntu 会在缓存中保留下载的包多长时间。

你应该清理 APT 缓存吗?

这取决于你。如果你的根目录下的磁盘空间用完了,你可以清理 APT 缓存来回收磁盘空间。这是 Ubuntu 上释放磁盘空间的几种方法之一。

使用 du 命令检查缓存占用了多少空间:

有的时候,这可能会占用几百兆,如果你正在运行一个服务器,这些空间可能是至关重要的。

如何清理 APT 缓存?

如果你想清除 APT 缓存,有一个专门的命令来做。所以不要去手动删除缓存目录。只要使用这个命令就可以了:

sudo apt-get clean

这将删除 /var/cache/apt/archives 目录的内容(除了锁文件)。以下是 apt-get clean 命令模拟删除内容:

还有一个命令是关于清理 APT 缓存的:

sudo apt-get autoclean

clean 不同的是,autoclean 只删除那些无法从仓库中下载的包。

假设你安装了包 xyz。它的 deb 文件仍然保留在缓存中。如果现在仓库中有新的 xyz 包,那么缓存中现有的这个 xyz 包就已经过时了,没有用了。autoclean 选项会删除这种不能再下载的无用包。

删除 apt 缓存安全吗?

是的,清除 APT 创建的缓存是完全安全的。它不会对系统的性能产生负面影响。也许如果你重新安装软件包,下载时间会更长一些,但也仅此而已。

再说一次,使用 apt-get clean 命令。它比手动删除缓存目录更快、更简单。

你也可以使用像 StacerBleachbit 这样的图形工具来实现这个目的。

总结

在写这篇文章的时候,新的 apt 命令没有这样的内置选项。不过,为了保持向后的兼容性,仍然可以运行 apt clean (内部应该是运行了 apt-get clean)。请参考这篇文章来了解 apt 和 apt-get 的区别

我希望你觉得这个关于 APT 缓存的解释很有趣。虽然这不是什么必要的东西,但了解这些小东西会让你对你的 Linux 系统更加了解。

欢迎你在评论区提出反馈和建议。


via: https://itsfoss.com/clear-apt-cache/

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

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