mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
260c13d88c
203
published/20200417 How to compress files on Linux 5 ways.md
Normal file
203
published/20200417 How to compress files on Linux 5 ways.md
Normal file
@ -0,0 +1,203 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12190-1.html)
|
||||
[#]: subject: (How to compress files on Linux 5 ways)
|
||||
[#]: via: (https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
在 Linux 上压缩文件的 5 种方法
|
||||
======
|
||||
|
||||
> 在 Linux 系统上有很多可以用于压缩文件的工具,但它们的表现并不都是一样的,也不是所有的压缩效果都是一样的。在这篇文章中,我们比较其中的五个工具。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202005/06/231536tgxma941yb8dgl53.jpg)
|
||||
|
||||
在 Linux 上有不少用于压缩文件的命令。最新最有效的一个方法是 `xz`,但是所有的方法都有节省磁盘空间和维护备份文件供以后使用的优点。在这篇文章中,我们将比较这些压缩命令并指出显著的不同。
|
||||
|
||||
### tar
|
||||
|
||||
`tar` 命令不是专门的压缩命令。它通常用于将多个文件拉入一个单个的文件中,以便容易地传输到另一个系统,或者将文件作为一个相关的组进行备份。它也提供压缩的功能,这就很有意义了,附加一个 `z` 压缩选项能够实现压缩文件。
|
||||
|
||||
当使用 `z` 选项为 `tar` 命令附加压缩过程时,`tar` 使用 `gzip` 来进行压缩。
|
||||
|
||||
就像压缩一组文件一样,你可以使用 `tar` 来压缩单个文件,尽管这种操作与直接使用 `gzip` 相比没有特别的优势。要使用 `tar` 这样做,只需要使用 `tar cfz newtarfile filename` 命令来标识要压缩的文件,就像标识一组文件一样,像这样:
|
||||
|
||||
```
|
||||
$ tar cfz bigfile.tgz bigfile
|
||||
^ ^
|
||||
| |
|
||||
+- 新的文件 +- 将被压缩的文件
|
||||
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile
|
||||
-rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
|
||||
```
|
||||
|
||||
注意,文件的大小显著减少了。
|
||||
|
||||
如果你愿意,你可以使用 `tar.gz` 扩展名,这可能会使文件的特征更加明显,但是大多数的 Linux 用户将很可能会意识到与 `tgz` 的意思是一样的 – `tar` 和 `gz` 的组合来显示文件是一个压缩的 tar 文件。在压缩完成后,你将同时得到原始文件和压缩文件。
|
||||
|
||||
要将很多文件收集在一起并在一个命令中压缩出 “tar ball”,使用相同的语法,但要指定要包含的文件为一组,而不是单个文件。这里有一个示例:
|
||||
|
||||
```
|
||||
$ tar cfz bin.tgz bin/*
|
||||
^ ^
|
||||
| +-- 将被包含的文件
|
||||
+ 新的文件
|
||||
```
|
||||
|
||||
### zip
|
||||
|
||||
`zip` 命令创建一个压缩文件,与此同时保留原始文件的完整性。语法像使用 `tar` 一样简单,只是你必需记住,你的原始文件名称应该是命令行上的最后一个参数。
|
||||
|
||||
```
|
||||
$ zip ./bigfile.zip bigfile
|
||||
updating: bigfile (deflated 79%)
|
||||
$ ls -l bigfile bigfile.zip
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile
|
||||
-rw-rw-r-- 1 shs shs 21606889 Apr 16 11:19 bigfile.zip
|
||||
```
|
||||
|
||||
### gzip
|
||||
|
||||
`gzip` 命令非常容易使用。你只需要键入 `gzip`,紧随其后的是你想要压缩的文件名称。不像上述描述的命令,`gzip` 将“就地”加密文件。换句话说,原始文件将被加密文件替换。
|
||||
|
||||
```
|
||||
$ gzip bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 21606751 Apr 15 17:57 bigfile.gz
|
||||
```
|
||||
|
||||
### bzip2
|
||||
|
||||
像使用 `gzip` 命令一样,`bzip2` 将在你选择的文件“就地”压缩,不留下原始文件。
|
||||
|
||||
```
|
||||
$ bzip bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 18115234 Apr 15 17:57 bigfile.bz2
|
||||
```
|
||||
|
||||
### xz
|
||||
|
||||
`xz` 是压缩命令团队中的一个相对较新的成员,在压缩文件的能力方面,它是一个领跑者。像先前的两个命令一样,你只需要将文件名称提供给命令。再强调一次,原始文件被就地压缩。
|
||||
|
||||
```
|
||||
$ xz bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz
|
||||
```
|
||||
|
||||
对于大文件来说,你可能会注意到 `xz` 将比其它的压缩命令花费更多的运行时间,但是压缩的结果却是非常令人赞叹的。
|
||||
|
||||
### 对比
|
||||
|
||||
大多数人都听说过“大小不是一切”。所以,让我们比较一下文件大小以及一些当你计划如何压缩文件时的问题。
|
||||
|
||||
下面显示的统计数据都与压缩单个文件相关,在上面显示的示例中使用 `bigfile`。这个文件是一个大的且相当随机的文本文件。压缩率在一定程度上取决于文件的内容。
|
||||
|
||||
#### 大小减缩率
|
||||
|
||||
当比较时,上面显示的各种压缩命产生下面的结果。百分比表示压缩文件与原始文件的比较效果。
|
||||
|
||||
```
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile
|
||||
------------------------------------------------------
|
||||
-rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2 ~17%
|
||||
-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz ~21%
|
||||
-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz ~21%
|
||||
-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz ~13%
|
||||
-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip ~21%
|
||||
```
|
||||
|
||||
`xz` 命令获胜,最终只有压缩文件 13% 的大小,但是所有这些压缩命令都相当显著地减少原始文件的大小。
|
||||
|
||||
#### 是否替换原始文件
|
||||
|
||||
`bzip2`、`gzip` 和 `xz` 命令都用压缩文件替换原始文件。`tar` 和 `zip` 命令不替换。
|
||||
|
||||
#### 运行时间
|
||||
|
||||
`xz` 命令似乎比其它命令需要花费更多的时间来加密文件。对于 `bigfile` 来说,大概的时间是:
|
||||
|
||||
```
|
||||
命令 运行时间
|
||||
tar 4.9 秒
|
||||
zip 5.2 秒
|
||||
bzip2 22.8 秒
|
||||
gzip 4.8 秒
|
||||
xz 50.4 秒
|
||||
```
|
||||
|
||||
解压缩文件很可能比压缩时间要短得多。
|
||||
|
||||
#### 文件权限
|
||||
|
||||
不管你对压缩文件设置什么权限,压缩文件的权限将基于你的 `umask` 设置,但 `bzip2` 除外,它保留了原始文件的权限。
|
||||
|
||||
#### 与 Windows 的兼容性
|
||||
|
||||
`zip` 命令创建的文件可以在 Windows 系统以及 Linux 和其他 Unix 系统上使用(即解压),而无需安装其他工具,无论这些工具可能是可用还是不可用的。
|
||||
|
||||
### 解压缩文件
|
||||
|
||||
解压文件的命令与压缩文件的命令类似。在我们运行上述压缩命令后,这些命令用于解压缩 `bigfile`:
|
||||
|
||||
* tar: `tar xf bigfile.tgz`
|
||||
* zip: `unzip bigfile.zip`
|
||||
* gzip: `gunzip bigfile.gz`
|
||||
* bzip2: `bunzip2 bigfile.gz2`
|
||||
* xz: `xz -d bigfile.xz` 或 `unxz bigfile.xz`
|
||||
|
||||
### 自己运行压缩对比
|
||||
|
||||
如果你想自己运行一些测试,抓取一个大的且可以替换的文件,并使用上面显示的每个命令来压缩它 —— 最好使用一个新的子目录。你可能需要先安装 `xz`,如果你想在测试中包含它的话。这个脚本可能更容易地进行压缩,但是可能需要花费几分钟完成。
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
|
||||
# 询问用户文件名称
|
||||
echo -n "filename> "
|
||||
read filename
|
||||
|
||||
# 你需要这个,因为一些命令将替换原始文件
|
||||
cp $filename $filename-2
|
||||
|
||||
# 先清理(以免先前的结果仍然可用)
|
||||
rm $filename.*
|
||||
|
||||
tar cvfz ./$filename.tgz $filename > /dev/null
|
||||
zip $filename.zip $filename > /dev/null
|
||||
bzip2 $filename
|
||||
# 恢复原始文件
|
||||
cp $filename-2 $filename
|
||||
gzip $filename
|
||||
# 恢复原始文件
|
||||
cp $filename-2 $filename
|
||||
xz $filename
|
||||
|
||||
# 显示结果
|
||||
ls -l $filename.*
|
||||
|
||||
# 替换原始文件
|
||||
mv $filename-2 $filename
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[robsean](https://github.com/robsean)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy)
|
||||
[2]: https://www.facebook.com/NetworkWorld/
|
||||
[3]: https://www.linkedin.com/company/network-world
|
@ -0,0 +1,78 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (IBM rolls Red Hat into edge, AI, hybrid-cloud expansion)
|
||||
[#]: via: (https://www.networkworld.com/article/3542409/ibm-rolls-red-hat-into-edge-ai-hybrid-cloud-expansion.html)
|
||||
[#]: author: (Michael Cooney https://www.networkworld.com/author/Michael-Cooney/)
|
||||
|
||||
IBM rolls Red Hat into edge, AI, hybrid-cloud expansion
|
||||
======
|
||||
Every company will be an AI company new IBM CEO Krishna tells Think! virtual gathering
|
||||
Getty
|
||||
|
||||
Deeply assimilating its Red Hat technology, IBM this week rolled out a set of new platforms and services designed to help customers manage edge-based application workloads and exploit artificial intelligence for infrastructure resiliency.
|
||||
|
||||
The announcements came at IBM’s virtualized Think! 2020 event that also featured the first Big Blue keynote by [the company's new CEO Arvind Krishna][1], during which he told the online audience about challenges of COVID-19: "History will look back on this as the moment when the digital transformation of business and society suddenly accelerated,” but also that [hybrid cloud and AI][2] are the two dominant forces driving digital transformation.
|
||||
|
||||
[Now see how AI can boost data-center availability and efficiency][3]
|
||||
|
||||
“More than 20 years ago, experts predicted every company would become an internet company. I am predicting today that every company will become an AI company, not because they can, but because they must,” he said.
|
||||
|
||||
With that idea in mind the company rolled out [IBM Watson AIOps][4], an application that uses AI to automate how enterprises detect, diagnose and respond to IT anomalies in real time. Watson AIOps works by grouping log anomalies and alerts based on spatial and temporal reasoning as well as similarity to past situations, IBM said. It uses IBM’s natural language processing technology to understand the content in trouble tickets to identify and extract resolution actions automatically.
|
||||
|
||||
Then it provides a pointer to where the problem is and identifies other services that might be affected. “It does this by showing details of the problem based on data from existing tools in the environment, all in the context of the application topology, distilling multiple signals into a succinct report” and eliminating the need for multiple dashboards, IBM stated.
|
||||
|
||||
AI can automate tasks like shifting traffic from one router to another, freeing up space on a drive, or restarting an application. AI systems can also be trained to self-correct, IBM stated.
|
||||
|
||||
“The problem is that many businesses are consumed with fixing problems after they occur, instead of preventing them before they happen. Watson AIOps relies on AI to solve and automate how enterprises self-detect, diagnose and respond to anomalies in real time,” Krishna said.
|
||||
|
||||
AIOps is built on the latest release of Red Hat OpenShift, supports Slack and Box, and can be integrated with IT-monitoring packages from Mattermost and ServiceNow, IBM stated.
|
||||
|
||||
The Kubernetes-based OpenShift Container Platform lets enterprise customers deploy and manage containers on their infrastructure of choice, be it private or public clouds, including AWS, Microsoft Azure, Google Cloud Platform, Alibaba and IBM Cloud. It also integrates with IBM prepackaged Cloud Paks, which include a secured Kubernetes container and containerized IBM middleware designed to let customers quickly spin-up enterprise-ready containers.
|
||||
|
||||
OpenShift is also the underlying package for a new version of its [edge network][5] management application called IBM Edge Application Manager. Based on the open source project [Open Horizon][6], the Edge Application Manager can use AI and analytics to help deploy and manage up to 10,000 edge nodes simultaneously by a single administrator. With the platform customers can remotely add new capabilities to a single-purpose device or automatically direct a device to use a variety of cloud-based resources depending on what resources it needs.
|
||||
|
||||
Cisco said it was working with the IBM Edge Application Manager to deploy apps and analytics models that run on a broad range of Cisco products, such as servers, its industrial portfolio of gateways, routers, switches, SD-WAN, and wireless-connectivity offerings for edge computing.
|
||||
|
||||
“As an example, IBM Edge Application Manager leverages [Cisco HyperFlex Edge][7] and Cisco IC3000 Industrial Compute Gateway servers. The HyperFlex Edge and IC3K platforms are specifically designed to support a number of edge use cases, such as optimizing traffic management, increasing manufacturing productivity, and increasing the safety of oil and gas pipelines,” Cisco [stated][8].
|
||||
|
||||
In addition, Cisco said it has used the capabilities in IBM Edge Application Manager to build an “Edge in a Box proposal,” where customers can deploy remote edge applications that run entirely disconnected from public or private clouds but are also synchronized and managed remotely in controlled connectivity windows. For instance, client edge locations may need to operate in disconnected mode but have the ability to synch up for automated application updates and data exchanges, Cisco stated.
|
||||
|
||||
Other edge-related announcements include:
|
||||
|
||||
* IBM [Edge Ecosystem][9], a group of industry players who will target open technology developments to let customers move data and applications between private data centers, hybrid multicloud environments and the edge. The group includes Cisco, Juniper, Samsung and NVIDIA among others. IBM said a Telco Network Cloud Ecosystem will serve a similar function for their network cloud platforms.
|
||||
* A preview of an upcoming service, called IBM Cloud Satellite. This will extend IBM’s public-cloud service to give customers the ability to use IBM Cloud anywhere – on-premises, in data centers or at the edge – delivered as a service that can be managed from a single pane of glass controlled through the public cloud. It lets customers run applications where it makes sense while utilizing cloud security and ops benefits, IBM stated. Satellite runs on Red Hat OpenShift.
|
||||
* Telco Network Cloud Manager – a telco/service provider offering that runs on Red Hat OpenShift to deliver intelligent automation capabilities to orchestrate virtual and container network functions in minutes. Service providers will have the ability to manage workloads on both Red Hat OpenShift and Red Hat OpenStack platforms, which will be critical as telcos increasingly look to modernize their networks for greater agility and efficiency, and to provide new services as 5G adoption expands, IBM stated.
|
||||
* New capabilities for some of its Cloud Paks including extending the Cloud Pak for Data to include the ability to better automate planning, budgeting and forecasting in [hybrid-cloud][10] environments. IBM upgraded tools for business routing and data capture to the Cloud Pak for Automation as well.
|
||||
|
||||
|
||||
|
||||
Join the Network World communities on [Facebook][11] and [LinkedIn][12] to comment on topics that are top of mind.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3542409/ibm-rolls-red-hat-into-edge-ai-hybrid-cloud-expansion.html
|
||||
|
||||
作者:[Michael Cooney][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Michael-Cooney/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.networkworld.com/article/3536654/ibm-taps-new-leaders-for-hybrid-cloud-battles-ahead.html
|
||||
[2]: https://www.infoworld.com/article/3541825/ibms-new-ceo-lays-out-his-roadmap.html
|
||||
[3]: https://www.networkworld.com/article/3274654/ai-boosts-data-center-availability-efficiency.html
|
||||
[4]: https://www.ibm.com/watson/assets/duo/pdf/WDDE814_IBM_Watson_AIOps_Web.pdf
|
||||
[5]: https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-it-s-changing-the-network.html
|
||||
[6]: https://developer.ibm.com/blogs/open-horizon-joins-linux-foundation-grow-open-edge-computing-platform/
|
||||
[7]: https://www.cisco.com/c/en/us/products/hyperconverged-infrastructure/index.html?dtid=oblgzzz001087
|
||||
[8]: https://blogs.cisco.com/partner/cisco-and-ibm-teaming-at-the-edge
|
||||
[9]: https://www.ibm.com/blogs/business-partners/join-the-edge-ecosystem/
|
||||
[10]: https://www.networkworld.com/article/3268448/what-is-hybrid-cloud-really-and-whats-the-best-strategy.html
|
||||
[11]: https://www.facebook.com/NetworkWorld/
|
||||
[12]: https://www.linkedin.com/company/network-world
|
@ -1,194 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (messon007)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Create a SDN on Linux with open source)
|
||||
[#]: via: (https://opensource.com/article/20/4/quagga-linux)
|
||||
[#]: author: (M Umer https://opensource.com/users/noisybotnet)
|
||||
|
||||
Create a SDN on Linux with open source
|
||||
======
|
||||
Make your Linux system act like a router with the open source routing
|
||||
stack Quagga.
|
||||
![Coding on a computer][1]
|
||||
|
||||
Network routing protocols fall into two main categories: interior gateway protocols and exterior gateway protocols. Interior gateway protocols are used by routers to share information within a single autonomous system. If you are running Linux, you can make your system behave as a router through the open source (GPLv2) routing stack [Quagga][2].
|
||||
|
||||
### What is Quagga?
|
||||
|
||||
Quagga is a [routing software suite][3] and a fork of [GNU Zebra][4]. It provides implementations of all major routing protocols such as Open Shortest Path First (OSPF), Routing Information Protocol (RIP), Border Gateway Protocol (BGP), and Intermediate System to Intermediate System (IS-IS) for Unix-like platforms.
|
||||
|
||||
Although Quagga implements the routing protocols for both IPv4 and IPv6, it doesn't act as a complete router. A true router not only implements all the routing protocols but also has the ability to forward network traffic. Quagga only implements the routing stack, and the job of forwarding network traffic is handled by the Linux kernel.
|
||||
|
||||
### Architecture
|
||||
|
||||
Quagga implements the different routing protocols through protocol-specific daemons. The daemon name is the same as the routing protocol followed by the letter "d." Zebra is the core and a protocol-independent daemon that provides an [abstraction layer][5] to the kernel and presents the Zserv API over TCP sockets to Quagga clients. Each protocol-specific daemon is responsible for running the relevant protocol and building the routing table based on the information exchanged.
|
||||
|
||||
![Quagga architecture][6]
|
||||
|
||||
### Setup
|
||||
|
||||
This tutorial implements the OSPF protocol to configure dynamic routing using Quagga. The setup includes two CentOS 7.7 hosts, named Alpha and Beta. Both hosts share access to the **192.168.122.0/24** network.
|
||||
|
||||
**Host Alpha:**
|
||||
|
||||
IP: 192.168.122.100/24
|
||||
Gateway: 192.168.122.1
|
||||
|
||||
**Host Beta:**
|
||||
|
||||
IP: 192.168.122.50/24
|
||||
Gateway: 192.168.122.1
|
||||
|
||||
### Install the package
|
||||
|
||||
First, install the Quagga package on both hosts. It is available in the CentOS base repo:
|
||||
|
||||
|
||||
```
|
||||
`yum install quagga -y`
|
||||
```
|
||||
|
||||
### Enable IP forwarding
|
||||
|
||||
Next, enable IP forwarding on both hosts since that will performed by the Linux kernel:
|
||||
|
||||
|
||||
```
|
||||
sysctl -w net.ipv4.ip_forward = 1
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
### Configuration
|
||||
|
||||
Now, go into the **/etc/quagga** directory and create the configuration files for your setup. You need three files:
|
||||
|
||||
* **zebra.conf**: Quagga's daemon configuration file, which is where you'll define the interfaces and their IP addresses and IP forwarding
|
||||
* **ospfd.conf**: The protocol configuration file, which is where you'll define the networks that will be offered through the OSPF protocol
|
||||
* **daemons**: Where you'll specify the relevant protocol daemons that are required to run
|
||||
|
||||
|
||||
|
||||
On host Alpha,
|
||||
|
||||
|
||||
```
|
||||
[root@alpha]# cat /etc/quagga/zebra.conf
|
||||
interface eth0
|
||||
ip address 192.168.122.100/24
|
||||
ipv6 nd suppress-ra
|
||||
interface eth1
|
||||
ip address 10.12.13.1/24
|
||||
ipv6 nd suppress-ra
|
||||
interface lo
|
||||
ip forwarding
|
||||
line vty
|
||||
|
||||
[root@alpha]# cat /etc/quagga/ospfd.conf
|
||||
interface eth0
|
||||
interface eth1
|
||||
interface lo
|
||||
router ospf
|
||||
network 192.168.122.0/24 area 0.0.0.0
|
||||
network 10.12.13.0/24 area 0.0.0.0
|
||||
line vty
|
||||
|
||||
[root@alphaa ~]# cat /etc/quagga/daemons
|
||||
zebra=yes
|
||||
ospfd=yes
|
||||
```
|
||||
|
||||
On host Beta,
|
||||
|
||||
|
||||
```
|
||||
[root@beta quagga]# cat zebra.conf
|
||||
interface eth0
|
||||
ip address 192.168.122.50/24
|
||||
ipv6 nd suppress-ra
|
||||
interface eth1
|
||||
ip address 10.10.10.1/24
|
||||
ipv6 nd suppress-ra
|
||||
interface lo
|
||||
ip forwarding
|
||||
line vty
|
||||
|
||||
[root@beta quagga]# cat ospfd.conf
|
||||
interface eth0
|
||||
interface eth1
|
||||
interface lo
|
||||
router ospf
|
||||
network 192.168.122.0/24 area 0.0.0.0
|
||||
network 10.10.10.0/24 area 0.0.0.0
|
||||
line vty
|
||||
|
||||
[root@beta ~]# cat /etc/quagga/daemons
|
||||
zebra=yes
|
||||
ospfd=yes
|
||||
```
|
||||
|
||||
### Configure the firewall
|
||||
|
||||
To use the OSPF protocol, you must allow it in the firewall:
|
||||
|
||||
|
||||
```
|
||||
firewall-cmd --add-protocol=ospf –permanent
|
||||
|
||||
firewall-cmd –reload
|
||||
```
|
||||
|
||||
Now, start the zebra and ospfd daemons.
|
||||
|
||||
|
||||
```
|
||||
# systemctl start zebra
|
||||
# systemctl start ospfd
|
||||
```
|
||||
|
||||
Look at the route table on both hosts using:
|
||||
|
||||
|
||||
```
|
||||
[root@alpha ~]# ip route show
|
||||
default via 192.168.122.1 dev eth0 proto static metric 100
|
||||
10.10.10.0/24 via 192.168.122.50 dev eth0 proto zebra metric 20
|
||||
10.12.13.0/24 dev eth1 proto kernel scope link src 10.12.13.1
|
||||
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100
|
||||
```
|
||||
|
||||
You can see that the routing table on Alpha contains an entry of **10.10.10.0/24** via **192.168.122.50** offered through protocol **zebra**. Similarly, on host Beta, the table contains an entry of network **10.12.13.0/24** via **192.168.122.100**.
|
||||
|
||||
|
||||
```
|
||||
[root@beta ~]# ip route show
|
||||
default via 192.168.122.1 dev eth0 proto static metric 100
|
||||
10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.1
|
||||
10.12.13.0/24 via 192.168.122.100 dev eth0 proto zebra metric 20
|
||||
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100
|
||||
```
|
||||
|
||||
### Conclusion
|
||||
|
||||
As you can see, the setup and configuration are relatively simple. To add complexity, you can add more network interfaces to the router to provide routing for more networks. You can also implement BGP and RIP protocols using the same method.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/4/quagga-linux
|
||||
|
||||
作者:[M Umer][a]
|
||||
选题:[lujun9972][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/noisybotnet
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_laptop_hack_work.png?itok=aSpcWkcl (Coding on a computer)
|
||||
[2]: https://www.quagga.net/
|
||||
[3]: https://en.wikipedia.org/wiki/Quagga_(software)
|
||||
[4]: https://www.gnu.org/software/zebra/
|
||||
[5]: https://en.wikipedia.org/wiki/Abstraction_layer
|
||||
[6]: https://opensource.com/sites/default/files/uploads/quagga_arch.png (Quagga architecture)
|
@ -1,99 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Upgrading Fedora 31 to Fedora 32)
|
||||
[#]: via: (https://fedoramagazine.org/upgrading-fedora-31-to-fedora-32/)
|
||||
[#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/)
|
||||
|
||||
Upgrading Fedora 31 to Fedora 32
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
Fedora 32 [is available now][2]. You’ll likely want to upgrade your system to get the latest features available in Fedora. Fedora Workstation has a graphical upgrade method. Alternatively, Fedora offers a command-line method for upgrading Fedora 30 to Fedora 31.
|
||||
|
||||
Before upgrading, visit the [wiki page of common Fedora 32 bugs][3] to see if there’s an issue that might affect your upgrade. Although the Fedora community tries to ensure upgrades work well, there’s no way to guarantee this for every combination of hardware and software that users might have.
|
||||
|
||||
### Upgrading Fedora 31 Workstation to Fedora 32
|
||||
|
||||
Soon after release time, a notification appears to tell you an upgrade is available. You can click the notification to launch the **GNOME Software** app. Or you can choose Software from GNOME Shell.
|
||||
|
||||
Choose the _Updates_ tab in GNOME Software and you should see a screen informing you that Fedora 32 is Now Available.
|
||||
|
||||
If you don’t see anything on this screen, try using the reload button at the top left. It may take some time after release for all systems to be able to see an upgrade available.
|
||||
|
||||
Choose _Download_ to fetch the upgrade packages. You can continue working until you reach a stopping point, and the download is complete. Then use GNOME Software to restart your system and apply the upgrade. Upgrading takes time, so you may want to grab a coffee and come back to the system later.
|
||||
|
||||
### Using the command line
|
||||
|
||||
If you’ve upgraded from past Fedora releases, you are likely familiar with the _dnf upgrade_ plugin. This method is the recommended and supported way to upgrade from Fedora 31 to Fedora 32. Using this plugin will make your upgrade to Fedora 32 simple and easy.
|
||||
|
||||
#### 1\. Update software and back up your system
|
||||
|
||||
Before you do start the upgrade process, make sure you have the latest software for Fedora 31. This is particularly important if you have modular software installed; the latest versions of dnf and GNOME Software include improvements to the upgrade process for some modular streams. To update your software, use _GNOME Software_ or enter the following command in a terminal.
|
||||
|
||||
```
|
||||
sudo dnf upgrade --refresh
|
||||
```
|
||||
|
||||
Additionally, make sure you back up your system before proceeding. For help with taking a backup, see [the backup series][4] on the Fedora Magazine.
|
||||
|
||||
#### 2\. Install the DNF plugin
|
||||
|
||||
Next, open a terminal and type the following command to install the plugin:
|
||||
|
||||
```
|
||||
sudo dnf install dnf-plugin-system-upgrade
|
||||
```
|
||||
|
||||
#### 3\. Start the update with DNF
|
||||
|
||||
Now that your system is up-to-date, backed up, and you have the DNF plugin installed, you can begin the upgrade by using the following command in a terminal:
|
||||
|
||||
```
|
||||
sudo dnf system-upgrade download --releasever=32
|
||||
```
|
||||
|
||||
This command will begin downloading all of the upgrades for your machine locally to prepare for the upgrade. If you have issues when upgrading because of packages without updates, broken dependencies, or retired packages, add the _‐‐allowerasing_ flag when typing the above command. This will allow DNF to remove packages that may be blocking your system upgrade.
|
||||
|
||||
#### 4\. Reboot and upgrade
|
||||
|
||||
Once the previous command finishes downloading all of the upgrades, your system will be ready for rebooting. To boot your system into the upgrade process, type the following command in a terminal:
|
||||
|
||||
```
|
||||
sudo dnf system-upgrade reboot
|
||||
```
|
||||
|
||||
Your system will restart after this. Many releases ago, the _fedup_ tool would create a new option on the kernel selection / boot screen. With the _dnf-plugin-system-upgrade_ package, your system reboots into the current kernel installed for Fedora 31; this is normal. Shortly after the kernel selection screen, your system begins the upgrade process.
|
||||
|
||||
Now might be a good time for a coffee break! Once it finishes, your system will restart and you’ll be able to log in to your newly upgraded Fedora 32 system.
|
||||
|
||||
![][5]
|
||||
|
||||
### Resolving upgrade problems
|
||||
|
||||
On occasion, there may be unexpected issues when you upgrade your system. If you experience any issues, please visit the [DNF system upgrade quick docs][6] for more information on troubleshooting.
|
||||
|
||||
If you are having issues upgrading and have third-party repositories installed on your system, you may need to disable these repositories while you are upgrading. For support with repositories not provided by Fedora, please contact the providers of the repositories.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/upgrading-fedora-31-to-fedora-32/
|
||||
|
||||
作者:[Adam Šamalík][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/asamalik/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2020/04/31-32-816x345.png
|
||||
[2]: https://fedoramagazine.org/announcing-fedora-32/
|
||||
[3]: https://fedoraproject.org/wiki/Common_F32_bugs
|
||||
[4]: https://fedoramagazine.org/taking-smart-backups-duplicity/
|
||||
[5]: https://cdn.fedoramagazine.org/wp-content/uploads/2016/06/Screenshot_f23-ws-upgrade-test_2016-06-10_110906-1024x768.png
|
||||
[6]: https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/#Resolving_post-upgrade_issues
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -1,124 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (lxbwolf)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Browse the Peer-to-peer Web With Beaker Browser)
|
||||
[#]: via: (https://itsfoss.com/beaker-browser/)
|
||||
[#]: author: (John Paul https://itsfoss.com/author/john/)
|
||||
|
||||
Browse the Peer-to-peer Web With Beaker Browser
|
||||
======
|
||||
|
||||
The Internet as we know it has existed unchanged (more or less) for the last 50 years. People across the globe use their devices to retrieve data from huge servers dotted around the world.
|
||||
|
||||
A group of dedicated technologists wants to change that to make the internet a place where people can connect and share information directly instead of relying on a central server (decentralization).
|
||||
|
||||
There are a bunch of such decentralized services that we have already covered on It’s FOSS. [LBRY as YouTube alternative][1], [Mastodon as Twitter alternative][2] are just a couple of such examples.
|
||||
|
||||
And today I am going to cover another such product called [Beaker Browser][3] which is essentially for browsing the peer to peer web.
|
||||
|
||||
![Beaker Browser][4]
|
||||
|
||||
### What is the ‘peer-to-peer Web’?
|
||||
|
||||
According to [one of the devs][5] behind the Beaker browser, “The P2P Web is an experimental set of technologies…to give users more control over the Web.”
|
||||
|
||||
Further, they say that the peer-to-peer Web has three main principles: anybody can be a server; multiple computers can serve the same site; there is no back end.
|
||||
|
||||
As you can see from those principles. the idea of the peer-to-peer Web is very similar to BitTorrent where files are seeded by multiple peers and those peers share the bandwidth load. This reduces the overall bandwidth that a person needs to provide for their site.
|
||||
|
||||
![Beaker Browser Settings][6]
|
||||
|
||||
The other major part of the peer-to-peer Web is creator control of their ideas. In this day and age, platforms being controlled by large corporations, who try to use your data for their benefit. Beaker returns control to the content creators.
|
||||
|
||||
### Browsing the decentralized web with Beaker
|
||||
|
||||
The [Beaker Browser][3] first came into existence in 2016. The project (and the technology that surrounds it) is created by a team of three at [Blue Link Labs][7]. The Beaker Browser uses the [Dat protocol][8] to share data between computers. All websites that use the Dat protocol start with `dat://` instead of `http://`.
|
||||
|
||||
The strengths of the Dat protocol are:
|
||||
|
||||
* Fast – Archives sync from multiple sources at once.
|
||||
* Secure – All updates are signed and integrity-checked.
|
||||
* Resilient – Archives can change hosts without changing their URLs.
|
||||
* Versioned – Changes are written to an append-only version log.
|
||||
* Decentralized – Any device can host any archive.
|
||||
|
||||
|
||||
|
||||
![Beaker Browser Seeding][9]
|
||||
|
||||
The Beaker Browser is essentially a cut down version of Chromium with built-in support for `dat://`addresses. It can still visit regular `http://` sites.
|
||||
|
||||
Each time you visit a dat site, the content for that site is downloaded to your computer as you request it. For example, a picture of Linux Torvalds on the about page of a site is not downloaded until you navigate to that page.
|
||||
|
||||
Also, once you visit a dat website, “[you temporarily][10] re-upload or seed whichever files you’ve downloaded from the website.” You can also choose to seed the website to help its creator.
|
||||
|
||||
![Beaker Browser Menu][11]
|
||||
|
||||
Since the whole idea of Beaker is to create a more open web, you can easily view the source of any website. Unlike most browsers where you just see the source code the current page, you are viewing, Beaker shows you the entire structure of the site in a GitHub-like view. You can even fork the site and host your version of it.
|
||||
|
||||
Besides visiting dat-based websites, you can also create your own site. In the Beaker Browser menu, there is an option to create a new website or an empty project. If you select the option to create a new website, Beaker will build a little demo site that you can edit with the browser’s built-in editor.
|
||||
|
||||
However, if you are like me and prefer to use Markdown, you can choose to create an empty project. Beaker will create the structure of a site and assign it a `dat://`address. Create an `index.md` file and you are good to go. There is a [short tutorial][12] with more info. You can also use the create empty project option to build a web app.
|
||||
|
||||
![Beaker Browser Website Template][13]
|
||||
|
||||
Since Beaker acts as a web server and site seeder, any time you close it or turn off your computer your site will become unavailable. Thankfully, you don’t have to run your computer or the browser constantly. You can also use a seeding service named [Hashbase][14] or you can set up a [`homebase`][15] seeding server.
|
||||
|
||||
Though Beaker is [available][16] for Linux, Windows, and macOS. If you do start playing around Beaker, be sure to take a quick look at [their gui][17][d][17][es][17].
|
||||
|
||||
### Beaker Browser is not for everyone but it has a purpose
|
||||
|
||||
When I first got this assignment, I had high hopes for the Beaker Browser. As it stands now, it’s still very experimental. A number of the dat sites that I tried to visit were unavailable because the user was not seeding their site. Beaker does have an option to notify you when that site is back online.
|
||||
|
||||
![Beaker Browser No Peer][18]
|
||||
|
||||
Another problem is that Beaker is a really stripped down version of Chromium. There is no option to install extensions or themes. Instead, you are stuck with a white theme and a very limited toolset. I would not use this as my main browser and having access to the world of dat websites is not enough of a reason to keep it installed on my system.
|
||||
|
||||
I looked to see if there is an extension for Firefox that would add support for the `dat://` protocol. I did find such an extension, but it also required the installation of a couple of other pieces of software. It’s just easier to install Beaker.
|
||||
|
||||
As it stands now, Beaker is not for me. Maybe in the future, more people will start using Beaker or the dat protocol will gain support by other browsers. Then it might be interesting. Right now, it’s kinda empty.
|
||||
|
||||
As part of my time with Beaker, I created a [website][19] using the built-in tools. Don’t worry, I made sure that it’s seeded.
|
||||
|
||||
![Beaker Bowser Site Source][20]
|
||||
|
||||
What are your thoughts on the Beaker Brower? What are your thoughts on the peer-to-peer web? Please let us know in the comments below.
|
||||
|
||||
If you found this article interesting, please take a minute to share it on social media, Hacker News, or [Reddit][21].
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/beaker-browser/
|
||||
|
||||
作者:[John Paul][a]
|
||||
选题:[lujun9972][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/john/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/lbry/
|
||||
[2]: https://itsfoss.com/mastodon-open-source-alternative-twitter/
|
||||
[3]: https://beakerbrowser.com/
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser.jpg?resize=800%2C426&ssl=1
|
||||
[5]: https://pfrazee.hashbase.io/blog/what-is-the-p2p-web
|
||||
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-setting.jpg?resize=800%2C573&ssl=1
|
||||
[7]: https://bluelinklabs.com/
|
||||
[8]: https://www.datprotocol.com/
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-seedding.jpg?resize=800%2C466&ssl=1
|
||||
[10]: https://beakerbrowser.com/docs/faq/
|
||||
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-menu.jpg?ssl=1
|
||||
[12]: https://beakerbrowser.com/docs/guides/create-a-markdown-site
|
||||
[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-website-template.jpg?resize=800%2C459&ssl=1
|
||||
[14]: https://hashbase.io/
|
||||
[15]: https://github.com/beakerbrowser/homebase
|
||||
[16]: https://beakerbrowser.com/install/
|
||||
[17]: https://beakerbrowser.com/docs/guides/
|
||||
[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-no-peer.jpg?resize=800%2C424&ssl=1
|
||||
[19]: https://41bfbd06731e8d9c5d5676e8145069c69b254e7a3b710ddda4f6e9804529690c/
|
||||
[20]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-source.jpg?resize=800%2C544&ssl=1
|
||||
[21]: https://reddit.com/r/linuxusersgroup
|
@ -0,0 +1,124 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (6 open source alternatives to Wunderlist)
|
||||
[#]: via: (https://opensource.com/article/20/5/alternatives-list)
|
||||
[#]: author: (Jen Wike Huger https://opensource.com/users/jen-wike)
|
||||
|
||||
6 open source alternatives to Wunderlist
|
||||
======
|
||||
Love lists? Check out this handy list of open source apps for managing
|
||||
all your lists!
|
||||
![a checklist for a team][1]
|
||||
|
||||
Wunderlist is an app for lists, loved by many, but gone for good as of May 6, 2020. The website encourages existing users to download and use Microsoft To Do in its place. That's tempting because it makes it easy to import all of those lists you've made over the years. Then again, maybe it's a chance to _Marie Kondo_ those lists and pare things down. Do you really need 30 lists? (Apparently, I've decided that I do, so I won't judge.)
|
||||
|
||||
I have lists for all sorts of things, from "Plants for the garden 2020" to "Gifts for the husband." Some are checklists, some are To Do lists, and some are lists for list's sake.
|
||||
|
||||
For my husband and me, the most useful list is our shared grocery list. We both have the app on our phones, we both add things to the list, we review it together but separately on our phones before he goes shopping (yes, you read that correctly), and he checks things off as he puts them in the cart. It makes the whole thing surprisingly efficient, and I think we save some money because we're into sticking to THE LIST.
|
||||
|
||||
While its users loved it, Wunderlist isn't entirely unique. There are a gazillion list apps out there. With Wunderlist, I've specifically enjoyed its combination of simplicity and design, and that it managed to implement useful features like sharing and collaboration with others, dynamics checkboxes for lists, and a great user experience across both mobile and web interfaces. I've also enjoyed using it for a list that isn't an "active" document: a list I don't review weekly or make regular progress on—like my many lists I've used for brainstorming an idea (including that novel I've been meaning to write...).
|
||||
|
||||
From the many wonderful articles we've published over the years, I've curated a list of open source alternatives to Wunderlist that may work for your needs, from simple task management and to-do lists to complex note-taking and process management. Or, if you are that person scribbling tasks and notes on paper scraps and post-it notes that are lying... er, around somewhere and everywhere... this might be a good time to try one of these digital options out.
|
||||
|
||||
### Tasks—works with OwnCloud
|
||||
|
||||
> Tasks is a free and open source app you can install from [F-droid][2]. Tasks is a mobile-only application, but it's extremely flexible in what it can sync to. You can save your lists to NextCloud or OwnCloud, Google Tasks, Apple Reminders, and just about any CalDAV server you have an account on.
|
||||
>
|
||||
> The default view of Tasks is a daily view, so any task you enter is assumed to be a task from today onward. If you're like me and you want to maintain several unique lists, you can do that with Tags. When you create a tag, you create a category for tasks. You can assign a colour and an icon so each list of tasks is unique.
|
||||
>
|
||||
> It takes a little getting used to, but tagging has many advantages. Because all tasks are tagged, you can view groups of tasks by clicking the tag you want to filter for, but you can also filter by day and even by place. That means that when you go grocery shopping, your grocery list becomes the active default list, and your everyday life list becomes active again when you return home.
|
||||
>
|
||||
> By syncing your data to one of your online accounts, you can share lists with loved ones, collaborators, and colleagues.
|
||||
>
|
||||
> Another great feature is that if you the same tasks every morning when you get to work, or the same 20 items in your weekly grocery list, you can create tasks that repeat on a regular basis.
|
||||
|
||||
Reviewed by Seth Kenlon
|
||||
|
||||
![Screenshot of Tasks interface][3]
|
||||
|
||||
### OpenTasks—best for long lists
|
||||
|
||||
> [OpenTasks][4] is an excellent task management tool for creating individual tasks with a wide variety of settings. It supports a wide range of fields when creating a task, ranging from basic things, such as name and description, to more complex items, such as choosing if the task is private, public, or confidential. The biggest thing that sets OpenTasks apart from the alternatives is its use of tabs on the app's main screen. These tabs quickly allow you to see the tasks due, tasks starting soon, tasks sorted by priority, and tasks sorted by current progress towards completion. Many of the other apps support doing things like these, but OpenTasks quickly easily accesses these lists.
|
||||
|
||||
[Read the full OpenTasks review][5] by Joshua Allen Holm
|
||||
|
||||
![OpenTasks in Google Play store][6]
|
||||
|
||||
### Mirakel—great for nested lists
|
||||
|
||||
> [Mirakel][7] is a task management app with a modern user interface and support for just about every format you might want in such a program. At Mirakel's basic level, it supports multiple lists, which are referred to as "meta lists." Creating an individual task has a plethora of options with deadlines, reminders, progress tracking, tags, notes, sub-tasks, and file attachments, all comprising a part of a task's entry.
|
||||
|
||||
[Read the full Mirakel review][5] by Joshua Allen Holm
|
||||
|
||||
![Screenshot from website of Mirakel app][8]
|
||||
|
||||
### Todo—simple and effective, works anywhere
|
||||
|
||||
> [Todo.txt][9] is one of the two to-do list and task management apps that I keep coming back to over and over again (the other is Org mode). And what keeps me coming back is that it is simple, portable, understandable, and has many great add-ons that don't break it if one machine has them and the others don't. And since it is a Bash shell script, I have never found a system that cannot support it. Read more about [how to install and use Todo.txt][10].
|
||||
|
||||
[Read the full todo.txt review][10] by Kevin Sonney
|
||||
|
||||
![Drop-down menu for Todo.txt][11]
|
||||
|
||||
Drop-down menu for Todo.txt
|
||||
|
||||
### Joplin—best for private lists
|
||||
|
||||
> [Joplin][12] is a NodeJS application that runs and stores information locally, allows you to encrypt your tasks and supports multiple sync methods. Joplin can run as a console or graphical application on Windows, Mac, and Linux. Joplin also has mobile apps for Android and iOS, meaning you can take your notes with you without a major hassle. Joplin even allows you to format your notes with Markdown, HTML, or plain text.
|
||||
|
||||
[Read the full Joplin review][13] by Kevin Sonney
|
||||
|
||||
![Joplin graphical version ][14]
|
||||
|
||||
### CherryTree—great alternative to Evernote / OneNote / Keep
|
||||
|
||||
> [CherryTree][15] is a GPLv3-licensed application that organizes information in nodes. Each node can have child nodes, allowing you to easily organize your lists and thoughts. And, child nodes can have their own children with independent properties.
|
||||
|
||||
[Read the full CherryTree review][16] by Ben Cotton
|
||||
|
||||
![CherryTree's hierarchical note layout][17]
|
||||
|
||||
### Bonus: Wekan—for fans of Kanban
|
||||
|
||||
> Kanban boards are a mainstay of today's agile processes. And many of us (myself included) use them to organize not just our work but also our personal lives. I know several artists who use apps like Trello to keep track of their commission lists as well as what's in progress and what's complete. But these apps are often linked to a work account or a commercial service. Enter [Wekan][18], an open source kanban board you can run locally or on the service of your choice. Wekan offers much of the same functionality as other Kanban apps, such as creating boards, lists, swimlanes, and cards, dragging and dropping between lists, assigning to users, labeling cards, and doing pretty much everything else you'd expect in a modern kanban board.
|
||||
|
||||
[Read the full Wekan review][19]* by Kevin Sonney*
|
||||
|
||||
![Wekan kanban board][20]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/5/alternatives-list
|
||||
|
||||
作者:[Jen Wike Huger][a]
|
||||
选题:[lujun9972][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/jen-wike
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/checklist_hands_team_collaboration.png?itok=u82QepPk (a checklist for a team)
|
||||
[2]: https://f-droid.org/en/packages/org.tasks/
|
||||
[3]: https://opensource.com/sites/default/files/uploads/screenshot_tasks_resized.jpg (Screenshot of Tasks interface)
|
||||
[4]: https://play.google.com/store/apps/details?id=org.dmfs.tasks
|
||||
[5]: https://opensource.com/article/17/1/task-management-time-tracking-android
|
||||
[6]: https://opensource.com/sites/default/files/uploads/opentasks_rezied.jpg (OpenTasks in Google Play store)
|
||||
[7]: https://mirakel.azapps.de/
|
||||
[8]: https://opensource.com/sites/default/files/uploads/mirakel_web_resized.jpg (Screenshot from website of Mirakel app)
|
||||
[9]: http://todotxt.org/
|
||||
[10]: https://opensource.com/article/20/1/open-source-to-do-list
|
||||
[11]: https://opensource.com/sites/default/files/uploads/todo.txtmenu_3.png (Drop-down menu for Todo.txt)
|
||||
[12]: https://joplin.cozic.net/
|
||||
[13]: https://opensource.com/article/19/1/productivity-tool-joplin
|
||||
[14]: https://opensource.com/sites/default/files/uploads/joplin-1.png (Joplin graphical version )
|
||||
[15]: https://www.giuspen.com/cherrytree/
|
||||
[16]: https://opensource.com/article/19/5/cherrytree-notetaking
|
||||
[17]: https://opensource.com/sites/default/files/uploads/cherrytree.png (CherryTree's hierarchical note layout)
|
||||
[18]: https://wekan.github.io/
|
||||
[19]: https://opensource.com/article/19/1/productivity-tool-wekan
|
||||
[20]: https://opensource.com/sites/default/files/uploads/wekan-board.png (Wekan kanban board)
|
@ -0,0 +1,85 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Customizing my open source PHP framework for web development)
|
||||
[#]: via: (https://opensource.com/article/20/5/codeignitor)
|
||||
[#]: author: (Wee Ben Sen https://opensource.com/users/bswee14)
|
||||
|
||||
Customizing my open source PHP framework for web development
|
||||
======
|
||||
Codeignitor is a PHP framework that empowers companies to develop
|
||||
high-performance websites with flexibility and ease.
|
||||
![Business woman on laptop sitting in front of window][1]
|
||||
|
||||
PHP Codeignitor is an open source framework providing business applications with the easy-to-use PHP programming language and powerful tools for coding. It also provides business intelligence, server monitoring, development, and application integration facilities. It's a relatively quiet project that you don't hear much about, but it's got a lot going for it that many developers new to it find surprising and refreshing.
|
||||
|
||||
I use [Codeignitor][2] at my job working for an online tuition service provider in Singapore. We offer services that aren't common enough to be the default feature set for templates or existing back-ends, so I need something that provides good, solid, raw materials I can build upon. Initially, I was considering other platforms such as Wordpress for our website; however, I arrived at Codeignitor due to its flexibility and integration of functions needed in the tuition-matching process.
|
||||
|
||||
Here are the points that sold me on Codeignitor:
|
||||
|
||||
* Database integration with MySQL—A major functionality is allowing clients to browse the tutor database and add tutors like a "shopping cart" similar to an e-commerce platform.
|
||||
* Client interface system—Users can log in to manage preferences and edit their particulars, modify subject taught, areas traveled, mobile number, address, etc.
|
||||
* Customized administrator panel—The administrator can access the client's submission with a customized admin panel, which is integrated with a customer service feature so the administrator can follow up individually.
|
||||
* Payment system—The admin panel comes with an invoice and payments gateway, which is integrated with Paypal.
|
||||
* CMS editor interface—The administrator is able to edit text and images in the blog and subject pages, as well as add new pages.
|
||||
|
||||
|
||||
|
||||
The project took around six months to complete and another two months of debugging work. If I'd had to build all of it from scratch or try to rework an existing framework to suit our needs, it would have taken longer, and I probably wouldn't have ended up with what I needed for the demands of our customers.
|
||||
|
||||
### Features and benefits
|
||||
|
||||
There are many more features that draw developers to PHP Codeignitor, including error handling and code formatting, which are useful in every coding situation. It supports templates, which can be used to add functionality to an existing website or to generate new ones. There are many features available for a business that needs to use a web-based system, including the ability to use custom tags. Most can be used by even an average developer who does not have any prior experience in programming.
|
||||
|
||||
The key features of Codeignitor are:
|
||||
|
||||
* XML core services,
|
||||
* HTTP/FTP core services
|
||||
* AppData and PHP sandbox features
|
||||
* XSLT and HTML templates
|
||||
* Encrypted information transfer
|
||||
* PCM Codeignitor server monitoring
|
||||
* Application integration
|
||||
* File Transfer Protocol (FTP)
|
||||
* Help desk support
|
||||
* Apache POI (content management infrastructure used for hosting a website)
|
||||
|
||||
|
||||
|
||||
#### Compatibility
|
||||
|
||||
Codeignitor is compatible with many leading software applications like PHP, MySQL, [MariaDB][3], [phpMyAdmin][4], [Apache][5], OpenBSD, XSLT, [SQLite][6], and more. A number of companies prefer to use Codeignitor products for their website requirements because they are easy to work with and integrate. If you're not comfortable creating your own website, you can find many developers and design agencies that provide custom web development services.
|
||||
|
||||
#### Security
|
||||
|
||||
Codeignitor also provides data security through SSL encryption. The encryption protects the data from external threats such as intruders and firewalls. The data storage facility also allows for security audits of the company's website.
|
||||
|
||||
#### Other features
|
||||
|
||||
A good PHP web development company uses several advanced and third-party technologies such as XML and PHP. It provides organizations with a complete platform to develop professional-looking, useful websites with a business application. Codeignitor makes it easy to use third party technology, and works with common web development software. This allows web agencies to easily create websites with their chosen modules. Most PHP developers offer support and training services for individuals, as well.
|
||||
|
||||
### Using PHP framework Codeignitor
|
||||
|
||||
Codeignitor allows businesses to have a complete package for PHP development that will offer the right combination of power, flexibility, and performance. So far, I am very pleased with our website and I have continuously upgraded and added new features along the way. I look forward to discovering what else I can do with our website using Codeignitor. Could it be right for you too?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/5/codeignitor
|
||||
|
||||
作者:[Wee Ben Sen][a]
|
||||
选题:[lujun9972][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/bswee14
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-concentration-focus-windows-office.png?itok=-8E2ihcF (Woman using laptop concentrating)
|
||||
[2]: https://codeigniter.com/
|
||||
[3]: http://mariadb.org/
|
||||
[4]: https://www.phpmyadmin.net/
|
||||
[5]: http://apache.org/
|
||||
[6]: http://sqlite.org/
|
@ -0,0 +1,212 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Managing Git projects with submodules and subtrees)
|
||||
[#]: via: (https://opensource.com/article/20/5/git-submodules-subtrees)
|
||||
[#]: author: (Manaswini Das https://opensource.com/users/manaswinidas)
|
||||
|
||||
Managing Git projects with submodules and subtrees
|
||||
======
|
||||
Submodules and subtrees help you manage child projects across multiple
|
||||
repositories.
|
||||
![Digital creative of a browser on the internet][1]
|
||||
|
||||
If you are into open source development, you have probably worked with Git to manage source code. You might have come across projects with numerous dependencies and/or sub-projects. How do you manage them?
|
||||
|
||||
For an open source organization, it can be tricky to achieve single-source documentation and dependency management for the community _and_ the product. The documentation and project often end up fragmented and redundant, which makes them difficult to maintain.
|
||||
|
||||
### The need
|
||||
|
||||
Suppose you want to use a single project as a child project inside a repository. The traditional method is just to copy the project to the parent repository. But, what if you want to use the same child project in many parent repositories? It wouldn't be feasible to copy the child project into every parent and have to make changes in all of them whenever you update it. This would create redundancy and inconsistency in the parent repositories and make it difficult to update and maintain the child project.
|
||||
|
||||
### Git submodules and subtrees
|
||||
|
||||
What if you could put one project within another using a single command? What if you could just add the project as a child to any number of projects and push changes on the go, whenever you want to? Git provides solutions for this: Git submodules and Git subtrees. These tools were created to support code-sharing development workflows on a more modular level, aspiring to bridge the gap between the Git repository's source-code management (SCM) and the sub-repos within it.
|
||||
|
||||
![Cherry tree growing on a mulberry tree][2]
|
||||
|
||||
Cherry tree growing on a mulberry tree
|
||||
|
||||
This is a real-life scenario of the concepts this article will cover in detail. If you're already familiar with trees, here is what this model will look like:
|
||||
|
||||
![Tree with subtrees][3]
|
||||
|
||||
CC BY-SA opensource.com
|
||||
|
||||
### What are Git submodules?
|
||||
|
||||
Git provides submodules in its default package that enable Git repositories to be nested within other repositories. To be precise, the Git submodule points to a specific commit on the child repository. Here is what Git submodules look like in my [Docs-test][4] GitHub repo:
|
||||
|
||||
![Git submodules screenshot][5]
|
||||
|
||||
The format **[folder@commitId][6]** indicates that the repository is a submodule, and you can directly click on the folder to go to the child repository. The config file called **.gitmodules** contains all the submodule repository details. My repo's **.gitmodules** file looks like this:
|
||||
|
||||
![Screenshot of .gitmodules file][7]
|
||||
|
||||
You can use the following commands to use Git submodules in your repositories.
|
||||
|
||||
#### Clone a repository and load submodules
|
||||
|
||||
To clone a repository containing submodules:
|
||||
|
||||
|
||||
```
|
||||
`$ git clone --recursive <URL to Git repo>`
|
||||
```
|
||||
|
||||
If you have already cloned a repository and want to load its submodules:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule update --init`
|
||||
```
|
||||
|
||||
If there are nested submodules:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule update --init --recursive`
|
||||
```
|
||||
|
||||
#### Download submodules
|
||||
|
||||
Downloading submodules sequentially can be a tedious task, so **clone** and **submodule update** will support the **\--jobs** or **-j** parameter.
|
||||
|
||||
For example, to download eight submodules at once, use:
|
||||
|
||||
|
||||
```
|
||||
$ git submodule update --init --recursive -j 8
|
||||
$ git clone --recursive --jobs 8 <URL to Git repo>
|
||||
```
|
||||
|
||||
#### Pull submodules
|
||||
|
||||
Before running or building the parent repository, you have to make sure that the child dependencies are up to date.
|
||||
|
||||
To pull all changes in submodules:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule update --remote`
|
||||
```
|
||||
|
||||
#### Create repositories with submodules
|
||||
|
||||
To add a child repository to a parent repository:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule add <URL to Git repo>`
|
||||
```
|
||||
|
||||
To initialize an existing Git submodule:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule init`
|
||||
```
|
||||
|
||||
You can also create branches and track commits in your submodules by adding **\--update** to your **submodule update** command:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule update --remote`
|
||||
```
|
||||
|
||||
#### Update submodule commits
|
||||
|
||||
As explained above, a submodule is a link that points to a specific commit in the child repository. If you want to update the commit of the submodule, don't worry. You don't need to specify the latest commit explicitly. You can just use the general **submodule update** command:
|
||||
|
||||
|
||||
```
|
||||
`$ git submodule update`
|
||||
```
|
||||
|
||||
Just add and commit as you normally would to create and push the parent repository to GitHub.
|
||||
|
||||
#### Delete a submodule from a parent repository
|
||||
|
||||
Merely deleting a child project folder manually won't remove the child project from the parent repository. To delete a submodule named **childmodule**, use:
|
||||
|
||||
|
||||
```
|
||||
`$ git rm -f childmodule`
|
||||
```
|
||||
|
||||
Although Git submodules may appear easy to work with, it can be difficult for beginners to find their way around them.
|
||||
|
||||
### What are Git subtrees?
|
||||
|
||||
Git subtrees, introduced in Git 1.7.11, allow you to insert a copy of any repository as a subdirectory of another one. It is one of several ways Git projects can inject and manage project dependencies. It stores the external dependencies in regular commits. Git subtrees provide clean integration points, so they're easier to revert.
|
||||
|
||||
If you use the [subtrees tutorial provided by GitHub][8] to use subtrees, you won't see a **.gittrees** config file in your local whenever you add a subtree. This makes it difficult to recognize subtrees because subtrees look like general folders, but they are copies of the child repository. The version of Git subtree with the **.gittrees** config file is not available with the default Git package, so to get the git-subtree with **.gittrees** config file, you must download git-subtree from the [**/contrib/subtree** folder][9] in the Git source repository.
|
||||
|
||||
You can clone any repository containing subtrees, just like any other general repository, but it may take longer because entire copies of the child repository reside in the parent repository.
|
||||
|
||||
You can use the following commands to use Git subtrees in your repositories.
|
||||
|
||||
#### Add a subtree to a parent repository
|
||||
|
||||
To add a new subtree to a parent repository, you first need to **remote add** it and then run the **subtree add** command, like:
|
||||
|
||||
|
||||
```
|
||||
$ git remote add remote-name <URL to Git repo>
|
||||
$ git subtree add --prefix=folder/ remote-name <URL to Git repo> subtree-branchname
|
||||
```
|
||||
|
||||
This merges the whole child project's commit history to the parent repository.
|
||||
|
||||
#### Push and pull changes to and from the subtree
|
||||
|
||||
|
||||
```
|
||||
`$ git subtree push-all`
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
|
||||
```
|
||||
`$ git subtree pull-all`
|
||||
```
|
||||
|
||||
### Which should you use?
|
||||
|
||||
Every tool has pros and cons. Here are some features that may help you decide which is best for your use case.
|
||||
|
||||
* Git submodules have a smaller repository size since they are just links that point to a specific commit in the child project, whereas Git subtrees house the entire child project along with its history.
|
||||
* Git submodules need to be accessible in a server, but subtrees are decentralized.
|
||||
* Git submodules are mostly used in component-based development, whereas Git subtrees are used in system-based development.
|
||||
|
||||
|
||||
|
||||
A Git subtree isn't a direct alternative to a Git submodule. There are certain caveats that guide where each can be used. If there is an external repository you own and are likely to push code back to, use Git submodule since it is easier to push. If you have third-party code that you are unlikely to push to, use Git subtree since it is easier to pull.
|
||||
|
||||
Give Git subtrees and submodules a try and let me know how it goes in the comments.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/5/git-submodules-subtrees
|
||||
|
||||
作者:[Manaswini Das][a]
|
||||
选题:[lujun9972][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/manaswinidas
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/browser_web_internet_website.png?itok=g5B_Bw62 (Digital creative of a browser on the internet)
|
||||
[2]: https://opensource.com/sites/default/files/uploads/640px-bialbero_di_casorzo.jpg (Cherry tree growing on a mulberry tree)
|
||||
[3]: https://opensource.com/sites/default/files/subtree_0.png (Tree with subtrees)
|
||||
[4]: https://github.com/manaswinidas/Docs-test/
|
||||
[5]: https://opensource.com/sites/default/files/uploads/git-submodules_github.png (Git submodules screenshot)
|
||||
[6]: mailto:folder@commitId
|
||||
[7]: https://opensource.com/sites/default/files/uploads/gitmodules.png (Screenshot of .gitmodules file)
|
||||
[8]: https://help.github.com/en/github/using-git/about-git-subtree-merges
|
||||
[9]: https://github.com/git/git/tree/master/contrib/subtree
|
@ -0,0 +1,311 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Speed up administration of Kubernetes clusters with k9s)
|
||||
[#]: via: (https://opensource.com/article/20/5/kubernetes-administration)
|
||||
[#]: author: (Jessica Cherry https://opensource.com/users/cherrybomb)
|
||||
|
||||
Speed up administration of Kubernetes clusters with k9s
|
||||
======
|
||||
Check out this cool terminal UI for Kubernetes administration.
|
||||
![Dogs playing chess][1]
|
||||
|
||||
Usually, my articles about Kubernetes administration are full of kubectl commands for administration for your clusters. Recently, however, someone pointed me to the [k9s][2] project for a fast way to review and resolve day-to-day issues in Kubernetes. It's been a huge improvement to my workflow and I'll show you how to get started in this tutorial.
|
||||
|
||||
Installation can be done on a Mac, in Windows, and Linux. Instructions for each operating system can be found [here][2]. Be sure to complete installation to be able to follow along.
|
||||
|
||||
I will be using Linux and Minikube, which is a lightweight way to run Kubernetes on a personal computer. Install it following [this tutorial][3] or by using the [documentation][4].
|
||||
|
||||
### Setting the k9s configuration file
|
||||
|
||||
Once you've installed the k9s app, it's always good to start with the help command.
|
||||
|
||||
|
||||
```
|
||||
$ k9s help
|
||||
K9s is a CLI to view and manage your Kubernetes clusters.
|
||||
|
||||
Usage:
|
||||
k9s [flags]
|
||||
k9s [command]
|
||||
|
||||
Available Commands:
|
||||
help Help about any command
|
||||
info Print configuration info
|
||||
version Print version/build info
|
||||
|
||||
Flags:
|
||||
-A, --all-namespaces Launch K9s in all namespaces
|
||||
--as string Username to impersonate for the operation
|
||||
--as-group stringArray Group to impersonate for the operation
|
||||
--certificate-authority string Path to a cert file for the certificate authority
|
||||
--client-certificate string Path to a client certificate file for TLS
|
||||
--client-key string Path to a client key file for TLS
|
||||
--cluster string The name of the kubeconfig cluster to use
|
||||
-c, --command string Specify the default command to view when the application launches
|
||||
--context string The name of the kubeconfig context to use
|
||||
--demo Enable demo mode to show keyboard commands
|
||||
--headless Turn K9s header off
|
||||
-h, --help help for k9s
|
||||
--insecure-skip-tls-verify If true, the server's caCertFile will not be checked for validity
|
||||
--kubeconfig string Path to the kubeconfig file to use for CLI requests
|
||||
-l, --logLevel string Specify a log level (info, warn, debug, error, fatal, panic, trace) (default "info")
|
||||
-n, --namespace string If present, the namespace scope for this CLI request
|
||||
--readonly Disable all commands that modify the cluster
|
||||
-r, --refresh int Specify the default refresh rate as an integer (sec) (default 2)
|
||||
--request-timeout string The length of time to wait before giving up on a single server request
|
||||
--token string Bearer token for authentication to the API server
|
||||
--user string The name of the kubeconfig user to use
|
||||
|
||||
Use "k9s [command] --help" for more information about a command.
|
||||
```
|
||||
|
||||
As you can see, there is a lot of functionality we can configure with k9s. The only step we need to take place to get off the ground is to write a configuration file. The **info** command will point us to where the application is looking for it.
|
||||
|
||||
|
||||
```
|
||||
$ k9s info
|
||||
____ __.________
|
||||
| |/ _/ __ \\______
|
||||
| < \\____ / ___/
|
||||
| | \ / /\\___ \
|
||||
|____|__ \ /____//____ >
|
||||
\/ \/
|
||||
|
||||
Configuration: /Users/jess/.k9s/config.yml
|
||||
Logs: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-jess.log
|
||||
Screen Dumps: /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-screens-jess
|
||||
```
|
||||
|
||||
By default, k9s expects a configuration file and will fail to run without one. The command will return without any message, but if we look at the log file we see an error.
|
||||
|
||||
|
||||
```
|
||||
$ tail -1 /var/folders/5l/c1y1gcw97szdywgf9rk1100m0000gn/T/k9s-mbbroberg.log
|
||||
10:56AM FTL Unable to connect to api server error="Missing or incomplete configuration info. Please point to an existing, complete config file:\n\n 1. Via the command-line flag --kubeconfig\n 2. Via the KUBECONFIG environment variable\n 3. In your home directory as ~/.kube/config\n\nTo view or setup config directly use the 'config' command."
|
||||
```
|
||||
|
||||
To add a file, make the directory if it doesn't already exist and then add one.
|
||||
|
||||
|
||||
```
|
||||
$ mkdir -p ~/.k9s/
|
||||
$ touch ~/.k9s/config.yml
|
||||
```
|
||||
|
||||
For this introduction, we will use the default config.yml recommendations from the k9s repository. The maintainers note that this format is subject to change, so we can [check here][5] for the latest version.
|
||||
|
||||
|
||||
```
|
||||
k9s:
|
||||
refreshRate: 2
|
||||
headless: false
|
||||
readOnly: false
|
||||
noIcons: false
|
||||
logger:
|
||||
tail: 200
|
||||
buffer: 500
|
||||
sinceSeconds: 300
|
||||
fullScreenLogs: false
|
||||
textWrap: false
|
||||
showTime: false
|
||||
currentContext: minikube
|
||||
currentCluster: minikube
|
||||
clusters:
|
||||
minikube:
|
||||
namespace:
|
||||
active: ""
|
||||
favorites:
|
||||
- all
|
||||
- kube-system
|
||||
- default
|
||||
view:
|
||||
active: dp
|
||||
thresholds:
|
||||
cpu:
|
||||
critical: 90
|
||||
warn: 70
|
||||
memory:
|
||||
critical: 90
|
||||
warn: 70
|
||||
```
|
||||
|
||||
We set k9s to look for a local minikube configuration, so I'm going to confirm minikube is online and ready to go.
|
||||
|
||||
|
||||
```
|
||||
$ minikube status
|
||||
host: Running
|
||||
kubelet: Running
|
||||
apiserver: Running
|
||||
kubeconfig: Configured
|
||||
```
|
||||
|
||||
### Running k9s to explore a Kubernetes cluster
|
||||
|
||||
### With a configuration file set and pointing at our local cluster, we can now run the **k9s** command.
|
||||
|
||||
|
||||
```
|
||||
`$ k9s`
|
||||
```
|
||||
|
||||
Once you start it up, the k9s text-based user interface (UI) will pop up. With no flag for a namespace, it will show you the pods in the default namespace.
|
||||
|
||||
![K9s screenshot][6]
|
||||
|
||||
If you run in an environment with a lot of pods, the default view can be overwhelming. Alternatively, we can focus on a given namespace. Exit the application and run **k9s -n <namespace>** where _<namespace>_ is an existing namespace. In the picture below, I ran **k9s -n minecraft,** and it shows my broken pod
|
||||
|
||||
![K9s screenshot][7]
|
||||
|
||||
So once you have k9s up and running, there are a bunch of things you can do quickly.
|
||||
|
||||
Navigating k9s happens through shortcut keys. We can always use arrow keys and the enter key to choose items listed. There are quite a few other universal keystrokes to navigate to different views:
|
||||
|
||||
* **0**—Show all pods in all namespaces
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][8]
|
||||
|
||||
* **d**—Describe the selected pod
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][9]
|
||||
|
||||
* **l**—Show logs for the selected pod pod
|
||||
|
||||
|
||||
|
||||
![Using k9s to show Kubernetes pod logs][10]
|
||||
|
||||
You may notice that k9s is set to use [Vim command keys][11], including moving up and down using **J** and **K** keys. Good luck exiting, emacs users :)
|
||||
|
||||
### Viewing different Kubernetes resources quickly
|
||||
|
||||
Need to get to something that's not a pod? Yea I do too. There are a number of shortcuts that are available when we enter a colon (":") key. From there, you can use the following commands to navigate around there.
|
||||
|
||||
* **:svc**—Jump to a services view.
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][12]
|
||||
|
||||
* **:deploy**—Jump to a deployment view.
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][13]
|
||||
|
||||
* **:rb**—Jump to a Rolebindings view for [role-based access control (RBAC)][14] management.
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][15]
|
||||
|
||||
* **:namespace**—Jump back to the namespaces view.
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][16]
|
||||
|
||||
* **:cj**—Jump to the cronjobs view to see what jobs are scheduled in the cluster.
|
||||
|
||||
|
||||
|
||||
![K9s screenshot][17]
|
||||
|
||||
The most used tool for this application will be the keyboard; to go up or down on any page, use the arrow keys. If you need to quit, remember to use Vim keybindings. Type **:q** and hit enter to leave.
|
||||
|
||||
### Example of troubleshooting Kubernetes with k9s
|
||||
|
||||
How does k9s help when something goes wrong? To walk through an example, I let several pods die due to misconfiguration. Below you can see my terrible hello deployment that's crashing. Once we highlight it, we press **d** to run a _describe_ command to see what is causing the failure.
|
||||
|
||||
![K9s screenshot][18]
|
||||
|
||||
![K9s screenshot][19]
|
||||
|
||||
Skimming the events does not tell us a reason for the failure. Next, I hit the **esc** key and go check the logs by highlighting the pod and entering **<shift-l>**.
|
||||
|
||||
![K9s screenshot][20]
|
||||
|
||||
Unfortunately, the logs don't offer anything helpful either (probably because the deployment was never correctly configured), and the pod will not come up.
|
||||
|
||||
I then **esc** to step back out, and I will see if deleting the pod will take care of this issue. To do so, I highlight the pod and use **<ctrl-d>**. Thankfully, k9s prompts users before deletion.
|
||||
|
||||
![K9s screenshot][21]
|
||||
|
||||
While I did delete the pod, the deployment resource still exists, so a new pod will come back up. It will also continue to restart and crash for whatever reason (we don't know yet).
|
||||
|
||||
Here is the point where I would repeat reviewing logs, describing resources, and use the **e** shortcut to even edit a running pod to troubleshoot the behavior. In this particular case, the failing pod is not configured to run in this environment. So let's delete the deployment to stop crash-then-reboot loop we are in.
|
||||
|
||||
We can get to deployments by typing **:deploy** and clicking enter. From there we highlight and press **<ctrl-d>** to delete.
|
||||
|
||||
![K9s screenshot][22]
|
||||
|
||||
![K9s screenshot][23]
|
||||
|
||||
And poof the deployment is gone! It only took a few keystrokes to clean up this failed deployment.
|
||||
|
||||
### k9s is incredibly customizable
|
||||
|
||||
So this application has a ton of customization options, down to the color scheme of the UI. Here are a few editable options you may be interested in:
|
||||
|
||||
* Adjust where you put the config.yml file (so you can store it in [version control][24])
|
||||
* Add [custom aliases][25] to an **alias.yml** file
|
||||
* Create [custom hotkeys][26] in a **hotkey.yml** file
|
||||
* Explore available [plugins][27] or write your own
|
||||
|
||||
|
||||
|
||||
The entire application is configured in YAML files, so customization will feel familiar to any Kubernetes administrator.
|
||||
|
||||
### Simplify your life with k9s
|
||||
|
||||
I'm prone to administrating over my team's systems in a very manual way, more for brain training than anything else. When I first heard about k9s, I thought, "This is just lazy Kubernetes," so I dismissed it and went back to doing my manual intervention everywhere. I actually started using it daily while working through my backlog, and I was blown away at how much faster it was to use than kubectl alone. Now I'm a convert.
|
||||
|
||||
It's important to know your tools and master the "hard way" of doing something. It is also important to remember, as far as administration goes, it's important to work smarter, not harder. Using k9s is the way I live up to that objective. I guess we can call it lazy Kubernetes administration, and that's okay.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/5/kubernetes-administration
|
||||
|
||||
作者:[Jessica Cherry][a]
|
||||
选题:[lujun9972][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/cherrybomb
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/game-dogs-chess-play-lead.png?itok=NAuhav4Z (Dogs playing chess)
|
||||
[2]: https://github.com/derailed/k9s
|
||||
[3]: https://opensource.com/article/18/10/getting-started-minikube
|
||||
[4]: https://kubernetes.io/docs/tasks/tools/install-minikube/
|
||||
[5]: https://github.com/derailed/k9s#k9s-configuration
|
||||
[6]: https://opensource.com/sites/default/files/uploads/k9s_1.png (K9s screenshot)
|
||||
[7]: https://opensource.com/sites/default/files/uploads/k9s_2.png (K9s screenshot)
|
||||
[8]: https://opensource.com/sites/default/files/uploads/k9s_3.png (K9s screenshot)
|
||||
[9]: https://opensource.com/sites/default/files/uploads/k9s_5_0.png (K9s screenshot)
|
||||
[10]: https://opensource.com/sites/default/files/uploads/k9s-show-logs-opensourcedotcom.png (Using k9s to show Kubernetes pod logs)
|
||||
[11]: https://opensource.com/article/19/3/getting-started-vim
|
||||
[12]: https://opensource.com/sites/default/files/uploads/k9s_5.png (K9s screenshot)
|
||||
[13]: https://opensource.com/sites/default/files/uploads/k9s_6.png (K9s screenshot)
|
||||
[14]: https://kubernetes.io/docs/reference/access-authn-authz/rbac/
|
||||
[15]: https://opensource.com/sites/default/files/uploads/k9s_7.png (K9s screenshot)
|
||||
[16]: https://opensource.com/sites/default/files/uploads/k9s_8.png (K9s screenshot)
|
||||
[17]: https://opensource.com/sites/default/files/uploads/k9s_9.png (K9s screenshot)
|
||||
[18]: https://opensource.com/sites/default/files/uploads/k9s_10.png (K9s screenshot)
|
||||
[19]: https://opensource.com/sites/default/files/uploads/k9s_11.png (K9s screenshot)
|
||||
[20]: https://opensource.com/sites/default/files/uploads/k9s_12.png (K9s screenshot)
|
||||
[21]: https://opensource.com/sites/default/files/uploads/k9s_13.png (K9s screenshot)
|
||||
[22]: https://opensource.com/sites/default/files/uploads/k9s_14.png (K9s screenshot)
|
||||
[23]: https://opensource.com/sites/default/files/uploads/k9s_15.png (K9s screenshot)
|
||||
[24]: https://opensource.com/article/19/3/move-your-dotfiles-version-control
|
||||
[25]: https://k9scli.io/topics/aliases/
|
||||
[26]: https://k9scli.io/topics/hotkeys/
|
||||
[27]: https://github.com/derailed/k9s/tree/master/plugins
|
@ -0,0 +1,157 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Ubuntu Cinnamon Remix 20.04 Review: The Perfect Blend of Ubuntu With Cinnamon)
|
||||
[#]: via: (https://itsfoss.com/ubuntu-cinnamon-remix-review/)
|
||||
[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/)
|
||||
|
||||
Ubuntu Cinnamon Remix 20.04 Review: The Perfect Blend of Ubuntu With Cinnamon
|
||||
======
|
||||
|
||||
GNOME 3 was introduced in 2011, and the GNOME Shell immediately generated both positive and negative responses. Many users and developers liked the original GNOME interface enough that a few groups forked it and one of those, Linux Mint team, created the [Cinnamon desktop environment][1].
|
||||
|
||||
The Cinnamon desktop became the identity of Linux Mint. For years, Cinnamon has been synonymous to [Linux Mint][2]. It has changed slightly in the past few years as the popularity for Cinnamon grew. Now other distributions have also started offering Cinnamon desktop environment. [Manjaro][3] is one such example.
|
||||
|
||||
A few months back, we introduced you to a [new Ubuntu flavor that provides an out of the box Cinnamon desktop experience][4]. let’s take a deeper look at [Ubuntu Cinnamon Remix][5] today.
|
||||
|
||||
### Why Ubuntu Cinnamon Remix and not Linux Mint?
|
||||
|
||||
It is true that Linux Mint is based on Ubuntu and Many Linux Mint users will have the question: Does it make any sense to switch over to Ubuntu as Linux Mint is such a mature project and the user experience will remain more or less the same?
|
||||
|
||||
Ubuntu Cinnamon Remix has a number of small differences from Linux Mint, but has has one key difference that a Linux enthusiast can’t ignore.
|
||||
|
||||
Linux Mint is based on “LTS” (Long-Term Support) versions of Ubuntu, meaning it stays behind the Canonical’s 6-month update cadence. Ubuntu Cinnamon Remix benefits from a newer kernel to other 6-month cycle feature upgrade and more recent software.
|
||||
|
||||
Another key difference is that Ubuntu Cinnamon Remix will “inherit” [Snap support][6], and Linux Mint embraces [FlatPak][7]. Ubuntu Cinnamon Remix uses Ubuntu Software Center instead of Mint Software Manager.
|
||||
|
||||
That said, I am a huge fan of Cinnamon. So I chose to review this mix of Ubuntu and Cinnamon and here I share my experience with it.
|
||||
|
||||
### Experiencing Ubuntu Cinnamon Remix
|
||||
|
||||
By any chance given, I will always mention how fast [Calamares installer][8] is and thanks to Ubuntu Cinnamon Remix Team for choosing so.
|
||||
|
||||
![Calamares Installer][9]
|
||||
|
||||
A fresh installation of Ubuntu Cinnamon Remix consumes approximately 750 MB of RAM. This is very similar to Linux Mint Cinnamon.
|
||||
|
||||
![An idle Cinnamon takes 750 MB of RAM][10]
|
||||
|
||||
I was also impressed by the beautiful [Kimmo theme][11] and the orange toned Ubuntu wallpaper which seems to be a result of a very meticulous effort.
|
||||
|
||||
![Ubuntu Cinammon Remix 20.04 Desktop][12]
|
||||
|
||||
#### Enough tools to get you started
|
||||
|
||||
As with any other Ubuntu distribution, Ubuntu Cinnamon Remix is packed with the essential productivity tools, to name a few:
|
||||
|
||||
* Firefox Web Browser
|
||||
* Thunderbird – Email Client
|
||||
* LibreOffice suite
|
||||
* Celluloid – Multimedia player
|
||||
* [GIMP][13] – Image processing software
|
||||
* Synaptic Package Manager
|
||||
* Gnome Software Center
|
||||
* [Gparted][14] – Partition Manager
|
||||
|
||||
|
||||
|
||||
Using Ubuntu Cinnamon Remix as my main runner for a few days, fulfilled my high expectations. Ubuntu is rock-solid stable, very fast and I didn’t face a single issue at my day to day tasks.
|
||||
|
||||
#### Ubuntu for Linux Mint Lovers
|
||||
|
||||
Are you enthusiastic about Ubuntu Cinnamon but got used to Linux Mint theme? Click below to see how you can get a full Linux Mint theme pack and how to configure it to keep the Ubuntu heritage.
|
||||
|
||||
Give Ubuntu Cinnamon Remix the real Mint touch
|
||||
|
||||
Firstly you have to download and unpack the following, easily done via terminal.
|
||||
|
||||
**Get the Linux Mint-X icon pack**
|
||||
|
||||
```
|
||||
wget http://packages.linuxmint.com/pool/main/m/mint-x-icons/mint-x-icons_1.5.5_all.deb
|
||||
```
|
||||
|
||||
**Get the Linux Mint-Y icon pack**
|
||||
|
||||
```
|
||||
wget http://packages.linuxmint.com/pool/main/m/mint-y-icons/mint-y-icons_1.3.9_all.deb
|
||||
```
|
||||
|
||||
**Get the Linux Mint Themes**
|
||||
|
||||
```
|
||||
wget http://packages.linuxmint.com/pool/main/m/mint-themes/mint-themes_1.8.4_all.deb
|
||||
```
|
||||
|
||||
**Install the downloaded content**
|
||||
|
||||
```
|
||||
sudo dpkg -i ./mint-x-icons_1.5.5_all.deb ./mint-y-icons_1.3.9_all.deb ./mint-themes_1.8.4_all.deb
|
||||
```
|
||||
|
||||
When done, click on the Menu button at the bottom left corner and type themes. You can also find themes in system settings.
|
||||
|
||||
![Accessing Themes][15]
|
||||
|
||||
Once opened replace the kimmo icons and theme as shown below. The Linux Mint default “Green” is the plain Mint-Y but the orange colour is a perfect selection for Ubuntu.
|
||||
|
||||
![Linux Mint Theme Settings][16]
|
||||
|
||||
#### A treat for Cinnamon fans
|
||||
|
||||
Let’s accept it, aesthetics are important. Cinnamon has a clean and elegant look, easy to read fonts and nice colour contrast themes. Cinnamon offers an uncluttered desktop with easily configured desktop icons simply by accessing the Desktop menu under System Settings. You can also choose the desktop icons to be shown only on the primary monitor, only on secondary monitor, or on both. This also applies to a beyond two monitor setup.
|
||||
|
||||
![Ubuntu Cinnamon Remix Desklets][17]
|
||||
|
||||
Desklets and applets are small, single-purpose applications that can be added to your desktop or your panel respectively. The most commonly used among the many you can choose are CPU or resources monitor, a weather applet, sticky notes, and calendar.
|
||||
|
||||
The Cinnamon Control Center provides centralized access to many of the desktop configuration options. By accessing the themes section you can choose the desktop basic scheme and icons, window borders, mouse pointers, and controls look. Fonts can have a great impact on the overall desktop look and cinnamon makes the change easier than ever.
|
||||
|
||||
The Cinnamon Control Center makes the configuration simple enough for a new user, compared to KDE Plasma that can lead a new user to confusion, due to the massive number of configuration options.
|
||||
|
||||
![][18]
|
||||
|
||||
The Cinnamon Panel contains the menu used to launch programs, a basic system tray, and an application selector. The panel is easy to configure and adding new program launchers is simply done by locating the program you want to add in the main Menu, right click on the icon and select “Add to panel.” You can also add the launcher icon to the desktop, and to the Cinnamon “Favourites” launcher bar. If you don’t like the order of the icons at your panel, just right click at the panel bar, enter panel’s Edit mode and rearrange the icons.
|
||||
|
||||
#### **Conclusions**
|
||||
|
||||
Whether you decide to “spice” up your desktop or thinking to move from [Windows to Linux][19], the Cinnamon Community has made plenty of spices for you.
|
||||
|
||||
Traditional yet elegant, customizable but simple, Ubuntu Cinnamon Remix is an interesting project with a promising future, and for existing fans of the Cinnamon Desktop who love Ubuntu, this is probably a no-brainer.
|
||||
|
||||
What do you think of Ubuntu Cinnamon Remix? Have you used it already?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/ubuntu-cinnamon-remix-review/
|
||||
|
||||
作者:[Dimitrios Savvopoulos][a]
|
||||
选题:[lujun9972][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/dimitrios/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://en.wikipedia.org/wiki/Cinnamon_(desktop_environment)
|
||||
[2]: https://www.linuxmint.com/
|
||||
[3]: https://manjaro.org/
|
||||
[4]: https://itsfoss.com/ubuntudde/
|
||||
[5]: https://ubuntucinnamon.org/
|
||||
[6]: https://snapcraft.io/
|
||||
[7]: https://flatpak.org/
|
||||
[8]: https://calamares.io/
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/Calamares-Installer.png?resize=800%2C426&ssl=1
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/htop-running-on-Ubuntu-Cinnamon-Remix-20.04.png?ssl=1
|
||||
[11]: https://github.com/Ubuntu-Cinnamon-Remix/kimmo-gtk-theme
|
||||
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/Ubuntu-Cinammon-Remix-20.04-desktop.png?resize=800%2C450&ssl=1
|
||||
[13]: https://itsfoss.com/gimp-2-10-release/
|
||||
[14]: https://itsfoss.com/gparted/
|
||||
[15]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/accessing-themes.png?ssl=1
|
||||
[16]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/Linux-Mint-theme-settings.png?ssl=1
|
||||
[17]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-cinnamon-remix-desklets.jpg?fit=800%2C450&ssl=1
|
||||
[18]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-cinnamon-control.jpg?fit=800%2C450&ssl=1
|
||||
[19]: https://itsfoss.com/windows-like-linux-distributions/
|
@ -0,0 +1,71 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Ubuntu Studio To Replace Xfce With KDE Plasma Desktop Environment)
|
||||
[#]: via: (https://itsfoss.com/ubuntu-studio-opts-for-kde/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Ubuntu Studio To Replace Xfce With KDE Plasma Desktop Environment
|
||||
======
|
||||
|
||||
[Ubuntu Studio][1] is a popular [official flavour of Ubuntu][2] tailored for creative content creators involved in audio production, video, graphics, photography, and book publishing. It offers a lot of multimedia content creation applications out of the box with the best possible experience.
|
||||
|
||||
After the recent 20.04 LTS release, the Ubuntu Studio team highlighted something very important in their [official announcement][3]. And, probably not everyone noticed the key information i.e Ubuntu Studio’s future.
|
||||
|
||||
Ubuntu Studio 20.04 will be the last version to ship with the [Xfce desktop environment][4]. All the future releases will be using [KDE Plasma][5] instead.
|
||||
|
||||
### Why is Ubuntu Studio ditching XFCE?
|
||||
|
||||
![][6]
|
||||
|
||||
As per their clarification, Ubuntu Studio isn’t focused on any particular look/feel but aims to provide the best user experience possible. And, KDE proves to be a better option.
|
||||
|
||||
> Plasma has proven to have better tools for graphics artists and photographers, as can be seen in Gwenview, Krita, and even the file manager Dolphin. Additionally, it has Wacom tablet support better than any other desktop environment.
|
||||
|
||||
> It has become so good that the majority of the Ubuntu Studio team is now using Kubuntu with Ubuntu Studio added-on via Ubuntu Studio Installer as their daily driver. With so many of us using Plasma, the timing just seems right to focus on a transition to Plasma with our next release.
|
||||
|
||||
Of course every desktop environment has been tailored for something different. And, here, they think that KDE Plasma will be the most suitable desktop environment replacing XFCE to provide a better user experience to all the users.
|
||||
|
||||
While I’m not sure how the users will react to this as every user has a different set of preferences. If the existing users won’t have a problem with KDE, it isn’t going to be a big deal.
|
||||
|
||||
It is worth noting that Ubuntu Studio also mentioned why KDE is potentially a superior choice for them:
|
||||
|
||||
> The Plasma desktop environment has, without Akonadi, become just as light in resource usage as Xfce, perhaps even lighter. Other audio-focused Linux distributions, such as Fedora Jam and KXStudio, have historically used the KDE Plasma desktop environment and done well with the audio.
|
||||
|
||||
Also, they’ve highlighted [an article by Jason Evangelho at Forbes][7] where some benchmarks reveal that KDE is almost as light as Xfce. Even though that’s a good sign – we still have to wait for the users to test-drive the KDE-powered Ubuntu Studio. Only then we’ll be able to observe whether Ubuntu Studio’s decision to ditch XFCE desktop environment was the right thing to do.
|
||||
|
||||
### What will change for Ubuntu Studio users after this change?
|
||||
|
||||
The overall workflow may get affected (or improve) moving forward with KDE on Ubuntu Studio 20.10 and later.
|
||||
|
||||
However, the upgrade process (from 20.04 to 20.10) will result in broken systems. So, a fresh install of Ubuntu Studio 20.10 or later versions will be the only way to go.
|
||||
|
||||
They’ve also mentioned that they will be constantly evaluating for any duplication with the pre-installed apps. So, I believe more details will follow in the coming days.
|
||||
|
||||
Ubuntu Studio is second distribution that has changed its main desktop environment in recent times. Earlier, [Lubuntu][8] switched to LXQt from LXDE.
|
||||
|
||||
What do you think about this change? Feel free to share your thoughts in the comments below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/ubuntu-studio-opts-for-kde/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][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/lujun9972
|
||||
[1]: https://ubuntustudio.org/
|
||||
[2]: https://itsfoss.com/which-ubuntu-install/
|
||||
[3]: https://ubuntustudio.org/2020/04/ubuntu-studio-20-04-lts-released/
|
||||
[4]: https://xfce.org
|
||||
[5]: https://kde.org/plasma-desktop
|
||||
[6]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/05/ubuntu-studio-kde-xfce.jpg?ssl=1
|
||||
[7]: https://www.forbes.com/sites/jasonevangelho/2019/10/23/bold-prediction-kde-will-steal-the-lightweight-linux-desktop-crown-in-2020
|
||||
[8]: https://itsfoss.com/lubuntu-20-04-review/
|
@ -0,0 +1,184 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (messon007)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Create a SDN on Linux with open source)
|
||||
[#]: via: (https://opensource.com/article/20/4/quagga-linux)
|
||||
[#]: author: (M Umer https://opensource.com/users/noisybotnet)
|
||||
|
||||
在Linux上使用开源代码创建SDN
|
||||
======
|
||||
使用开源路由协议栈Quagga,使您的Linux系统成为一台路由器。
|
||||
![Coding on a computer][1]
|
||||
|
||||
网络路由协议分为两大类:内部网关协议和外部网关协议。路由器使用内部网关协议在单个自治系统内共享信息。如果您用的是Linux,则可以通过开源(GPLv2)路由协议栈[Quagga][2]使其表现得像一台路由器。
|
||||
|
||||
### Quagga是什么?
|
||||
|
||||
Quagga是[路由软件包][3],并且是[GNU Zebra][4]的一个分支。它为类Unix平台提供了所有主流路由协议的实现,例如开放最短路径优先(OSPF),路由信息协议(RIP),边界网关协议(BGP)和中间系统到中间系统协议(IS-IS)。
|
||||
|
||||
尽管Quagga为IPv4和IPv6都实现了路由协议,但它却不是一个完整的路由器。真正的路由器不仅实现了所有路由协议,而且还有转发网络流量的能力。 Quagga仅仅实现了路由协议栈,而转发网络流量的工作由Linux内核处理。
|
||||
|
||||
### 架构
|
||||
|
||||
Quagga通过协议特定的守护程序实现不同的路由协议。守护程序名称与路由协议相同,加了字母“d”作为后缀。Zebra是核心的协议无关的守护进程,它为内核提供了一个[抽象层][5],并通过TCP套接字向Quagga客户端提供Zserv API。每个协议特定的守护程序负责运行相关的协议并基于交换的信息来建立路由表。
|
||||
|
||||
![Quagga architecture][6]
|
||||
|
||||
### 环境
|
||||
|
||||
本教程通过Quagga实现的OSPF协议来配置动态路由。该环境包括两个名为Alpha和Beta的CentOS 7.7主机。两台主机共享访问 **192.168.122.0/24** 网络。
|
||||
|
||||
**主机Alpha**
|
||||
|
||||
IP:192.168.122.100/24
|
||||
网关:192.168.122.1
|
||||
|
||||
**主机Beta**
|
||||
|
||||
IP:192.168.122.50/24
|
||||
网关:192.168.122.1
|
||||
|
||||
### 安装软件包
|
||||
|
||||
首先,在两台主机上安装Quagga软件包。它存在于CentOS基础仓库中:
|
||||
|
||||
```
|
||||
`yum install quagga -y`
|
||||
```
|
||||
|
||||
### 使能IP转发
|
||||
|
||||
接下来,在两台主机上使能IP转发,因为它将由Linux内核来执行:
|
||||
|
||||
```
|
||||
sysctl -w net.ipv4.ip_forward = 1
|
||||
sysctl -p
|
||||
```
|
||||
|
||||
### 配置
|
||||
|
||||
现在,进入 **/etc/quagga** 目录并为您的设置创建配置文件。您需要三个文件:
|
||||
|
||||
* **zebra.conf**:Quagga的守护程序配置文件,您可以在其中定义接口及其IP地址和IP转发
|
||||
* **ospfd.conf**:协议配置文件,您可以在其中定义将通过OSPF协议提供的网络
|
||||
* **守护程序**:您将在其中指定需要运行的相关的协议守护程序
|
||||
|
||||
|
||||
在主机Alpha上,
|
||||
|
||||
```
|
||||
[root@alpha]# cat /etc/quagga/zebra.conf
|
||||
interface eth0
|
||||
ip address 192.168.122.100/24
|
||||
ipv6 nd suppress-ra
|
||||
interface eth1
|
||||
ip address 10.12.13.1/24
|
||||
ipv6 nd suppress-ra
|
||||
interface lo
|
||||
ip forwarding
|
||||
line vty
|
||||
|
||||
[root@alpha]# cat /etc/quagga/ospfd.conf
|
||||
interface eth0
|
||||
interface eth1
|
||||
interface lo
|
||||
router ospf
|
||||
network 192.168.122.0/24 area 0.0.0.0
|
||||
network 10.12.13.0/24 area 0.0.0.0
|
||||
line vty
|
||||
|
||||
[root@alphaa ~]# cat /etc/quagga/daemons
|
||||
zebra=yes
|
||||
ospfd=yes
|
||||
```
|
||||
|
||||
在主机Beta上,
|
||||
|
||||
```
|
||||
[root@beta quagga]# cat zebra.conf
|
||||
interface eth0
|
||||
ip address 192.168.122.50/24
|
||||
ipv6 nd suppress-ra
|
||||
interface eth1
|
||||
ip address 10.10.10.1/24
|
||||
ipv6 nd suppress-ra
|
||||
interface lo
|
||||
ip forwarding
|
||||
line vty
|
||||
|
||||
[root@beta quagga]# cat ospfd.conf
|
||||
interface eth0
|
||||
interface eth1
|
||||
interface lo
|
||||
router ospf
|
||||
network 192.168.122.0/24 area 0.0.0.0
|
||||
network 10.10.10.0/24 area 0.0.0.0
|
||||
line vty
|
||||
|
||||
[root@beta ~]# cat /etc/quagga/daemons
|
||||
zebra=yes
|
||||
ospfd=yes
|
||||
```
|
||||
|
||||
### 配置防火墙
|
||||
|
||||
要使用OSPF协议,必须允许它通过防火墙:
|
||||
|
||||
```
|
||||
firewall-cmd --add-protocol=ospf –permanent
|
||||
|
||||
firewall-cmd –reload
|
||||
```
|
||||
|
||||
现在,启动zebra和ospfd守护程序。
|
||||
|
||||
```
|
||||
# systemctl start zebra
|
||||
# systemctl start ospfd
|
||||
```
|
||||
|
||||
用下面命令在两个主机上查看路由表:
|
||||
|
||||
```
|
||||
[root@alpha ~]# ip route show
|
||||
default via 192.168.122.1 dev eth0 proto static metric 100
|
||||
10.10.10.0/24 via 192.168.122.50 dev eth0 proto zebra metric 20
|
||||
10.12.13.0/24 dev eth1 proto kernel scope link src 10.12.13.1
|
||||
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.100 metric 100
|
||||
```
|
||||
|
||||
您可以看到Alpha上的路由表包含通过 **192.168.122.50** 到达 **10.10.10.0/24** 的条目,它是通过协议 **zebra** 获取的。同样,在主机Beta上,该表包含通过 **192.168.122.100** 到达网络 **10.12.13.0/24** 的条目。
|
||||
|
||||
```
|
||||
[root@beta ~]# ip route show
|
||||
default via 192.168.122.1 dev eth0 proto static metric 100
|
||||
10.10.10.0/24 dev eth1 proto kernel scope link src 10.10.10.1
|
||||
10.12.13.0/24 via 192.168.122.100 dev eth0 proto zebra metric 20
|
||||
192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.50 metric 100
|
||||
```
|
||||
|
||||
### 结论
|
||||
|
||||
如您所见,环境和配置相对简单。要增加复杂性,您可以向路由器添加更多网络接口,以为更多网络提供路由。您也可以使用相同的方法来实现BGP和RIP协议。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/4/quagga-linux
|
||||
|
||||
作者:[M Umer][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[messon007](https://github.com/messon007)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/noisybotnet
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/code_computer_laptop_hack_work.png?itok=aSpcWkcl (Coding on a computer)
|
||||
[2]: https://www.quagga.net/
|
||||
[3]: https://en.wikipedia.org/wiki/Quagga_(software)
|
||||
[4]: https://www.gnu.org/software/zebra/
|
||||
[5]: https://en.wikipedia.org/wiki/Abstraction_layer
|
||||
[6]: https://opensource.com/sites/default/files/uploads/quagga_arch.png (Quagga architecture)
|
@ -1,207 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (robsean)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to compress files on Linux 5 ways)
|
||||
[#]: via: (https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html)
|
||||
[#]: author: (Sandra Henry-Stocker https://www.networkworld.com/author/Sandra-Henry_Stocker/)
|
||||
|
||||
在 Linux 上压缩文件的 5 种方法
|
||||
======
|
||||
在 Linux 系统上有很多可以用于压缩文件的工具,但是它们表现的行为或产生相同程度的压缩等级并不相同,在这篇文章中,我们比较其中的五个工具。
|
||||
Getty Images
|
||||
|
||||
在 Linux 上有不少用于压缩文件的命令。最新最有效的一个方法是 **xz** ,但是所有的方法都有节省磁盘空间和为后期使用维护备份文件的优点。在这篇文章中,我们将比较压缩命令并指出显著的不同 。
|
||||
|
||||
### tar
|
||||
|
||||
tar 命令不是专门的压缩命令。它通常用于将多个文件拉入一单个文件中,以便容易地传输到另一个系统,或者备份文件为一个相关的组。它也提供压缩作为一个功能,这是很明智的,附加的 **z** 压缩选项能够实现压缩文件。
|
||||
|
||||
当压缩过程被附加到一个使用 **z** 选项的 **tar** 命令时,tar 使用 **gzip** 来进行压缩。
|
||||
|
||||
你可以使用 **tar** 来压缩一个单个文件,就像压缩一个组一样容易,尽管这种操作与直接使用 **gzip** 相比没有特别的优势。为此,要使用 **tar** ,只需要使用一个 “tar cfz newtarfile filename” 命令来像你标识一个组一样标识文件,像这样:
|
||||
|
||||
```
|
||||
$ tar cfz bigfile.tgz bigfile
|
||||
^ ^
|
||||
| |
|
||||
+- 新的文件 +- 将被压缩的文件
|
||||
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 16:09 bigfile
|
||||
-rw-rw-r-- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
|
||||
```
|
||||
|
||||
注意,文件的大小显著减少。
|
||||
|
||||
如果你喜欢,你可以使用 **tar.gz** 扩展名,这可能会使文件的特征更加明显,但是大多数的 Linux 用户将很可能会意识到与 **tgz** 的意思是相同的东西 – **tar** 和 **gz** 的组合来显示文件是一个压缩的 tar 文件。在压缩完成后,将留下原始文件和压缩文件。
|
||||
|
||||
为收集很多文件在一起并在一个命令中压缩生成的 “tar ball” ,使用相同的语法,但是要指明将要被包含的文件来作为一个组,而不是单个文件。这里有一个示例:
|
||||
|
||||
[][1]
|
||||
|
||||
```
|
||||
$ tar cfz bin.tgz bin/*
|
||||
^ ^
|
||||
| +-- 将被包含的文件
|
||||
+ 新的文件
|
||||
```
|
||||
|
||||
### zip
|
||||
|
||||
**zip** 命令创建一个压缩文件,与此同时保留原始文件的完整性。语法像使用 **tar** 一样简单,只是你必需记住,你的原始文件名称应该是命令行上的最后一个参数。
|
||||
|
||||
```
|
||||
$ zip ./bigfile.zip bigfile
|
||||
updating: bigfile (deflated 79%)
|
||||
$ ls -l bigfile bigfile.zip
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 11:18 bigfile
|
||||
-rw-rw-r-- 1 shs shs 21606889 Apr 16 11:19 bigfile.zip
|
||||
```
|
||||
|
||||
### gzip
|
||||
|
||||
**gzip** 命令非常容易使用。你只需要键入 "gzip" ,紧随其后的是你想要压缩的文件名称。不像上述描述的命令,**gzip** 将“就地”加密文件。换句话说,原始文件将被加密文件替换。
|
||||
|
||||
```
|
||||
$ gzip bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 21606751 Apr 15 17:57 bigfile.gz
|
||||
```
|
||||
|
||||
### bzip2
|
||||
|
||||
像使用 **gzip** 命令一样,**bzip2** 将在你选的“合适位置”压缩文件,只留下原始文件保持原样离开。
|
||||
|
||||
```
|
||||
$ bzip bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 18115234 Apr 15 17:57 bigfile.bz2
|
||||
```
|
||||
|
||||
### xz
|
||||
|
||||
压缩命令组中的一个相对较新的成员,**xz** 就如何更好的压缩文件而言是领跑者。像先前的两个命令一样,你只需要将文件名称补给到命令中。再强调一次,原始文件被就地压缩。
|
||||
|
||||
```
|
||||
$ xz bigfile
|
||||
$ ls -l bigfile*
|
||||
-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz
|
||||
```
|
||||
|
||||
对于大文件来说,你可能会注意到 **xz** 将比其它的压缩命令花费更多的运行时间,但是压缩的结果却是非常令人赞叹的。
|
||||
|
||||
### 考虑对比性
|
||||
|
||||
大多数人都听说过 "文件大小不是万能的"。所以,让我们比较一下文件大小以及一些当你计划如何压缩文件时的问题。
|
||||
|
||||
下面显示的统计数据都与压缩单个文件相关,在上面显示的示例中使用 – bigfile – 。这个文件是一个大的且相当随机的文本文件。压缩率在一定程度上取决于文件的内容。
|
||||
|
||||
#### 大小减缩率
|
||||
|
||||
在比较期间,上面显示的各种压缩命产生下面的结果。百分比表示压缩文件对比原始文件。
|
||||
|
||||
```
|
||||
-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile
|
||||
------------------------------------------------------
|
||||
-rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2 ~17%
|
||||
-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz ~21%
|
||||
-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz ~21%
|
||||
-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz ~13%
|
||||
-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip ~21%
|
||||
```
|
||||
|
||||
**xz** 命令获胜,最终只有压缩文件大小的13%,但是这些所有的压缩命令都相当显著地减少原始文件的大小。
|
||||
|
||||
#### 是否替换原始文件
|
||||
|
||||
**bzip2**,**gzip** 和 **xz** 命令都将使用压缩文件替换原始文件。**tar** 和 **zip** 命令不替换。
|
||||
|
||||
#### 运行时间
|
||||
|
||||
**xz** 命令似乎比其它命令需要花费更多的时间来加密文件。对于 bigfile 来说,近似时间是:
|
||||
|
||||
```
|
||||
命令 运行时间
|
||||
tar 4.9 秒
|
||||
zip 5.2 秒
|
||||
bzip2 22.8 秒
|
||||
gzip 4.8 秒
|
||||
xz 50.4 秒
|
||||
```
|
||||
|
||||
解压缩文件很可能比压缩时间要短得多。
|
||||
|
||||
#### 文件权限
|
||||
|
||||
不管你对压缩文件设置什么权限,压缩文件的权限将基于你的 **umask** 设置,除 **bzip2** 维持原始文件的权限外。
|
||||
|
||||
#### 与 Windows 的兼容性
|
||||
|
||||
**zip** 命令将创建一个可被使用的文件(例如,解压缩),在 Windows 系统上以及 Linux 和其它 Unix 系统上,无需安装其它可能可用或不可用的工具。
|
||||
|
||||
### 解压缩文件
|
||||
|
||||
解压缩文件的命令类似于这些压缩文件的命令。这些命令将在我们运行上述压缩命令后用于解压缩 bigfile 。
|
||||
|
||||
* tar: **tar xf bigfile.tgz**
|
||||
* zip: **unzip bigfile.zip**
|
||||
* gzip: **gunzip bigfile.gz**
|
||||
* bzip2: **bunzip2 bigfile.gz2**
|
||||
* xz: **xz -d bigfile.xz** 或 **unxz bigfile.xz**
|
||||
|
||||
|
||||
|
||||
### 对比你自己运行的压缩
|
||||
|
||||
如果你想自己运行一些测试,抓取一个大的且可以替换的文件,并使用上面显示的每个命令来压缩它 – 最好使用一个新的子目录。你可能必需先安装 **xz** ,如果你想在测试中包含它的话。这个脚本可能更容易地压缩,但是将可能花费几分钟来完成。
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
|
||||
# 询问用户文件名称
|
||||
echo -n "filename> "
|
||||
read filename
|
||||
|
||||
# 你需要这个,因为一些命令将替换原始文件
|
||||
cp $filename $filename-2
|
||||
|
||||
# 先清理(以免先前的结果仍然可用)
|
||||
rm $filename.*
|
||||
|
||||
tar cvfz ./$filename.tgz $filename > /dev/null
|
||||
zip $filename.zip $filename > /dev/null
|
||||
bzip2 $filename
|
||||
# 恢复原始文件
|
||||
cp $filename-2 $filename
|
||||
gzip $filename
|
||||
# 恢复原始文件
|
||||
cp $filename-2 $filename
|
||||
xz $filename
|
||||
|
||||
# 显示结果
|
||||
ls -l $filename.*
|
||||
|
||||
# 替换原始文件
|
||||
mv $filename-2 $filename
|
||||
```
|
||||
|
||||
加入 [Facebook][2] 和 [LinkedIn][3] 网络世界社区来评论那些最重要的话题。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html
|
||||
|
||||
作者:[Sandra Henry-Stocker][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.networkworld.com/author/Sandra-Henry_Stocker/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.networkworld.com/blog/itaas-and-the-corporate-storage-technology/?utm_source=IDG&utm_medium=promotions&utm_campaign=HPE22140&utm_content=sidebar (ITAAS and Corporate Storage Strategy)
|
||||
[2]: https://www.facebook.com/NetworkWorld/
|
||||
[3]: https://www.linkedin.com/company/network-world
|
99
translated/tech/20200428 Upgrading Fedora 31 to Fedora 32.md
Normal file
99
translated/tech/20200428 Upgrading Fedora 31 to Fedora 32.md
Normal file
@ -0,0 +1,99 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Upgrading Fedora 31 to Fedora 32)
|
||||
[#]: via: (https://fedoramagazine.org/upgrading-fedora-31-to-fedora-32/)
|
||||
[#]: author: (Adam Šamalík https://fedoramagazine.org/author/asamalik/)
|
||||
|
||||
将 Fedora 31 升级到 Fedora 32
|
||||
======
|
||||
|
||||
![][1]
|
||||
|
||||
Fedora 32 [已经发布][2]。你可能想升级系统以获得 Fedora 中的最新功能。Fedora Workstation 有图形化的升级方法。另外,Fedora 提供了命令行方法,用于将 Fedora 30 升级到 Fedora 31。
|
||||
|
||||
升级前,请访问 [Fedora 32 个常见 bug 的维基页面] [3],查看是否存在可能影响升级的问题。尽管 Fedora 社区试图确保升级正常进行,但是无法为用户可能使用的每种软硬件组合提供保证。
|
||||
|
||||
### 将Fedora 31 Workstation 升级到 Fedora 32
|
||||
|
||||
发布不久之后就会出现通知,告诉你有可用的升级。你可以单击通知启动 **GNOME Software**。或者,你可以从 GNOME Shell 中选择“软件”。
|
||||
|
||||
在 GNOME Software中 选择 _Updates_ 选项卡,你会看到一个页面通知你 Fedora 32 现在可用。
|
||||
|
||||
如果你在此页面看不到任何内容,请尝试使用左上方的重新加载按钮。发布后,所有系统可能都需要一段时间才能看到可用的升级。
|
||||
|
||||
选择 _Download_ 获取升级包。你可以继续做事直到下载完成。然后使用 GNOME Software 重启系统并应用升级。升级需要时间,因此你可能需要喝杯咖啡,稍后再回来。
|
||||
|
||||
### 使用命令行
|
||||
|
||||
如果你是从 Fedora 的先前版本升级的,那么你可能对 _dnf upgrade_ 插件很熟悉。此方法是从 Fedora 31 升级到 Fedora 32 的推荐和受支持的方法。使用此插件将使你轻松地升级到 Fedora 32。
|
||||
|
||||
#### 1\. 更新软件并备份系统
|
||||
|
||||
在开始升级过程之前,请确保你有 Fedora 31 的最新软件。如果你安装了模块化软件,这尤为重要。dnf 和 GNOME Software 的最新版本对某些模块化流的升级过程进行了改进。要更新软件,请使用_ GNOME Software_ 或在终端中输入以下命令。
|
||||
|
||||
```
|
||||
sudo dnf upgrade --refresh
|
||||
```
|
||||
|
||||
此外,在继续操作之前,请确保备份系统。有关备份的帮助,请参阅 Fedora Magazine 上的[备份系列][4]。
|
||||
|
||||
#### 2\. 安装 DNF 插件
|
||||
|
||||
接下来,打开终端并输入以下命令安装插件:
|
||||
|
||||
```
|
||||
sudo dnf install dnf-plugin-system-upgrade
|
||||
```
|
||||
|
||||
#### 3\. 使用 DNF 开始更新
|
||||
|
||||
现在,你的系统已更新、已备份、并且已安装 DNF 插件,你可以在终端中使用以下命令开始升级:
|
||||
|
||||
```
|
||||
sudo dnf system-upgrade download --releasever=32
|
||||
```
|
||||
|
||||
该命令将开始在本地下载计算机的所有升级,以准备升级。如果由于没有更新的软件包、损坏的依赖项或已淘汰的软件包而在升级时遇到问题,请在输入上述命令时添加 _‐allowerasing_ 标志。这将使 DNF 删除可能阻止系统升级的软件包。
|
||||
|
||||
#### 4\. 重启并升级
|
||||
|
||||
当上一个命令完成了所有升级的下载,你的系统就可以重新启动了。要将系统引导至升级过程,请在终端中输入以下命令:
|
||||
|
||||
```
|
||||
sudo dnf system-upgrade reboot
|
||||
```
|
||||
|
||||
此后,系统将重启。在许多版本之前,_fedup_ 工具会在内核选择/引导页上创建一个新选项。使用 _dnf-plugin-system-upgrade_ 包,你的系统将重启进入 Fedora 31 当前安装的内核;这个是正常的。在选择内核之后,你的系统会立即开始升级过程。
|
||||
|
||||
现在可能是喝杯咖啡休息的好时机!完成后,系统将重启,你将能够登录到新升级的 Fedora 32 系统。
|
||||
|
||||
![][5]
|
||||
|
||||
### 解决升级问题
|
||||
|
||||
有时,升级系统时可能会出现意外问题。如果你遇到任何问题,请访问 [DNF 系统升级文档][6],以获取有关故障排除的更多信息。
|
||||
|
||||
如果升级时遇到问题,并且系统上安装了第三方仓库,那么在升级时可能需要禁用这些仓库。对于 Fedora 不提供的仓库的支持,请联系仓库的提供者。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://fedoramagazine.org/upgrading-fedora-31-to-fedora-32/
|
||||
|
||||
作者:[Adam Šamalík][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://fedoramagazine.org/author/asamalik/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://fedoramagazine.org/wp-content/uploads/2020/04/31-32-816x345.png
|
||||
[2]: https://fedoramagazine.org/announcing-fedora-32/
|
||||
[3]: https://fedoraproject.org/wiki/Common_F32_bugs
|
||||
[4]: https://fedoramagazine.org/taking-smart-backups-duplicity/
|
||||
[5]: https://cdn.fedoramagazine.org/wp-content/uploads/2016/06/Screenshot_f23-ws-upgrade-test_2016-06-10_110906-1024x768.png
|
||||
[6]: https://docs.fedoraproject.org/en-US/quick-docs/dnf-system-upgrade/#Resolving_post-upgrade_issues
|
@ -0,0 +1,124 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (lxbwolf)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Browse the Peer-to-peer Web With Beaker Browser)
|
||||
[#]: via: (https://itsfoss.com/beaker-browser/)
|
||||
[#]: author: (John Paul https://itsfoss.com/author/john/)
|
||||
|
||||
使用 Beaker 浏览器浏览 P2P Web
|
||||
======
|
||||
|
||||
我们所认识的因特网在过去 50 年中变化不大。全球的网民使用它们的设备从遍布在世界各地的服务器上检索数据。
|
||||
|
||||
一群专业的技术专家想改变现状,使互联网变成人们可以连接和直接分享信息的地方,而不是依赖一个中心服务器(去中心化)。
|
||||
|
||||
我们已经在 It’s FOSS 讨论过很多这样的去中心化的服务。[YouTube 竞品:LBRY][1],[Twitter竞品:Mastodon][2] 是其中的两个例子。
|
||||
|
||||
今天我将要介绍另一个这样的产品,名为 [Beaker 浏览器][3],它的设计目标是浏览 P2P web 数据。
|
||||
|
||||
![Beaker Browser][4]
|
||||
|
||||
### ’peer-to-peer Web‘ 是什么?
|
||||
|
||||
根据 Beaker 浏览器的[开发者之一][5]的描述,”P2P Web 是一项实验性的技术...提高我们掌控 Web 的能力。“
|
||||
|
||||
还有,它们说 P2P Web 有三个主要原则:任何一点都可以成为服务器;多台计算机可以为同一个网站提供服务;没有后端。
|
||||
|
||||
从这些原则中你可以看出,P2P Web 的思想与 BitTorrent 很像,多个点把文件作为种子,这些点共享带宽负载。这减少了一个用户需要提供给他的网站的总带宽。
|
||||
|
||||
![Beaker Browser Settings][6]
|
||||
|
||||
P2P Web 另一个重要的方面是创作者对于他们自己的想法的控制能力。当今年代,平台都是由庞大的组织控制的,往往拿你的数据为他们所用。Beaker 把数据的控制能力返还给了内容创造者。
|
||||
|
||||
### 使用 Beaker 浏览去中心化的 web
|
||||
|
||||
[Beaker 浏览器][3] 是在 2016 年被创建的。该项目(及其周边技术)由[蓝链实验室][7]的三人团队创建。Beaker 浏览器使用 [Dat 协议][8]在计算机之间共享数据。使用 Dat 协议的网站以 `dat://` 而不是 `http://` 开头。
|
||||
|
||||
Dat 协议的优势如下:
|
||||
|
||||
* 快速 – 档案能立即从多个源同步。
|
||||
* 安全 – 所有的更新都是有签名和被完整检查的。
|
||||
* 灵活 – 可以在不修改档案 URL 的情况下迁移主机。
|
||||
* 版本控制 – 每次修改都被写到只能追加的版本日志中。
|
||||
* 去中心化 – 任何设备都可以作为承载档案的主机。
|
||||
|
||||
|
||||
|
||||
![Beaker Browser Seeding][9]
|
||||
|
||||
Beaker 浏览器本质上是阉割版的 Chromium,原生支持 `dat://` 地址,也可以访问普通的 `http://` 站点。
|
||||
|
||||
每次访问一个 dat 站点,在你请求时该站点的内容才会下载到你的计算机。例如,只有在你浏览到站点的 about 页面时,才会下载该页面上的 Linux Torvalds 的图片。
|
||||
|
||||
当你浏览一个 dat 网站时,”[你暂时][10]重新上传或种下你从网站上下载的所有文件。“你也可以选择为网站做种来帮助创造者。
|
||||
|
||||
![Beaker Browser Menu][11]
|
||||
|
||||
由于 Beaker 的志向就是创建一个更开放的网络,因此你可以很容易地查看任何网站的源码。不像在大多数浏览器上你只能看到当前浏览的页面的源码那样,使用 Beaker 你能以类似 GitHub 的视图查看整个站点的结构。你甚至可以 fork 这个站点,自己维护。
|
||||
|
||||
除了浏览基于 dat 的网站外,你还可以创建自己的站点。在 Beaker 浏览器的菜单里,有创建新网站和创建空项目的选项。如果你选择了创建一个新网站,Beaker 会搭建一个小的 demo 站点,你可以使用浏览器里自带的编辑器来编辑。
|
||||
|
||||
然而,如果你像我一样更喜欢用 Markdown,你可以选择创建一个空项目。Beaker 会创建一个站点的结构,赋给它一个 `dat://` 地址。创建一个 `index.md` 文件后你就可以很好地工作了。里面有个[简短教程][12],你可以看到更多信息。你也可以用创建空项目的选项搭建一个 web app。
|
||||
|
||||
![Beaker Browser Website Template][13]
|
||||
|
||||
由于 Beaker 的角色是个 web 服务器和站点播种者,当你关闭它或关机后你的站点就不可用了。幸运的是,你不必一直开着你的计算机或浏览器。你也可以使用名为 [Hashbase][14] 的播种服务或者你可以搭建一个 [`homebase`][15] 播种服务器。
|
||||
|
||||
虽然 Beaker [适用于][16] Linux,Windows 和 macOS,但是在搞 Beaker 之前,还是要查阅下[各平台的教程][17]。
|
||||
|
||||
### Beaker 浏览器不是每个人都能用,但它有这个意图
|
||||
|
||||
当第一次被分配到这个任务时,我对 Beaker 浏览器有极高的热情。(但是)像它现在的地位一样,Beaker 浏览器仍是实验性的。我尝试浏览过的很多 dat 站点还不可用,因为用户并没有为站点做种。当站点恢复可用时 Beaker 确实可以选择通知你。
|
||||
|
||||
![Beaker Browser No Peer][18]
|
||||
|
||||
另一个问题是,Beaker 是真正阉割版的 Chromium。不能安装扩展或主题。你只能使用白色主题和极少的工具集。我不会把 Beaker 浏览器作为常用浏览器,而且能访问 dat 网站并不是把它留在系统上的充分条件。
|
||||
|
||||
我曾经寻找一个能支持 `dat://` 协议的 Firefox 扩展。我确实找到了这样一款扩展,但它需要安装一系列其他的软件。相比而言,安装 Beaker 比安装那些软件容易点。
|
||||
|
||||
就像它现在的地位,Beaker 不适合我。也许在将来更多的人使用 Beaker 或者其他浏览器支持 dat 协议。那时会很有趣。目前而言,聊胜于无。
|
||||
|
||||
在使用 Beaker 的时间里,我用内建的工具创建了一个[网站][19]。不要担心,我已经为它做种了。
|
||||
|
||||
![Beaker Bowser Site Source][20]
|
||||
|
||||
你怎么看 Beaker 浏览器?你怎么看 P2P web?请尽情在下面评论。
|
||||
|
||||
如果你觉得本文有意思,请花点时间把它分享到社交媒体,Hacker News 或 [Reddit][21]。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/beaker-browser/
|
||||
|
||||
作者:[John Paul][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[lxbwolf](https://github.com/lxbwolf)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/john/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/lbry/
|
||||
[2]: https://itsfoss.com/mastodon-open-source-alternative-twitter/
|
||||
[3]: https://beakerbrowser.com/
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser.jpg?resize=800%2C426&ssl=1
|
||||
[5]: https://pfrazee.hashbase.io/blog/what-is-the-p2p-web
|
||||
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-setting.jpg?resize=800%2C573&ssl=1
|
||||
[7]: https://bluelinklabs.com/
|
||||
[8]: https://www.datprotocol.com/
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-seedding.jpg?resize=800%2C466&ssl=1
|
||||
[10]: https://beakerbrowser.com/docs/faq/
|
||||
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-menu.jpg?ssl=1
|
||||
[12]: https://beakerbrowser.com/docs/guides/create-a-markdown-site
|
||||
[13]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-website-template.jpg?resize=800%2C459&ssl=1
|
||||
[14]: https://hashbase.io/
|
||||
[15]: https://github.com/beakerbrowser/homebase
|
||||
[16]: https://beakerbrowser.com/install/
|
||||
[17]: https://beakerbrowser.com/docs/guides/
|
||||
[18]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-browser-no-peer.jpg?resize=800%2C424&ssl=1
|
||||
[19]: https://41bfbd06731e8d9c5d5676e8145069c69b254e7a3b710ddda4f6e9804529690c/
|
||||
[20]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/04/beaker-bowser-source.jpg?resize=800%2C544&ssl=1
|
||||
[21]: https://reddit.com/r/linuxusersgroup
|
Loading…
Reference in New Issue
Block a user