2021年8月

这个最新发布的通用操作系统已经来到。

期待已久的代号为 “Bullseye” 的 Debian 11 版本在经过两年的开发后终于来了。该版本将在未来五年内得到支持,就像任何其他的 Debian 稳定版版本一样。

感到兴奋吗?让我们来看看 Debian 11 的新内容。

1、新主题

Debian 11 带有一个新的 “Homeworld” 主题。它的灵感来自 包豪斯运动,这是一种 20 世纪初诞生于德国的艺术风格,其特点是对建筑和设计的独特处理。

Debian 11 的默认壁纸

在 Debian 11 中,无论是在登录界面、安装程序还是 Grub 菜单上,你都会看到这个主题。

Grub 屏幕

安装程序

登录屏幕

2、较新版本的桌面环境

Debian 11 包含了它所提供的桌面变体的较新版本:

  • GNOME 3.38
  • KDE Plasma 5.20
  • LXDE 11
  • LXQt 0.16
  • MATE 1.24
  • Xfce 4.16

如果你使用 Fedora 或 Arch/Manjaro 等先锐发行版,你可能会觉得很奇怪。但就是这样。Debian 更倾向于稳定,因此桌面环境的版本不是最新的。当然,它们与之前的 Debian 稳定版相比,还是比较新的。

3、软件包更新

Debian 已经更新了它的软件包库。Debian 11 包括了多达 11294 个新软件包,软件包总数多达 59551 个。42821 个软件包有了新的版本。删除了 9519 个软件包。

也就是说你应该会看到像 LibreOffice、Emacs、GIMP 以及各种服务器和编程相关工具等流行应用程序的新版本。

4、Linux 内核 5.10 LTS

Debian 11 带有 Linux 5.10 内核,这是一个长期支持(LTS)版本。Debian 10 Buster 在发布时使用的是 Linux 4.19 内核。

一个新的内核显然意味着对硬件有更好的支持,特别是较新的硬件以及性能的改进。

5、打印机和扫描器的改进

Debian 11 带来了新的软件包 ipp-usb。它使用了许多现代打印机所支持的供应商中立的 IPP-over-USB 协议。这意味着许多较新的打印机将被 Debian 11 所支持,而不需要驱动程序。

同样地,SANE 无驱动后端可以让你轻松使用扫描仪。

6、支持 exFAT

你不再需要使用 exfat-fuse 包来挂载 exFAT 文件系统。借助 Linux 5.10 内核,Debian 11 已经支持 exFAT 文件系统,并且默认使用它来挂载 exFAT 文件系统。

7、仍然支持 32 位

这算是一个功能吗?考虑到现在只有 少数几个 Linux 发行版支持 32 位架构,我觉得是。

除了 32 位和 64 位 PC,Debian 11 还支持 64 位 ARM(arm64)、ARM EABI(armel)、ARMv7(EABI hard-float ABI,armhf)、小端 MIPS(mipsel)、64 位小端 MIPS(mips64el)、64 位小端 PowerPC(ppc64el)和 IBM System z(s390x)。

现在你知道为什么它被称为“通用操作系统”了吧。 ?

其他变化

在这个版本中还有一些变化:

  • Systemd 默认使用控制组 v2(cgroupv2)。
  • 针对中文、日文、韩文和其他许多语言的新 Fcitx 5 输入法。
  • Systemd 日记日志默认为持久性的。
  • 一个新的打开命令,可以用某个应用程序(GUI 或 CLI)从命令行自动打开文件。
  • 本地系统账户的密码散列现在默认使用 yescrypt 而不是 SHA-512 来提高安全性。

更多信息可以在 官方发布说明 中找到。

获取 Debian 11

Debian 11 可以从其网站下载。只要前往该网站并从那里获得 ISO。

如果你已经在使用 Debian 10,你可以 通过改变你的源列表轻松升级到 Debian 11

享受最新和最棒的通用操作系统吧。?


via: https://news.itsfoss.com/debian-11-feature/

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

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

不管是爱它还是恨它,都很难避开 Java。

Java 仍然是一种非常流行的编程语言,在学校里教,在企业里用。

