Merge pull request #8 from LCTT/master

update
This commit is contained in:
littlebirdnest 2022-09-24 14:13:18 +08:00 committed by GitHub
commit 0cabf6a880
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 3046 additions and 14 deletions

View File

@ -3,37 +3,40 @@
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: "littlebirdnest"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15064-1.html"
AMD 的开源图形驱动程序 Vulkan现在支持光线追踪
AMD 的开源图形驱动程序 Vulkan 现在支持光线追踪
======
*RDNA 2 GPU 的 Linux 用户可以使用 AMD 的 AMDVLK GPUOpen 开源 Vulkan 驱动程序。*
![](https://www.opensourceforu.com/wp-content/uploads/2022/09/AMD-Ryzen-Zen-CPUs_Next-Gen-1536x842.jpg)
> RDNA 2 GPU 的 Linux 用户可以使用 AMD 的 AMDVLK GPUOpen 开源 Vulkan 驱动程序。
用于 Radeon RX 6000 GPU 的 AMDVLK GPUOpen 图形驱动程序在过去一周改进了对 64 位光线追踪的支持。这涵盖了支持 RDNA 2 图形的 APU 以及桌面/移动 GPU。所有平台上的所有 AMD Vulkan 驱动程序现在都支持硬件光线追踪,包括 Mesa3D RADV、AMDVLK GPUOpen 和 AMDGPU-PRO。
GPURT 库的基础是 C++ 接口。根据其用法和依赖关系,公共接口被拆分为各种头文件。用户可以在官方 GitHub 网站上了解更多信息,该网站还包括结构细分,关于 RDNA 2 GPU 光线追踪库 (GPURT)。最新的 AMDVLK GPUOpen v-2022.Q3.4 信息如下:
GPU 光线追踪库GPURT的基础是一个 C++ 接口。根据其用法和依赖关系,公共接口被拆分为各种头文件。用户可以在官方的 GitHub 仓库上了解更多信息,它还包括了 RDNA 2 GPURT 的结构细分。最新的 AMDVLK GPUOpen v-2022.Q3.4 信息如下:
**更新和新功能**
**更新和新功能**
- 扩展 Navi2x 的 64 位光线追踪功能。
- 将 Vulkan 标头升级到版本 1.3.225
- 游戏性能优化,包括《荣耀战魂》和《奇点灰烬》
**目前解决的问题**
**已解决的问题:**
- 解析传输前的dEQP-VK.api.copy和blit..resolve image.whole copy有新版本CTS失败。
- `dEQP-VK.api.copy_and_blit.*.resolve_image.whole_copy_before_resolving_transfer.*` 新版本 CTS 失败。
- dEQP-VK.pipeline.creation 缓存控件有一个 CTS 警告。
- Ubuntu 22.04 上的 Firefox 损坏
- VulkanInfo 崩溃,管道缓存已停用
- RX 6800 上的 RGP 测试套件故障
新的改进包括 GPU 光线追踪库或 GPURT它将包括使用 HLSL 等着色器在光线追踪中看到的边界体积层次 (BVH) 的构造和排序处理。这个库将提供一个标准库来改进图形渲染并引入更多的统一性。DirectX 12 DXR 也将与新库一起使用。
新的改进包括 GPU 光线追踪库GPURT它将包括使用 HLSL 之类的着色器在光线追踪中看到的边界体积层次BVH的构造和排序处理。这个库将提供一个标准库来改进图形渲染并引入更多的统一性。DirectX 12 DXR 也将与新库一起使用。
GPU 光线追踪 (GPURT) 库的描述为“一个静态库(可交付源代码),为支持 DXR (DirectX 12) 和 Vulkan® RT API 的 AMD 驱动程序提供与光线追踪相关的功能。” 该公司的平台抽象库用于构建库PAL
对 GPU 光线追踪GPURT库的描述为“一个静态库源代码交付为支持 DXRDirectX 12和 Vulkan® RT API 的 AMD 驱动程序提供与光线追踪相关的功能。” 该公司的平台抽象库用于构建库PAL
用户可在此处获得最新 AMDVLK GPUOpen v-2022.Q3.4 升级的安装说明。用户在更新任何软件、硬件或驱动程序之前应备份所有相关数据,以免丢失重要文件。为了让最新的 Linux 驱动程序为 AMD、Intel 和 NVIDIA 技术做好准备,已经投入了大量工作,这些技术都是在今年第一季度推出的。
用户可参考最新 AMDVLK GPUOpen v-2022.Q3.4 升级的安装说明。用户在更新任何软件、硬件或驱动程序之前应备份所有相关数据,以免丢失重要文件。
为了让最新的 Linux 驱动程序为 AMD、Intel 和 NVIDIA 技术做好准备,已经投入了大量工作,这些技术都是在今年第一季度推出的。
@ -43,8 +46,8 @@ via: https://www.opensourceforu.com/2022/09/amds-open-source-vulkan-graphics-dri
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[littlebirdnest](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
译者:[littlebirdnest](https://github.com/littlebirdnest)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,95 @@
[#]: subject: "A Modular Chromebook Launched by Framework and Google"
[#]: via: "https://news.itsfoss.com/chromebook-framework/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
A Modular Chromebook Launched by Framework and Google
======
The first modular Chromebook ever? Built by Framework in collaboration with Google. Check this out.
![A Modular Chromebook Launched by Framework and Google][1]
[Framework][2] has launched a Chromebook in collaboration with Google; the main focus of their products has always been to provide repairable and modular laptops.
With the launch of this laptop, they have implemented the same formula as their previous laptops, but with a touch of Google in the form of ChromeOS.
Let's see what they have on offer.
### Framework Laptop Chromebook Edition
![framework laptop chromebook edition][3]
The laptop runs ChromeOS and is a user-serviceable laptop with a very high degree of modularity.
It is based on the existing '[Framework Laptop][4],' with a milled aluminum chassis, that can comfortably house all the parts and keeps the weight in check at 1.3 kg.
Users can choose from a host of different options, such as switching out memory and storage or the ability to choose which ports they want and where they want those.
![framework laptop chromebook edition repairability][5]
You can choose from a variety of RAM options ranging from 8 GB to 64 GB, in terms of storage, users can install up to a 1 TB NVMe SSD and an additional SSD of either 250 GB or 1 TB capacity. The default configuration comes with 256 GB of storage.
Being a modular laptop, you can choose your ports, like USB-C, USB-A, HDMI, or Ethernet, and have them on any side you want.
![port selection framework][6]
By providing these user-friendly modularities and using post-consumer recycled materials, Framework offers a very sustainable product compared to its competitors.
![framework laptop chromebook edition pcr materials][7]
Regarding privacy, the Chromebook has two hardware privacy switches that cut power from the camera and the microphones to disable any access.
![framework laptop chromebook edition hardware privacy switches][8]
#### Specifications
The Framework Laptop Chromebook Edition is powered by a **12-core Intel i5-1240P**, which can turbo up to 4.4 GHz; it also features Intel's Iris Xe graphics for running graphical workloads.
Other notable highlights include:
* 13.5-inch display (2256x1504) with 100% sRGB support and a 3:2 aspect ratio.
* 55Wh battery.
* Set of 80dB Stereo 2W Speakers.
* Backlight keyboard with 1.5 mm key travel.
* Support for WiFi 6E.
* 1080p 60FPS webcam.
#### Availability & Pricing
The laptop is up for pre-order starting at **$999** on their [official website][9]; it is currently limited to buyers from the US and Canada only.
[Framework Chromebook][10]
They are expecting shipments to begin in early December and are offering a fully-refundable **$100 deposit to pre-book** the laptop.
Framework seems to have taken the right step in attracting users to its product by offering a specific ChromeOS version of its existing laptop, especially after Google has seemingly stopped any further development on their ChromeOS laptops, the Pixelbook series.
💬 *What do you think? Can this be a viable alternative compared to the other Chromebooks in the market?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/chromebook-framework/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/sourav/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/framework-chromebook-laptop.jpg
[2]: https://frame.work/
[3]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition.png
[4]: https://frame.work/products/laptop-12-gen-intel
[5]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_repairability.png
[6]: https://news.itsfoss.com/content/images/2022/09/expansion-cards.jpg
[7]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_pcr_materials.png
[8]: https://news.itsfoss.com/content/images/2022/09/framework_laptop_chromebook_edition_privacy.png
[9]: https://frame.work/products/laptop-chromebook-12-gen-intel
[10]: https://frame.work/products/laptop-chromebook-12-gen-intel

View File

@ -0,0 +1,103 @@
[#]: subject: "Audacity 3.2 Released With VST3 Plugins and Apple Silicon Support"
[#]: via: "https://news.itsfoss.com/audacity-3-2-release/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Audacity 3.2 Released With VST3 Plugins and Apple Silicon Support
======
Audacity's new update brings in some important features like VST3 plugins support, and a new effects button.
![Audacity 3.2 Released With VST3 Plugins and Apple Silicon Support][1]
Audacity 3.2 is here, a point update to one of the most popular free and open-source audio editing/recording tools.
This release comes in after more than a year of the previous major release, [Audacity 3.0][2].
It is still one of the best audio editors for Linux available right now, even after its [controversy last year][3].
This release has a lot of new additions, such as support for **VST3 plugins, support for Apple Silicon, FFMPEG 5.0**, and more.
Let's take a quick look at what's new with Audacity.
### Audacity 3.2: What's New?
It is a point update that brings in significant changes and additions.
Some of the key highlights include:
* Support for VST3 plugins.
* Apple Silicon support.
* FFMPEG 5.0.
* Realtime capability for VST3, LV2, Audio Units, and LADSPA.
* Dedicated Button for Realtime Effects.
* Removal of JACK requirements for Linux systems.
* Various tweaks to the user interface.
#### Suggested Read 📖
[Best Audio Editors For Linux - Its FOSS][4]
#### New Effects Button
![audacity 3.2 effects button][6]
A dedicated real-time effects button has been added to the interface of Audacity to make it simple for users to download and apply effects on the fly.
You can learn more about this feature by heading to the [official wiki][7].
#### VST3 Plugins Support
Audacity 3.2 also brings in support for VST3 plugins, this enables users to take advantage of the advanced audio handling features of VST3, which include efficient usage of CPU, better handling of MIDI, support for MIDI I/O, and more.
#### Upload Audio To The Cloud
![audacity 3.2 share audio button][8]
Another exciting feature that has been added to Audacity is the option to share audio directly from the application to Audacity's new cloud audio platform [audio.com][9].
#### FFMPEG 5.0
Audacity now also supports FFMPEG 5.0; this ensures that users can take advantage of an up-to-date open-source suite of audio/video libraries.
#### Apple Silicon Support
This release also brings in macOS support for Apple Silicon based on the arm64 architecture.
### Download Audacity 3.2
You can download the latest Audacity release through its [official website][10], the [GitHub Releases section][11], [Flathub][12], or [Snap][13].
[Audacity 3.2 Download][14]
💬 *Will you be trying out Audacity 3.2? I think VST3 Plugins support should be a game changer, thoughts? Share it in the comments section below!*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/audacity-3-2-release/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/sourav/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/audacity-3-2-release.jpg
[2]: https://news.itsfoss.com/audacity-3-0-release/
[3]: https://news.itsfoss.com/audacity-fiasco-fork/
[4]: https://itsfoss.com/best-audio-editors-linux/
[6]: https://news.itsfoss.com/content/images/2022/09/Audacity_3.2_effects_button.gif
[7]: https://support.audacityteam.org/audio-editing/using-realtime-effects
[8]: https://news.itsfoss.com/content/images/2022/09/Audacity_3.2_share_audio_button.png
[9]: https://audio.com/
[10]: https://www.audacityteam.org/download/
[11]: https://github.com/audacity/audacity/releases
[12]: https://flathub.org/apps/details/org.audacityteam.Audacity
[13]: https://snapcraft.io/audacity
[14]: https://www.audacityteam.org/download/

View File

@ -0,0 +1,36 @@
[#]: subject: "Kubernetes To Soon Support Confidential Computing"
[#]: via: "https://www.opensourceforu.com/2022/09/kubernetes-to-soon-support-confidential-computing/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Kubernetes To Soon Support Confidential Computing
======
*Constellation is the first kubernetes to be always-encrypted (K8S). This refers to a K8S in which all of your workloads and control plane are completely shielded and you can remotely confirm this using cryptographic certificates.*
Using secret computing and confidential VMs, the Constellation Kubernetes engine isolates Kubernetes clusters from the rest of the cloud architecture. As a result, data is always encrypted, both at rest and in memory, and a confidential context is created. Since it adds security and secrecy to data and workflows operating on the public cloud, confidential computing, according to Edgeless Systems, the company that created Constellation, is the future of cloud computing.
Kubernetes nodes run inside private virtual machines using Constellation. According to Edgeless Systems, confidential machines are an evolution of secure enclaves that extend the three principles of confidential computing—runtime encryption, isolation, and remote attestation—across the entire virtual system. The underlying hardwares particular support for private computing, such as AMD Secure Encrypted Virtualization (AEM), SEV-Secure Nested Paging (SEV-SNP), and Intel Trust Domain Extensions, is used by confidential VMs (TDX). Additionally, ARM revealed its new V9 architecture, known as Realms, last year. This design includes private VM features.
Constellation attempts to offer attestation, or verification via cryptographic certificates, in addition to “always-on” encryption, at the cluster level. Fedora CoreOS, which is built on an immutable file system and is geared for containers, is used by Confidential VMS in Constellation. Constellation also makes use of Sigstore to protect the DevOps chain of trust.
Performance may be a worry while using secret computing. Yes, encryption affects performance, but a joint benchmark by AMD and Microsoft found that this only results in a tiny performance hit of between 2% and 8%. Edgeless Systems claims that Constellation will perform similarly for heavy workloads.
Given that Constellation is CNCF-certified and interoperable with all major clouds, including GCP and Azure, this should guarantee its interoperability with other Kubernetes workloads and tools.
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/kubernetes-to-soon-support-confidential-computing/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.opensourceforu.com/author/laveesh-kocher/
[b]: https://github.com/lkxed

View File

@ -0,0 +1,36 @@
[#]: subject: "Lawmakers Proposes A New Bill To Protect Open Source Software"
[#]: via: "https://www.opensourceforu.com/2022/09/lawmakers-proposes-a-new-bill-to-protect-open-source-software/"
[#]: author: "Laveesh Kocher https://www.opensourceforu.com/author/laveesh-kocher/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Lawmakers Proposes A New Bill To Protect Open Source Software
======
*The Office of Management and Budget would be tasked by the Securing Open Source Software Act with providing instructions on how to use open source software safely.*
A measure that would require the Cybersecurity and Infrastructure Security Agency to create a risk framework in order to improve the security of open source software was introduced by lawmakers on Thursday. To reduce risks in systems dependent on open source code, agencies would utilise the framework, and CISA would decide if critical infrastructure owners and operators might also use it voluntarily.
The majority of systems rely on open source software that is freely available and is maintained by communities in order to build websites and applications; one of the biggest users is the federal government. The legislation was introduced by Sens. Rob Portman, R-Ohio, and Gary Peters, D-Mich., the chairman and ranking member of the Homeland Security Committee, respectively, following a hearing in response to the discovery of a serious, widespread Log4j vulnerability in open source code affecting federal systems and millions of others globally.
“This incident presented a serious threat to federal systems and critical infrastructure companies — including banks, hospitals and utilities — that Americans rely on each and every day for essential services,” Peters said in the announcement. “This commonsense, bipartisan legislation will help secure open source software and further fortify our cybersecurity defenses against cybercriminals and foreign adversaries who launch incessant attacks on networks across the nation.”
The Securing Open Source Software Act would also require the Office of Management and Budget to issue guidance for agencies on securing open source software, create a software security subcommittee of the CISA Cybersecurity Advisory Committee, and require CISA to hire open source software experts to assist with cyber incidents.
Prior to that, Peters and Portmans proposals were passed unanimously by the Senate and signed into law, strengthening state and local governments cyber defences and forcing owners and operators of critical infrastructure to report significant cyberattacks and ransomware payments to CISA.
--------------------------------------------------------------------------------
via: https://www.opensourceforu.com/2022/09/lawmakers-proposes-a-new-bill-to-protect-open-source-software/
作者:[Laveesh Kocher][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.opensourceforu.com/author/laveesh-kocher/
[b]: https://github.com/lkxed

View File

@ -0,0 +1,114 @@
[#]: subject: "Systemd is Now Available in WSL"
[#]: via: "https://news.itsfoss.com/systemd-wsl/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Systemd is Now Available in WSL
======
Microsoft's WSL now supports systemd making the experience better for users.
Learn more about it here.
![Systemd is Now Available in WSL][1]
WSL (Windows Subsystem for Linux) has finally received support for Systemd, this comes in a few months after its creator joined Microsoft.
[More Linux Developers Joining Microsoft, Systemd Creator Adds to the List][2]
And this has been made possible with a partnership between Microsoft and Canonical.
**In case you're curious**:
It acts as an init system that starts up and keeps user space services in running order.
Let's see how it has been introduced to WSL.
### Systemd Enhancing the WSL Experience
![WSL: Partnering with Canonical to support systemd][4]
The main focus of introducing systemd to WSL is to improve the Linux workflow on Windows machines.
The likes of Debian, Ubuntu, Fedora, and more run systemd by default. So, this integration will now make it even more straightforward for users of those distros to conveniently do more with WSL.
Even though we have systemd-free distros available, it is not meant for everyone. So, the support for systemd on WSL makes sense.
A lot of critical Linux applications also rely on systemd to be functional. For instance, '**snap**', '**microk8s**' and '**LXD**' are dependent on it.
The presence of systemd also makes it possible to use more tools to test and run from within Windows, resulting in a better WSL experience.
#### Suggested Read 📖
[14 Best Systemd-Free Linux Distributions][5]
### Here's How It Was Made Possible
The team behind WSL had to make changes to the architecture, they made the WSL init process start within the Linux distro as a child process under systemd.
Doing so enabled the WSL init process to provide the necessary foundation for communication between the Windows and Linux sub-systems, as explained in their [official announcement][7].
They also did additional modifications to ensure a clean system shutdown by preventing systemd from keeping the WSL instance active.
You can also visit their official [documentation][8] website for more information.
### Get Started With Systemd on WSL
> Existing WSL users will have to opt in to enable systemd on their systems, this step was taken to avoid any booting issues that might occur due to the introduction of systemd.
First and foremost, you have to ensure that your system is running WSL: **Version 0.67.6** or above.
You can check your WSL version by running the following command
```
wsl --version
```
If you are running the older version, you can update it via the **Microsoft Store** or by running this command.
```
wsl --update
```
Furthermore, if you are not a part of Windows Insiders, you can go to the [WSL release page][9] and download it to test it out.
For systemd to work on your system, you will have to edit the '[wsl.conf][10]' file to ensure that systemd starts up on boot.
Add the following lines to make WSL run systemd on boot.
```
[boot]
systemd=true
```
Finally, restart your WSL instance to see the changes.
Microsoft has taken a big step forward in the development of WSL with the implementation of systemd, this should result in more users being attracted to WSL.
*💬 Excited to run WSL with systemd? Or do you prefer systemd-free distros?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/systemd-wsl/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/sourav/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/systemd-now-available-on-wsl.png
[2]: https://news.itsfoss.com/systemd-creator-microsoft/
[3]: https://news.itsfoss.com/systemd-creator-microsoft/
[4]: https://youtu.be/Ja3qikzd-as
[5]: https://itsfoss.com/systemd-free-distros/
[6]: https://itsfoss.com/systemd-free-distros/
[7]: https://devblogs.microsoft.com/commandline/systemd-support-is-now-available-in-wsl/
[8]: https://learn.microsoft.com/en-in/windows/wsl/
[9]: https://github.com/microsoft/WSL/releases
[10]: https://learn.microsoft.com/en-in/windows/wsl/wsl-config#wslconf

View File

@ -0,0 +1,176 @@
[#]: subject: "4 Simple Steps to Clean Your Ubuntu System"
[#]: via: "https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
4 Simple Steps to Clean Your Ubuntu System
======
You can try these four simple steps right now to clean up your Ubuntu installation.
This quick tutorial would help you to clean up old Ubuntu installations and free up some disk space.
If you have been running an Ubuntu system for more than a year, you might feel that your system is slow and lagging despite your being up-to-date.
Over time, there are many apps which you might have installed just to experiment or after reading a great review, but you did not remove them. These are some ways to help you find out some hidden disk spaces that you can free up.
### Steps to Clean Your Ubuntu System
#### 1. Clean Apt Cache
An “apt cache” is where Ubuntu keeps all the files you have downloaded just in case you need to refer them later. Most users dont bother to clean this up, which may take up hundreds of MBs.
Open a terminal and run the below command to see how much your cache size is:
```
du -sh /var/cache/apt/archives
```
![][1]
You would be surprised to see the size if yours is an old installation. Run below from the terminal to clean it up.
```
sudo apt-get clean
```
#### 2. Remove unused Kernels
If you have been running an Ubuntu system/installation for more than a year, chances are high that you have multiple Kernels installed. If your hardware is the latest and compatible with Linux without much configuration, you may go ahead and remove old Kernels keeping the latest one.
Run below from the terminal to clean those up:
```
sudo apt-get autoremove --purge
```
![Autoremove Purge][2]
#### 3. Remove Old Apps, Packages
If you are a person who likes to experiment with Linux Apps, you surely have some unused apps in your system that you definitely do not need anymore.
Now, you may have forgotten about the app names you installed. You can run below from the terminal to find out what you have recently installed:
This will give you a list of apps, and packages you have installed via the `apt` command:
```
history | grep "apt-get install"
```
![List of apt installed app History][3]
This will give you a list of apps which you have installed in the recent past:
```
grep " install " /var/log/dpkg.log.1
```
```
zgrep " install " /var/log/dpkg.log.2.gz
```
You can run the below commands to remove the apps and packages:
```
sudo apt remove app1 package1
```
#### 4. Use a system cleaner app
There is plenty of free and native system [cleaner app][4] available; however, I feel [BleachBit][5] is the best and oldest app for this purpose.
Install BleachBit using the below command or install using Software.
```
sudo apt install bleachbit
```
Once installed, open BleachBit and run a scan. It would show you all the cache files your browser is taking up, temp files, trash, etc., and you can clean it up with a click of a button.
![][6]
### Bonus Tips
#### Flatpak package cleanup
Flatpak applications and runtime take significant disk space. Because by design, the Flatpak executable combines the runtime. Although the runtime can be shared between related apps, many unused leftover runtimes may consume your disk space.
The most straightforward way to remove some unused Flatpak is the below command. Run it via the terminal.
```
flatpak uninstall --unused
```
For more information and wants to read details about it, refer to [this article][7].
#### Clean Unused Snap items from Ubuntu
If you use Ubuntu, there is a high chance that you are using Snap packages. And over time, Snap accumulates irrelevant runtimes and files. You can use the following script to clean up some of the disabled snap runtimes.
Copy this entire script to a new file and name it clean_snap.sh:
Then give it executable permission using `chmod +x clean_snap.sh` command and run via `./clean_snap.sh`
```
#!/bin/bash
#Removes old revisions of snaps
#CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
LANG=en_US.UTF-8
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
```
For more insights into cleaning up the snap packages, refer to [this article][8].
#### Bonus Tip
You can also manually search for large files using the following command.
```
find /home -type f -exec du -h {} + | sort -hr | head -20
```
For example, the following command searches and gives you the first 20 large files in the root directory “/”. Now you can review the large files and manually remove them using a file manager. Be careful while deleting any file. Try not to touch anything other than in your `/home` directory.
![Find Large files in Linux][9]
### Wrapping Up
So, thats it. If you followed the above steps, you definitely freed up some space in your Ubuntu system, and your system can breathe now. You can follow these measures to clean up the Ubuntu system. Do not forget to keep your system up-to-date with the latest packages.
🗨️ Comment below if you think you can free up some disk space and make your Ubuntu faster using these tips. What command do you normally use to Clean Your Ubuntu System?
Let me know.
[Next: GNOME 43: Top New Features and Release Wiki][10]
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.debugpoint.com/wp-content/uploads/2018/07/apt-cache.png
[2]: https://www.debugpoint.com/wp-content/uploads/2018/07/Autoremove-Purge-1024x218.png
[3]: https://www.debugpoint.com/wp-content/uploads/2018/07/List-of-apt-installed-app-History.png
[4]: https://www.debugpoint.com/2017/02/stacer-is-a-system-monitoring-and-clean-up-utility-for-ubuntu/
[5]: https://www.bleachbit.org
[6]: https://www.debugpoint.com/wp-content/uploads/2018/07/BleachBit-Clean-your-system.png
[7]: https://www.debugpoint.com/clean-up-flatpak/
[8]: https://www.debugpoint.com/clean-up-snap/
[9]: https://www.debugpoint.com/wp-content/uploads/2018/07/Find-Large-files-in-Linux-1024x612.png
[10]: https://www.debugpoint.com/gnome-43/

View File

@ -0,0 +1,169 @@
[#]: subject: "5 Git configurations I make on Linux"
[#]: via: "https://opensource.com/article/22/9/git-configuration-linux"
[#]: author: "Alan Formy-Duval https://opensource.com/users/alanfdoss"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
5 Git configurations I make on Linux
======
This is a simple guide to quickly get started working with Git and a few of its many configuration options.
![Linux keys on the keyboard for a desktop computer][1]
Setting up Git on Linux is simple, but here are the five things I do to get the perfect configuration:
1. [Create global configuration][2]
2. [Set default name][3]
3. [Set default email address][4]
4. [Set default branch name][5]
5. [Set default editor][6]
I manage my code, shell scripts, and documentation versioning using Git. This means that for each new project I start, the first step is to create a directory for its content and make it into a Git repository:
```
$ mkdir newproject
$ cd newproject
$ git init
```
There are certain general settings that I always want. Not many, but enough that I don't want to have to repeat the configuration each time. I like to take advantage of the *global* configuration capability of Git.
Git offers the `git config` command for manual configuration but this is a lot of work with certain caveats. For example, a common item to set is your email address. You can set it by running `git config user.email` followed by your email address. However, this will only take effect if you are in an existing Git directory:
```
$ git config user.email alan@opensource.com
fatal: not in a git directory
```
Plus, when this command is run within a Git repository, it only configures that specific one. The process must be repeated for new repositories. I can avoid this repetition by setting it globally. The *--global* option will instruct Git to write the email address to the global configuration file; `~/.gitconfig`, even creating it if necessary:
> Remember, the tilde (~) character represents your home directory. In my case that is /home/alan.
```
$ git config --global user.email alan@opensource.com
$ cat ~/.gitconfig
[user]
        email = alan@opensource.com
```
The downside here is if you have a large list of preferred settings, you will have a lot of commands to enter. This is time-consuming and prone to human error. Git provides an even more efficient and convenient way to directly edit your global configuration file—that is the first item on my list!
### 1. Create global configuration
If you have just started using Git, you may not have this file at all. Not to worry, let's skip the searching and get started. Just use the `--edit` option:
```
$ git config --global --edit
```
If no file is found, Git will generate one with the following content and open it in your shell environment's default editor:
```
# This is Git's per-user configuration file.
[user]
# Please adapt and uncomment the following lines:
#       name = Alan
#       email = alan@hopper
~
~
~
"~/.gitconfig" 5L, 155B                                     1,1           All
```
Now that we have opened the editor and Git has created the global configuration file behind the scenes, we can continue with the rest of the settings.
### 2. Set default name
Name is the first directive in the file, so let's start with that. The command line to set mine is `git config --global user.name "Alan Formy-Duval"`. Instead of running this command, just edit the *name* directive in the configuration file:
```
name = Alan Formy-Duval
```
### 3. Set default email address
The email address is the second directive, so let's update it. By default, Git uses your system-provided name and email address. If this is incorrect or you prefer something different, you can specify it in the configuration file. In fact, if you have not configured them, Git will let you know with a friendly message the first time you commit:
```
Committer: Alan <alan@hopper>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate....
```
The command line to set mine is`git config --global user.email`**["alan@opensource.com"][7]**. Instead, edit the *email* directive in the configuration file and provide your preferred address:
```
email = alan@opensource.com
```
The last two settings that I like to set are the default branch name and the default editor. These directives will need to be added while you are still in the editor.
### 4. Set default branch name
There is currently a trend to move away from the usage of the word *master* as the default branch name. As a matter of fact, Git will highlight this trend with a friendly message upon initialization of a new repository:
```
$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint:   git config --global init.defaultBranch <name>
```
This directive, named *defaultBranch*, needs to be located in a new section named *init*. It is now generally accepted that many coders use the word *main* for their default branch. This is what I like to use. Add this section followed by the directive to the configuration:
```
[init]
            defaultBranch = main
```
### 5. Set default editor
The fifth setting that I like to set is the default editor. This refers to the editor that Git will present for typing your commit message each time you commit changes to your repository. Everyone has a preference whether it is [nano][8], [emacs][9], [vi][10], or something else. I'm happy with vi. So, to set your editor, add a *core* section that includes the *editor* directive:
```
[core]
            editor = vi
```
That's the last one. Exit the editor. Git saves the global configuration file in your home directory. If you run the editing command again, you will see all of the content. Notice that the configuration file is a plain text file, so it can also be viewed using text tools such as the [cat command][11]. This is how mine appears:
```
$ cat ~/.gitconfig
[user]
        email = alan@opensource.com
        name = Alan Formy-Duval
[core]
        editor = vi
[init]
        defaultBranch = main
```
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/git-configuration-linux
作者:[Alan Formy-Duval][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/alanfdoss
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/linux_keyboard_desktop.png
[2]: https://opensource.com/article/22/9/git-configuration-linux#create-global-configuration
[3]: https://opensource.com/article/22/9/git-configuration-linux#set-default-name
[4]: https://opensource.com/article/22/9/git-configuration-linux#set-default-email-address
[5]: https://opensource.com/article/22/9/git-configuration-linux#set-default-branch-name
[6]: https://opensource.com/article/22/9/git-configuration-linux#set-default-editor
[7]: https://opensource.com/mailto:alan@opensource.com
[8]: https://opensource.com/article/20/12/gnu-nano
[9]: https://opensource.com/resources/what-emacs
[10]: https://opensource.com/article/19/3/getting-started-vim
[11]: https://opensource.com/article/19/2/getting-started-cat-command

View File

@ -0,0 +1,187 @@
[#]: subject: "Ansible Register Variable"
[#]: via: "https://ostechnix.com/ansible-register/"
[#]: author: "Karthick https://ostechnix.com/author/karthick/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Ansible Register Variable
======
This guide explains **what is Ansible register** and how to **capture a task output in Ansible using the register** variables in Linux.
#### Contents
1. Introduction To Ansible Register Variable
2. Register The Output
3. Accessing Individual Attributes
4. Decision Making Using Control Statement
5. Writing Register Output To A File
6. Iterate And Register
7. Conclusion
### Introduction To Ansible Register Variable
**Register** is used to capture the output of any task and store it in a variable. This variable can later be used along with print, loops, conditionals etc.
When you run a task in **[Ansible][1]**, the entire output of the task will not be printed to stdout(Terminal). If you wish to see the output of the task, then you have to store it in the register variable and then later print it.
In ansible, **[debug module][2]** is used to print the output to the terminal. You can also create a decision-based task by combining the register attributes with the conditional statement(when).
In the upcoming sections, you will learn how to register the output, understand the structure of the register output, print the output to stdout, Write output to a file and use register with when statement.
### Register The Output
Let's see how to use the register module through a use case. On my Ubuntu managed node, I need to check whether the virtualenv package is installed. If the package is not installed I will install it.
Create a new **[playbook][3]** and add the following play definition. Modify the play definition parameters as per your requirements.
```
- name: Test playbook - ansible register
hosts: ubuntu.anslab.com
gather_facts: False
become: True
```
I have the following task which will use the shell module to run the `"which virtualenv"` command. The output of this task is captured in the register variable named **"virtualenv_output"**. You can name this variable as per your wish.
In the second task, the register variable "`virtualenv_output` " will be printed using the debug module.
```
tasks:
- name: First Task - Using shell module to check if virtualenv is present or not
ansible.builtin.shell:
cmd: which virtualenv
register: virtualenv_output
ignore_errors: True
- name: Second Task - Print the full output
ansible.builtin.debug:
var: virtualenv_output
```
**Heads Up:** Using the **apt** module, you can simplify this task. But for demonstration purposes, I am using the **shell** module.
Check if there is any syntax error before submitting the playbook by running the following command.
```
$ ansible-playbook --syntax-check
```
Run the following command to submit the playbook.
```
$ ansible-playbook
```
In the below output, you can see the output of the first task. The output will be in `JSON` format. Depending upon the module and the task, the output will vary.
![Register The Output][4]
A few important attributes in the output will help you to write further logic in the playbook.
1. Failed - Return "True" if the task is failed and "False" if successfully executed.
2. Rc - The return code of the command submitted through the shell module.
3. Stderr, `Stderr`_line - Error messages.
4. Stdout, `Stdout`_lines - Stdout messages.
### Accessing Individual Attributes
Take a look at the below task. Instead of printing the entire output of the register variable, I am just trying to print the return code.
```
- name: Just checking the exit code
ansible.builtin.debug:
msg: "{{ virtualenv_output.rc }}"
```
In the below output, you can see only the return code is printed instead of the full output.
![Print Only Return Code][5]
Alternative to the **dot** notation, you can also access the attributes using the **python dictionary** notation.
```
- name: Just checking the exit code - Python dict way
ansible.builtin.debug:
msg: "{{ virtualenv_output['rc'] }}"
```
### Decision Making Using Control Statement
Lets build further logic based on the return code from the first task. If the return code is 1, then the task is said to be failed meaning there is no virtualenv package in my managed node.
Take a look at the below task where I am using the apt module to install the **"python3-virtualenv"** package. This task will only run when if the return code of the register variable is not equal to zero. Again I am registering this task output to the variable called **"virtualevn_install_output"**.
```
- name: Install the package based on the return code
ansible.builtin.apt:
pkg: python3-virtualenv
state: present
when: virtualenv_output.rc != 0
register: virtualenv_install_output
```
### Writing Register Output To A File
Instead of using the debug module to print the output to stdout(Terminal), you can write the output to a file. There are many modules to do this task but here I am using the **copy** module and storing the content of the register variable in the file `virtualenv_output`.
```
- name: Reroute the output to a file
ansible.builtin.copy:
content: "{{virtualenv_install_output}}"
dest: "/home/vagrant/virtualenv_output"
```
![Writing Register Output To A File][6]
### Iterate And Register
Take a look at the below task where I am using the **shell** module to remove some dummy files I manually created. Using **loop**, I am iterating through the list of files and passing it as the argument to the shell module.
The result of each iteration will be appended to the register variable **removed_output**.
```
- name: Using loops
ansible.builtin.shell:
cmd: rm -f "{{item}}"
register: removed_output
loop:
- test_file.txt
- abc.txt
- name: Print the removed output
ansible.builtin.debug:
msg:
- Return code for {{removed_output.results.0.item}} is {{removed_output.results.0.rc}}
- Return code for {{removed_output.results.1.item}} is {{removed_output.results.1.rc}}
```
![Iterate And Register][7]
### Conclusion
In this article, we have discussed what is ansible register variable and how to register the task output. We also discussed how to use the attributes from the register variable along with a conditional statement to create the condition-based task. Finally, we have seen how the output is appended to the register variable when you run a task iteratively.
--------------------------------------------------------------------------------
via: https://ostechnix.com/ansible-register/
作者:[Karthick][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://ostechnix.com/author/karthick/
[b]: https://github.com/lkxed
[1]: https://ostechnix.com/introduction-to-ansible-automation-platform/
[2]: https://ostechnix.com/ansible-debug-module/
[3]: https://ostechnix.com/ansible-playbooks/
[4]: https://ostechnix.com/wp-content/uploads/2022/09/Register-The-Output.png
[5]: https://ostechnix.com/wp-content/uploads/2022/09/Print-Only-Return-Code.png
[6]: https://ostechnix.com/wp-content/uploads/2022/09/Writing-Register-Output-To-A-File.png
[7]: https://ostechnix.com/wp-content/uploads/2022/09/Iterate-And-Register.png

View File

@ -0,0 +1,125 @@
[#]: subject: "EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks"
[#]: via: "https://news.itsfoss.com/eurolinux-desktop/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks
======
EuroLinux Desktop is an interesting RHEL-based distribution that offers stability, security, and a nice user interface. Let's take a look.
![EuroLinux Desktop is an RHEL-based Distro With Enterprise Perks][1]
EuroLinux Desktop is a Linux distro that aims to provide a well-rounded package for Windows and macOS users.
You might be aware that EuroLinux is a Polish company focused on providing server-based distro since 2013 meant to cater to enterprises.
But looks like they are introducing a **Red Hat Enterprise Linux 9-based** desktop-focused distribution. 🤯
As per their [announcement][2]:
> EuroLinux Desktop is a modern operating system that combines the aesthetic and functionality of Windows and macOS with the reliability and security of Enterprise Linux distributions.
Sounds exciting! So, what do we know about it?
### What's Special?
EuroLinux Desktop is based on RHEL 9, which enables it to serve you with server-level stability and security alongside a decent desktop experience.
It worked fine on as a virtual machine setup. You can test it on your spare computer before trying it out as a daily driver.
This enables it to provide seamless compatibility with other [RHEL-based server distros][3] such as CentOS, Rocky Linux, AlmaLinux, and more.
#### Targets Windows And macOS users
![eurolinux desktop screenshot][4]
EuroLinux Desktop aims to lure in Windows and macOS users with a familiar user interface layout with its implementation of a translucent dock at the bottom of the screen. It also provides users with various customization options to play with.
Multitasking is very simple, thanks to the thoughtful implementation of the GNOME window manager.
![eurolinux desktop multitasking window][5]
All of this is made possible by using the [GNOME desktop environment][6] as a solid foundation to build upon and a few tweaks by their team.
#### Extensive Media Codec Support
![eurolinux desktop media player][7]
EuroLinux Desktop also supports a vast number of media file formats that enables you to play the most common audio and video files, such as .mp3, .mp4, .avi, .flac, and more.
You can use the included Totem video player to play any media files.
#### LibreOffice Suite
![eurolinux desktop libreoffice][8]
The complete LibreOffice suite is included with the distro to give users a very useful set of tools to make your work a bit easier.
#### GNOME Software Center
![eurolinux_desktop_software_center][11]
Of course, it comes equipped with the GNOME Software Center, and Flathub repository enabled, which should let you install any application you want.
It also supports AppImages. So, you should be fine for the most part.
### Who Is It Aimed At?
Being an RHEL-based desktop OS, it may not be easy to recommend this distro to every user.
For example, users familiar with Ubuntu might struggle with executing terminal commands for troubleshooting on EuroLinux.
But on the other hand, it might appeal to users who are coming from a Windows or a macOS system and want to try Linux for the first time.
Sure, it may not be one of the best Linux distributions for beginners yet. But, it should be a refreshing option as more users get to try it.
[Best Linux Distributions That are Most Suitable for Beginners][12]
It also has a lot of things to offer for use in public administration and educational institutions, such as a **10-year software life cycle**, an update management system, technical support, and more.
EuroLinux Desktop also has something for gamers, it supports software like Steam, Lutris, Wine, and more.
### Get Started With EuroLinux Desktop
The overall package seems adequate as it can cater to both Linux users and Windows/macOS users.
You can download the ISO file for EuroLinux Desktop from the button below.
To know more about the release, visit the [official product webpage][14].
😲 *The ISO file size is massive (6.8 GB). You're in for an adventure!*
[Download EuroLinux Desktop][15]
💬 *Will you be trying out EuroLinux Desktop? Are you willing to switch from Windows or macOS to an RHEL-based desktop distro?*
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/eurolinux-desktop/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/sourav/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w1200/2022/09/eurolinux-desktop.png
[2]: https://en.euro-linux.com/blog/eurolinux-desktop/
[3]: https://itsfoss.com/rhel-based-server-distributions/
[4]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_home.jpg
[5]: https://news.itsfoss.com/content/images/2022/09/eurolinux_desktop_multitasking.png
[6]: https://www.gnome.org/
[7]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_media.jpg
[8]: https://news.itsfoss.com/content/images/2022/09/eurolinuxdesktop_libre.jpg
[11]: https://news.itsfoss.com/content/images/2022/09/eurolinux_desktop_software_center.png
[12]: https://itsfoss.com/best-linux-beginners/
[14]: https://en.euro-linux.com/eurolinux/desktop/
[15]: https://dn.euro-linux.com/ELD-9-x86_64-latest.iso
[16]: https://www.humblebundle.com/books/linux-no-starch-press-books?partner=itsfoss

View File

@ -0,0 +1,212 @@
[#]: subject: "GNOME 43: Top New Features and Release Wiki"
[#]: via: "https://www.debugpoint.com/gnome-43/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
GNOME 43: Top New Features and Release Wiki
======
An extensive feature analysis of the GNOME 43 desktop environment bringing impactful changes to your day-to-day needs and workflow.
![GNOME 43 Running via GNOME OS][1]
This article summarises all necessary information about GNOME 43, including features, release schedule and more. The GNOME 43 release is probably the most impactful release since the GNOME 40 in terms of the features and their impact on your workflow.
The feature includes updated and faster Shell performance, wrapping up GTK4 and libadwaita conversion, renovated Files and fantastic Web changes.
All these necessary changes were long overdue and will change your traditional workflow in the GNOME desktop to make you more productive.
### Schedule
GNOME 43 was [officially released][2] on September 21, 2022.
* GNOME 43 Beta: August 31, 2022 (Complete)
* GNOME 43 RC: September 4, 2022 (Complete)
* GNOME 43 final release: September 21, 2022
### GNOME 43: The Features
#### 1. Core Shell Changes
* Finally, the high-resolution scroll wheel support lands in GNOME thanks to recent work in Wayland. So, if you have a high-resolution display, scrolling with an advanced mouse (such as Logitech MX Master 3) should be a treat for you.
* In addition to the above, the direct scanout support in GNOME 43 will help with multi-monitor setup situations.
* The server-side decorations get essential colour support.
* Shell also implemented a feature where the notifications get away when the focus changes, and it doesnt wait for the timeout.
* Like every release, you experience better animation performance across the desktop, improved grid and overview navigation and critical updates, which gives you a seamless experience.
So, that are the key summaries of the core changes. Now, lets talk about the Quick settings.
#### 2. New Quick Settings Menu
The quick settings in the system tray are entirely changed. The quick settings items and menus now feature pill-shaped toggle buttons with vibrant colours to show what is happening in your system. The menu is also dynamic and makes way for cascading menu items. In addition, you can choose the audio devices in the quick settings.
Heres a quick demo, and for additional screenshots and write-up read our exclusive coverage: [GNOME 43 Quick settings][3].
![Quick Settings Demo in GNOME 43][4]
#### 3. Files
GNOME Files gets the most features in GNOME 43 release. The list of improvements in this application is enormous. The file manager is the most used app in any desktop environment. Hence the changes in Files are the most impactful across the user base.
For the first time, Files with GTK4 arrive (it was not ready during GNOME 42 release), and it will change your workflow for good.
I will try to explain most of them in a brief list. Otherwise, this will be a lengthy post. I will push out another separate article on the File features.
##### Adaptive sidebar
So the sidebar of Files which gives you access to navigations, favourites, network drives, etc. is not responsive. And it [autohides][5] itself when Files window size reaches a point. A familiar and handy feature if you work with many open windows and have smaller displays.
Another exciting feature is that when the sidebar is wholly hidden, an icon appears at the left top for you to make it visible.
![Files 43 with autohide sidebar][6]
##### Emblems
We had the emblems in GNOME long back, and they went away. So, Emblems make a comeback with GNOME 43 with small icons beside the files and directories. These icons imply the type, such as symbolic link, read-only, etc. Moreover, the icons change their colour based on your theme, and multiple emblems are also available for a single file.
![Emblems in GNOME 43][7]
##### Rubberband Selection
Next up is the much-awaited rubberband selection feature, which [finally arrived][8]. Now you can select the files and folders by drag-selection mechanism. One of the most requested features from the users.
![Rubberband Selection Feature][9]
##### GtkColumnView replacing GtkTreeView
When you mouse over the items in the column view, you see a focused row which is another critical feature of Files in GNOME 43. But the [tree view could not make it][10] and probably planned for the next iteration.
![GtkColumnView enables row focus][11]
##### Redesigned properties window with interactive permission and executable detection
The properties window is [wholly changed][12], thanks to the adaptation of GTK4. The window is now much cleaner and well-designed, showing essential items only when required.
Furthermore, the properties dialog can determine the file type and provide suitable options. For example, if you view the properties of a shell script or text file, you will get an option to make it executable. In contrast, the properties of an image file do not give you an executable option.
![Intelligent properties window][13]
**Tabbed View improvements**
The tabbed view of Files gets some [additional updates][14]. The most noteworthy ones are the proper focus when dragging a file to tag, the creation of tabs after the current focussed tab and so on.
**Redesigned Right-click menu**
The primary right-click context menu on files or folders is restricted. Firstly, the OPEN option is clubbed under a submenu. Secondly, the copy/paste/cut options are consolidated in a group. And finally, the Trash, Rename and Compress options are grouped.
In addition, the Open in terminal option is available for all files and folders. However, create a new file option is still missing (which I expected in this release).
![Various Context Menu][15]
##### Other changes in Files
Other prominent changes in Files are the Trash icon, and other locations (network drive, disk) gets the properties option in right-click context menu.
Finally, the Files preference window was revamped to show you more essential items. The redesign makes it easy for the average user to find the proper Files settings.
#### 4. Web
Lets spare some moments to talk about our beloved Epiphany, a.k.a. GNOME Web, the WebKit-based native web browser for the GNOME desktop.
The updates were long overdue and finally started landing from this release onwards.
First and foremost, GNOME Web now supports WebExtension API. It lets you download and install the Firefox and Google Chrome extensions inside the Web. Heres how you can do it.
* Download any extension file (xpi or crx file) from Firefox Add-on or Google Chrome extension page.
* Click on the hamburger menu and select Extensions.
* Finally, click add to install them.
WebExtension support is a crucial step for making the Web usable soon.
Secondly, the Firefox Sync option is available, which lets you log in to the Web via a Firefox account to sync bookmarks and other browser items.
![Login to the Web using a Firefox account][16]
Other noteworthy changes in the Web include support for “view source”, GTK4 porting work and an updated PDF library (PDF.js 2.13.216).
One of the critical components which are still missing in Web is the [WebRTC support via GStreamer][17]. Once that feature arrives, it will be a decent browser for daily usage.
Hopefully, one day, we all have a decent alternative browser which is non-Firefox or non-Chromium.
#### 5. Settings
In the settings window, mostly improvements and visual fine-tuning arrive in this release. The important change includes the “Dog Bark” sound in Alert is gone now after a long and [interesting conversation][18].
In addition, a new device security panel is introduced, and the TImezone map in the Date & Time panel is revamped.
The settings sidebar is also responsive and gives you autohide features like the Files shown above.
#### 6. Software
Two crucial changes are coming to GNOME Software. These changes enable you to view more information on a single page for any application.
Firstly, a new section, “Other apps by Author”, gives you a list of apps by the author of the current app. This helps in discovery and tells you how popular the creator is.
Secondly, GNOME 43 Software now provides you with a detailed list of permission required by the Flatpak apps in a separate window. Hence, you can verify the app before you install them.
Another crucial visual change is a new “Available for Fedora/any distro” section on the application main overview page, which requires configuration.
![Other APPS by developer section in Software][19]
#### 7. Climate Change Wallpaper
I am not sure whether this feature landed. Because I could not find it, but I heard about it. So, I though I should mention it here.
The feature is that GNOME 43 brings a background wallpaper showing how the global temperature has risen over the decades from [ocean stripes][20]. The wallpaper contains vertical colour-coded bars denoting low and high temperatures. I think its a nice touch and an effort to raise awareness. Heres the [commit][21] in GitLab.
In addition, a couple of new [“days and nights”][22] fresh wallpapers are available.
Thats all about the essential changes I could find and summarise here. Besides those, a vast list of bug fixes, performance improvements and code clean up lands in GNOME 43.
Fedora 37 will feature GNOME 43 when released, and some parts of it should be in Ubuntu 22.10, due in October.
### Wrapping Up
GNOME 43 is an iconic release because it changes several basic designs and impacts millions of users workflow. The quick settings transformation is fantastic and long overdue. In addition, the necessary changes in Files, Web and Settings will improve your productivity.
Furthermore, the new features arrive while keeping the design guideline and aesthetics in mind. A good user interface requires a well-thought-out process, and the devs did a perfect job in this release.
So, thats pretty much it. Thats GNOME 43 for you. Let me know if you plan to get this update and want to hop from KDE to GNOME!
🗨️ Do let me know your favourite feature in the comment section below.
Cheers.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/gnome-43/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.debugpoint.com/wp-content/uploads/2022/08/GNOME-43-Running-via-GNOME-OS.jpg
[2]: https://debugpointnews.com/gnome-43-release/
[3]: https://www.debugpoint.com/gnome-43-quick-settings/
[4]: https://www.debugpoint.com/?attachment_id=10682
[5]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/877
[6]: https://www.debugpoint.com/?attachment_id=10684
[7]: https://www.debugpoint.com/?attachment_id=10685
[8]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/817
[9]: https://www.debugpoint.com/wp-content/uploads/2022/08/Rubberband-Selection-Feature.gif
[10]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/817
[11]: https://www.debugpoint.com/wp-content/uploads/2022/08/GtkColumnView-enables-row-focus.gif
[12]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/745
[13]: https://www.debugpoint.com/wp-content/uploads/2022/08/Intelligent-properties-window.jpg
[14]: https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/595
[15]: https://www.debugpoint.com/?attachment_id=10689
[16]: https://www.debugpoint.com/wp-content/uploads/2022/08/Login-to-Web-using-Firefox-account.jpg
[17]: https://twitter.com/_philn_/status/1490391956970684422
[18]: https://discourse.gnome.org/t/dog-barking-error-message-sound/9529/2
[19]: https://www.debugpoint.com/wp-content/uploads/2022/08/Other-APPS-by-developer-section-in-Software.jpg
[20]: https://showyourstripes.info/s/globe/
[21]: https://gitlab.gnome.org/GNOME/gnome-backgrounds/-/commit/a142d5c88702112fae3b64a6d90d10488150d8c1
[22]: https://www.debugpoint.com/custom-light-dark-wallpaper-gnome/

View File

@ -0,0 +1,157 @@
[#]: subject: "How to Install and Use GNOME Boxes to Create Virtual Machines"
[#]: via: "https://www.debugpoint.com/install-use-gnome-boxes/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Install and Use GNOME Boxes to Create Virtual Machines
======
This quick tutorial explains the steps to install and use GNOME Boxes and create virtual machines, with some tips and troubleshooting.
Virtualization is the process of running a virtual instance (rather than an actual one) with an abstracted layer of hardware. In popular terms, it allows you to install and run multiple operating systems (Linux, Windows) simultaneously.
A [Virtual machine][1] is a simulated operating system that runs on top of another operating system and uses the same hardware, and storage space as the host machine. Although, you can control how much shared-memory or space can be allocated to virtual machines.
There are multiple software available to create virtual machines, e.g. [Virtual Box][2], KVM, Hyper-V, VM Ware player, and GNOME Boxes.
But honestly, most of them are complex to use and sometimes not stable enough. [GNOME Boxes][3] is another free and open-source software that is very easy to use and makes it simple for you to create, and manage virtual machines by abstracting lots of options.
### Install GNOME Boxes
If you are running Fedora with GNOME Spin, you should already have it installed. However, for Ubuntu, Linux Mint, Kubuntu, and other distributions, you can simply run below to install it in your system.
```
sudo apt install gnome-boxes
```
#### Via Flatpak
It is also available via the Flatpak package. I would recommend you to use this version. First, set up your system to use Flatpak using [this guide][4], and then run the following command from the terminal to install.
```
flatpak install flathub org.gnome.Boxes
```
### Create Virtual Machine using GNOME Boxes
* Launch GNOME Boxes from the application menu.
* To create a virtual machine, you need an image (*.ISO) of the operating system you want to virtualize.
* You can download any operating system iso images from the official download page of the distributions. For this guide, I am using Pop! OS, which is an excellent Linux distribution.
* After you launch, click on the “+” icon at the top to start and select “Create a virtual machine”.
![Create Virtual Machine][5]
In the next window, you can choose already available downloads, or you can select your iso file as OS source. Click on the “Operating system image file” and choose your iso file.
Assign the memory and storage space of your virtual machine. Remember, your virtual machine would take the memory and storage from your host system. So try not to assign as max.
For example, in the below image I have assigned 2GB memory for the virtual machine (guest) from the total 8GB memory of the host system.
Similarly, choose minimum storage space as well if you want to just test any OS. But if you are creating a virtual machine for servers or serious work, be logical in how much space or memory you want to assign.
Another important thing to remember is that the storage disk space which you allow will be blocked permanently unless you delete the virtual machine. So, you wont get that much of disk space as free even if your virtual machine doesnt use the entire allocated space.
![Allocate resources for your virtual machine][6]
Continue with the installation.
In the partition window, you should see one hard disk and partition, which is the virtual machine disk space. Usually, they are named as `/dev/vda` or `/dev/sda`.
Dont worry; you can play around with this partition, which will not impact your physical disk partitions or any data on your actual host system. Follow the same /root partition while installing Linux, and continue.
![Virtual machine partition][7]
After you complete the installation, you should be seeing your new operating system in the virtual machine. In the GNOME Boxes, you should see an entry to the system. You can click once to boot your virtual machine.
You can power off the virtual machine by using your virtual machine operating systems internal shutdown option.
If you want, you can also delete the virtual machine by choosing the context menu option.
![Context menu in installed virtual machine][8]
You can also check how much memory, and CPU your virtual machine uses from the properties window.
Note that you can adjust the memory and other items of your existing virtual machines using properties.
![System properties][9]
### Troubleshooting
Here are some of the common errors or issues which you may face while using GNOME Boxes.
##### 1. Resolution problems in virtual machines
If your virtual machine is having low resolution, which is incompatible with your host system, then you have to install the below items. Open up the terminal in the guest system (not in the host system) and run the below commands.
**For Ubuntu-based distributions**
```
sudo apt install spice-vdagent spice-webdavd
```
**For Fedora**
```
sudo dnf install spice-vdagent spice-webdavd
```
These two packages help to determine proper resolutions, copy/paste between host and guest, sharing files via public folders, etc.
Once installed, reboot the guest system; Or you can log off and re-login once after reboot, you should be seeing the proper resolution.
##### 2. GNOME Boxes dont start a virtual machine in Ubuntu 18.04 based distributions
If you are creating a virtual machine in Boxes 3.34 then you should know that there was a bug that caused your virtual machine to fail to start. To fix that you have to follow some additional steps. Remember these are not required for the latest Boxes 3.36.
Open a terminal window and run below command to change the qemu config file
```
sudo gedit /etc/modprobe.d/qemu-system-x86.conf
```
Add the below line in the above file and save.
```
group=kvm
```
Now, run below command to add your username to the KVM group.
```
sudo usermod -a -G kvm <your account name>
```
### Wrapping Up
In this article, you have see how to install and use GNOME Boxes to take advantage of virtualization. I hope it helps you.
🗨️ If you face any errors or have any questions with virtual machines with GNOME Boxes, let me know using the comment box below.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/install-use-gnome-boxes/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.redhat.com/en/topics/virtualization/what-is-a-virtual-machine
[2]: https://www.debugpoint.com/tag/virtualbox/
[3]: https://wiki.gnome.org/Apps/Boxes
[4]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/
[5]: https://www.debugpoint.com/wp-content/uploads/2020/05/Create-Virtual-Machine.png
[6]: https://www.debugpoint.com/wp-content/uploads/2020/05/Allocate-resources-for-your-virtual-machine.png
[7]: https://www.debugpoint.com/wp-content/uploads/2020/05/Virtual-machine-partition.png
[8]: https://www.debugpoint.com/wp-content/uploads/2020/05/Context-menu-in-installed-virtual-machine.png
[9]: https://www.debugpoint.com/wp-content/uploads/2020/05/System-properties.png

View File

@ -0,0 +1,229 @@
[#]: subject: "11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful"
[#]: via: "https://itsfoss.com/best-kde-plasma-themes/"
[#]: author: "sreenath https://itsfoss.com/author/sreenath/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
11 Gorgeous KDE Plasma Themes to Make Your Linux Desktop Even More Beautiful
======
One of the most powerful features of the [KDE Plasma desktop is its fantastic potential for customization][1].
Speaking of customization, changing the theme is perhaps its most common and most visual aspect.
Not that the default Breeze theme is bad looking. Its just that you can give it an entirely different look with a new theme and icon set.
![Default KDE Plasma Theme Breeze][2]
Let me help you with that. Ill share some beautiful KDE Plasma themes you can choose from. Ill also show the steps for installing the chosen themes later in this article.
### Best KDE Plasma Themes
Please note that this is not a ranking list. Theme at number 3 should not be considered better than the one at number 7 or 8.
### 1. Sweet
Sweet is one of the most popular KDE themes out there. This theme, only available in dark mode, gives an aesthetic look to your system.
![Sweet Theme][3]
It can be **installed through KDE system settings**. It also has a dedicated icon pack, called Candy Icons, which also gets installed automatically, if you install it through System Settings.
[Sweet Theme][4]
### 2. Materia KDE
Materia is another popular theme liked by many desktop users. It has a polished and elegant look. Available in three variants, Materia, Materia Light, and Materia Dark.
![Materia Dark][5]
Materia Light is a pure white theme and Materia dark offers a complete dark experience. At the same time, Materia Theme gives a blend of both Dark and White.
This theme also **can be installed through KDE system settings**.
[Materia KDE][6]
### 3. Nordic
Nordic theme has a separate fan base among dark theme lovers. It is created around the Nord color palette, which is both comfortable for the eyes and elegant to watch.
![Nordic KDE][7]
Created by the same [developer of Sweet theme][8], it can be **installed from KDE System Settings**.
[Nordic][9]
### 4. WhiteSur
WhiteSur, developed by Vinceliuice, is a theme, aimed at MacOS theme lovers. It achieves a great similarity to MacOS appearance, which can be further enhanced with KDE Panel, Latte Dock etc.
![WhiteSur][10]
It provides an icon pack, which adds more aesthetics to the look and feel. This popular theme also provides both dark and light variants.
[WhiteSur][11]
### 5. Layan
Layan theme is available for both light and dark variants. And this is one of those themes, that provides rounded corners and looks neat and polished.
![Layan][12]
Layan uses Tela Circle icons and is **available to install from system settings**.
[Layan][13]
### 6. Qogir
Available in both light and dark variants, Qogir is a minimal theme, which can make your system look neat and cool.
![Qogir][14]
It has a very similar look to what appears on Budgie desktop. You can simply install the Qogir theme and its associated icon pack **from system settings**.
[Qogir][15]
### 7. Fluent Round
This theme can create a look and feel of the latest Windows 11 if you are a fan of that OS. Keeping this similarity aside, the Fluent theme is literally a great theme, available in both light/dark variants.
![Fluent KDE Theme][16]
It provides a polished look to your system, together with a dedicated dark/light icon package.
[Fluent Round][17]
### 8. Orchis
Orchis is quite popular among GNOME GTK theming and it is available for KDE also. Orchis has both light/dark. If you are **installing it through system settings**, the Tela Icon pack will also be installed, which you can change anytime from system settings.
![Orchis KDE Theme][18]
As in GNOME, this material-inspired theme improves the polishness of your desktop.
[Orchis][19]
### 9. Iridescent Round
If you are a fan of cyberpunk themes or futuristic themes, this can be a good option. The default wallpaper, which gets **installed through system settings**, looks artistic and gives a nerd vibe to your desktop.
![Iridescent Round][20]
It can create a visual experience if used with some cool plasma widgets and icon sets.
[Iridescent Round][21]
### 10. Nova Papilio
A rounded light theme centered around purple color. The theme is visually pleasing if you like light themes and extremely rounded corners.
![Nova Papilio][22]
The theme can be **installed from the system settings**.
[Nova Papilio][23]
### 11. WinSur Dark
As the name suggests, it has certain visual elements from Windows and macOS themes.
![Winsur Dark][24]
It has light/dark versions and you can **find it in system settings**. The theme has rounded corners and quite a polished look. But from my personal experience, it may make the display a bit congested on small displays.
[WinSur Dark][25]
#### Honorable Mentions
Listing themes, particularly in the case of a DE-like KDE Plasma can be a difficult task. Because there is a huge number of themes available. The above list gives a starting point, to those who dont want to spend time browsing for good looking themes.
Apart from this list, there are certain themes, like [Ant-Dark][26], [Aritim Dark][27], [Dracula][28], etc. that can also provide some nice visual experience to users.
### How to use these themes
Coming to the theme, there are a couple of methods to theme your KDE Plasma desktop. You can find it in brief below. It is a bit different from [theming GNOME desktop environment][29].
#### Install Theme from Settings
This is the most common and easiest method. Head on to KDE Settings. Select Appearance and click on Global Themes. Now, you can search for themes from the button as shown in the screenshots below.
![Download new global themes from KDE Plasma system settings][30]
You will get a comprehensive list of themes. Here, you can view the results with sort options. Once you found a theme, click on it and press install.
![List of available themes in KDE plasma system settings][31]
In most cases, this will apply a corresponding plasma theme and icons.
#### Apply Theme From Downloaded Theme Files
In some cases, you may find an interesting theme on some websites and unavailable in the KDE store. In this case, you need to download and extract the file. Once done, place the global theme folder of the downloaded theme in `~/.local/share/plasma/look-and-feel/` and Plasma Theme folder of the downloaded theme in `~/.local/share/plasma/desktoptheme/`.
![KDE Plasma themes folder in file manager][32]
Now head on to the settings and you will find the theme listed under the Appearance section.
#### Install Theme through Package Managers
This is a limited option. There are some themes, which found their way to the official repositories of your distribution. You can search for these themes and install them with your package manager. For example, in Ubuntu, you can install the Materia-KDE theme by running:
```
sudo apt install materia-kde
```
As said above, only a limited number of themes will be available here, that too varies with distributions. **Once installed, you can change the theme from System Settings > Appearance**.
### Wrapping Up
So, I listed some of my favorite KDE Plasma themes. I also demonstrated the steps for changing the themes.
Do you find some interesting theme here? Do you have some other favorite KDE theme that you would like to share with us in the comment section?
--------------------------------------------------------------------------------
via: https://itsfoss.com/best-kde-plasma-themes/
作者:[sreenath][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/sreenath/
[b]: https://github.com/lkxed
[1]: https://itsfoss.com/kde-customization/
[2]: https://itsfoss.com/wp-content/uploads/2022/09/breeze.webp
[3]: https://itsfoss.com/wp-content/uploads/2022/09/sweet-theme.webp
[4]: https://store.kde.org/s/KDE%20Store/p/1294729
[5]: https://itsfoss.com/wp-content/uploads/2022/09/materia-dark.png
[6]: https://www.pling.com/p/1462622
[7]: https://itsfoss.com/wp-content/uploads/2022/09/nordic-kde.png
[8]: https://github.com/EliverLara/Nordic
[9]: https://www.pling.com/p/1267246
[10]: https://itsfoss.com/wp-content/uploads/2022/09/whitesur.webp
[11]: https://www.pling.com/p/1400424
[12]: https://itsfoss.com/wp-content/uploads/2022/09/layan.webp
[13]: https://www.pling.com/p/1325241
[14]: https://itsfoss.com/wp-content/uploads/2022/09/qogir.png
[15]: https://www.pling.com/p/1675755
[16]: https://itsfoss.com/wp-content/uploads/2022/09/fluent-kde-theme.webp
[17]: https://www.pling.com/p/1631673
[18]: https://itsfoss.com/wp-content/uploads/2022/09/orchis-kde-theme.png
[19]: https://www.pling.com/p/1458927
[20]: https://itsfoss.com/wp-content/uploads/2022/09/iridescent-round.webp
[21]: https://www.pling.com/p/1640906
[22]: https://itsfoss.com/wp-content/uploads/2022/09/nova_papilio.webp
[23]: https://www.pling.com/p/1663528
[24]: https://itsfoss.com/wp-content/uploads/2022/09/winsur-dark.webp
[25]: https://www.pling.com/p/1373646
[26]: https://www.pling.com/p/1464332
[27]: https://www.pling.com/p/1281836
[28]: https://www.pling.com/p/1370871
[29]: https://itsfoss.com/install-switch-themes-gnome-shell/
[30]: https://itsfoss.com/wp-content/uploads/2022/09/download-new-global-themes-from-kde-plasma-system-settings.webp
[31]: https://itsfoss.com/wp-content/uploads/2022/09/list-of-available-themes-in-kde-plasma-system-settings.webp
[32]: https://itsfoss.com/wp-content/uploads/2022/09/kde-plasma-themes-folder-in-file-manager.png

View File

@ -0,0 +1,157 @@
[#]: subject: "5 Free and Open-Source Figma Alternatives"
[#]: via: "https://itsfoss.com/figma-alternatives/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
5 Free and Open-Source Figma Alternatives
======
Figma is a popular interface designing tool. You can get started free or opt for premium subscription plans for advanced use.
It is an impressive platform that many professionals rely on. However, in 2021, [Figma][1] changed its free plan by imposing certain restrictions. While this made some users look for alternatives, it was still manageable for many.
Unfortunately, in 2022, the **announcement of Adobe acquiring Figma for $20 billion** put off many users. So, everyone has started looking for alternatives that are free and potentially open-source.
To help you out, we decided to compile a list of free and open-source alternatives to Figma that you can try.
**Note:** The alternatives mentioned are not necessarily exact replacements for Figma. We recommend you try them to see how they fit your requirements.
### 1. Penpot
![A Video from YouTube][2]
**Key Highlights:**
* Self-hosting option.
* Uses SVG as the native format.
* Web-based.
* Cross-platform.
Penpot is quickly being recognized as a solid free and open-source Figma alternative.
Even if it is in its beta phase, the users seem to like what it offers when writing this. Im not a design expert, but the user experience with the tool seems impressive.
The unique thing about Penpot is that it uses SVG as its native format, which is rare but also provides immense benefits to the designers.
![penpot screenshot][3]
You can expect the essential features from Figma as the developers mention the tools original inspiration is Figma, and they aim to provide a familiar user experience without adding hurdles to your design adventures.
Head to its official website or GitHub page to explore more.
[Penpot][4]
### 2. Quant UX
![A Video from YouTube][5]
**Key Highlights:**
* Prototyping and Testing.
* Limited access without signing up.
* New beta features are regularly added.
* Self-host option.
Quant UX is a prototyping tool where you can test your designs and get insights about them.
You can create a custom prototype or select any available screen sizes for an Android phone, iPhone, or desktop.
This is also something where you will find features constantly added, and some of them are in beta. It is focused more on testing things by letting you import your designs or create a simple mockup.
It allows you access to a few things without signing up, but to get all features working, you need to sign up for an account. Explore more on its [GitHub page][6].
[Quant UX][7]
### 3. Plasmic
![A Video from YouTube][8]
**Key Highlights:**
* Free and open source.
* Drag and drop functionality.
* It supports importing designs from Figma.
Plasmic is a remarkable design tool for building web pages. If you were using Figma for web design, this could be an alternative tool to check out.
It provides most of the features for free and unlocks things like more extended version history, analytics, and other special features for teams when you opt for a premium plan. It is not just limited to designing the web pages but also supports A/B testing to experiment and improve the user interaction of your website.
Whether you are using an [open-source CMS][9] or a Jamstack site, Plasmic supports integration almost everywhere. Head to its official site or [GitHub page][10] to learn more.
[Plasmic][11]
### 4. Wireflow
![wireflow userflow][12]
**Key Highlights:**
* Free to use.
* No paid options.
* It is not actively maintained.
Wireflow is an interesting offering as a user flow prototype tool, and it is entirely free to use with no paid option.
Also, you do not need to sign up for an account. Get started from its official website and collaborate with others to plan your project and brainstorm.
Unfortunately, it has not seen any recent development activity since 2021. But, it is still active and remains a free and open-source solution. You can check out its [GitHub page][13] for more information.
[Wireflow][14]
### 5. Akira UX
![akira ux 2020][15]
**Key Highlights:**
* Early development app.
* Focuses on being a native Linux UX app.
[Akira UX][16] is an exciting project aiming to bring a native Linux design utility that works as well as some web-based solutions.
Akiras project lead joined Mozilla Thunderbird as a product design manager. So, as of now, the project is not super actively developed. But, as a free and open-source project, anyone can pick it up and work on the same vision.
It is currently an early development version that you can test. You can find it available on Flathubs beta channel and get it installed as per its [GitHub page instructions][17].
[Akira UX][18]
### Wrapping Up
It is not easy to replace Figma with a free and open-source solution. However, if you are not concerned about all of Figmas functionalities, some of our recommendations should help you get the job done.
*Do you know of any other free and open-source replacements to Figma? Let me know your thoughts in the comments below.*
--------------------------------------------------------------------------------
via: https://itsfoss.com/figma-alternatives/
作者:[Ankush Das][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lkxed
[1]: https://www.figma.com/
[2]: https://youtu.be/JozESuPcVpg
[3]: https://itsfoss.com/wp-content/uploads/2022/09/penpot-screenshot.jpg
[4]: https://penpot.app/
[5]: https://youtu.be/eGDTAJlB-uI
[6]: https://github.com/KlausSchaefers/quant-ux
[7]: https://quant-ux.com/
[8]: https://youtu.be/sXXpe5jjnRs
[9]: https://itsfoss.com/open-source-cms/
[10]: https://github.com/plasmicapp/plasmic
[11]: https://www.plasmic.app/
[12]: https://itsfoss.com/wp-content/uploads/2022/09/wireflow-userflow-800x570.jpg
[13]: https://github.com/vanila-io/wireflow
[14]: https://wireflow.co/
[15]: https://itsfoss.com/wp-content/uploads/2022/09/akira-ux-2020.png
[16]: https://itsfoss.com/akira-design-tool/
[17]: https://github.com/akiraux/Akira
[18]: https://github.com/akiraux/Akira

View File

@ -0,0 +1,164 @@
[#]: subject: "Customize Xfce Desktop for Modern Look and Productivity"
[#]: via: "https://www.debugpoint.com/customize-xfce-modern-look-2020-edition/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Customize Xfce Desktop for Modern Look and Productivity
======
You can customize the super lightweight Xfce desktop for a modern look and improve productivity by tweaking various settings. In this guide, we explain the steps to configure a basic Xfce desktop installation (for example Xubuntu) entirely and make it look modern while being productive.
Xfce is a fast and lightweight desktop built on the GTK toolkit. It uses Xfwm (Xfce Window Manager), providing complete customization options via visual settings. Although the actual configuration files are hidden from the general users. Currently, Xfce is going through a process of porting the GTK2 components to GTK3 with the current stable and upcoming release.
This guide is prepared on Xfce 4.14 in Xubuntu 20.10 release. But overall, it is applicable for all Xfce desktops available for multiple Linux distributions such as Manjaro, Fedora, Arch, etc.
![Xfce Desktop - Before Customization][1]
### Customize Xfce Desktop Look and Productivity
##### Panels
Panels are the core component of the Xfce desktop. When you first boot up Xfce, the top panel is the go-to section for all your needs. It contains the application launcher menu, system tray with notifications, and a list of opened applications. Xfce (Xubuntu) comes with the great Whisker Menu, which already gives you a modern look.
So for this customization guide, first, I will add a new panel at the bottom and then eventually delete the top one. Now, if you wish, you can keep the top panel Or move it to the left or right from the Panel properties. Totally as per your taste.
* Right-click on the top panel and open `Panel -> Panel Preferences`. Click on the green + icon to create a new Panel.
![Panel Preferences][2]
![Add New Panel option][3]
Ideally, the default Panel is Panel 0, and the new one should be Panel 1. You will see a blank Panel is created on the desktop.
![New Panel][4]
**Drag the panel** to the **bottom** of the screen via the handle.
On the **Display tab**of the Panel Preference Window:
* Set Auto-hide the panel to Always.
* Check the Lock Panel.
On the **Appearance** Tab, you can choose the Background Style of the Panel. You can choose Opacity as well. For this guide, I will keep
* Background as None.
* Icon Adjust size automatically = Yes
* Opacity (Enter and Leave) = 100
Lets start adding some **applets**. Go to the Items tab and click on the green + icon to start adding some Xfce Applets.
You can add as many items as you want. For this guide, I have added the below items.
* Whisker Menu application menu
* Window Menu List of open applications
* Places File manager
* Notes quick sticky pad
* Screenshot
* Indicator Plugin
* Clock with date and time
* Action buttons to show log out, shutdown
* Show Desktop
Once done, press close.
To add some **additional applications**, you can open the application menu and right-click on any application. Then click **Add to Panel** and choose Panel 1 (for this example).
For example, I have added some additional applications to Panel 1 as below.
* Firefox
* Thunderbird
* LibreOffice Calc
* GIMP
Again, this is completely as per your taste. You can customize the new Panel as you wish.
When you are done, right-click on the top panel and open Panel Preferences. Select Panel 0 and click the “-” red icon to delete the top panel. Be cautious, as it will remove the default Xfce panel altogether. And before removing the Panel, make sure the newly created Panel 1 is visible.
##### Icons
You can change the default icon theme of Xfce. The [xfce-look.org][5] provides hundreds of GTK themes and icons. Download your favourite icon theme, and extract them. Then copy the top icon theme folder to `/usr/share/icons`. Or, you can create a folder `.icons` under your home directory and copy the icons folder.
Then you can open the **Appearance** Window and change the icon via the icon tab.
For this example, I have used the Uniform+ icon set, which looks very nice and comes with many application-specific icon sets. Its a big download (around 300mb+); you can get it from the below link.
[Download Uniform+ Icon set for Xfce][6]
##### Wallpaper
The Xfce-look.org has plenty of Xfce wallpaper with the Xfce mascot to choose from. Like the orange one which I have used for this tutorial. You can download it from [here][7].
##### Dock
There are some Docks which you can directly install in Xfce instead of Panels. I have not included a dock for this guide because you can customize it just fine without installing some additional applications and compromising more performance.
However, Docks are always looked better than panels. For example, if you really want, you can download DockBarX for Xfce and add it to your desktop. To install DockBarX, use the below PPA and commands in Ubuntu-based systems.
```
sudo add-apt-repository ppa:xuzhen666/dockbarxsudo apt-get updatesudo apt-get install dockbarx
```
```
sudo apt-get install xfce4-dockbarx-plugin
```
```
sudo apt-get install dockbarx-themes-extra
```
After applying all the above customization, your desktop should look like this if all goes well.
![Xfce Desktop after Customization][8]
### Settings Changes for Productivity
Now, coming to some tweaks of Xfce, which I prefer to do. These are specific small settings changes for your desktop which make your life easy and you can become more productive.
**Configure Whisker Menu to launch with Left Super Key**
It is handy when you can just open the application key via the left super key or right super key. To configure the Whisker Menu to launch with the left super key, open Window Manager and go to Keyboard. Add Superkey with xfce4-whisker-menu and press ok.
**Switch categories by Hovering Mouse**
Open Whisker menu settings. Go to the behaviour tab and check the Switch categories by hovering over the option.
**Add Battery and network data transfer indicator**
There is two additional panel applet available which you can add to your panel. They are Battery indicators and network data transfer. They give you a visual representation of battery status with % and upload/download data speed for the network.
![Xfce Customization Dark Mode][9]
### Wrapping Up
Again, the above outlined Xfce desktop look changes are just an idea for configuring your desktop. There are hundreds of settings available in Xfce, which you can easily change via settings as per your need and workflow. This is what makes Xfce a great alternative GTK desktop to GNOME.
Thats it. You can now enjoy a completely different [Xfce][10] desktop.
Let me know in the comment box below if you face any difficulties configuring the Xfce desktop and have any questions.
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/customize-xfce-modern-look-2020-edition/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.debugpoint.com/wp-content/uploads/2020/11/Xfce-Desktop-Before-Customization-1024x576.jpg
[2]: https://www.debugpoint.com/wp-content/uploads/2020/11/Panel-Preferences.jpg
[3]: https://www.debugpoint.com/wp-content/uploads/2020/11/Add-New-Panel-option.jpg
[4]: https://www.debugpoint.com/wp-content/uploads/2020/11/New-Panel.jpg
[5]: https://www.xfce-look.org/browse/cat/
[6]: https://www.xfce-look.org/p/1012468/
[7]: https://www.xfce-look.org/p/1351819/
[8]: https://www.debugpoint.com/wp-content/uploads/2020/11/Xfce-Desktop-after-Customization.jpg
[9]: https://www.debugpoint.com/wp-content/uploads/2020/11/Xfce-Customization-Dark-Mode.jpg
[10]: https://www.debugpoint.com/tag/xfce

View File

@ -0,0 +1,287 @@
[#]: subject: "How To Enable RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux"
[#]: via: "https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/"
[#]: author: "sk https://ostechnix.com/author/sk/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How To Enable RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux
======
Install RPM Fusion Repository In Fedora, RHEL, AlmaLinux, Rocky Linux
In this brief guide, we will see **what is RPM Fusion repository**, why should we **install RPM Fusion repository**, and finally how to **enable RPM Fusion repository** in Fedora, RHEL, and its clones like CentOS, AlmaLinux and Rocky Linux distributions.
#### Contents
1. What is RPM Fusion Repository?
2. 1. Enable RPM Fusion Repository In Fedora Linux 3. 1.1. List Repositories In Fedora
4. 2. Enable RPM Fusion Repository In RHEL 5. 2.1. List Installed Repositories In RHEL-based Systems
6. Conclusion
### What is RPM Fusion Repository?
Fedora project strictly adheres the Fedora [licensing policies][1]. It excludes some packages from the official repositories for the following reasons:
* If a package is propriety, it can't be included in Fedora;
* If a package is closed-source, it can't be included in Fedora;
* If a package is legally encumbered, it cannot be included in Fedora;
* If package violates United States laws (specifically, Federal or applicable state laws), it cannot be included in Fedora.
Any package that fails to meet the aforementioned policies will not be included in the official repositories of Fedora and RHEL. This is why some third party repositories, which have liberal licensing policies, are created. One such repository is **RPM Fusion**.
RPM Fusion is a community-maintained, third-party software repository that provides packages that the Fedora project and Red Hat can't ship due to legal and various other reasons as stated earlier.
The RPM Fusion is a must have to install the necessary multimedia codecs, proprietary software and drivers in Fedora, RHEL and its clones like CentOS, AlmaLinux and Rocky Linux etc.
RPM Fusion has two repositories namely `"free"` and `"nonfree"`. The `free` repository contains the packages that are Open Source as defined by Fedora licensing guidelines. The `nonfree` repository contains redistributable packages that are not Open Source and packages that are not free for commercial purpose.
You can add both repos and use them simultaneously on your personal system. There won't be any conflicts between the packages in the `free` and `nonfree` repos. If you're interested in running only free packages, just add the `free` repo and install the `nonfree` repo later.
### 1. Enable RPM Fusion Repository In Fedora Linux
To enable both the `free` and the `nonfree` RPM Fusion repositories on your Fedora system, run:
```
$ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
**Sample output:**
```
Last metadata expiration check: 1:51:10 ago on Thursday 29 April 2021 02:10:14 PM.
rpmfusion-free-release-34.noarch.rpm 5.5 kB/s | 11 kB 00:02
rpmfusion-nonfree-release-34.noarch.rpm 6.6 kB/s | 11 kB 00:01
Dependencies resolved.
Package Architecture Version Repository Size
Installing:
rpmfusion-free-release noarch 34-1 @commandline 11 k
rpmfusion-nonfree-release noarch 34-1 @commandline 11 k
Transaction Summary
Install 2 Packages
Total size: 23 k
Installed size: 11 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rpmfusion-nonfree-release-34-1.noarch 1/2
Installing : rpmfusion-free-release-34-1.noarch 2/2
Verifying : rpmfusion-free-release-34-1.noarch 1/2
Verifying : rpmfusion-nonfree-release-34-1.noarch 2/2
Installed:
rpmfusion-free-release-34-1.noarch rpmfusion-nonfree-release-34-1.noarch
Complete!
```
![Enable RPM Fusion Repository In Fedora Linux][2]
Like I already mentioned, you can install only the `free` repo like below:
```
$ sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
```
To enable only the non-free RPM Fusion repository, do:
```
$ sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
**On Fedora Silverblue:**
To add and enable `free` and `nonfree` RPM Fusion repositories on a Fedora Silverblue machine, run:
```
$ sudo rpm-ostree install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
```
Well, RPM Fusion repository is installed and enabled. Let us go ahead and see if RPM Fusion is enabled or not.
#### 1.1. List Repositories In Fedora
To **[find the list of installed repositories][3]** in Fedora, run:
```
$ dnf repolist
```
**Sample output:**
```
repo id repo name
fedora Fedora 34 - x86_64
fedora-cisco-openh264 Fedora 34 openh264 (From Cisco) - x86_64
fedora-modular Fedora Modular 34 - x86_64
rpmfusion-free RPM Fusion for Fedora 34 - Free
rpmfusion-free-updates RPM Fusion for Fedora 34 - Free - Updates
rpmfusion-nonfree RPM Fusion for Fedora 34 - Nonfree
rpmfusion-nonfree-updates RPM Fusion for Fedora 34 - Nonfree - Updates
updates Fedora 34 - x86_64 - Updates
updates-modular Fedora Modular 34 - x86_64 - Updates
```
If you want to list only the enabled repositories, the command would be:
```
$ dnf repolist enabled
```
The first time you attempt to install packages from the RPM Fusion repositories, the `dnf` utility prompts you to confirm the signature of the repositories. Type **y** and hit ENTER to confirm it.
```
[...]
warning: /var/cache/dnf/rpmfusion-free-27856ae4f82a6a42/packages/ffmpeg-4.4-2.fc34.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID d651ff2e: NOKEY
RPM Fusion for Fedora 34 - Free 1.6 MB/s | 1.7 kB 00:00
Importing GPG key 0xD651FF2E:
Userid : "RPM Fusion free repository for Fedora (2020) rpmfusion-buildsys@lists.rpmfusion.org"
Fingerprint: E9A4 91A3 DE24 7814 E7E0 67EA E06F 8ECD D651 FF2E
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-34
Is this ok [y/N]: y
[...]
```
### 2. Enable RPM Fusion Repository In RHEL
In RHEL and its clones like CentOS, AlmaLinux, Rocky Linux etc., you must enable **[EPEL]** repository before enabling RPM Fusion repository.
To install EPEL repository in Red Hat Enterprise Linux system, run:
```
$ sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm
```
After enabling the EPEL repository, run the following command to enable RPM Fusion repository in RHEL and its compatible clones CentOS, AlmaLinux and Rocky Linux:
```
$ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
```
**Sample output:**
```
Last metadata expiration check: 0:09:07 ago on Friday 23 September 2022 11:41:49 AM UTC.
rpmfusion-free-release-8.noarch.rpm 861 B/s | 11 kB 00:12
rpmfusion-nonfree-release-8.noarch.rpm 877 B/s | 11 kB 00:12
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
rpmfusion-free-release noarch 8-0.1 @commandline 11 k
rpmfusion-nonfree-release noarch 8-0.1 @commandline 11 k
Transaction Summary
================================================================================
Install 2 Packages
Total size: 22 k
Installed size: 7.6 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : rpmfusion-free-release-8-0.1.noarch 1/2
Installing : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Verifying : rpmfusion-free-release-8-0.1.noarch 1/2
Verifying : rpmfusion-nonfree-release-8-0.1.noarch 2/2
Installed:
rpmfusion-free-release-8-0.1.noarch rpmfusion-nonfree-release-8-0.1.noarch
Complete!
```
![Enable RPM Fusion Repository In RHEL, CentOS, AlmaLinux, Rocky Linux][4]
If you are using CentOS Steam 8, you need to enable **[PowerTools]** repository as well.
```
$ sudo dnf config-manager --enable powertools
```
CentOS 8 (older version) used a case sensitive name for the **PowerTools** repository:
```
$ sudo dnf config-manager --enable PowerTools
```
On RHEL 8, you should enable subscription:
```
$ sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$(uname -m)-rpms"
```
In RHEL 7 and its compatible clones like CentOS 7, run the following command to enable EPEL and RPM Fusion repositories:
```
$ sudo yum localinstall --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
```
#### 2.1. List Installed Repositories In RHEL-based Systems
You can view the [list of the installed repositories][5] at any time using the following commands:
```
$ dnf repolist
```
Or,
```
$ yum repolist
```
**Sample output:**
```
repo id repo name
appstream AlmaLinux 8 - AppStream
baseos AlmaLinux 8 - BaseOS
docker-ce-stable Docker CE Stable - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras AlmaLinux 8 - Extras
rpmfusion-free-updates RPM Fusion for EL 8 - Free - Updates
rpmfusion-nonfree-updates RPM Fusion for EL 8 - Nonfree - Updates
```
![List Installed Repositories In RHEL, CentOS, AlmaLinux, Rocky Linux][6]
### Conclusion
That's it. You know now how to **enable RPM Fusion repository RPM-based systems** such as Fedora, RHEL, CentOS, AlmaLinux, and Rocky Linux. Enabling RPM Fusion in a newly installed system is mandatory as it provides a lots of unofficial packages that are not included in the official repositories.
**Resource:**
* [RPM Fusion Configuration][7]
--------------------------------------------------------------------------------
via: https://ostechnix.com/how-to-enable-rpm-fusion-repository-in-fedora-rhel/
作者:[sk][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://ostechnix.com/author/sk/
[b]: https://github.com/lkxed
[1]: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
[2]: https://ostechnix.com/wp-content/uploads/2021/04/Enable-RPM-Fusion-repository-in-Fedora-Linux.png
[3]: https://ostechnix.com/find-list-installed-repositories-commandline-linux/
[4]: https://ostechnix.com/wp-content/uploads/2022/09/Enable-RPM-Fusion-repository-in-RHEL-CentOS-AlmaLinux-Rocky-Linux.png
[5]: https://ostechnix.com/find-list-installed-repositories-commandline-linux/
[6]: https://ostechnix.com/wp-content/uploads/2022/09/List-Installed-Repositories-In-RHEL-CentOS-AlmaLinux-Rocky-Linux.png
[7]: https://rpmfusion.org/Configuration

View File

@ -0,0 +1,695 @@
[#]: subject: "How to build a dynamic distributed database with DistSQL"
[#]: via: "https://opensource.com/article/22/9/dynamic-distributed-database-distsql"
[#]: author: "Raigor Jiang https://opensource.com/users/raigor"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to build a dynamic distributed database with DistSQL
======
Take a look at a data sharding scenario in which DistSQL's flexibility allows you to create a distributed database.
Distributed databases are common for many reasons. They increase reliability, redundancy, and performance. Apache ShardingSphere is an open source framework that enables you to transform any database into a distributed database. Since the release of ShardingSphere 5.0.0, DistSQL (Distributed SQL) has provided dynamic management for the ShardingSphere ecosystem.
In this article, I demonstrate a data sharding scenario in which DistSQL's flexibility allows you to create a distributed database. At the same time, I show some syntax sugar to simplify operating procedures, allowing your potential users to choose their preferred syntax.
A series of DistSQL statements are run through practical cases to give you a complete set of practical DistSQL sharding management methods, which create and maintain distributed databases through dynamic management.
![Diagram of database sharding management options][2]
Image by:
(Jiang Longtao, CC BY-SA 4.0)
### What is sharding?
In database terminology, *sharding* is the process of partitioning a table into separate entities. While the table data is directly related, it often exists on different physical database nodes or, at the very least, within separate logical partitions.
### Practical case example
To follow along with this example, you must have these components in place, either in your lab or in your mind as you read this article:
* Two sharding tables: t_order and t_order_item.
* For both tables, database shards are carried out with the user_id field, and table shards with the order_id field.
* The number of shards is two databases times three tables.
![Apache ShardingSphere databases][3]
Image by: (Jiang Longtao, CC BY-SA 4.0)
### Set up the environment
1. Prepare a database (MySQL, MariaDB, PostgreSQL, or openGauss) instance for access. Create two new databases: **demo_ds_0** and **demo_ds_1**.
2. Deploy [Apache ShardingSphere-Proxy 5.1.2][4] and [Apache ZooKeeper][5]. ZooKeeper acts as a governance center and stores ShardingSphere metadata information.
3. Configure `server.yaml` in the Proxy conf directory as follows:
```
mode:
  type: Cluster
  repository:
    type: ZooKeeper
    props:
      namespace: governance_ds
      server-lists: localhost:2181 #ZooKeeper address
      retryIntervalMilliseconds: 500
      timeToLiveSeconds: 60
      maxRetries: 3
      operationTimeoutMilliseconds: 500
  overwrite: falserules:
 - !AUTHORITY
    users:
     - root@%:root
```
4. Start ShardingSphere-Proxy and connect it to Proxy using a client, for example:
```
$ mysql -h 127.0.0.1 -P 3307 -u root -p
```
5. Create a distributed database:
```
CREATE DATABASE sharding_db;USE sharding_db;
```
#### Add storage resources
Next, add storage resources corresponding to the database:
```
ADD RESOURCE ds_0 (
    HOST=127.0.0.1,
    PORT=3306,
    DB=demo_ds_0,
    USER=root,
    PASSWORD=123456
), ds_1(
    HOST=127.0.0.1,
    PORT=3306,
    DB=demo_ds_1,
    USER=root,
    PASSWORD=123456
);
```
View the storage resources:
```
mysql> SHOW DATABASE RESOURCES\G;
******** 1. row ***************************
         name: ds_1
         type: MySQL
         host: 127.0.0.1
         port: 3306
           db: demo_ds_1
          -- Omit partial attributes
******** 2. row ***************************
         name: ds_0
         type: MySQL
         host: 127.0.0.1
         port: 3306
           db: demo_ds_0
          -- Omit partial attributes
```
Adding the optional `\G` switch to the query statement makes the output format easy to read.
### Create sharding rules
ShardingSphere's sharding rules support regular sharding and automatic sharding. Both sharding methods have the same effect. The difference is that the configuration of automatic sharding is more concise, while regular sharding is more flexible and independent.
Refer to the following links for more details on automatic sharding:
* [Intro to DistSQL-An Open Source and More Powerful SQL][6]
* [AutoTable: Your Butler-Like Sharding Configuration Tool][7]
Next, it's time to adopt regular sharding and use the **INLINE** expression algorithm to implement the sharding scenarios described in the requirements.
### Primary key generator
The primary key generator creates a secure and unique primary key for a data table in a distributed scenario. For details, refer to the document [Distributed Primary Key][8]*.*
1. Create a primary key generator:
```
CREATE SHARDING KEY GENERATOR snowflake_key_generator (
TYPE(NAME=SNOWFLAKE)
);
```
2. Query the primary key generator:
```
mysql> SHOW SHARDING KEY GENERATORS;
+-------------------------+-----------+-------+
| name                    | type      | props |
+-------------------------+-----------+-------+
| snowflake_key_generator | snowflake | {}    |
+-------------------------+-----------+-------+
1 row in set (0.01 sec)
```
### Sharding algorithm
1. Create a database sharding algorithm used by **t_order** and **t_order_item** in common:
```
-- Modulo 2 based on user_id in database sharding
CREATE SHARDING ALGORITHM database_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}"))
);
```
2. Create different table shards algorithms for **t_order** and **t_order_item:**
```
-- Modulo 3 based on order_id in table sharding
CREATE SHARDING ALGORITHM t_order_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_${order_id % 3}"))
);
CREATE SHARDING ALGORITHM t_order_item_inline (
TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_item_${order_id % 3}"))
);
```
3. Query the sharding algorithm:
```
mysql> SHOW SHARDING ALGORITHMS;
+---------------------+--------+---------------------------------------------------+
| name                | type   | props                                             |
+---------------------+--------+---------------------------------------------------+
| database_inline     | inline | algorithm-expression=ds_${user_id % 2}            |
| t_order_inline      | inline | algorithm-expression=t_order_${order_id % 3}      |
| t_order_item_inline | inline | algorithm-expression=t_order_item_${order_id % 3} |
+---------------------+--------+---------------------------------------------------+
3 rows in set (0.00 sec)
```
### Create a default sharding strategy
The [sharding strategy][9] consists of a sharding key and sharding algorithm, which in this case is **databaseStrategy** and **tableStrategy**. Because **t_order** and **t_order_item** have the same database sharding field and sharding algorithm, create a default strategy to be used by all shard tables with no sharding strategy configured.
1. Create a default database sharding strategy:
```
CREATE DEFAULT SHARDING DATABASE STRATEGY (
TYPE=STANDARD,SHARDING_COLUMN=user_id,SHARDING_ALGORITHM=database_inline
);
```
2. Query default strategy:
```
mysql> SHOW DEFAULT SHARDING STRATEGY\G;
*************************** 1. row ***************************
                    name: TABLE
                    type: NONE
         sharding_column:
 sharding_algorithm_name:
 sharding_algorithm_type:
sharding_algorithm_props:
*************************** 2. row ***************************
                    name: DATABASE
                    type: STANDARD
         sharding_column: user_id
 sharding_algorithm_name: database_inline
 sharding_algorithm_type: inline
sharding_algorithm_props: {algorithm-expression=ds_${user_id % 2}}
2 rows in set (0.00 sec)
```
You have not configured the default table sharding strategy, so the default strategy of **TABLE** is **NONE**.
### Set sharding rules
The primary key generator and sharding algorithm are both ready. Now you can create sharding rules. The method I demonstrate below is a little complicated and involves multiple steps. In the next section, I'll show you how to create sharding rules in just one step, but for now, witness how it's typically done.
First, define **t_order**:
```
CREATE SHARDING TABLE RULE t_order (
DATANODES("ds_${0..1}.t_order_${0..2}"),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM=t_order_inline),
KEY_GENERATE_STRATEGY(COLUMN=order_id,KEY_GENERATOR=snowflake_key_generator)
);
```
Here is an explanation of the values found above:
* DATANODES specifies the data nodes of shard tables.
* TABLE_STRATEGY specifies the table strategy, among which SHARDING_ALGORITHM uses created sharding algorithm t_order_inline.
* KEY_GENERATE_STRATEGY specifies the primary key generation strategy of the table. Skip this configuration if primary key generation is not required.
Next, define **t_order_item**:
```
CREATE SHARDING TABLE RULE t_order_item (
DATANODES("ds_${0..1}.t_order_item_${0..2}"),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM=t_order_item_inline),
KEY_GENERATE_STRATEGY(COLUMN=order_item_id,KEY_GENERATOR=snowflake_key_generator)
);
```
Query the sharding rules to verify what you've created:
```
mysql> SHOW SHARDING TABLE RULES\G;
************************** 1. row ***************************
                           table: t_order
               actual_data_nodes: ds_${0..1}.t_order_${0..2}
             actual_data_sources:
          database_strategy_type: STANDARD
        database_sharding_column: user_id
database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_${order_id % 3}
              key_generate_column: order_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 2. row ***************************
                            table: t_order_item
                actual_data_nodes: ds_${0..1}.t_order_item_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_item_${order_id % 3}
              key_generate_column: order_item_id
               key_generator_type: snowflake
              key_generator_props:
2 rows in set (0.00 sec)
```
This looks right so far. You have now configured the sharding rules for **t_order** and **t_order_item**.
You can skip the steps for creating the primary key generator, sharding algorithm, and default strategy, and complete the sharding rules in one step. Here's how to make it easier.
### Sharding rule syntax
For instance, if you want to add a shard table called **t_order_detail**, you can create sharding rules as follows:
```
CREATE SHARDING TABLE RULE t_order_detail (
DATANODES("ds_${0..1}.t_order_detail_${0..1}"),
DATABASE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=user_id,SHARDING_ALGORITHM(TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}")))),
TABLE_STRATEGY(TYPE=STANDARD,SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="t_order_detail_${order_id % 3}")))),
KEY_GENERATE_STRATEGY(COLUMN=detail_id,TYPE(NAME=snowflake))
);
```
This statement specifies a database sharding strategy, table strategy, and primary key generation strategy, but it doesn't use existing algorithms. The DistSQL engine automatically uses the input expression to create an algorithm for the sharding rules of **t_order_detail**.
Now there's a primary key generator:
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
+--------------------------+-----------+-------+
2 rows in set (0.00 sec)
```
Display the sharding algorithm:
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
+--------------------------------+--------+-----------------------------------------------------+
5 rows in set (0.00 sec)
```
And finally, the sharding rules:
```
mysql> SHOW SHARDING TABLE RULES\G;
*************************** 1. row ***************************
                            table: t_order
                actual_data_nodes: ds_${0..1}.t_order_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_${order_id % 3}
              key_generate_column: order_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 2. row ***************************
                            table: t_order_item
                actual_data_nodes: ds_${0..1}.t_order_item_${0..2}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_item_${order_id % 3}
              key_generate_column: order_item_id
               key_generator_type: snowflake
              key_generator_props:
*************************** 3. row ***************************
                            table: t_order_detail
                actual_data_nodes: ds_${0..1}.t_order_detail_${0..1}
              actual_data_sources:
           database_strategy_type: STANDARD
         database_sharding_column: user_id
 database_sharding_algorithm_type: inline
database_sharding_algorithm_props: algorithm-expression=ds_${user_id % 2}
              table_strategy_type: STANDARD
            table_sharding_column: order_id
    table_sharding_algorithm_type: inline
   table_sharding_algorithm_props: algorithm-expression=t_order_detail_${order_id % 3}
              key_generate_column: detail_id
               key_generator_type: snowflake
              key_generator_props:
3 rows in set (0.01 sec)
```
In the `CREATE SHARDING TABLE RULE` statement, **DATABASE_STRATEGY**, **TABLE_STRATEGY**, and **KEY_GENERATE_STRATEGY** can reuse existing algorithms.
Alternatively, they can be defined quickly through syntax. The difference is that additional algorithm objects are created.
### Configuration and verification
Once you have created the configuration verification rules, you can verify them in the following ways.
1. Check node distribution:
DistSQL provides `SHOW SHARDING TABLE NODES` for checking node distribution, and users can quickly learn the distribution of shard tables:
```
mysql> SHOW SHARDING TABLE NODES;
+----------------+------------------------------------------------------------------------------------------------------------------------------+
| name           | nodes                                                                                                                        |
+----------------+------------------------------------------------------------------------------------------------------------------------------+
| t_order        | ds_0.t_order_0, ds_0.t_order_1, ds_0.t_order_2, ds_1.t_order_0, ds_1.t_order_1, ds_1.t_order_2                               |
| t_order_item   | ds_0.t_order_item_0, ds_0.t_order_item_1, ds_0.t_order_item_2, ds_1.t_order_item_0, ds_1.t_order_item_1, ds_1.t_order_item_2 |
| t_order_detail | ds_0.t_order_detail_0, ds_0.t_order_detail_1, ds_1.t_order_detail_0, ds_1.t_order_detail_1                                   |
+----------------+------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.01 sec)
mysql> SHOW SHARDING TABLE NODES t_order_item;
+--------------+------------------------------------------------------------------------------------------------------------------------------+
| name         | nodes                                                                                                                        |
+--------------+------------------------------------------------------------------------------------------------------------------------------+
| t_order_item | ds_0.t_order_item_0, ds_0.t_order_item_1, ds_0.t_order_item_2, ds_1.t_order_item_0, ds_1.t_order_item_1, ds_1.t_order_item_2 |
+--------------+------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
You can see that the node distribution of the shard table is consistent with what is described in the requirement.
### SQL preview
Previewing SQL is also an easy way to verify configurations. Its syntax is `PREVIEW SQL`. First, make a query with no shard key, with all routes:
```
mysql> PREVIEW SELECT * FROM t_order;
+------------------+---------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                  |
+------------------+---------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_0 UNION ALL SELECT * FROM t_order_1 UNION ALL SELECT * FROM t_order_2 |
| ds_1             | SELECT * FROM t_order_0 UNION ALL SELECT * FROM t_order_1 UNION ALL SELECT * FROM t_order_2 |
+------------------+---------------------------------------------------------------------------------------------+
2 rows in set (0.13 sec)
mysql> PREVIEW SELECT * FROM t_order_item;
+------------------+------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                 |
+------------------+------------------------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_0 UNION ALL SELECT * FROM t_order_item_1 UNION ALL SELECT * FROM t_order_item_2 |
| ds_1             | SELECT * FROM t_order_item_0 UNION ALL SELECT * FROM t_order_item_1 UNION ALL SELECT * FROM t_order_item_2 |
+------------------+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
```
Now specify **user_id** in a query with a single database route:
```
mysql> PREVIEW SELECT * FROM t_order WHERE user_id = 1;
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                                                        |
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| ds_1             | SELECT * FROM t_order_0 WHERE user_id = 1 UNION ALL SELECT * FROM t_order_1 WHERE user_id = 1 UNION ALL SELECT * FROM t_order_2 WHERE user_id = 1 |
+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.14 sec)
mysql> PREVIEW SELECT * FROM t_order_item WHERE user_id = 2;
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| data_source_name | actual_sql                                                                                                                                                       |
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_0 WHERE user_id = 2 UNION ALL SELECT * FROM t_order_item_1 WHERE user_id = 2 UNION ALL SELECT * FROM t_order_item_2 WHERE user_id = 2 |
+------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
```
Specify **user_id** and **order_id** with a single table route:
```
mysql> PREVIEW SELECT * FROM t_order WHERE user_id = 1 AND order_id = 1;
+------------------+------------------------------------------------------------+
| data_source_name | actual_sql                                                 |
+------------------+------------------------------------------------------------+
| ds_1             | SELECT * FROM t_order_1 WHERE user_id = 1 AND order_id = 1 |
+------------------+------------------------------------------------------------+
1 row in set (0.04 sec)
mysql> PREVIEW SELECT * FROM t_order_item WHERE user_id = 2 AND order_id = 5;
+------------------+-----------------------------------------------------------------+
| data_source_name | actual_sql                                                      |
+------------------+-----------------------------------------------------------------+
| ds_0             | SELECT * FROM t_order_item_2 WHERE user_id = 2 AND order_id = 5 |
+------------------+-----------------------------------------------------------------+
1 row in set (0.01 sec)
```
Single-table routes scan the fewest shard tables and offer the highest efficiency.
### Query unused resources
During system maintenance, algorithms or storage resources that are no longer in use may need to be released, or resources that need to be released may have been referenced and cannot be deleted. DistSQL's `SHOW UNUSED RESOURCES` command can solve these problems:
```
mysql> ADD RESOURCE ds_2 (
    ->     HOST=127.0.0.1,
    ->     PORT=3306,
    ->     DB=demo_ds_2,
    ->     USER=root,
    ->     PASSWORD=123456
    -> );
Query OK, 0 rows affected (0.07 sec)
mysql> SHOW UNUSED RESOURCES\G;
*************************** 1. row ***************************
                           name: ds_2
                           type: MySQL
                           host: 127.0.0.1
                           port: 3306
                             db: demo_ds_2
connection_timeout_milliseconds: 30000
      idle_timeout_milliseconds: 60000
      max_lifetime_milliseconds: 2100000
                  max_pool_size: 50
                  min_pool_size: 1
                      read_only: false
               other_attributes: {"dataSourceProperties":{"cacheServerConfiguration":"true","elideSetAutoCommits":"true","useServerPrepStmts":"true","cachePrepStmts":"true","useSSL":"false","rewriteBatchedStatements":"true","cacheResultSetMetadata":"false","useLocalSessionState":"true","maintainTimeStats":"false","prepStmtCacheSize":"200000","tinyInt1isBit":"false","prepStmtCacheSqlLimit":"2048","serverTimezone":"UTC","netTimeoutForStreamingResults":"0","zeroDateTimeBehavior":"round"},"healthCheckProperties":{},"initializationFailTimeout":1,"validationTimeout":5000,"leakDetectionThreshold":0,"poolName":"HikariPool-8","registerMbeans":false,"allowPoolSuspension":false,"autoCommit":true,"isolateInternalQueries":false}
1 row in set (0.03 sec)
```
#### Query unused primary key generator
DistSQL can also display unused sharding key generators with the `SHOW UNUSED SHARDING KEY GENERATORS` :
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
+--------------------------+-----------+-------+
2 rows in set (0.00 sec)
mysql> SHOW UNUSED SHARDING KEY GENERATORS;
Empty set (0.01 sec)
mysql> CREATE SHARDING KEY GENERATOR useless (
    -> TYPE(NAME=SNOWFLAKE)
    -> );
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW UNUSED SHARDING KEY GENERATORS;
+---------+-----------+-------+
| name    | type      | props |
+---------+-----------+-------+
| useless | snowflake |       |
+---------+-----------+-------+
1 row in set (0.01 sec)
```
#### Query unused sharding algorithm
DistSQL can reveal unused sharding algorithms with (you guessed it) the `SHOW UNUSED SHARDING ALGORITHMS` command:
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
+--------------------------------+--------+-----------------------------------------------------+
5 rows in set (0.00 sec)
mysql> CREATE SHARDING ALGORITHM useless (
    -> TYPE(NAME=INLINE,PROPERTIES("algorithm-expression"="ds_${user_id % 2}"))
    -> );
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW UNUSED SHARDING ALGORITHMS;
+---------+--------+----------------------------------------+
| name    | type   | props                                  |
+---------+--------+----------------------------------------+
| useless | inline | algorithm-expression=ds_${user_id % 2} |
+---------+--------+----------------------------------------+
1 row in set (0.00 sec)
```
#### Query rules that use the target storage resources
You can also see used resources within rules with `SHOW RULES USED RESOURCE`. All rules that use a resource can be queried, not limited to the sharding rule.
```
mysql> DROP RESOURCE ds_0;
ERROR 1101 (C1101): Resource [ds_0] is still used by [ShardingRule].
mysql> SHOW RULES USED RESOURCE ds_0;
+----------+----------------+
| type     | name           |
+----------+----------------+
| sharding | t_order        |
| sharding | t_order_item   |
| sharding | t_order_detail |
+----------+----------------+
3 rows in set (0.00 sec)
```
#### Query sharding rules that use the target primary key generator
You can find sharding rules using a key generator with `SHOW SHARDING TABLE RULES USED KEY GENERATOR` :
```
mysql> SHOW SHARDING KEY GENERATORS;
+--------------------------+-----------+-------+
| name                     | type      | props |
+--------------------------+-----------+-------+
| snowflake_key_generator  | snowflake | {}    |
| t_order_detail_snowflake | snowflake | {}    |
| useless                  | snowflake | {}    |
+--------------------------+-----------+-------+
3 rows in set (0.00 sec)
mysql> DROP SHARDING KEY GENERATOR snowflake_key_generator;
ERROR 1121 (C1121): Sharding key generator `[snowflake_key_generator]` in database `sharding_db` are still in used.
mysql> SHOW SHARDING TABLE RULES USED KEY GENERATOR snowflake_key_generator;
+-------+--------------+
| type  | name         |
+-------+--------------+
| table | t_order      |
| table | t_order_item |
+-------+--------------+
2 rows in set (0.00 sec)
```
#### Query sharding rules that use the target algorithm
Show sharding rules using a target algorithm with `SHOW SHARDING TABLE RULES USED ALGORITHM` :
```
mysql> SHOW SHARDING ALGORITHMS;
+--------------------------------+--------+-----------------------------------------------------+
| name                           | type   | props                                               |
+--------------------------------+--------+-----------------------------------------------------+
| database_inline                | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_inline                 | inline | algorithm-expression=t_order_${order_id % 3}        |
| t_order_item_inline            | inline | algorithm-expression=t_order_item_${order_id % 3}   |
| t_order_detail_database_inline | inline | algorithm-expression=ds_${user_id % 2}              |
| t_order_detail_table_inline    | inline | algorithm-expression=t_order_detail_${order_id % 3} |
| useless                        | inline | algorithm-expression=ds_${user_id % 2}              |
+--------------------------------+--------+-----------------------------------------------------+
6 rows in set (0.00 sec)
mysql> DROP SHARDING ALGORITHM t_order_detail_table_inline;
ERROR 1116 (C1116): Sharding algorithms `[t_order_detail_table_inline]` in database `sharding_db` are still in used.
mysql> SHOW SHARDING TABLE RULES USED ALGORITHM t_order_detail_table_inline;
+-------+----------------+
| type  | name           |
+-------+----------------+
| table | t_order_detail |
+-------+----------------+
1 row in set (0.00 sec)
```
### Make sharding better
DistSQL provides a flexible syntax to help simplify operations. In addition to the **INLINE** algorithm, DistSQL supports standard sharding, compound sharding, HINT sharding, and custom sharding algorithms.
If you have any questions or suggestions about [Apache ShardingSphere][10], please feel free to post them on [ShardingSphereGitHub][11].
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/dynamic-distributed-database-distsql
作者:[Raigor Jiang][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/raigor
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/BIZ_darwincloud_520x292_0311LL.png
[2]: https://opensource.com/sites/default/files/2022-09/1sharding.png
[3]: https://opensource.com/sites/default/files/2022-09/2shardingsphere.png
[4]: https://shardingsphere.apache.org/document/5.1.2/en/overview/
[5]: https://zookeeper.apache.org/
[6]: https://medium.com/nerd-for-tech/intro-to-distsql-an-open-source-more-powerful-sql-bada4099211?source=your_stories_page-------------------------------------
[7]: https://medium.com/geekculture/autotable-your-butler-like-sharding-configuration-tool-9a45dbb7e285
[8]: https://shardingsphere.apache.org/document/current/en/features/sharding/concept/#distributed-primary-key
[9]: https://shardingsphere.apache.org/document/5.1.2/en/features/sharding/concept/sharding/
[10]: https://shardingsphere.apache.org/
[11]: https://github.com/apache/shardingsphere

View File

@ -0,0 +1,87 @@
[#]: subject: "Install JDBC on Linux in 3 steps"
[#]: via: "https://opensource.com/article/22/9/install-jdbc-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Install JDBC on Linux in 3 steps
======
Install Java, install JDBC with Maven, and install the database. Then you're ready to interact with databases in your Java code.
![What is your favorite open source Java IDE?][1]
Image by: Pixabay. CC0.
When you write an application, it's common to require data storage. Sometimes you're storing assets your application needs to function, and other times you're storing user data, including preferences and save data. One way to store data is in a database, and in order to communicate between your code and a database, you need a database binding or connector for your language. For Java, a common database connector is JDBC (Java database connectivity.)
### 1. Install Java
Of course, to develop with Java you must also have Java installed. I recommend [SDKman][2] for Linux, macOS, and WSL or Cygwin. For Windows, you can download OpenJDK from [developers.redhat.com][3].
### 2. Install JDBC with Maven
JDBC is an API, imported into your code with the statement `import java.sql.*`, but for it to be useful you must have a database driver and a database installed for it to interact with. The database driver you use and the database you want to communicate with must match: to interact with MySQL, you need a MySQL driver, to interact with SQLite3, you must have the SQLite3 driver, and so on.
For this article, I use [PostgreSQL][4], but all the major databases, including [MariaDB][5] and [SQLite3][6], have JDBC drivers.
You can download JDBC for PostgreSQL from [jdbc.postgresql.org][7]. I use [Maven][8] to manage Java dependencies, so I include it in `pom.xml` (adjusting the version number for what's current on [Maven Central][9]):
```
<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>42.5.0</version>
</dependency>
```
### 3. Install the database
You have to install the database you want to connect to through JDBC. There are several very good open source databases, but I had to choose one for this article, so I chose PostgreSQL.
To install PostgreSQL on Linux, use your software repository. On Fedora, CentOS, Mageia, and similar:
```
$ sudo dnf install postgresql postgresql-server
```
On Debian, Linux Mint, Elementary, and similar:
```
$ sudo apt install postgresql postgresql-contrib
```
### Database connectivity
If you're not using PostgreSQL, the same general process applies:
1. Install Java.
2. Find the JDBC driver for your database of choice and include it in your `pom.xml` file.
3. Install the database (server and client) on your development OS.
Three steps and you're ready to start writing code.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/9/install-jdbc-linux
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/java-coffee-mug.jpg
[2]: https://opensource.com/article/22/3/manage-java-versions-sdkman
[3]: https://developers.redhat.com/products/openjdk/download?intcmp=7013a000002qLH8AAM
[4]: http://LINK-TO-POSTGRESQL-INTRO-ARTICLE
[5]: https://www.redhat.com/sysadmin/mysql-mariadb-introduction
[6]: https://opensource.com/article/21/2/sqlite3-cheat-sheet
[7]: https://jdbc.postgresql.org/download.html
[8]: https://opensource.com/article/22/3/maven-manage-java-dependencies
[9]: https://mvnrepository.com/artifact/org.postgresql/postgresql