如果你想使用基于 Java 的工具或用 Java 编程,你就需要在你的系统上安装 Java。

这就变得很混乱,因为围绕着 Java 有很多技术术语。

  • Java 开发工具包 Java Development Kit (JDK)用于创建 Java 程序
  • Java 运行环境 Java Runtime Environment (JRE)或 Java 虚拟机(JVM),用于运行 Java 程序。

除此之外,你还会遇到 OpenJDKOracle Java SE。推荐使用 OpenJDK ,因为它是开源的。如果你有专门的需求,那么你应该选择 Oracle Java SE。

还有一件事。即使是 OpenJDK 也有几个版本可供选择。在写这篇文章的时候,Fedora 34 有 OpenJDK 1.8、OpenJDK 11 和 OpenJDK 16 可用。

你可以自行决定想要哪个Java版本。

在 Fedora Linux 上安装 Java

首先,检查是否已经安装了 Java,以及它是哪个版本。我不是在开玩笑。Fedora 通常预装了 Java。

要检查它,请使用以下命令:

java -version

正如你在下面的截图中看到的,我的 Fedora 系统上安装了 Java 11(OpenJDK 11)。

Check Java version

假设你想安装另一个版本的 Java。你可以用下面的命令检查可用的选项:

sudo dnf search openjdk

这里的 sudo 不是必须的,但它会刷新 sudo 用户的元数据,这在你安装另一个版本的 Java 时会有帮助。

上面的命令将显示很多输出,其中有很多看起来相似的软件包。你必须专注于最初的几个词来理解不同的版本。

Available Java versions in Fedora

例如,要安装 Java 8(OpenJDK 1.8),包的名字应该是 java-1.8.0-openjdk.x86_64 或者 java-1.8.0-openjdk。用它来安装:

sudo dnf install java-1.8.0-openjdk.x86_64

Install Java Fedora

这就好了。现在你的系统上同时安装了 Java 11 和 Java 8。但你将如何使用其中一个呢?

在 Fedora 上切换 Java 版本

你正在使用的 Java 版本保持不变,除非你明确改变它。使用这个命令来列出系统上安装的 Java 版本:

sudo alternatives --config java

你会注意到在 Java 版本前有一个数字。Java 版本前的 + 号表示当前正在使用的 Java 版本。

你可以指定这个数字来切换 Java 版本。因此,在下面的例子中,如果我输入 2,它将把系统中的 Java 版本从 Java 11 改为 Java 8。

Switching between installed Java versions

这就是你在 Fedora 上安装 Java 所需要做的一切。


via: https://itsfoss.com/install-java-fedora/

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

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

使用 Ubuntu 计算出了圆周率的最新记录

此前,圆周率的纪录是小数点后 50 万亿位。日前,瑞士的科学家宣布,他们使用了一台运行 Ubuntu Linux 20.04 的计算机算出了圆周率(π)的最新数值,小数点后 62.8 万亿位,打破了新的世界纪录。这台计算机装有两块 32 核 AMD Epyc 芯片、1TB 内存,有 38 个 16TB 的硬盘,其中 34 块用作内存交换,剩下 4 块用于存储计算出来的圆周率。他们从今年的 5 月 4 日开始,历时 108 天 9 小时。最初是用十六进制进行计算的,然后又用了 12 天转换为十进制数字。最后的十位数为 78 1792 4264。

有一个这样的说法,宇宙中的所有信息都能在 π 的某个位置中找到。

glibc 安全修复带来了一个更糟糕的漏洞

最初的问题并不那么糟糕,要利用这个缺陷发起最小的攻击,攻击者需要许多前提条件。而为了修复这个缺陷,却带来了一个更糟糕的错误,有可能触发分段故障,导致任何使用该库的应用程序崩溃。红帽公司对第二个漏洞给予 CVSS 7.5 分的高危评分。由于每个 Linux 程序,包括其他语言的解释器(如 Python、PHP)都与 glibc 库相链接。glibc 是仅次于内核本身的第二重要的东西,所以影响相当大。目前新的修复已经提交到上游。

有时在不相关的代码路径中的改变会导致其他地方的行为改变,而程序员却没有意识到发生了什么。

断更十年的 Slackware 15.0 就要发布正式版了

Slackware 是最古老的仍在维护的 Linux 发行版之一。自 Slackware 14 以来,已经过去了近十年。早在 2 月份,Slackware 15.0 Alpha 就已发布,然后在 4 月份发布了 Slackware 15.0 Beta。现在,他们发布了 Slackware 15.0 的第一个候选版本,而稳定版本应该不会太远了。

作为当年见过和使用过的第一个 Linux 发行版,我是没想到 Slackware 居然还能再次活跃起来。

使用 udev 管理你的 Linux 系统处理物理设备的方式。

 title=

Linux 能够出色地自动识别、加载、并公开接入的无数厂商的硬件设备。事实上,很多年以前,正是这个特性说服我,坚持让我的雇主将整个基础设施转换到 Linux。痛点在于 Redmond 的某家公司(LCTT 译注:指微软)不能在我们的 Compaq 台式机上加载集成网卡的驱动,而 Linux 可以轻松实现这一点。

从那以后的岁月里,Linux 的识别设备库随着该过程的复杂化而与日俱增,而 udev 就是解决这个问题的希望之星。udev 负责监听 Linux 内核发出的改变设备状态的事件。它可能是一个新 USB 设备被插入或拔出,也可能是一个无线鼠标因浸入洒出的咖啡中而脱机。

udev 负责处理所有的状态变更,比如指定访问设备使用的名称和权限。这些更改的记录可以通过 dmesg 获取。由于 dmesg 的输出通常有几千行,对结果进行过滤通常是聪明的选择。下面的例子说明了 Linux 如何识别我的 WiFi 接口。这个例子展示了我的无线设备使用的芯片组(ath9k)、启动过程早期阶段分配的原始名称(wlan0)、以及正在使用的又臭又长的永久名称(wlxec086b1ef0b3):

$ dmesg | grep wlan
[    5.396874] ath9k_htc 1-3:1.0 wlxec086b1ef0b3: renamed from wlan0

在这篇文章中,我会讨论为何有人想要使用这样的名称。在这个过程中,我会探索剖析 udev 的配置文件,然后展示如何更改 udev 的设置,包括编辑系统命名设备的方式。这篇文件基于我的新课程中《Linux 系统优化》的一个模块。

理解 udev 配置系统

使用 systemd 的机器上,udev 操作由 systemd-udevd 守护进程管理,你可以通过常规的 systemd 方式使用 systemctl status systemd-udevd 检查 udev 守护进程的状态。

严格来说,udev 的工作方式是试图将它收到的每个系统事件与 /lib/udev/rules.d//etc/udev/rules.d/ 目录下找到的规则集进行匹配。规则文件包括匹配键和分配键,可用的匹配键包括 actionnamesubsystem。这意味着如果探测到一个属于某个子系统的、带有特定名称的设备,就会给设备指定一个预设的配置。

接着,“分配”键值对被拿来应用想要的配置。例如,你可以给设备分配一个新名称、将其关联到文件系统中的一个符号链接、或者限制为只能由特定的所有者或组访问。这是从我的工作站摘出的一条规则:

$ cat /lib/udev/rules.d/73-usb-net-by-mac.rules
# Use MAC based names for network interfaces which are directly or indirectly
# on USB and have an universally administered (stable) MAC address (second bit
# is 0). Don't do this when ifnames is disabled via kernel command line or
# customizing/disabling 99-default.link (or previously 80-net-setup-link.rules).

IMPORT{cmdline}="net.ifnames"
ENV{net.ifnames}=="0", GOTO="usb_net_by_mac_end"

ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", NAME=="", \
    ATTR{address}=="?[014589cd]:*", \
    TEST!="/etc/udev/rules.d/80-net-setup-link.rules", \
    TEST!="/etc/systemd/network/99-default.link", \
    IMPORT{builtin}="net_id", NAME="$env{ID_NET_NAME_MAC}"

add 动作告诉 udev,只要新插入的设备属于网络子系统,并且是一个 USB 设备,就执行操作。此外,如果我理解正确的话,只有设备的 MAC 地址由特定范围内的字符组成,并且 80-net-setup-link.rules99-default.link 文件存在时,规则才会生效。

假定所有的条件都满足,接口 ID 会改变以匹配设备的 MAC 地址。还记得之前的 dmesg 信息显示我的接口名称从 wlan0 改成了讨厌的 wlxec086b1ef0b3 吗?那都是这条规则的功劳。我怎么知道?因为 ec:08:6b:1e:f0:b3 是设备的 MAC 地址(不包括冒号)。

$ ifconfig -a
wlxec086b1ef0b3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.103  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::7484:3120:c6a3:e3d1  prefixlen 64  scopeid 0x20<link>
        ether ec:08:6b:1e:f0:b3  txqueuelen 1000  (Ethernet)
        RX packets 682098  bytes 714517869 (714.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 472448  bytes 201773965 (201.7 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Linux 默认包含这条 udev 规则,我不需要自己写。但是为什么费力进行这样的命名呢——尤其是看到这样的接口命名这么难使用后?仔细看一下包含在规则中的注释:

对直接或间接插入在 USB 上的网络接口使用基于 MAC 的名称,并且用一个普遍提供的(稳定的)MAC 地址(第二位是 0)。当 ifnames 通过内核命令行或 customizing/disabling 99-default.link(或之前的 80-net-setup-link.rules)被禁用时,不要这样做。

注意,这个规则专为基于 USB 的网络接口设计的。和 PCI 网络接口卡(NIC)不同,USB 设备很可能时不时地被移除或者替换,这意味着无法保证它们的 ID 不变。某一天 ID 可能是 wlan0,第二天却变成了 wlan3。为了避免迷惑应用程序,指定绝对 ID 给设备——就像分配给我的 USB 接口的 ID。

操作 udev 的设置

下一个示例中,我将从 VirtualBox 虚拟机里抓取以太网接口的 MAC 地址和当前接口 ID,然后用这些信息创建一个改变接口 ID 的 udev 新规则。为什么这么做?也许我打算从命令行操作设备,需要输入那么长的名称让人十分烦恼。下面是工作原理。

改变接口 ID 之前,我需要关闭 Netplan 当前的网络配置,促使 Linux 使用新的配置。下面是 /etc/netplan/ 目录下我的当前网络接口配置文件:

$ less /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        enp0s3:
            addresses: []
            dhcp4: true
    version: 2

50-cloud-init.yaml 文件包含一个非常基本的接口定义,但是注释中也包含一些禁用配置的重要信息。为此,我将移动到 /etc/cloud/cloud.cfg.d 目录,创建一个名为 /etc/cloud/cloud.cfg.d 的新文件,插入 network: {config: disabled} 字符串。

尽管我只在 Ubuntu 发行版上测试了这个方法,但它应该在任何一个带有 systemd 的 Linux(几乎所有的 Linux 发行版都有 systemd)上都可以工作。不管你使用哪个,都可以很好地了解编写 udev 配置文件并对其进行测试。

接下来,我需要收集一些系统信息。执行 ip 命令,显示我的以太网接口名为 enp0s3,MAC 地址是 08:00:27:1d:28:10

$ ip a
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:1d:28:10 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.115/24 brd 192.168.0.255 scope global dynamic enp0s3

现在,我要在 /etc/udev/rules.d 目录创建一个名为 peristent-net.rules 的新文件。我将给文件一个以较小的数字开头的名称,比如 10:

$ cat /etc/udev/rules.d/10-persistent-network.rules
ACTION=="add", SUBSYSTEM=="net",ATTR{address}=="08:00:27:1d:28:10",NAME="eth3"

数字越小,Linux 越早执行文件,我想要这个文件早点执行。文件被添加时,包含其中的代码就会分配名称 eth3 给网络设备——只要设备的地址能够匹配 08:00:27:1d:28:10,即我的接口的 MAC 地址 。

保存文件并重启计算机后,我的新接口名应该就会生效。我可能需要直接登录虚拟机,使用 dhclient 手动让 Linux 为这个新命名的网络请求一个 IP 地址。在执行下列命令前,可能无法打开 SSH 会话:

$ sudo dhclient eth3

大功告成。现在你能够促使 udev 控制计算机按照你想要的方式指向一个网卡,但更重要的是,你已经有了一些工具,可以弄清楚如何管理任何不听话的设备。


via: https://opensource.com/article/20/2/linux-systemd-udevd

作者:David Clinton 选题:lujun9972 译者:YungeG 校对:wxy

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

一本新的展示了开发者如何继续使用 Java 框架来构建新的无服务器功能的电子书。

 title=

无服务器 架构已经成为一种高效的解决方案,无论是物理服务器、虚拟机还是云环境,都可以根据实际工作负载调整超额配置和不足配置资源(如 CPU、内存、磁盘、网络)。然而,在选择新的编程语言来开发无服务器应用时,Java 开发者有一个担忧。对于云上的无服务器部署,尤其是 Kubernetes,Java 框架似乎过于沉重和缓慢。

作为 Java 开发者,如果可以继续使用 Java 框架来构建传统的云原生微服务以及同时构建新的无服务器功能呢?这种方法应该是令人兴奋的,因为你不必担心新的无服务器应用框架的学习曲线会很陡峭。

此外,如果 Java 框架不仅可以为开发者提供熟悉技术的乐趣,还可以在启动时以毫秒为单位优化 Kubernetes 中的 Java 无服务器功能,并提供微小的内存足迹,又会怎样?

什么是 Quarkus?

Quarkus 是一个新的 Java 框架,可以为 Java 开发者、企业架构师和 DevOps 工程师提供这些功能和好处。它旨在设计无服务器应用,并编写云原生微服务,以便在云基础设施(例如 Kubernetes)上运行。

Quarkus 还支持一个名为 Funqy 的可移植 Java API 扩展,供开发者编写和部署无服务器功能到异构无服务器运行时。

Quarkus Funqy 使开发者能够将 CloudEvents 与 Knative 环境中的无服务器函数绑定,以处理反应式流。这有利于开发者建立一个通用的消息传递格式来描述事件,提高多云和混合云平台之间的互操作性。

在我的新电子书 《Java 无服务器功能指南》的帮助下,开始你的 Quarkus 之旅。与他人分享你的 Quarkus 经验,让大家都能享受到用 Java 和 Quarkus 进行的无服务器开发。


via: https://opensource.com/article/21/8/java-quarkus-ebook

作者:Daniel Oh 选题:lujun9972 译者:geekpi 校对:wxy

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

科技公司研发 AI 工具可通过摄像头识别员工是否真生病

以色列一家科技公司开发一款 AI 工具,可以让企业透过智能电话、电脑远距监察员工的生命迹象,以确认员工是真的生病,还是装病请假。用户安装应用后,只需望着镜头 45 秒,该应用即可读取其生命迹象,如心跳、氧饱和度和呼吸频率。AI 系统可探测肉眼无法观察的细微颜色差异,可以看到表皮下方的血液流动情况。镜头可以每秒可以捕捉到 30 至 120 张照片,AI 系统会处理每张照片中皮肤反射的红、绿和蓝光之间的差异,以显示心率、氧饱和度和呼吸率频等讯息。

这就属于 AI 技术的“邪恶”应用。

英国拟 2025 年完全淘汰固定电话

根据英国政府的计划,从 2025 年起,所有家庭和企业需要互联网才能打电话,这意味着数百万的用户“被赶到网上”或只能使用手机打电话。数据显示,约 150 万个家庭——占英国家庭总数的约 6%,尚未上网;另外还有约 50 万个家庭没有手机。这一转变还会影响依赖固定电话的其他服务,例如报警电话、热线电话、支付终端和电话亭。

虽然说现在固话已经使用的越来越少了,但是确实有些场景下还是必要的。

PINE64 将推出首款支持 Wacom 手写笔的开源 Linux 电子阅读器

今年晚些时候,PINE64 计划以 399 美元的价格提供首款支持 Wacom 手写笔的 PineNote 开源 Linux 电子阅读器。与 PineBook 笔记本、PinePhone 手机、以及 PineTab 平板电脑等 PINE64 的其它产品一样,都提供了对 Linux 操作系统的良好支持。

基于 Linux 的开源硬件产品越来越多了,这说明 Linux 的硬件兼容性已经不太是个问题了。