Merge pull request #14 from LCTT/master

Update from LCTT
This commit is contained in:
perfiffer 2021-09-03 08:06:05 +08:00 committed by GitHub
commit 813fca8e9b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
90 changed files with 2991 additions and 648 deletions

View File

@ -1,46 +1,43 @@
[#]: collector: (lujun9972) [#]: collector: (lujun9972)
[#]: translator: (chunibyo-wly) [#]: translator: (chunibyo-wly)
[#]: reviewer: ( ) [#]: reviewer: (wxy)
[#]: publisher: ( ) [#]: publisher: (wxy)
[#]: url: ( ) [#]: url: (https://linux.cn/article-13744-1.html)
[#]: subject: (Deploy a deep learning model on Kubernetes) [#]: subject: (Deploy a deep learning model on Kubernetes)
[#]: via: (https://opensource.com/article/20/9/deep-learning-model-kubernetes) [#]: via: (https://opensource.com/article/20/9/deep-learning-model-kubernetes)
[#]: author: (Chaimaa Zyani https://opensource.com/users/chaimaa) [#]: author: (Chaimaa Zyani https://opensource.com/users/chaimaa)
在 Kubernetes 上部署一个深度学习模型 在 Kubernetes 上部署一个深度学习模型
====== ======
了解如何使用 Kubermatic Kubernetes 平台部署、缩放与管理图像识别深度学习模型。
![Brain on a computer screen][1] > 了解如何使用 Kubermatic Kubernetes 平台来部署、扩展与管理图像识别预测的深度学习模型。
随着企业增加了对人工智能AI、机器学习ML与深度学习DL的使用出现了一个关键问题如何将机器学习的发展进行规模化与产业化这些讨论经常聚焦于机器学习模型本身然而模型仅仅只是完整解决方案的其中一环。为了达到生产环境的应用和规模模型的开发过程必须还包括一个可以说明开发前后关键活动以及可公用部署的可重复过程。 ![](https://img.linux.net.cn/data/attachment/album/202109/01/233417ryy87hyza7jmgy33.jpg)
本文演示了如何使用[Kubermatic Kubernetes Platform][2]对图像识别预测的深度学习模型进行部署,缩放与管理 随着企业增加了对人工智能AI、机器学习ML与深度学习DL的使用出现了一个关键问题如何将机器学习的开发进行规模化与产业化这些讨论经常聚焦于机器学习模型本身然而模型仅仅只是完整解决方案的其中一环。为了达到生产环境的应用和规模模型的开发过程必须还包括一个可以说明开发前后关键活动以及可公用部署的可重复过程
Kubermatic Kubernetes 平台是一个可以与机器学习/深度学习工作流结合进行完整集群生命周期管理的一个自动且灵活的开源生产级 Kubernetes 集群管理工具。 本文演示了如何使用 [Kubermatic Kubernetes 平台][2] 对图像识别预测的深度学习模型进行部署、扩展与管理。
Kubermatic Kubernetes 平台是一个生产级的开源 Kubernetes 集群管理工具,提供灵活性和自动化,与机器学习/深度学习工作流程整合,具有完整的集群生命周期管理。
### 开始 ### 开始
这个例子部署了一个图像识别的深度学习模型。它使用了包含 60,000 张分属 10 个类别的 32x32 彩色图 [CIFAR-10][3] 像数据集,同时使用了 [Apache MXNet][5] 的 [Gluon][4] 与 NVIDIA GPUs 进行加速计算。如果你希望使用 CIFAR-10 数据集的预训练模型,可以查阅 [getting started guide][6]。 这个例子部署了一个用于图像识别的深度学习模型。它使用了 [CIFAR-10][3] 数据集,包含 60,000 张分属 10 个类别的 32x32 彩色图,同时使用了 [Apache MXNet][5] 的 [Gluon][4] 与 NVIDIA GPU 进行加速计算。如果你希望使用 CIFAR-10 数据集的预训练模型,可以查阅其 [入门指南][6]。
使用训练集中的样本对模型训练 200 次,只要训练误差保持缓慢减少,就可以保证模型不会过拟合。下方图展示了训练的过程: 使用训练集中的样本对模型训练 200 次,只要训练误差保持缓慢减少,就可以保证模型不会过拟合。下方图展示了训练的过程:
![深度学习模型训练 loss 图][7] ![深度学习模型训练 loss 图][7]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
训练结束后,必须保存模型训练所得到的参数,以便稍后可以加载它们: 训练结束后,必须保存模型训练所得到的参数,以便稍后可以加载它们:
```
```python
file_name = "net.params" file_name = "net.params"
net.save_parameters(file_name) net.save_parameters(file_name)
``` ```
一旦你的模型训练好了,就可以用 Flask 服务器来封装它。下方的程序演示了如何接收 request 中的一张图片作为参数并且在 response 中返回模型的预测结果: 一旦你的模型训练好了,就可以用 Flask 服务器来封装它。下方的程序演示了如何接收请求中的一张图片作为参数,并在响应中返回模型的预测结果:
```
```python
from gluoncv.model_zoo import get_model from gluoncv.model_zoo import get_model
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from mxnet import gluon, nd, image from mxnet import gluon, nd, image
@ -80,156 +77,166 @@ if __name__ == '__main__':
在将模型部署到 Kubernetes 前,你需要先安装 Docker 并使用你的模型创建一个镜像。 在将模型部署到 Kubernetes 前,你需要先安装 Docker 并使用你的模型创建一个镜像。
1. 下载、安装并启动 Docker 1. 下载、安装并启动 Docker
```bash
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo> ```
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo <https://download.docker.com/linux/centos/docker-ce.repo>
sudo yum install docker-ce
sudo systemctl start docker
```
sudo yum install docker-ce 2. 创建一个你用来管理代码与依赖的文件夹:
sudo systemctl start docker ```
mkdir kubermatic-dl
cd kubermatic-dl
```
``` 3. 创建 `requirements.txt` 文件管理代码运行时需要的所有依赖:
2. 创建一个你用来管理代码与依赖的文件夹:
```bash
mkdir kubermatic-dl
cd kubermatic-dl
```
3. 创建 `requirements.txt` 文件管理代码运行时需要的所有依赖: ```
``` flask
flask gluoncv
gluoncv matplotlib
matplotlib mxnet
mxnet requests
requests Pillow
Pillow ```
``` 4. 创建 `Dockerfile`Docker 将根据这个文件创建镜像:
4. 创建 DockerfileDocker 将根据这个文件创建镜像:
```
FROM python:3.6
WORKDIR /app
COPY requirements.txt /app
RUN pip install -r ./requirements.txt
COPY app.py /app
CMD ["python", "app.py"]
```
这个 Dockerfile 主要可以分为三个部分。首先Docker 会下载 Python 的基础镜像。然后Docker 会使用 Python 的包管理工具 `pip` 安装 `requirements.txt` 记录的包。最后Docker 会通过执行 `python app.py` 来运行你的脚本。 ```
FROM python:3.6
WORKDIR /app
COPY requirements.txt /app
RUN pip install -r ./requirements.txt
COPY app.py /app
CMD ["python", "app.py"]
```
这个 `Dockerfile` 主要可以分为三个部分。首先Docker 会下载 Python 的基础镜像。然后Docker 会使用 Python 的包管理工具 `pip` 安装 `requirements.txt` 记录的包。最后Docker 会通过执行 `python app.py` 来运行你的脚本。
1. 构建 Docker 容器: `sudo docker build -t kubermatic-dl:latest .` 这条命令使用 `kubermatic-dl` 镜像为你当前工作目录的代码创建了一个容器。 5. 构建 Docker 容器:
2. 使用 `sudo docker run -d -p 5000:5000 kubermatic-dl` 命令检查你的容器可以在你的主机上正常运行。 ```
sudo docker build -t kubermatic-dl:latest .
3. 使用 `sudo docker ps -a` 命令查看你本地容器的运行状态: ```
这条命令使用 `kubermatic-dl` 镜像为你当前工作目录的代码创建了一个容器。
![查看容器的运行状态][9]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
6. 使用
```
sudo docker run -d -p 5000:5000 kubermatic-dl
```
命令检查你的容器可以在你的主机上正常运行。
7. 使用
```
sudo docker ps -a
```
命令查看你本地容器的运行状态:
![查看容器的运行状态][9]
### 将你的模型上传到 Docker Hub ### 将你的模型上传到 Docker Hub
在向 Kubernetes 上部署模型前,你的镜像首先需要是公开可用的。你可以通过将你的模型上传到 [Docker Hub][10] 来将它公开。(如果你没有 Docker Hub 的账号,你需要先创建一个) 在向 Kubernetes 上部署模型前,你的镜像首先需要是公开可用的。你可以通过将你的模型上传到 [Docker Hub][10] 来将它公开。(如果你没有 Docker Hub 的账号,你需要先创建一个)
1. 在终端中登录 Docker Hub 账号:`sudo docker login` 1. 在终端中登录 Docker Hub 账号:
```
sudo docker login
```
2. 给你的镜像打上 tag ,这样你的模型上传到 Docker Hub 后也能拥有版本信息 2. 给你的镜像打上标签,这样你的模型上传到 Docker Hub 后也能拥有版本信息:
```bash
sudo docker tag &lt;your-image-id&gt; &lt;your-docker-hub-name&gt;/&lt;your-app-name&gt;
sudo docker push &lt;your-docker-hub-name&gt;/&lt;your-app-name&gt; ```
``` sudo docker tag <your-image-id> <your-docker-hub-name>/<your-app-name>
![给镜像打上 tag][11] sudo docker push <your-docker-hub-name>/<your-app-name>
```
(Chaimaa Zyami, [CC BY-SA 4.0][8])
3. 使用 `sudo docker images` 命令检查你的镜像的 ID。
![给镜像打上 tag][11]
3. 使用
```
sudo docker images
```
命令检查你的镜像的 ID。
### 部署你的模型到 Kubernetes 集群 ### 部署你的模型到 Kubernetes 集群
1. 首先在 Kubermatic Kubernetes 平台创建一个项目, 然后根据 [快速开始][12] 创建一个 Kubernetes 集群。 1. 首先在 Kubermatic Kubernetes 平台创建一个项目, 然后根据 [快速开始][12] 创建一个 Kubernetes 集群。
![创建一个 Kubernetes 集群][13] ![创建一个 Kubernetes 集群][13]
(Chaimaa Zyami, [CC BY-SA 4.0][8]) 2. 下载用于访问你的集群的 `kubeconfig`,将它放置在下载目录中,并记得设置合适的环境变量,使得你的环境能找到它:
2. 下载用于访问你的集群的 `kubeconfig`,将它放置在下载目录中,并记得设置合适的环境变量,使得你的环境能找到它: ![Kubernetes 集群示例][14]
![Kubernetes 集群示例][14] 3. 使用 `kubectl` 命令检查集群信息,例如,需要检查 `kube-system` 是否在你的集群正常启动了就可以使用命令 `kubectl cluster-info`
(Chaimaa Zyami, [CC BY-SA 4.0][8]) ![查看集群信息][15]
3. 使用 `kubectl` 命令检查集群信息,例如,需要检查 `kube-system` 是否在你的集群正常启动了就可以使用命令 `kubectl cluster-info` 4. 为了在集群中运行容器,你需要创建一个部署用的配置文件(`deployment.yaml`),再运行 `apply` 命令将其应用于集群中:
![查看集群信息][15] ```
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubermatic-dl-deployment
spec:
  selector:
    matchLabels:
      app: kubermatic-dl
  replicas: 3
  template:
    metadata:
      labels:
        app: kubermatic-dl
    spec:
     containers:
     - name: kubermatic-dl
       image: kubermatic00/kubermatic-dl:latest
       imagePullPolicy: Always
       ports:
       - containerPort: 8080
(Chaimaa Zyami, [CC BY-SA 4.0][8]) ```
```
kubectl apply -f deployment.yaml`
```
4. 为了在集群中运行容器,你需要创建一个部署用的配置文件(`deployment.yaml`),再运行 `apply` 命令将其应用于集群中: 5. 为了将你的部署开放到公网环境,你需要一个能够给你的容器创建外部可达 IP 地址的服务:
```yaml
apiVersion: apps/v1 ```
kind: Deployment kubectl expose deployment kubermatic-dl-deployment  --type=LoadBalancer --port 80 --target-port 5000`
metadata: ```
  name: kubermatic-dl-deployment
spec:
  selector:
    matchLabels:
      app: kubermatic-dl
  replicas: 3
  template:
    metadata:
      labels:
        app: kubermatic-dl
    spec:
     containers:
     - name: kubermatic-dl
       image: kubermatic00/kubermatic-dl:latest
       imagePullPolicy: Always
       ports:
       - containerPort: 8080
``` `kubectl apply -f deployment.yaml` 6. 就快大功告成了!首先检查你布署的服务的状态,然后通过 IP 请求的你图像识别 API
```
```
kubectl get service
```
5. 为了将你的部署开放到公网环境,你需要一个能够给你的容器创建外部可达 IP 地址的服务:`kubectl expose deployment kubermatic-dl-deployment  --type=LoadBalancer --port 80 --target-port 5000` ![获取请求图像识别 API 的 IP 地址][16]
6. 就快大功告成了!首先检查你布署的服务的状态,然后通过 IP 请求的你图像识别 API`kubectl get service` 7. 最后根据你的外部 IP 使用以下两张图片对你的图像识别服务进行测试:
![获取请求图像识别 API 的 IP 地址][16]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
7. 最后根据你的外部 IP 使用以下两张图片对你的图像识别服务进行测试:
![马][17]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
![狗][18]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
![测试 API][19]
(Chaimaa Zyami, [CC BY-SA 4.0][8])
![马][17]
![狗][18]
![测试 API][19]
### 总结 ### 总结
在这篇教程中,你可以创建一个深度学习模型,并且使用 Flask 提供 [REST API][20] 服务。它介绍了如何将应用放在 Docker 容器中,如何将这个镜像上传到 Docker Hub 中,以及如何使用 Kubernetes 部署你的服务。只需几个简单的命令,你就可以使用 Kubermatic Kubernetes 平台部署该应用程序,并且开放服务给别人使用。 在这篇教程中,你可以创建一个深度学习模型,并且使用 Flask 提供 [REST API][20] 服务。它介绍了如何将应用放在 Docker 容器中,如何将这个镜像上传到 Docker Hub 中,以及如何使用 Kubernetes 部署你的服务。只需几个简单的命令,你就可以使用 Kubermatic Kubernetes 平台部署该应用程序,并且开放服务给别人使用。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -238,8 +245,8 @@ via: https://opensource.com/article/20/9/deep-learning-model-kubernetes
作者:[Chaimaa Zyani][a] 作者:[Chaimaa Zyani][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[译者ID](https://github.com/chunibyo-wly) 译者:[chunibyo-wly](https://github.com/chunibyo-wly)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -3,32 +3,34 @@
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/" [#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: "perfiffer" [#]: translator: "perfiffer"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-13746-1.html"
Debian 和 Ubuntu有什么不同应该选择哪一个 Debian 和 Ubuntu有什么不同应该选择哪一个
====== ======
在 Debian 和 Ubuntu 系统中,你都可以 [使用 apt-get 命令][1] 来管理应用。你也可以在这两个发型版中安装 DEB 安装包。很多时候,你会在这两个发行版中发现同样的包安装介绍。 ![](https://img.linux.net.cn/data/attachment/album/202109/02/230706mpahrwpwjjm2jkpu.jpg)
在 Debian 和 Ubuntu 系统中,你都可以 [使用 apt-get 命令][1] 来管理应用。你也可以在这两个发行版中安装 DEB 安装包。很多时候,你会在这两个发行版中发现同样的包安装命令。
它们两者是如此的相似,那么,它们两者之间有什么区别呢? 它们两者是如此的相似,那么,它们两者之间有什么区别呢?
Debian 和 Ubuntu 属于同一系列的发行版。Debain 是由Ian Murdock 在 1993 年创建的最初的发行版。Ubuntu 是 Mark Shuttleworth 在 2004 年基于 Debian 创建的发行版。 Debian 和 Ubuntu 属于同一系列的发行版。Debian 是由 Ian Murdock 在 1993 年创建的最初的发行版。Ubuntu 是 Mark Shuttleworth 在 2004 年基于 Debian 创建的发行版。
### Ubuntu 基于 Debian这意味着什么 ### Ubuntu 基于 Debian这意味着什么
Linux 发行版虽然有数百个,但其中只有少数是从零开始的独立发行版。 [Debian][2]ArchRed Hat 是其中几个不派生于其它发行版的使用最广的发行版。 Linux 发行版虽然有数百个,但其中只有少数是从零开始的独立发行版。 [Debian][2]、Arch、Red Hat 是其中几个不派生于其它发行版的使用最广的发行版。
Ubuntu 源自 Debian。这意味着 Ubuntu 使用与 Debian 相同的 `APT` 包管理系统,并共享 Debian 库中的大量包和库。它建立在 Debian 基础架构上。 Ubuntu 源自 Debian。这意味着 Ubuntu 使用与 Debian 相同的 APT 包管理系统,并共享来自 Debian 库中的大量包和库。它建立在 Debian 基础架构上。
![Ubuntu uses Debian as base][3] ![Ubuntu uses Debian as base][3]
这就是大多数“衍生”发行版所做的。它们使用相同的包管理器,并将包共享为基本发行版。但他们也做了一些改变,添加了一些自己的包。这就是 Ubuntu 和 Debian 的不同之处,尽管它是从 Debian 衍生而来的。 这就是大多数“衍生”发行版所做的。它们使用相同的包管理器,并与基础发行版共享包。但它们也做了一些改变,添加了一些自己的包。这就是 Ubuntu 和 Debian 的不同之处,尽管它是从 Debian 衍生而来的。
### Ubuntu 和 Debian 的不同之处 ### Ubuntu 和 Debian 的不同之处
因此Ubuntu 构建在 Debian 架构和基础设施上,也与 Debian 一样是用 `.DEB` 格式的软件包。 因此Ubuntu 构建在 Debian 架构和基础设施上,也与 Debian 一样是用 .DEB 格式的软件包。
这意味着使用 Ubuntu 和使用 Debian 是一样的吗?并不完全如此。有很多因素可以用来区分两个不同的发行版。 这意味着使用 Ubuntu 和使用 Debian 是一样的吗?并不完全如此。有很多因素可以用来区分两个不同的发行版。
@ -36,23 +38,23 @@ Ubuntu 源自 Debian。这意味着 Ubuntu 使用与 Debian 相同的 `APT` 包
![][4] ![][4]
#### 1\. 发布周期 #### 1发布周期
Ubuntu 有两种发布版本LTS 和 regular。[Ubuntu LTS (长期支持) 版本][5] 每两年发布一次,并且会提供五年的支持。你可以选择升级到下一个可用的 LTS 版本。LTS 版本更稳定。 Ubuntu 有两种发布版本LTS(长期支持)和常规版本。[Ubuntu LTS 版本][5] 每两年发布一次,并且会提供五年的支持。你可以选择升级到下一个可用的 LTS 版本。LTS 版本被认为更稳定。
还有一个非 LTS 版本,每六个月发布一次。这些版本仅仅提供九个月的支持,但是它们会有一些新的软件版本和功能。当当前的版本已经不在维护了,你必须升级到下一个 Ubuntu 版本。 还有一个非 LTS 版本,每六个月发布一次。这些版本仅仅提供九个月的支持,但是它们会有一些新的软件版本和功能。在当前的版本到达维护年限时,你应当升级到下一个 Ubuntu 版本。
所以基本上,你可以根据这些版本在稳定性和新特性之间进行选择。 所以基本上,你可以根据这些版本在稳定性和新特性之间进行选择。
另一方面Debian 有三个不同的版本:稳定版、测试版和非稳定版 。非稳定版是为了实际测试,应该避免使用。 另一方面Debian 有三个不同的版本:稳定版、测试版和非稳定版。非稳定版是为了实际测试,应该避免使用。
测试版并不是非稳定版。它是用来为下一个稳定版做准备。有一些 Debian 用户更倾向于使用测试版来获取新的特性。 测试版不是那么不稳定。它是用来为下一个稳定版做准备。有一些 Debian 用户更倾向于使用测试版来获取新的特性。
然后是稳定版。这是 Debian 的主要版本。Debian 稳定版可能没有最新的软件和功能,但在稳定性方面毋庸置疑。 然后是稳定版。这是 Debian 的主要版本。Debian 稳定版可能没有最新的软件和功能,但在稳定性方面毋庸置疑。
每两年 Debian 会发布一个稳定版,并且会提供三年的支持。此后,你必须升级到下一个可用的稳定版。 每两年 Debian 会发布一个稳定版,并且会提供三年的支持。此后,你应当升级到下一个可用的稳定版。
#### 2\. 软件更新 #### 2软件更新
![][6] ![][6]
@ -62,33 +64,33 @@ Debian 更关注稳定性,这意味着它并不总是使用最新版本的软
Ubuntu LTS 版本也关注稳定性。但是它们通常拥有较新版本的常见软件。 Ubuntu LTS 版本也关注稳定性。但是它们通常拥有较新版本的常见软件。
你应该注意,对于某些软件,从开发人员仓库安装也是一种选择。例如,如果你想要安装最新版的 Docker你可以在 Debian 和 Ubuntu 中添加 Docker 仓库。 你应该注意,对于某些软件,从开发者的仓库安装也是一种选择。例如,如果你想要安装最新版的 Docker你可以在 Debian 和 Ubuntu 中添加 Docker 仓库。
总体来说,相比较于 Ubuntu Debian 稳定版的软件版本会更旧。 总体来说,相比较于 Ubuntu Debian 稳定版的软件版本会更旧。
#### 3\. 软件可用性 #### 3软件可用性
Debian 和 Ubuntu 都拥有一个巨大的软件仓库。然而,[Ubuntu 同时有PPA][7]<ruby>Personal Package Archive<ruby>。通过 `PPA`,安装更新版本的软件或者获取最新版本的软件都将会变的更容易。 Debian 和 Ubuntu 都拥有一个巨大的软件仓库。然而,[Ubuntu 还有 PPA][7]<ruby>个人软件包存档<rt>Personal Package Archive</rt></ruby>)。通过 PPA,安装更新版本的软件或者获取最新版本的软件都将会变的更容易。
![][8] ![][8]
你可以在 Debian 中尝试使用 PPA但是体验并不好。大多数时候你都会遇到问题。 你可以在 Debian 中尝试使用 PPA但是体验并不好。大多数时候你都会遇到问题。
#### 4\. 支持的平台 #### 4支持的平台
Ubuntu 可以在 64 位的 x86 和 ARM 平台上使用。它不再提供 32 位的镜像。 Ubuntu 可以在 64 位的 x86 和 ARM 平台上使用。它不再提供 32 位的镜像。
另一方面Debian 支持 32 位和 64 位架构。除此之外Debian 还支持 64 位 ARMarm64、ARM EABIarmel、ARMv7EABI hard-float ABIarmhflittle-endian MIPSmipsel、64 位 little-endian MIPSmips64el、64 位 little-endian PowerPCppc64el 和 IBM System zs390x 另一方面Debian 支持 32 位和 64 位架构。除此之外Debian 还支持 64 位 ARMarm64、ARM EABIarmel、ARMv7EABI hard-float ABIarmhf小端 MIPSmipsel、64 位小端 MIPSmips64el、64 位小端 PowerPCppc64el 和 IBM System zs390x
所以它也被称为 “通用操作系统”。 所以它也被称为 “<ruby>通用操作系统<rt>universal operating system</rt></ruby>”。
#### 5\. 安装 #### 5安装
[安装 Ubuntu][9] 比安装 Debian 容易得多。我并不是在骗你。即使对于中级 Linux 用户Debian 也可能令人困惑。 [安装 Ubuntu][9] 比安装 Debian 容易得多。我并不是在开玩笑。即使对于有经验的 Linux 用户Debian 也可能令人困惑。
当你下载 Debian 的时候,它默认提供的是最小化镜像。 此镜像没有非免费(非开源)固件。如果你继续安装它,你就可能会发现你的网络适配器和其它硬件将无法识别。 当你下载 Debian 的时候,它默认提供的是最小化镜像。此镜像没有非自由(非开源)的固件。如果你继续安装它,你就可能会发现你的网络适配器和其它硬件将无法识别。
有一个单独的非免费镜像包含固件,但它是隐藏的,如果你不知道,你可能会大吃一惊。 有一个单独的包含固件的非自由镜像,但它是隐藏的,如果你不知道,你可能会大吃一惊。
![Getting non-free firmware is a pain in Debian][10] ![Getting non-free firmware is a pain in Debian][10]
@ -98,57 +100,57 @@ Ubuntu 在默认提供的镜像中包含专有驱动程序和固件时要宽容
![Installing Ubuntu is smoother][11] ![Installing Ubuntu is smoother][11]
#### 6\. 开箱即用的硬件支持 #### 6开箱即用的硬件支持
就像之前提到的Debian 主要关注 [FOSS][12](自由和开源软件)。这意味着 Debian 提供的内核不包括专有驱动程序和固件。 就像之前提到的Debian 主要关注 [FOSS][12](自由和开源软件)。这意味着 Debian 提供的内核不包括专有驱动程序和固件。
这并不是说你无法使其工作,而是你必须添加/启动其它存储库并手动安装。这可能令人沮丧,特别是对于初学者来说。 这并不是说你无法使其工作,而是你必须添加/启动额外的存储库并手动安装。这可能令人沮丧,特别是对于初学者来说。
Ubuntu 并不完美,但在提供开箱即用的驱动程序和固件方面,它比 Debian 好得多。这意味着更少的麻烦和更完整的开箱即用体验。 Ubuntu 并不完美,但在提供开箱即用的驱动程序和固件方面,它比 Debian 好得多。这意味着更少的麻烦和更完整的开箱即用体验。
#### 7\. 桌面环境选择 #### 7桌面环境选择
Ubuntu 默认使用定制的 GNOME 桌面环境。你可以在其上安装其它桌面环境,或者选择各种基于桌面的 Ubuntu 风格,如 Kubuntu使用 KDE 桌面),Xubuntu使用 Xfce 桌面)等。 Ubuntu 默认使用定制的 GNOME 桌面环境。你可以在其上安装 [其它桌面环境][13],或者选择 [各种不同桌面风格的 Ubuntu][14],如 Kubuntu使用 KDE 桌面)、Xubuntu使用 Xfce 桌面)等。
Debian 也默认使用的 GNOME 桌面。但是它会让你在安装的过程中选择你要安装的桌面环境。 Debian 也默认安装了 GNOME 桌面。但是它会让你在安装的过程中选择你要安装的桌面环境。
![][15] ![][15]
你还可以从其网站获取[DE 特定的 ISO 镜像][16]。 你还可以从其网站获取 [特定桌面环境的 ISO 镜像][16]。
#### 8\. 游戏性 #### 8游戏性
由于 Stream 及其 Proton 项目Linux 上的游戏总体上有所改善。尽管如此,游戏在很大程度上取决于硬件。 由于 Stream 及其 Proton 项目Linux 上的游戏总体上有所改善。尽管如此,游戏在很大程度上取决于硬件。
在硬件兼容性上Ubuntu 比 Debian 更好的支持专有驱动程序 在硬件兼容性上Ubuntu 比 Debian 在支持专有驱动程序方面要好
并不是说它在 Debian 中不能完成,而是需要一些时间和精力来实现。 并不是说在 Debian 中不能做到这一点,而是需要一些时间和精力来实现。
#### 9\. 性能 #### 9性能
性能部分没有明显的“赢家”,无论是在服务器版本还是在桌面版本。 Debian 和 Ubuntu 作为桌面和服务器操作系统都很受欢迎。 性能部分没有明显的“赢家”,无论是在服务器版本还是在桌面版本。 Debian 和 Ubuntu 作为桌面和服务器操作系统都很受欢迎。
性能取决于你系统的硬件和你所使用的软件组件。你可以在你的操作系统中调整和控制你的系统。 性能取决于你系统的硬件和你所使用的软件组件。你可以在你的操作系统中调整和控制你的系统。
#### 10\. 社区和支持 #### 10社区和支持
Debian 是社区项目。此项目的一切都由其社区成员管理。 Debian 是一个真正的社区项目。此项目的一切都由其社区成员管理。
Ubuntu 由 [Canonical][17] 提供支持。然而,它并不是一个真正意义上的企业项目。它确实有一个社区,但任何事情的最终决定权都掌握在 Canonical 手中。 Ubuntu 由 [Canonical][17] 提供支持。然而,它并不是一个真正意义上的企业项目。它确实有一个社区,但任何事情的最终决定权都掌握在 Canonical 手中。
就支持而言Ubuntu 和 Debian 都有专门的论坛,用户可以在其中寻求帮助和提出建议。 就支持而言Ubuntu 和 Debian 都有专门的论坛,用户可以在其中寻求帮助和提出建议。
Canonical 还为其企业客户提供收费的专业支持。 Debian 没有这样的功能。 Canonical 还为其企业客户提供收费的专业支持。Debian 没有这样的功能。
### 结论 ### 结论
Debian 和 Ubuntu 都是桌面或服务器操作系统的可靠选择。 apt 包管理器和 DEB 包对两者都是通用的,因此提供了一些相似的体验。 Debian 和 Ubuntu 都是桌面或服务器操作系统的可靠选择。 APT 包管理器和 DEB 包对两者都是通用的,因此提供了一些相似的体验。
然而Debian 仍然需要一定程度的专业知识,特别是在桌面方面。如果你是 Linux 新手,坚持使用 Ubuntu 将是你更好的选择。在我看来,你应该获得一些经验,熟悉 Linux然后尝试使用 Debian。 然而Debian 仍然需要一定程度的专业知识,特别是在桌面方面。如果你是 Linux 新手,坚持使用 Ubuntu 将是你更好的选择。在我看来,你应该积累一些经验,熟悉了一般的 Linux然后再尝试使用 Debian。
并不是说你不能从一开始就使用 Debian但对于 Linux 初学者来说,这并不是一种很好的体验。 并不是说你不能从一开始就使用 Debian但对于 Linux 初学者来说,这并不是一种很好的体验。
**欢迎你对这场 Debian 与 Ubuntu 辩论发表意见。** 欢迎你对这场 Debian 与 Ubuntu 辩论发表意见。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -157,7 +159,7 @@ via: https://itsfoss.com/debian-vs-ubuntu/
作者:[Abhishek Prakash][a] 作者:[Abhishek Prakash][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[perfiffer](https://github.com/perfiffer) 译者:[perfiffer](https://github.com/perfiffer)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,99 @@
[#]: subject: "How to set up your printer on Linux"
[#]: via: "https://opensource.com/article/21/8/add-printer-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "fisherue"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13740-1.html"
如何在 Linux 系统设置打印机
======
> 如果系统没有自动检测到你的打印机,这篇文章教你如何在 Linux 系统手动添加打印机。
![](https://img.linux.net.cn/data/attachment/album/202109/01/104541gvvxvriei677o76v.jpg)
即使未来已来,<ruby>电子墨水<rt>e-ink</rt></ruby>和 AR 技术可以现实应用我们还是会用到打印机的。打印机制造商还不能做到让自己的专利打印机可以与各种计算机完全标准化传递信息以至于我们需要各种打印机驱动程序在任何操作系统上都是如此。电子电气工程师协会信息科学与技术处IEEE-ISTO下属的打印机工作组PWG和开放打印技术组织OpenPrinting.org长期合作致力于让人们可以使用任何型号打印机轻松打印。带来的便利就是很多打印机可以不需要用户进行配置就可以自动被识别使用。
如果系统没有自动检测到你的打印机,你可以在这篇文章中找到如何在 Linux 系统手动添加打印机。文中假定你使用的是 GNOME 图形桌面系统,其设置流程同样适用于 KDE 或其他大多数桌面系统。
### 打印机驱动程序
在你尝试用打印机打印文件时,要先确认你的 Linux 系统上是不是已经安装了更新的打印机驱动程序。
可以尝试安装的打印机驱动程序有三大类:
* 作为安装包提供的,捆绑在你的 Linux 系统上的开源 [Gutenprint 驱动程序][2]
* 打印机制造商提供的专用驱动程序
* 第三方开发提供的打印机驱动程序
开源打印机驱动程序库可以驱动 700 多种打印机,值得安装,这里面可能就有你的打印机的驱动,说不定可以自动设置好你的打印机(,你就可以使用它了)。
### 安装开源驱动程序包(库)
有些 Linux 发行版已经预装了开源打印机驱动程序包,如果没有,你可以用包管理器来安装。比如说,在 Fedora、CentOS、Magela 等类似发行版的 Linux 系统上,执行下面命令来安装:
```
$ sudo dnf install gutenprint
```
惠普HP系列的打印机还需要安装惠普的 Linux 图形及打印系统软件包HPLIP。如在 Debian、Linux Mint 等类似的系统上,可以使用下面的命令:
```
$ sudo apt install hplip
```
### 安装制造商提供的驱动程序
很多时候因为打印机制造商使用了非标准的接口协议,这种情况开源打印机驱动程序就不能驱动打印机。另外的情况就是,开源驱动程序可以驱动打印机工作,但是会缺少供应商特有的某些性能。这些情况,你需要访问制造商的网站,找到适合你的打印机型号的 Linux 平台驱动。安装过程各异,仔细阅读安装指南逐步安装。
如果你的打印机根本不被厂商支持,你或许也只能尝试第三方提供的该型号打印机的驱动软件了。这类第三方驱动程序不是开源的,但大多数打印机的专用驱动程序也不是。如果你需要额外花费从供应商那里获取帮助服务才能安装好驱动并使用你的打印机,那是很心疼,或者你索性把这台打印机扔掉,至少你知道下次再也不会购买这个品牌的打印机了。
### 通用打印驱动系统CUPS
<ruby>通用打印驱动系统<rt>Common Unix Printing System</rt></ruby>CUPS是由 Easy Software Products 公司于 1997 年开发的2007 年被苹果公司收购。这是 Linux 平台打印的开源基础软件包,大多数现代发行版都为它提供了一个定制化的界面。得益于 CUPS 技术,你可以发现通过 USB 接口连接到电脑的打印机,甚至连接在同一网络的共享打印机。
一旦你安装了需要的驱动程序包,你就能手工添加你的打印机了。首先,把打印机连接到运行的电脑上,并打开打印机电源。然后从“活动”屏幕或者应用列表中找到并打开“打印机”设置。
![printer settings][4]
基于你已经安装的驱动包,你的 Linux 系统有可能自动检测识别到你的打印机型号,不需要额外的设置就可以使用你的打印机了。
![printer settings][5]
一旦你在列表中找到你的打印机型号,设置使用这个驱动,恭喜你就可以在 Linux 系统上用它打印了。
(如果你的打印机没有被自动识别,)你需要自行添加打印机。在“打印机”设置界面,点击右上角的解锁按钮,输入管理用户密码,按钮转换成“添加打印机”按钮。
然后点击这个“添加打印机”按钮,电脑会搜索已经连接的本地打印机型号并匹配相应驱动程序。如果要添加网络共享打印机,在搜索框输入打印机或者其服务器机的 IP 地址。
![searching for a printer][6]
选中你想添加的打印机型号,点击“添加”按钮把打印机驱动加入系统,就可以使用它了。
### 在 Linux 系统上打印
在 Linux 系统上打印很容易,不管你是在使用本地打印机还是网络打印机。如果你计划购买打印机,建议查看开放打印技术组织的(可支持打印机)数据库([OpenPrinting.org][7]),看看你想购买的打印机是不是有相应的开源驱动程序。如果你已经拥有一台打印机,你现在也知道怎样在你的 Linux 系统上使用你的打印机了。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/add-printer-linux
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[fisherue](https://github.com/fisherue)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/happy-printer.png?itok=9J44YaDs "printing on Linux"
[2]: http://gimp-print.sourceforge.net/
[3]: https://www.turboprint.info/
[4]: https://opensource.com/sites/default/files/system-settings-printer_0.png "printer settings"
[5]: https://opensource.com/sites/default/files/settings-printer.png "printer settings"
[6]: https://opensource.com/sites/default/files/printer-search.png "searching for a printer"
[7]: http://www.openprinting.org/printers/

View File

@ -3,16 +3,16 @@
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" [#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: "geekpi" [#]: translator: "geekpi"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-13743-1.html"
Ulauncher一个超级实用的 Linux 应用启动器 Ulauncher一个超级实用的 Linux 应用启动器
====== ======
_**简介:**_ _Ulauncher 是一个快速的应用启动器,支持扩展和快捷方式,帮助你在 Linux 中快速访问应用和文件。_ > Ulauncher 是一个快速应用启动器,支持扩展和快捷方式,帮助你在 Linux 中快速访问应用和文件。
一个应用启动器可以让你快速访问或打开一个应用,而无需在应用菜单图标上徘徊。 应用启动器可以让你快速访问或打开一个应用,而无需在应用菜单图标上徘徊。
在默认情况下,我发现 Pop!_OS 的应用启动器超级方便。但是,并不是每个 Linux 发行版都提供开箱即用的应用启动器。 在默认情况下,我发现 Pop!_OS 的应用启动器超级方便。但是,并不是每个 Linux 发行版都提供开箱即用的应用启动器。
@ -32,9 +32,9 @@ Ulauncher 是一个使用 Python 还有 GTK+ 构建的快速应用启动器。
Ulauncher 中的选项非常非常易于访问且易于定制。一些关键的亮点包括: Ulauncher 中的选项非常非常易于访问且易于定制。一些关键的亮点包括:
* 模糊搜索算法,让你找到应用,即使你拼错了它们 * 模糊搜索算法可以让你即使拼错了,也能找到应用
* 记住你在同一会话中最后搜索的应用 * 可以记住你在同一会话中最后搜索的应用
* 经常使用的应用显示(可选) * 显示经常使用的应用(可选)
* 自定义颜色主题 * 自定义颜色主题
* 预设颜色主题,包括一个黑暗主题 * 预设颜色主题,包括一个黑暗主题
* 召唤启动器的快捷方式可以轻松定制 * 召唤启动器的快捷方式可以轻松定制
@ -42,45 +42,43 @@ Ulauncher 中的选项非常非常易于访问且易于定制。一些关键的
* 支持扩展,以获得额外的功能(表情符号、天气、速度测试、笔记、密码管理器等) * 支持扩展,以获得额外的功能(表情符号、天气、速度测试、笔记、密码管理器等)
* 浏览谷歌、维基百科和 Stack Overflow 等网站的快捷方式 * 浏览谷歌、维基百科和 Stack Overflow 等网站的快捷方式
它几乎提供了你在一个应用启动器中所期望的所有有用的能力,甚至更好。 它几乎提供了你在一个应用启动器中所期望的所有有用的能力,甚至更好。
### 如何在 Linux 中使用 Ulauncher ### 如何在 Linux 中使用 Ulauncher
默认情况下,首次从应用菜单打开应用启动器后,你需要按 **Ctrl + Space** 打开应用启动器。 默认情况下,首次从应用菜单中打开应用启动器后,你需要按 `Ctrl + Space` 打开应用启动器。
开始输入以搜索一个应用。而且,如果你正在寻找一个文件或目录,开始输入 “**~**” 或者 “**/**” (忽略引号) 输入以搜索一个应用。如果你正在寻找一个文件或目录,输入以 `~` 或者 `/` 开始
![][2] ![][2]
有一些默认的快捷键,如 “**g XYZ**”,其中 XYZ 是你想在谷歌中搜索的搜索词。 有一些默认的快捷键,如 `g XYZ`,其中 “XYZ” 是你想在谷歌中搜索的搜索词。
![][3] ![][3]
同样,你可以通过 “**wiki**” 和 “**so**” 快捷键,直接在维基百科或 Stack Overflow 搜索。 同样,你可以通过 `wiki``so` 快捷键,直接在维基百科或 Stack Overflow 搜索。
在没有任何扩展的情况下,你也可以直接计算内容,并将结果直接复制到键盘上 在没有任何扩展的情况下,你也可以直接计算内容,并将结果直接复制到剪贴板
![][4] ![][4]
这在快速计算时应该很方便,不需要单独启动计算器应用。 这在快速计算时应该很方便,不需要单独启动计算器应用。
你可以前往它的[扩展页面][5],浏览有用的扩展,以及指导你如何使用它的截图。 你可以前往它的 [扩展页面][5],浏览有用的扩展,以及指导你如何使用它的截图。
要改变它的工作方式,启用频繁的应用显示,并调整主题,请点击启动器右侧的齿轮图标。 要改变它的工作方式,启用显示经常使用的应用,并调整主题,请点击启动器右侧的齿轮图标。
![][6] ![][6]
你可以把它设置为自动启动。但是,如果它在你的支持 Systemd 的发行版上不工作,你可以参考它的 GitHub 页面,把它添加到服务管理器中。 你可以把它设置为自动启动。但是,如果它在你的支持 Systemd 的发行版上不工作,你可以参考它的 GitHub 页面,把它添加到服务管理器中。
这些选项是非常只管,且易于定制,如下图所示。 这些选项是非常直观,且易于定制,如下图所示。
![][7] ![][7]
### 在 Linux 中安装 Ulauncher ### 在 Linux 中安装 Ulauncher
Ulauncher 为基于 Debian 或 Ubuntu 的发行版提供了一个 **.deb** 包。如果你是 Linux 新手,你可以探索[如何安装 Deb 文件][8] 。 Ulauncher 为基于 Debian 或 Ubuntu 的发行版提供了一个 deb 包。如果你是 Linux 新手,你可以了解一下 [如何安装 Deb 文件][8] 。
在这两种情况下,你也可以添加它的 PPA并通过终端按照下面的命令来安装它 在这两种情况下,你也可以添加它的 PPA并通过终端按照下面的命令来安装它
@ -92,13 +90,13 @@ sudo apt install ulauncher
你也可以在 [AUR][9] 中找到它,用于 Arch 和 Fedora 的默认仓库。 你也可以在 [AUR][9] 中找到它,用于 Arch 和 Fedora 的默认仓库。
对于更多信息,你可以前往其官方网站或 [GitHub页面][10]。 对于更多信息,你可以前往其官方网站或 [GitHub 页面][10]。
[Ulauncher][11] - [Ulauncher][11]
Ulauncher 应该是任何 Linux 发行版中一个令人印象深刻的补充。特别是,如果你想要一个像 Pop!_OS 提供的快速启动器的功能,这是一个值得考虑的奇妙选择。 Ulauncher 应该是任何 Linux 发行版中一个令人印象深刻的补充。特别是,如果你想要一个像 Pop!_OS 提供的快速启动器的功能,这是一个值得考虑的奇妙选择。
_你试过 Ulauncher了吗欢迎你就如何帮助你快速完成工作分享你的想法。_ 你试过 Ulauncher了吗欢迎你就如何帮助你快速完成工作分享你的想法。
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -107,7 +105,7 @@ via: https://itsfoss.com/ulauncher/
作者:[Ankush Das][a] 作者:[Ankush Das][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -3,19 +3,22 @@
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/" [#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: "imgradeone" [#]: translator: "imgradeone"
[#]: reviewer: " " [#]: reviewer: "wxy"
[#]: publisher: " " [#]: publisher: "wxy"
[#]: url: " " [#]: url: "https://linux.cn/article-13739-1.html"
elementary OS 6 Odin 评测 迟到的新版本,但也实至名归 elementary OS 6 Odin 评测迟到的新版本,但也实至名归
====== ======
> 这篇 elementary OS 6 的评测将为您呈现该系统在旧款测试设备上的表现。
> 这篇 elementary OS 6 的评测将为你呈现该系统在旧款测试设备上的表现。
![](https://img.linux.net.cn/data/attachment/album/202109/01/095116zk73wcc4g5clnvq8.jpg)
elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近两年了。如此焦急的原因,主要在于早期版本 elementary OS 5.1 的内核和软件包在 2021 年来说过于陈旧。而且,这一旧版本基于 Ubuntu 18.04 LTS 构建。因此,用户都急切地等待着基于 Ubuntu 20.04 LTS 的全新版本 —— 最重要的是Ubutnu 20.04 LTS 已经发布一年,接下来也将有下一个 LTS 版本发布。 elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近两年了。如此焦急的原因,主要在于早期版本 elementary OS 5.1 的内核和软件包在 2021 年来说过于陈旧。而且,这一旧版本基于 Ubuntu 18.04 LTS 构建。因此,用户都急切地等待着基于 Ubuntu 20.04 LTS 的全新版本 —— 最重要的是Ubutnu 20.04 LTS 已经发布一年,接下来也将有下一个 LTS 版本发布。
你应该也明白的,过长的等待时间,很可能导致用户跳槽到其他发行版。 你应该也明白的,过长的等待时间,很可能导致用户跳槽到其他发行版。
但即便如此,新版本终于还是 [在 8 月发布了][1],它也在用户和粉丝群体中引起了很大的轰动 但即便如此,新版本终于还是 [在 8 月发布了][1],它在用户和粉丝群体很受欢迎
于是,我在一周前为一台旧设备(我知道新设备的体验会更好)安装了 elementary OS 6 Odin下面就是测评。 于是,我在一周前为一台旧设备(我知道新设备的体验会更好)安装了 elementary OS 6 Odin下面就是测评。
@ -23,7 +26,7 @@ elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近
### elementary OS 6 Odin 测评 ### elementary OS 6 Odin 测评
测试设备 测试设备
* CPU Intel Core i34 GB 运行内存 * CPU Intel Core i34 GB 运行内存
* 硬盘 SSD 固态硬盘 * 硬盘 SSD 固态硬盘
@ -31,23 +34,19 @@ elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近
#### 安装 #### 安装
在这一版本中elementary 团队针对 elementary OS 安装器做了易用性优化,而这一次的安装器也是自制安装器。新安装器减少了安装前的准备步骤,虽然它还是需要依赖 GParted 进行分区操作(当然 GParted 本身是一款不错的工具)。 在这一版本中elementary 团队针对他们自制的 elementary OS 安装器做了易用性优化。新安装器减少了安装前的准备步骤,虽然它还是需要依赖 GParted 进行分区操作(当然 GParted 本身是一款不错的工具)。
在前述测试设备中,安装过程大约花费了 10 分钟没有任何报错。初始化之后GRUB 也正常更新,没有任何意外。这是一个带有 Legacy BIOS 的三系统启动器。 在前述测试设备中,安装过程大约花费了 10 分钟没有任何报错。安装完之后GRUB 也正常更新,没有任何意外。这是一个安装在老式 BIOS 上多引导系统。
<!-- 不太确定“这是一个带有 Legacy BIOS 的三系统启动器”这句话的翻译。原句It was a triple boot system with Legacy Bios. -->
#### 初见印象 #### 初见印象
如果你刚听说 elementary OS 和 Pantheon 桌面,或者从其他传统菜单型桌面环境迁移过来,你可能需要一两天时间来适应这款桌面。当然,如果你已经是 elementary OS 的老用户的话,那么你将获得一致的体验,外加性能和外观的优化。 如果你刚听说 elementary OS 和 Pantheon 桌面,或者从其他传统菜单型桌面环境迁移过来,你可能需要一两天时间来适应这款桌面。当然,如果你已经是 elementary OS 的老用户的话,那么你将获得一致的体验,外加性能和外观的优化。
你应该可以察觉到一些明显可见的 [elementary OS 6 的新特性][3],像是强调色、原生暗黑模式,以及一组不错的新壁纸。 你应该可以察觉到一些明显可见的 [elementary OS 6 的新特性][3],像是强调色、原生暗黑模式,以及一组不错的新壁纸。
[][4]
#### 稳定性与性能 #### 稳定性与性能
我已经使用 elementary OS 6 Odin 超过一周的时间。在日常使用后,我只能说,它很稳定,没有突然的崩溃和意外。其他额外软件(需要从 apt 独立安装)也运作正常,没有性能损耗 我已经使用 elementary OS 6 Odin 超过一周的时间。在日常使用后,我只能说,它很稳定,没有突然的崩溃和意外。其他(通过 `apt` 单独安装的)额外软件也运作正常,性能也没有降低
在近乎闲置的情况下CPU 使用率处在 5%-10% 之间,内存占用约为 900 MB。CPU / 内存的消耗主要分配在 GalaPantheon 的窗口管理器、Wingpanel顶栏和应用中心。 在近乎闲置的情况下CPU 使用率处在 5%-10% 之间,内存占用约为 900 MB。CPU / 内存的消耗主要分配在 GalaPantheon 的窗口管理器、Wingpanel顶栏和应用中心。
@ -57,13 +56,11 @@ elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近
#### 应用程序与应用中心 #### 应用程序与应用中心
elementary OS 的应用程序列表经过精选,几乎所有类型的软件都可以从应用中心获取,包括 Flatpak 应用。不过elementary OS 并没有预装一些重要的应用程序,像是 Firefox、LibreOffice、Torrent 客户端、硬盘分区工具、照片编辑器之类 —— 这些重要的程序需要在安装系统后再自行安装。我认为预装软件这一块有很大的改进空间。 elementary OS 的应用程序列表经过精选,几乎所有类型的软件都可以从应用中心获取,包括 Flatpak 应用。不过elementary OS 默认并没有预装一些重要的应用程序,像是 Firefox、LibreOffice、Torrent 客户端、硬盘分区工具、照片编辑器之类 —— 这些重要的程序需要在安装系统后再自行安装。我认为预装软件这一块有很大的改进空间。
### 结束语 ### 结束语
在这一周的测试中,我也多次遇到了一个 bugWi-Fi 有时会突然断开,不过这完全是 Ubuntu 20.04 上游的问题 —— 多年以来,它一直有奇怪的 Wi-Fi 问题。抛开这个问题elementary OS 确实是一款稳定、优秀的 Linux 发行版。如果 elementary OS 有滚动更新的版本,也许会更好。因此,这是一款值得推荐的发行版,尤其适合 macOS 的迁移者。 在这一周的测试中,我也多次遇到了一个 bugWi-Fi 有时会突然断开,不过这完全是上游 Ubuntu 20.04 的问题 —— 多年以来,它一直有奇怪的 Wi-Fi 问题。抛开这个问题elementary OS 确实是一款稳定、优秀的 Linux 发行版。如果 elementary OS 有滚动更新的版本,也许会更好。因此,这是一款值得推荐的发行版,尤其适合那些从 macOS 迁移过来的人。
* * *
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -71,8 +68,8 @@ via: https://www.debugpoint.com/2021/08/elementary-os-6-odin-review/
作者:[Arindam][a] 作者:[Arindam][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID) 译者:[imgradeone](https://github.com/imgradeone)
校对:[校对者ID](https://github.com/校对者ID) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,135 @@
[#]: subject: "Linux kernel modules we can't live without"
[#]: via: "https://opensource.com/article/21/8/linux-kernel-module"
[#]: author: "Jen Wike Huger https://opensource.com/users/jen-wike"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-13747-1.html"
我们离不开的 Linux 内核模块
======
> 开源爱好者们对他们所喜爱的 Linux 内核模块进行了评价。
![](https://img.linux.net.cn/data/attachment/album/202109/03/065649hik5hjiiy3htj589.jpg)
Linux 内核今年就要满 30 岁了! 如果你像我们一样对此特别重视,那么让我们本周用几个特别的文章来庆祝 Linux。
今天,我们先来看看来自社区对“**你不能没有哪个 Linux 内核模块?为什么?**”的回答,让我们听听这 10 位爱好者是怎么说的。
### #1
我猜一些内核开发者听到我的回答后会尖叫着跑开。不过,我还是在这里列出了两个最具争议性的模块:
* 第一个是 NVIDIA因为我的工作笔记本和个人台式机上都有 NVIDIA 显卡。
* 另一个可能产生的仇恨较少。VMware 的 VMNET 和 VMMON 模块,以便能够运行 VMware Workstation。
— [Peter Czanik][2]
### #2
我最喜欢的是 [zram][3] 模块。它在内存中创建了一个压缩块设备,然后它可以作为交换分区使用。在内存有限的情况下(例如,在虚拟机上),还有如果你担心频繁的 I/O 操作会磨损你的 SSD 或者甚至更糟糕的基于闪存的存储,那么使用基于 zram 的交换分区是非常理想的。
— [Stephan Avenwedde][4]
### #3
最有用的内核模块无疑是 snd-hda-intel因为它支持大多数集成声卡。我可以一边听音乐一边在 Linux 桌面上编码一个音频编曲器。
— [Joël Krähemann][5]
### #4
如果没有我用 Broadcom 文件生成的 kmod-wl我的笔记本就没有价值了。我有时会收到关于内核污染的信息但没有无线网络的笔记本电脑有什么用呢
— [Gregory Pittman][6]
### #5
我不能没有蓝牙。没有它,我的鼠标、键盘、扬声器和耳机除了用来挡住门板还有啥用?
— [Gary Smith][7]
### #6
我要冒昧地说 _全_ 都是。 说真的,我们已经到了随机拿一块硬件,插入它,它就可以工作的地步。
* USB 串行适配器能正常工作
* 显卡可以使用(尽管可能不是最好的)
* 网卡正常工作
* 声卡正常工作
所有这些模块整体带来大量可以工作的驱动程序,令人印象深刻。我记得在过去那些糟糕的日子里,我们曾经大喊 xrandr 魔法字符串才能来使投影仪工作。而现在,是的,当设备基本不能正常工作时,才真的罕见。
如果我不得不把它归结为一个,那就是 raid6。
— [John 'Warthog9' Hawley][8]
### #7
对于这个问题,我想回到 20 世纪 90 年代末。我是一家小公司的 Unix 系统管理员(兼任 IS 经理)。我们的磁带备份系统死了,由于“小公司”预算有限,我们没有急于更换或现场维修。所以我们必须得把它送去维修。
在那两个星期里,我们没有办法进行磁带备份。没有一个系统管理员愿意处于这种境地。
但后来我想起了读过的 [如何使用软盘磁带机][9],我们刚好有一台刚换下来的塔式电脑,它有一个软盘磁带机。
于是我用 Linux 重新安装了它,设置了 ftape 内核驱动模块,进行了一些备份/恢复测试,然后将我们最重要的备份运行到 QIC 磁带上。在这两个星期里,我们依靠 ftape 备份重要数据。
所以,对于那些让软盘磁带机在 1990 年代的 Linux 上工作的无名英雄,你真是太厉害了!
— [Jim Hall][10]
### #8
嗯,这很简单。是 kvm 内核模块。就个人而言我无法想象在没有虚拟机的情况下完成日常工作。我愿意相信我们大多数人都是这样。kvm 模块在使 Linux 成为云战略的核心方面也发挥了很大作用。
— [Gaurav Kamathe][11]
### #9
对我来说,是 dm-crypt它是用于 LUKS 的。参见:
* <https://www.redhat.com/sysadmin/disk-encryption-luks>
* <https://manpages.debian.org/unstable/cryptsetup-bin/cryptsetup.8.en.html>
知道别人无法看到你的磁盘上的内容是非常棒的,例如,如果你的笔记本丢失或被盗时。
— [Maximilian Kolb][12]
### #10
对于密码学基础,很难超越 crypto 模块和它的 C API它是如此简洁明了。
在日常生活中,还有什么比蓝牙提供的即插即用更有价值的吗?
— [Marty Kalin][13]
在评论中与我们分享。你的生活中不能没有什么 Linux 内核模块?
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/linux-kernel-module
作者:[Jen Wike Huger][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[wxy](https://github.com/wxy)
本文由 [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/linux_keyboard_desktop.png?itok=I2nGw78_ (Linux keys on the keyboard for a desktop computer)
[2]: https://opensource.com/users/czanik
[3]: https://en.wikipedia.org/wiki/Zram
[4]: https://opensource.com/users/hansic99
[5]: https://opensource.com/users/joel2001k
[6]: https://opensource.com/users/greg-p
[7]: https://opensource.com/users/greptile
[8]: https://opensource.com/users/warthog9
[9]: https://tldp.org/HOWTO/Ftape-HOWTO.html
[10]: https://opensource.com/users/jim-hall
[11]: https://opensource.com/users/gkamathe
[12]: https://opensource.com/users/kolb
[13]: https://opensource.com/users/mkalindepauledu

View File

@ -0,0 +1,76 @@
[#]: subject: "Ransomware Disguised as Open-Source Krita Painting App Promo Video"
[#]: via: "https://news.itsfoss.com/krita-email-scam/"
[#]: author: "Ankush Das https://news.itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Ransomware Disguised as Open-Source Krita Painting App Promo Video
======
Ransomware attacks are exponentially increasing. And, the way it gets distributed evolves every day.
One of the most effective ways is by using reputable brand names to lure users into downloading malicious files that may end up encrypting your files and demand a ransom.
And, in this case, some scammers have started using Kritas name to deceive users through email.
### Spreading Malware via Email as Krita Officials
The attackers disguise themselves as the team for Krita, one of the best [digital open-source painting app][1].
The email mentions that Krita wants to collaborate with your YouTube channel or your social media space to share promotional videos about their software/product.
And, they mention that this is a paid advertising campaign, so you think you are getting a reward for promoting Krita.
Heres how the email looks like (as shared by [Krita on Twitter][2]):
![][3]
Once you show interest in promoting Krita, they send you a follow-up mail instructing you to download a press kit containing screenshots, videos, and other materials.
The link may look similar to the official one like _krita.io, krita.net_, etc.
In a detailed video shared by a Twitter user, you can see that the link they share is malicious and sometimes goes undetected by Googles safe browsing feature:
> Recently, I received the same email. Though I know this is likely a scam, I decided to proceed further just to see how far will they take us. They asked me to download some files and you can watch the full video here: <https://t.co/Mv2p9z3HCa> [pic.twitter.com/P1K2tlHiT4][4]
>
> — Inside Electronics (@InsideElectro) [August 29, 2021][5]
While I agree that this is not the best attempt to distribute malware, not everyone is as attentive as this user here.
### Never Trust an Email Without Proper Verification
It is easy for attackers to send you emails that you expect or something that may spark an interest in your work.
Scammers do their homework to know what you like, but always stay cautious no matter what or who appears to be sending the email.
If an email explicitly asks to enter your personal information, download an attachment, or visit a website to download a file, you need to double-check if it comes from an official source.
Generally, officials do not ask you to download any file or personal information unless you took action first. So, it is always wise to think twice and run a background check for what you interact with via emails.
#### Big Tech Websites Get Millions in Revenue, It's FOSS Got You!
If you like what we do here at It's FOSS, please consider making a donation to support our independent publication. Your support will help us keep publishing content focusing on desktop Linux and open source software.
I'm not interested
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/krita-email-scam/
作者:[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://news.itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/open-source-paint-apps/
[2]: https://twitter.com/Krita_Painting/status/1432295734074880003
[3]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI3OSIgd2lkdGg9IjU4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
[4]: https://t.co/P1K2tlHiT4
[5]: https://twitter.com/InsideElectro/status/1431938502862663680?ref_src=twsrc%5Etfw

View File

@ -0,0 +1,77 @@
[#]: subject: "Linux Lite Moves to Pay What You Want Model With Version 5.6 Release"
[#]: via: "https://news.itsfoss.com/linux-lite-5-6-release/"
[#]: author: "Jacob Crume https://news.itsfoss.com/author/jacob/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Linux Lite Moves to Pay What You Want Model With Version 5.6 Release
======
[Linux Lite][1] has just announced Linux lite 5.6, the fourth installment in their 5.x series of releases. This release brings some major changes, especially in the download process. Other, more subtle tweaks are also shown throughout the OS.
Here, we will be looking at what is new, what has changed, and how these changes may affect the future of Linux Lite.
### What Has Changed in Linux Lite 5.6?
![][2]
Alongside the new download model, there a few key changes. These include:
* New features in the Lite Tweaks app
* Updated icon theme
* New wallpapers
While this list is relatively short, there are a couple of meaningful changes.
### Pay Want You Want Download Model
Definitely the most impactful change, Linux Lite has moved to a “Pay what you want” download model. For those not familiar with the term, it is a system where the user is encouraged to pay to obtain a download link. Users can still enter $0 to get the download link for free, but it is not immediately clear and does not support the distro.
This move follows the footsteps of other popular distros, including ElementryOS. While I can see many users being annoyed at this change, it has also been made clear that Linux Lite would die without this change.
> “This is a road Id never thought Id go down, but we have no choice. Either we stagnate and accept the big Gs ever-changing algorithms, or we boldly go where others have dared.”
Jerry Bezencon
In hindsight, this change was inevitable, as there is almost no other way for distributions to reasonably sustain themselves (aside from donations). Now we need to see how this change pays off for the developers of Linux Lite.
### Updated Lite Tweaks App
With this update, the Lite Tweaks app gets a few improvements. One of these is the ability to completely clear the cache of the Brave web browser. It also has a new option to set Brave as the default web browser.
The second update within the Lite Tweaks app is a fix for GRUB. This tweak changes the grub entry from “Ubuntu” to “Linux Lite”. However, it should be noted that this option is only available when GRUB is controlled by Linux Lite.
### Wrapping Up
If you want to try Linux Lite for yourself, you can [download it from its website][3]. If you are already running Linux Lite, you can update to version 5.6 using the instructions found on the [release announcement][4].
While minor, this release does have a few improvements scattered around the OS. Most importantly, however, is the fact that Linux Lite can now be self-sustaining, meaning that we will continue to see more features added with every release. I think this is much better that the distro dying, dont you?
#### Big Tech Websites Get Millions in Revenue, It's FOSS Got You!
If you like what we do here at It's FOSS, please consider making a donation to support our independent publication. Your support will help us keep publishing content focusing on desktop Linux and open source software.
I'm not interested
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/linux-lite-5-6-release/
作者:[Jacob Crume][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://news.itsfoss.com/author/jacob/
[b]: https://github.com/lujun9972
[1]: https://www.linuxliteos.com/
[2]: data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ0MCIgd2lkdGg9Ijc4MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4=
[3]: https://www.linuxliteos.com/download.php
[4]: https://www.linuxliteos.com/forums/release-announcements/linux-lite-5-6-final-released/

View File

@ -0,0 +1,64 @@
[#]: subject: "How my team built an open source learning experience platform"
[#]: via: "https://opensource.com/article/21/8/open-source-lms"
[#]: author: "Tesh Patel https://opensource.com/users/tesh"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How my team built an open source learning experience platform
======
Open source powers innovation through community and shared experiences.
![Student desk for open education][1]
Learning is based on the open exchange of ideas and experiences. By sharing, testing, and practicing what we've learned with others, we're able to develop in our lives and careers. It follows that openness is the ideal state for any successful learning organization. 
I am passionate about learning, building teams, and technology. At Red Hat, we believe that open source powers innovation and results in better solutions. Five years ago, our learning management system was proprietary and closed. All of our learning platforms existed as islands with limited integration and provided a mediocre user experience. Over the past five years, our team has embraced the open source ethos. We've built and implemented new open source platforms, integrated our disparate learning platforms allowing us to freely exchange data and create a superior user experience.
If you're a fellow member of a learning organization, I hope you might find it helpful to hear about our experience so far and perhaps even join us as we seek to influence the future of learning. 
### Unlocking potential
Our previous LMS served as the primary back-office system, system of record, and front-end experience for our learners. To put it plainly, it didn't serve any of those functions well. Our data was locked up in the vendor's vault. We had to live with the LMS's limited reporting capability or extract the data and manually manipulate it in spreadsheets. Perhaps worst of all, our learners faced a mediocre front-end system with a less-than-intuitive user experience. To live with our LMS, we had to create inefficient processes and workarounds.
And so, in 2016, we began our journey to open source learning by replacing our proprietary LMS with [Totara Learn, an open source LMS][2]. 
By moving to Totara Learn, we unlocked our data and turned our attention to improving the user experience for our learners. 
### Identifying the ecosystem
Our learning ecosystem consists of more than just an LMS. In addition to our own content, we have access to content from third-party libraries, user-generated video content, virtual classroom tools for delivering online classes, and virtualized labs.
We knew we needed a single interface to disguise our complex learning platforms and tools and deliver one seamless experience to the learner. Initially, we tried customizing Totara Learn for this purpose. It's a great platform, but we eventually realized it wasn't cost-effective for us to remodel it from the ground up. What we needed was a platform designed for our unique requirements.
### Focusing on the learner
In 2017, as my team pondered our learning ecosystem challenges, an emerging category of products called learning experience platforms (LXP) emerged. I found several LXP vendors who claimed to solve problems with the learning experience. Many described their platform's experience as the "Netflix of learning." 
In my experience, I've found that learning isn't suited to a Netflix-like environment. The notion of randomly perusing learning, enrolling in a program, and then abandoning as it gets more challenging or less interesting—as you do with Netflix shows—is the antithesis of what our continuous learning philosophy encourages. Real learning that builds skills and capabilities requires an intentional focus and an ongoing commitment with a learn, practice, reflection, feedback loop. 
As my team compiled the requirements for an LXP, we quickly realized we were just at the beginning of determining what we'd need to build to create the best learning experience for our users. The requirements would continue to grow and evolve, so we needed a platform that could do the same. The idea for the Open Learning Platform (OLP) was born.
### Our open invitation
The OLP is a learning experience platform (LXP) that provides a personalized, online learning experience for users—typically employees at large enterprises. It consolidates disparate learning resources into a single portal. These days, learning can happen anywhere and in many forms. An LXP helps employees discover learning opportunities—offering ways to enhance them and manages their education. We've spent three years developing and building the OLP to meet the learning needs of users and educators. The OLP has come a long way, but we also know we're very much still on the journey. 
Since the inception of the OLP, we knew we wanted it to be an open source project. Why invest time and energy in open sourcing the platform we've built over several years? Simple. We want to learn from the experiences and innovation of others and form a community that will help determine what the LMS and LXP of the future should be. We want to move past a cost-per-user licensing model and the limitations in thinking when the sole focus is to monetize a product. If even one other learning organization benefits from our open source project, then it will have been worth the investment of our time. We welcome you to join the conversation at[ Open Learning Platform][3].
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/open-source-lms
作者:[Tesh Patel][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/tesh
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003588_01_rd3os.combacktoschoolseriesgen_rh_032x_0.png?itok=cApG9aB4 (Student desk for open education)
[2]: https://github.com/totara
[3]: https://www.openlearningplatform.org/

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972) [#]: collector: (lujun9972)
[#]: translator: ( ) [#]: translator: (YungeG)
[#]: reviewer: ( ) [#]: reviewer: ( )
[#]: publisher: ( ) [#]: publisher: ( )
[#]: url: ( ) [#]: url: ( )

View File

@ -1,185 +0,0 @@
[#]: subject: "10 Things to Do After Installing elementary OS 6 “Odin”"
[#]: via: "https://www.debugpoint.com/2021/08/10-things-to-do-after-install-elementary-os-6/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lujun9972"
[#]: translator: "anine09"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
10 Things to Do After Installing elementary OS 6 “Odin”
======
A curated list of things to do after installing the latest elementary OS
6 code-named “Odin”._Pre-step_Applications > System Settings > Desktop
The [elementary OS 6 “Odin” released][1] a while back after more than two years in development. It brings a huge set of new features across its core modules, Pantheon desktop, native applications. This release is based on the Ubuntu 20.04 LTS.
That said, if you already completed the installation, there are certain customization that you might want to try out to personalize your system. The options those described here are generic and may not be useful for you at certain cases, but we feel its worth to list down some basics and give you a path to explore more of this beautiful elementary OS.
### Things to Do After Installing elementary OS 6 “Odin”
Make sure you connect to the internet first. You can get the list of networks available in the notification area at the top.
#### 1\. Change hostname
This might not be the first thing you would like to do. However, I am not sure why an option not given changing the hostname during installation itself. For example, see below terminal prompt, the hostname is the default hardware configuration set by elementary OS. Which is not looking good at all in my opinion.
![hostname change before][2]
To change the hostname, open a terminal and run the below command.
```
hostnamectl set-hostname your-new-hostname
```
example:
![changing hostname][3]
![changed hostname][4]
#### 2\. Update your system
The very first thing you should do after installing any Linux distribution is to make sure the system is up-to-date with packages and security updates.
To do that here, you can open App Center and check/install for updates.
Or, open the Terminal and run the below commands.
```
sudo apt update
sudo apt upgrade
```
#### 3\. Install Pantheon Tweaks
Pantheon Tweaks is a must-have application in elementary OS. It provides additional settings and configuration options that is not available via standard system settings app. To install Pantheon Tweaks, open a terminal and run the below commands. Note: The earlier tweak tool was elementary Tweaks, which is renamed with Pantheon Tweaks from Odin onwards.
```
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:philip.scott/pantheon-tweaks
sudo apt install -y pantheon-tweaks
```
After installation, open System Settings and you can find Tweaks option there.
A detailed installation guide is [available here][5] (if you need more information).
#### 4\. Configure Dock
Dock is the center of the desktop. And honestly, the default apps that is included in the dock are not that popular. So, you can always configure the dock items using the below steps.
* To remove: Right click and uncheck the **Keep in Dock** option.
* To add new items: Click on Application at the top. Then right-click on the application icon which you want in dock. Select **Add to Dock**.
In my opinion, you should add at least File manager, screenshot tool, Firefox, Calculator among other things. And remove the ones you dont need.
#### 5\. Change the look and feel
The elementary OS 6 Odin revamped the overall look of the desktop with pre-loaded accent color, native dark mode for entire desktop and applications. Also, pre-loads nice wallpapers. You can customize all these via . There you will have options for Wallpaper, Appearance, Panels and Multitasking.
![elementary OS 6 Odin settings window Desktop][6]
Configure the look as you wish.
[][7]
SEE ALSO:   elementary OS 6 Odin: New Features and Release Date
Oh, you can also schedule the Dark and Light mode based on Sunset and Sunrise!
#### 6\. Install Additional Applications
The native AppCenter is great for this OS. I find it one of the best curated app store available in Linux desktop. However, sometimes Its also better to install necessary applications (mostly the known ones) those are not pre-loaded. Heres a quick list of applications which you can install in a fresh system. _(Seriously, why LibreOffice is not preloaded?)_
* firefox
* gimp
* gedit
* inkscape
* obs-studio
* libreoffice
#### 7\. Some Battery Saver Tips (Laptop)
There are many ways which you can configure your elementary OS (or Linux desktop in general) to save battery life. Remember that battery life depends on your Laptop hardware, how old the battery/Laptop is among other things. So, following some of the below tips to get the maximum out of your Laptop battery.
* Install [tlp][8]. The tlp is a simple to use, terminal based utility to help you to save Battery Life in Linux. You need to just install it, and it will take care of the other settings by default. Installation commands:
```
sudo add-apt-repository ppa:linrunner/tlp
sudo apt update
sudo apt-get install tlp
sudo tlp start
```
* Turn off Bluetooth, which is turned on by default. Enable it when required.
* Install thermald via below command. This utility (actually a daemon) controls the P-States, T-States of your CPU for temperature and controls the heating.
```
sudo apt install thermald
```
* Control brightness to minimum as per your need.
#### 8\. Install a Disk Utility
More often, you can find that you need to format a USB or write something to USB. By default, there are no application installed. The best applications with easy usage are the below ones. You can install them.
```
gnome-disk-utility
gparted
```
#### 9\. Enable Minimize and Maximize Option
Many users prefer to have the Maximize, Minimize window buttons at the left or right of the window title bar. The elementary OS only gives you close and restore options by default. Which is completely fine because of the way its designed. However, you can use Pantheon Tweaks to enable it via Tweaks &gt; Appearance &gt; Window Controls.
![enable minimize maximize buttons elementary OS][9]
#### 10\. Learn the new multi-touch gestures in Odin
If you are a Laptop user, and using elementary OS Odin, then you definitely check out the super cool new gestures. A three-finger swipe up smoothly opens the Multitasking View, exposing open apps and workspaces. A three-finger swipe left or right smoothly switches between the dynamic workspaces, making it even faster to jump between tasks.
And with two fingers you can achieve similar feature inside native applications as well.
### Closing Notes
I hope these 10 things to do after installing elementary OS 6 helps you and get you started with elementary OS 6 Odin. Although, these are completely user preference; hence these may or may not apply to you. But in general, these are expected tweaks that the average user prefers.
Let me know in the comments below if there are some more tweaks you feel that should be added in the list.
* * *
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/2021/08/10-things-to-do-after-install-elementary-os-6/
作者:[Arindam][a]
选题:[lujun9972][b]
译者:[anine09](https://github.com/anine09)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lujun9972
[1]: https://www.debugpoint.com/2021/08/elementary-os-6/
[2]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/hostname-change-before.jpeg
[3]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/changing-hostname.jpeg
[4]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/changed-hostname.jpeg
[5]: https://www.debugpoint.com/2021/07/elementary-tweaks-install/
[6]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/elementary-OS-6-Odin-settings-window-Desktop.jpeg
[7]: https://www.debugpoint.com/2020/09/elementary-os-6-odin-new-features-release-date/
[8]: https://linrunner.de/tlp/
[9]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/enable-minimize-maximize-buttons-elementary-OS-1024x501.png

View File

@ -1,121 +0,0 @@
[#]: subject: "Linux kernel modules we can't live without"
[#]: via: "https://opensource.com/article/21/8/linux-kernel-module"
[#]: author: "Jen Wike Huger https://opensource.com/users/jen-wike"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Linux kernel modules we can't live without
======
Open source enthusiasts weigh in on the Linux kernel modules they love.
![Linux keys on the keyboard for a desktop computer][1]
The Linux kernel is turning 30 this year! If you're like us, that's a big deal and we are celebrating Linux this week with a couple of special posts.
Today we start with a roundup of responses from around the community answering "What Linux kernel module can you not live without? And, why?" Let's hear what these 10 enthusiasts have to say.
* * *
I guess some kernel developers will run away screaming when they hear my answer. Still, I list here two of the most controversial modules:
* First is NVIDIA, as I have an NVIDIA graphics card on my work laptop and my personal desktop.
* The other one probably generates less hatred—the VMNET and VMMON modules from VMware to be able to run VMware Workstation. —[Peter Czanik][2]
* * *
My favorite is the [zram][3] module. It creates a compressed block device in memory, which can then be used as a swap partition. Using a zram-based swap partition is ideal when memory is limited (for example, on virtual machines) and if you are worried about wearing out your SSD or, even worse, your flash-based storage because of frequent I/O operations. —[Stephan Avenwedde][4]
* * *
The most useful kernel module is definitively snd-hda-intel since it supports most integrated sound cards. I listen to music while coding an audio sequencer on the Linux desktop. —[Joël Krähemann][5]
* * *
My laptop would be worthless without the kmod-wl that I generate with the Broadcom file. I sometimes get messages about tainting the kernel, but what good is a laptop without wireless? —[Gregory Pittman][6]
* * *
I can't live without Bluetooth. Without it, my mouse, keyboard, speakers, and headset would be doorstops. —[Gary Smith][7]
* * *
I'm going to go out on a limb and say _all of them_. Seriously, we've gotten to the point where I grab a random piece of hardware, plug it in, and it just works.
* USB serial adapter just works
* Video card just works (though maybe not at its best)
* Network card just works
* Sound card just works
It's tough not to be utterly impressed with the broad scope of the driver work that all the modules bring to the whole. I remember the bad old days when we used to yell out xrandr magic strings to make projectors work, and now—yeah, it's a genuine rarity when stuff doesn't (mostly) just work.
If I had to nail it down to one, though, it'd be raid6. —[John 'Warthog9' Hawley][8]
* * *
I'm going to go back to the late 1990s for this one. I was a Unix systems administrator (and double duty as IS manager) for a small company. Our tape backup system died, and because of "small company" limited budgets, we didn't have a rush replacement or onsite repair on it. So we had to send it in for repair.
During those two weeks, we didn't have a way to make tape backups. No systems administrator wants to be in that position.
But then I remembered reading the [Floppy Tape How-to][9], and we happened to have a tower PC we'd just replaced that had a floppy tape drive.
So I reinstalled it with Linux, set up the **ftape** kernel driver module, ran a few backup/recovery tests, then ran our most important backups to QIC tapes. For those two weeks, we relied on **ftape** backups of critical data.
So to the unsung hero out there who made floppy tape drives work on 1990s Linux, you are awesome! —[Jim Hall][10]
* * *
Well, that's easy. It's the kvm kernel modules. On a personal front, I cannot imagine doing my day-to-day work without VMs. I'd like to believe that's the case with most of us. The kvm modules also play a big part in making Linux central to the cloud strategy. —[Gaurav Kamathe][11]
* * *
For me, it's dm-crypt, which is used for LUKS. See:
* <https://www.redhat.com/sysadmin/disk-encryption-luks>
* <https://manpages.debian.org/unstable/cryptsetup-bin/cryptsetup.8.en.html>
It's fantastic to know others cannot see what's on your disk, for example, if you lose your notebook or it gets stolen. —[Maximilian Kolb][12]
* * *
For cryptography basics, it's hard to beat the crypto module and its C API, which is straightforward.
For day-to-day life, is there anything more valuable than the plug-and-play that Bluetooth provides? —[Marty Kalin][13]
* * *
Share with us in the comments: What Linux kernel module can you not live without?
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/linux-kernel-module
作者:[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/linux_keyboard_desktop.png?itok=I2nGw78_ (Linux keys on the keyboard for a desktop computer)
[2]: https://opensource.com/users/czanik
[3]: https://en.wikipedia.org/wiki/Zram
[4]: https://opensource.com/users/hansic99
[5]: https://opensource.com/users/joel2001k
[6]: https://opensource.com/users/greg-p
[7]: https://opensource.com/users/greptile
[8]: https://opensource.com/users/warthog9
[9]: https://tldp.org/HOWTO/Ftape-HOWTO.html
[10]: https://opensource.com/users/jim-hall
[11]: https://opensource.com/users/gkamathe
[12]: https://opensource.com/users/kolb
[13]: https://opensource.com/users/mkalindepauledu

View File

@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/21/8/ncurses-linux" [#]: via: "https://opensource.com/article/21/8/ncurses-linux"
[#]: author: "Jim Hall https://opensource.com/users/jim-hall" [#]: author: "Jim Hall https://opensource.com/users/jim-hall"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: " " [#]: translator: "perfiffer"
[#]: reviewer: " " [#]: reviewer: " "
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "

View File

@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/21/8/share-printer-cups" [#]: via: "https://opensource.com/article/21/8/share-printer-cups"
[#]: author: "Seth Kenlon https://opensource.com/users/seth" [#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: " " [#]: translator: "fisherue "
[#]: reviewer: " " [#]: reviewer: " "
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "
@ -99,7 +99,7 @@ via: https://opensource.com/article/21/8/share-printer-cups
作者:[Seth Kenlon][a] 作者:[Seth Kenlon][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID) 译者:[译者ID](https://github.com/fisherue)
校对:[校对者ID](https://github.com/校对者ID) 校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,126 @@
[#]: subject: "What is a container image?"
[#]: via: "https://opensource.com/article/21/8/container-image"
[#]: author: "Nived V https://opensource.com/users/nivedv"
[#]: collector: "lujun9972"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
What is a container image?
======
A container image contains a packaged application, along with its
dependencies, and information on what processes it runs when launched.
![Shipping containers stacked][1]
Containers are a critical part of today's IT operations. A _container image_ contains a packaged application, along with its dependencies, and information on what processes it runs when launched.
You create container images by providing a set of specially formatted instructions, either as commits to a registry or as a Dockerfile. For example, this Dockerfile creates a container for a PHP web application:
```
FROM registry.access.redhat.com/ubi8/ubi:8.1
RUN yum --disableplugin=subscription-manager -y module enable php:7.3 \
  &amp;&amp; yum --disableplugin=subscription-manager -y install httpd php \
  &amp;&amp; yum --disableplugin=subscription-manager clean all
ADD index.php /var/www/html
RUN sed -i 's/Listen 80/Listen 8080/' /etc/httpd/conf/httpd.conf \
  &amp;&amp; sed -i 's/listen.acl_users = apache,nginx/listen.acl_users =/' /etc/php-fpm.d/www.conf \
  &amp;&amp; mkdir /run/php-fpm \
  &amp;&amp; chgrp -R 0 /var/log/httpd /var/run/httpd /run/php-fpm \
  &amp;&amp; chmod -R g=u /var/log/httpd /var/run/httpd /run/php-fpm
EXPOSE 8080
USER 1001
CMD php-fpm &amp; httpd -D FOREGROUND
```
Each instruction in this file adds a _layer_ to the container image. Each layer only adds the difference from the layer below it, and then, all these layers are stacked together to form a read-only container image.
### How does that work?
You need to know a few things about container images, and it's important to understand the concepts in this order:
1. Union file systems
2. Copy-on-Write
3. Overlay File Systems
4. Snapshotters
### Union File Systems (Aufs)
The Union File System (UnionFS) is built into the Linux kernel, and it allows contents from one file system to be merged with the contents of another, while keeping the "physical" content separate. The result is a unified file system, even though the data is actually structured in branches.
The idea here is that if you have multiple images with some identical data, instead of having this data copied over again, it's shared by using something called a _layer_.
![UnionFS][2]
Image CC BY-SA opensource.com
Each layer is a file system that can be shared across multiple containers, e.g., The httpd base layer is the official Apache image and can be used across any number of containers. Imagine the disk space we just saved since we are using the same base layer for all our containers.
These image layers are always read-only, but when we create a new container from this image, we add a thin writable layer on top of it. This writable layer is where you create/modify/delete or make other changes required for each container.
### Copy-on-write
When you start a container, it appears as if the container has an entire file system of its own. That means every container you run in the system needs its own copy of the file system. Wouldn't this take up a lot of disk space and also take a lot of time for the containers to boot? No—because every container does not need its own copy of the filesystem!
Containers and images use a copy-on-write mechanism to achieve this. Instead of copying files, the copy-on-write strategy shares the same instance of data to multiple processes and copies only when a process needs to modify or write data. All other processes would continue to use the original data. Before any write operation is performed in a running container, a copy of the file to be modified is placed on the writeable layer of the container. This is where the _write_ takes place. Now you know why it's called _copy-on-write_.
This strategy optimizes both image disk space usage and the performance of container start times and works in conjunction with UnionFS.
### Overlay File System
An overlay sits on top of an existing filesystem, combines an upper and lower directory tree, and presents them as a single directory. These directories are called _layers_. The lower layer remains unmodified. Each layer adds only the difference (the _diff_, in computing terminology) from the layer below it, and this unification process is referred to as a _union mount_.
The lowest directory or an Image layer is called _lowerdir_, and the upper directory is called _upperdir_. The final overlayed or unified layer is called _merged._
![Layered file system][3]
Image CC BY-SA opensource.com
Common terminology consists of these layer definitions:
* Base layer is where the files of your filesystem are located. In terms of container images, this layer would be your base image.
* Overlay layer is often called the _container layer_, as all the changes that are made to a running container, as adding, deleting, or modifying files, are written to this writable layer. All changes made to this layer are stored in the next layer, and is a _union_ view of the Base and Diff layers.
* Diff layer contains all changes made in the Overlay layer. If you write something that's already in the Base layer, then the overlay file system copies the file to the Diff layer and makes the modifications you intended to write. This is called a _copy-on-write_.
# Snapshotters
Containers can build, manage, and distribute changes as a part of their container filesystem using layers and graph drivers. But working with graph drivers is really complicated and is error-prone. SnapShotters are different from graph drivers, as they have no knowledge of images or containers.
Snapshotters work very similar to Git, such as the concept of having trees, and tracking changes to trees for each commit. A _snapshot_ represents a filesystem state. Snapshots have parent-child relationships using a set of directories. A _diff can_ be taken between a parent and its snapshot to create a layer.
The Snapshotter provides an API for allocating, snapshotting, and mounting abstract, layered file systems.
### Wrap up
You now have a good sense of what container images are and how their layered approach makes containers portable. Next up, I'll cover container runtimes and internals.
* * *
_This article is based on a [techbeatly][4] article and has been adapted with permission._
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/container-image
作者:[Nived V][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/nivedv
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/bus-containers.png?itok=d_4QhZxT (Shipping containers stacked)
[2]: https://opensource.com/sites/default/files/unionfs.png (UnionFS)
[3]: https://opensource.com/sites/default/files/rect1036.png (Layered file system)
[4]: https://medium.com/techbeatly/container-part-ii-images-4f2139194775

View File

@ -2,7 +2,7 @@
[#]: via: "https://itsfoss.com/zulip/" [#]: via: "https://itsfoss.com/zulip/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/" [#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972" [#]: collector: "lujun9972"
[#]: translator: " " [#]: translator: "geekpi"
[#]: reviewer: " " [#]: reviewer: " "
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "

View File

@ -0,0 +1,255 @@
[#]: subject: "20 essential Linux commands for every user"
[#]: via: "https://opensource.com/article/21/9/essential-linux-commands"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
20 essential Linux commands for every user
======
From new user to power user, here are 20 Linux commands that will make
your life easier.
![Command line prompt][1]
Typing commands into a darkened terminal window may seem antiquated to some, but for many computer users, it's the most efficient, most accessible, and clearest way to accomplish nearly any task a computer is capable of performing. These days, thanks to all the projects that bring open source commands to non-open platforms like macOS and Windows, terminal commands are relevant to everybody, not just Linux and BSD users. It may surprise you to learn that there are thousands of commands installed on an average [POSIX][2] computer, but of course, a good many of those aren't really intended to be used, at least not directly or regularly. Some commands are more universally useful than others, and still fewer are absolutely essential for effective terminal use.
Here are the top 20 commands a terminal user might find themselves using:
### cd
Outside of a terminal, you click on icons to move from one folder to another, but in the terminal, you use `cd`. The `cd` command, which stands for _change directory_, is how you move through a Linux system. It's the fastest and most direct route from one place to another.
For instance, on the desktop, when you want to move from your home directory (the place you keep all of your folders) to a folder called `presentations`, then you might first have to open your `Documents` folder, then open a folder called `work`, then a `projects` folder, and then the `conference` folder, and finally the `presentations` folder, which contains your exciting LibreOffice Impress slideshow. That's a lot of double-clicking. It may also be a lot of moving around on the screen, depending on where new windows appear, and a lot of waypoints for your brain to track. Many people circumvent this seemingly minor task by keeping _everything_ on their desktop.
Terminal users avoid this issue by just typing:
```
`$ cd ~/Documents/work/projects/conference/presentations`
```
Experienced terminal users don't even bother typing all of that. They use the **Tab** key to autocomplete the words for them. And sometimes, you don't even have to resort to autocompletion. You can use wildcards instead:
```
`$ cd ~/Doc*/work/*/conf*/p*`
```
### pwd
In the words of Buckaroo Banzai: "No matter where you go, there you are."
When you need to figure out where exactly that is, you use the `pwd` command. The `pwd` stands for _print working directory,_ and that's exactly what it does. The `--physical` (or just `-P` in some implementations) shows your location with all symlinks resolved.
```
$ pwd
/home/tux/presentation
$ pwd --physical
/home/tux/Documents/work/projects/conference/presentations
```
### sed
Better known as `sed`, the stream editor is a powerful bulk _find and replace_ command, but it's also a legitimate text editor. You can learn to use it by reading my [introductory article][3], and then become an expert with my [advanced tutorial and cheat sheet][4].
### grep
The `grep` command is so ubiquitous that it's often used as a verb ("I'll grep through some files") and a gerund ("grepping some output"). It's a key component when parsing text in your shell, whether you're looking through log files or parsing the output of some other command. It's a way for the busy user to focus on specific information. Given just how much data there is in the computing world, there's no wonder it's a popular command. Go grok grep by reading my [introductory article][5], and then download the [cheat sheet][6].
### file
Use the `file` command when you need to know what type of data a file contains:
```
$ file example.foo
example.foo: RIFF (little-endian) data, Web/P image [...]
$ file example.bar
example.bar: ELF 64-bit LSB executable, x86-64 [...]
```
The `file` command isn't magic, of course. It only reports based on how a file identifies itself, and files can be wrong, corrupted, or disguised. A rigorous inspection with [`hexdump`][7] provides more certainty, but for casual use, the `file` command is convenient.
### awk
Awk isn't just a command; it's a literal [programming language][8]. [Download our free Awk ebook][9], learn it, and you'll be writing scripts you never thought possible.
### curl
The `curl` command is a [non-interactive web browser][10] for your terminal. It's a [development tool][11] for web and API developers. It's a complex command for its flexibility, but it's worth learning if you want to interact with network services from your terminal smoothly.
Download our free [`curl` cheat sheet][12], so you can internalize its many options.
### ps
Managing your system's resources is mostly up to the kernel, but when you prefer or require a manual approach, there's the `ps` command. Learn about `ps` in my [monitor your Linux system with procps-ng][13] article.
### cat
The [`cat` command][14] is short for _concatenate_, and it was very useful once for joining files that had been split (with a command intuitively called `split`) into several small files due to size limitations. Today, `cat` is mostly used as a way to dump the contents of a text file into your terminal for quick reference, unless you use `head`, `tail`, `more`, or `less` for that.
Despite its almost deprecated original purpose, and despite that several other commands also perform its secondary function, `cat` is still a useful utility. For instance, it can be a stand-in for the copy (`cp`) command:
```
`$ cat myfile.ogg > /backups/myfile.ogg`
```
It can reveal inconvenient invisible characters in files. The **Tab** character, which breaks [YAML][15], shows up as `^I` with the `--show-tabs` option:
```
$ cat --show-tabs my.yaml
\---
\- hosts: all
  tasks:
  - name: Make sure the current version of 'sysstat' is installed.
    dnf:
     name:
^I- sysstat
^I- httpd
^I- mariadb-server
     state: latest
```
It can show non-printing characters with `--show-nonprinting`, mark the ends of lines with `--show-ends`, provide line numbers with `--number`, and more.
### find
The `find` command helps you find files, but thanks to its many options, it can help you find files with a variety of filters and parameters. Learn the basics from my [introductory article][16].
And in case you've been wondering why the most fundamental command of all, the humble [`ls` command][17], isn't on this list, it's because of the flexibility of `find`. Not only can find list files:
```
$ find .
./bar.txt
./baz.xml
./foo.txt
[...]
```
It can also provide long listings:
```
$ find . -ls
3014803  464 -rw-rw-r--   1 tux users  473385 Jul 26 07:25 ./foo.txt
3014837  900 -rwxrwxr-x   1 tux users  918217 Nov  6  2019 ./baz.xml
3026891  452 -rw-rw-r--   1 tux users  461354 Aug 10 13:41 ./foo.txt
[...]
```
It's a technicality, but a neat trick to know.
### tar
People sometimes joke about Linux commands by citing BSD's `tar` syntax. In spite of its reputation, the `tar` command can actually be very intuitive. Read my [how to unzip a tar.gz file][18] article to learn the simple secret to rattling off a `tar` command on demand.
### more or less or most
Pagers are like `cat`, except they pause their output at the bottom of your screen until you scroll down for more. It's a simple application, but there's nuance to each implementation. Do you scroll with arrow keys or the spacebar? Do you have to quit manually, or does the pager exit at the end of the file it's displaying? What's your preferred search behavior? Choose your favorite pager and set it in your `.bashrc`!
### ssh and scp
OpenSSH not only helps secure connections to remote systems it also enables other commands. For instance, for many users, it's their `.ssh` directory that makes it possible for them to interact smoothly with Git repositories, post updates to a website, or log in to their cloud's control plane.
### mv
The `mv` command does double-duty: It both [moves files][19] and it [renames files][20]. It has several available safeguards, including `--interactive` and `--no-clobber` options to avoid clobbering an existing file, a `--backup` command to ensure data is preserved until it is verified at its new location, and the `--update` option to ensure that an older version doesn't replace a newer file.
### sudo
When you have a single user with a known user name and _all_ the privileges on a system, that user quickly becomes the target of attacks. By eliminating the need for a literal `root` user, the `sudo` command elegantly removes important information about your system from general knowledge. That's not all it does, though. With `sudo`, you can easily manage privileges down to individual commands, users, and groups. You can enable password-less execution of select commands, record user sessions, verify commands with digest validation, [and more][21].
### alias
Turn long commands into easy-to-remember shortcuts by using the `alias` command:
```
`$ alias ls='ls --classify --almost-all --ignore-backups --color'`
```
### clear
Sometimes your terminal gets cluttered. There's nothing like a nice, fresh screen after typing `clear` (or pressing **Ctrl+L** in some shells).
### setfacl
Traditionally, POSIX file permissions were determined by `chown` and `chmod`. Systems have become more complex, though, so there's a command to provide a little more flexibility. The `setfacl` command lets you create an [Access Control List (ACL)][22], granting permissions to arbitrary users and setting default permissions for folders and the contents created within them.
### netcat
Not every user needs netcat (`nc`), but few who use it ever want to give it up. The `nc` command is an all-purpose network connection tool.
It can connect to a port, similar to `telnet`:
```
`$ nc -u 192.168.0.12 80`
```
It can ping a port, similar to `ping`:
```
`$ nc -zvn 192.168.0.12 25`
```
It can probe for open ports, similar to `nmap`:
```
`$ nc -zv 192.168.0.12 25-80`
```
And that's just a small sample.
### you
The Linux terminal is, in part, about creative problem-solving. When you learn commands, you're also learning building blocks you can use to create your own commands. Many of the commands in my [shell history][23] are shell scripts I've written myself. The result is that my workflow is customized to how I want to work. Essential commands in your shell can also be the ones you design for your own efficacy and comfort. Spend some time getting to know some great commands, and then build your own. And when you hit upon something really good, make it open source so you can share your ideas with others!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/essential-linux-commands
作者:[Seth Kenlon][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/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/command_line_prompt.png?itok=wbGiJ_yg (Command line prompt)
[2]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
[3]: https://opensource.com/article/20/12/sed
[4]: https://opensource.com/article/21/3/sed-cheat-sheet
[5]: https://opensource.com/article/21/3/grep-cheat-sheet
[6]: https://opensource.com/downloads/grep-cheat-sheet
[7]: https://opensource.com/article/19/8/dig-binary-files-hexdump
[8]: https://opensource.com/article/21/1/learn-awk
[9]: https://opensource.com/article/20/9/awk-ebook
[10]: https://opensource.com/article/20/5/curl-cheat-sheet
[11]: https://www.redhat.com/sysadmin/use-curl-api
[12]: https://opensource.com/downloads/curl-command-cheat-sheet
[13]: https://opensource.com/article/21/8/linux-procps-ng
[14]: https://opensource.com/article/19/2/getting-started-cat-command
[15]: https://www.redhat.com/sysadmin/yaml-beginners
[16]: https://opensource.com/article/21/8/find-files-and-directories-find
[17]: https://opensource.com/article/19/7/master-ls-command
[18]: https://opensource.com/article/17/7/how-unzip-targz-file
[19]: https://opensource.com/article/21/8/move-files-linux
[20]: https://opensource.com/article/21/8/rename-file-linux-terminal
[21]: https://opensource.com/article/19/10/know-about-sudo
[22]: https://opensource.com/article/20/3/external-drives-linux
[23]: https://opensource.com/article/18/6/history-command

View File

@ -0,0 +1,212 @@
[#]: subject: "Control your Raspberry Pi remotely with your smartphone"
[#]: via: "https://opensource.com/article/21/9/raspberry-pi-remote-control"
[#]: author: "Stephan Avenwedde https://opensource.com/users/hansic99"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Control your Raspberry Pi remotely with your smartphone
======
Control the GPIOs of your Raspberry Pi remotely with your smartphone.
![A person looking at a phone][1]
Wouldn't it be nice to control the general-purpose input/outputs (GPIOs) of the Raspberry Pi remotely with your smartphone? If you can answer the question in the affirmative, I would like to introduce you to a simple way to implement this. Writing this article, I have no specific application in mind, but I can think of combining it with lawn irrigation, any illumination, or a garage door opener.
Anyway, all you need to get started is a Raspberry Pi and a smartphone. The actual logic is already available on GitHub, so even without programming skills, you will be able to follow the steps described in this article.
### Architecture
We do the major work with [Pythonic][2]—a graphical Python programming framework I develop in my leisure. Pythonic brings a [Telegram][3] bot programming element with it, which acts as our smartphone interface. A significant advantage of this setup is that it is scalable regarding the number of clients: You can decide whether you want to control the GPIOs only by yourself, share them with your relatives or friends, or share the control capabilities with the public. Of course, a prerequisite is permanent internet access to communicate between the Telegram server and the client. To establish internet access, you could use either the Ethernet interface or the WiFi functionality of the Raspberry Pi.
### Install Pythonic
To get started, you have to install Pythonic on your Raspberry Pi. The easiest way of doing that is to flash the SD card with the preconfigured Pythonic image available on [sourceforge.net][4].
Download and unzip the image and flash it to the SD card of the Raspberry Pi. On Windows, you can use [balenaEtcha][5] for it. On Linux, you can do it with the onboard tools.
1. Plugin the SD card and check under which device it is showing up by typing `lsblk -p`.
![Using lsblk -p to check under which device your SD card shows ][6]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
2. In the screenshot above, the SD card device is `/dev/sdc`, and my systems automatically mounted two partitions that were found on it. If this is the case, unmount it by typing `umount /dev/sdc1 && umount /dev/sdc2`.
3. Flash the SD card with the following command: `dd if=~/Downloads/Pythonic-1.7.img of=/dev/sdc bs=32M, conv=fsync`. 
**Attention***: *This will delete all previous files on the SD card.
4. The flashing process will take a while.
Once the process is finished, put the SD card back in your Raspberry Pi and boot it up.
### Establishing a connection
The Pythonic image has no pre-installed desktop. The whole configuration is web-based, so you must establish a TCP/IP connection. It is straightforward to connect using an ordinary internet router. If you don't have access to such a router, you can also establish a connection over the onboard universal asynchronous receiver/transmitter ****(UART) device to configure the Ethernet or WiFi interface.
#### Locale DNS
By default, the Pythonic image is configured to acquire an IP address by DHCP. Your internet router at home usually runs a DHCP server that distributes IP addresses to connected devices. Make a connection between a free Ethernet port of your internet router and the Ethernet port on your Raspberry Pi and boot it up.
You can now try to access the web-based GUI from a device within your local network. If the DNS in your local network works properly, open a browser and navigate to http://PythonicRPI:7000/ to open the programming GUI.
#### Locale IP
I assume your router also offers a graphical configuration GUI. The configuration GUI provides information about the devices in your local network. You can find the IP address of your local router by typing `ip route`.
In my case, the route is available under 192.168.188.1. Now login to your router's configuration page and check which IP was the Raspberry Pi given.
![Viewing active connections][8]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
In my network, the Raspberry Pi is available under 192.168.188.63, so I can access the GUI at http://192.168.188.63:7000/.
#### UART
Put the SD card back into the card reader and mount the _boot_ partition. Open the _config.txt_ on the _boot_ partition and add the following line to the end:
```
`enable_uart=1`
```
Put the SD card back in the Raspberry Pi and boot it up. You can now establish a console connection with a UART-USB converter to set up a static IP address or configure a WiFi connection.
![Establishing a UART connection][9]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
The default connection parameters are:
* TxD: GPIO14
* RxD: GPIO15
* Ground: Pin 6 or 14
* Baud rate: 115200
* Data bits: 8
* Parity bit: None
* Stop bits: 1
You can find more information on [elinux.org][10].
### Uploading the configuration
To proceed with the upcoming steps, download the example files from [github][11] to your local hard drive.
![GitHub example files repository ][12]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
The example consists of several files of two elementary types:
* `*.py-files`—Contains the actual implementation of specific functionality.
* `current_config.json`—This file describes the configured elements, the links between the elements, and the variable configuration of the elements.
This example is a slightly modified version of the already available reference implementation. You can access it by dragging and dropping the files from the left sidebar to the working area.
Now upload the configuration to your target:
![Pythonic GUI overview][13]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
With the blue-marked button, you upload the `current_config.json` to the target. You can upload only valid configuration files. After uploading, you can find the file on the target under `/home/pythonic/Pythonic/current_config.json`.
With the green-marked button, you upload each `*.py-files`. Afterward, the `*.py-files` can be found under `/home/pythonic/Pythonic/executables`.
It is possible to upload any kind of file to the `executables` folder because I plan to support binary executables in the future.
However, so that the configuration works, the actual implementation must be available for each element described in `current_config.json`.
### Setup a Telegram Bot
The configuration should now look like this:
![Pythonic GPIO remote configuration][14]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
Well done! But this setup won't work yet. Try to start this configuration by clicking **Play** on the _ManualScheduler - 0x5f8125f5_ element. The connected Telegram element will start but then immediately quit. This is because the Telegram element needs some additional configuration: Right-click on the Telegram element. You should now see pop-up windows like this:
![Pop-up for Phythonic GPIO remote Telegram][15]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
You have to provide a Telegram bot token to communicate with the server. The process of creating a bot token is described on [core.telegram.org][16].
In a nutshell: Start a chat with the [BotFather][17] and create a bot with the `/newbot` command. At the end of the process, the BotFather will provide you a token that you can copy and paste to the Telegram element.
That's it. Now you should be able to start the Telegram element by clicking on the play button on the _ManualScheduler - 0x5f8125f5_ element. The Telegram element should now be active, which can be seen from the green frame.
![ Active RPI Telegram element][18]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
The spinning bar on the bottom info line indicates a working connection with the backend.
Start a chat with your newly created bot by typing _@&lt;name-of-your-bot&gt;_ in the search field of Telegram. Click **Start** to get the initial state of the GPIOs. I named my bot _RPIremoteIO_:
![Start RPI Telegram][19]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
### Debugging and Modification
Open a new tab in your browser and navigate to http://PythonicRPI:8000/. This will open the pre-installed [code-server][20] IDE. On the left pane, click on the files button and open `telegram_2ca7cd73.py` :
![RPI code server IDE][21]
(Stephan Avenwedde, [CC-BY SA 4.0][7])
You should now be able to start debugging and follow the path of execution like in the following screen recording:
<https://youtu.be/IjJehKq7YCc>
The Telegram element uses an [inline keyboard][22] which shows the target state of GPIO4 and GPIO5. This way, several users could control the state of GPIOs without disturbing each other because the new target state for the GPIOs is always provided to all subscribers.
### Conclusion
With this example, you should get a feeling of how everything connects. You can adapt the example as you like: Change or add additional GPIOs, use the analog features or get the input state on demand. If you connect a suitable relay, you could also drive higher loads with the Raspberry Pi. I am sure you will do something great with it!
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/raspberry-pi-remote-control
作者:[Stephan Avenwedde][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/hansic99
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/idea_innovation_mobile_phone.png?itok=RqVtvxkd (A person looking at a phone)
[2]: https://github.com/hANSIc99/Pythonic
[3]: https://telegram.org/
[4]: https://sourceforge.net/projects/pythonicrpi/
[5]: https://www.balena.io/etcher/
[6]: https://opensource.com/sites/default/files/uploads/pi_gen_lsblk_mounted_1.png (Using lsblk -p to check under which device your SD card shows )
[7]: https://creativecommons.org/licenses/by-sa/4.0/
[8]: https://opensource.com/sites/default/files/uploads/active_connections.png (Viewing active connections)
[9]: https://opensource.com/sites/default/files/uploads/pythonic_rpi_uart.jpg (Establishing a UART connection)
[10]: https://elinux.org/RPi_Serial_Connection
[11]: https://github.com/hANSIc99/Pythonic/tree/master/examples/rpi_telegram_remote_io
[12]: https://opensource.com/sites/default/files/uploads/github_example_remote_gpio.png (GitHub example files repository )
[13]: https://opensource.com/sites/default/files/uploads/pythonic_gui_overview.png (Pythonic GUI overview)
[14]: https://opensource.com/sites/default/files/uploads/pythonic_gpio_remote_config.png (Pythonic GPIO remote configuration)
[15]: https://opensource.com/sites/default/files/uploads/pythonic_gpio_remote_telegram.png (Pop-up for Phythonic GPIO remote Telegram)
[16]: https://core.telegram.org/bots#6-botfather
[17]: https://t.me/botfather
[18]: https://opensource.com/sites/default/files/uploads/rpi_telegram_active.png (Active RPI Telegram element)
[19]: https://opensource.com/sites/default/files/uploads/rpi_start_telegram.png (Start RPI Telegram)
[20]: https://github.com/cdr/code-server
[21]: https://opensource.com/sites/default/files/uploads/rpi_code-server_ide.png (RPI code server IDE)
[22]: https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating

View File

@ -0,0 +1,297 @@
[#]: subject: "Getting ready for Fedora Linux"
[#]: via: "https://fedoramagazine.org/getting-ready-for-fedora-linux/"
[#]: author: "Hanku Lee https://fedoramagazine.org/author/hankuoffroad/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Getting ready for Fedora Linux
======
![][1]
Photo by [Jacques Bopp][2] on [Unsplash][3]
### Introduction
Why does Linux remain vastly invisible to ordinary folks who make general use of computers? This article steps through the process to move to Fedora Linux Workstation for non-Linux users. It also describes features of the GUI (Graphic User Interface) and CLI (Command Line Interface) for the newcomer. This is a quick introduction, not an in-depth course.
### Installation and configuration are straightforward
Supposedly, a bootable USB drive is the most baffling experience of starting Linux for a beginner. In all fairness, installation with Fedora Media Writer and Anaconda is intuitive.
##### Step-by-step installation process
1. [Make a Fedora USB stick][4]: 5 to 7 minutes depending on USB speed
2. [Understand disk partitions and Linux file systems][5]
3. [Boot from a USB device][6]
4. [Install][7] with the Fedora installer, Anaconda: 15 to 20 minutes
5. Software updates: 5 minutes
Following this procedure, it is easy to help family and friends install Fedora Linux.
##### Package management and configuration
Instead of configuring the OS manually, adding tools and applications you need, you may choose a functional bundle from [Fedora Labs][8] for a specific use case. Design Suite, Scientific, Python Classroom, and more, are available. Plus, all processes are complete without the command line.
##### Connecting devices and services
* [Add a USB printer][9]: Fedora Linux detects most printers in a few seconds. Some may require the drivers.
* Configure a USB keyboard: Refer to simple [work-around][10] for a mechanical keyboard.
* [Sync with Google Drive][11]: Add an account either after installation, or at any time afterward.
### Desktop customization is easy
The default [GNOME desktop][12] is decent and free from distractions.
A shortlist to highlight desktop benefits:
* Simplicity: Clean design, fluid and elegant application grid.
* Reduced user effort: No alerts for paid services or long list of user consent.
* Accommodating software: GNOME requires little specialist knowledge or technical ability.
* Neat layout of system _Settings_: Larger icons and a better layout.
The image below shows the applications and desktops currently available. Get here by selecting “Activities” and then the “Show Applications” icon at the bottom of the screen at the far right. There you will find LibreOffice for your document, spreadsheet, and presentation creation. Also available is Firefox for your web browsing. More applications are added using the _Software_ icon (second from right at the bottom of the screen).
![GNOME desktop][13]
##### Enable touchpad click (tapping)
A change for [touchpad settings][14] is required for laptop users.
1. Go to _Activies &gt; Show Applications &gt; Settings &gt; Mouse &amp; Touchpad &gt; Touchpad_
2. Change the default behavior of touchpad settings (double click) to tap-to-click (single tap) using the built-in touchpad
3. Select Tap to Click
##### Add user accounts using the users settings tool
During installation, you set up your first login account. For training or demo purposes, it is common to create a new user account.
1. Add users: Go to _Settings &gt; Users &gt; Unlock &gt; Authentication&gt; Add user_
2. Click at the top of the screen at the far right and then navigate to Power Off / Log out, and Select _Switch User_ to relogin as the new user.
### Fedora Linux is beginner-friendly
Yes, Fedora Linux caters to a broader selection of users. Since that is the case, why not dip into the shallow end of the Fedora community?
* [Fedora Docs][15]: Clarity of self-help content is outstanding.
* Ask Fedora: Get help for anything about Fedora Linux.
* Magazine: Useful tips and user story are engaging. Make a suggestion to write about.
* Nest with Fedora: Warm welcome virtually from Fedora Linux community.
* Release parties.
### Command line interface is powerful
The command line is a way of giving instructions to a computer (shell) using a terminal. To be fair, the real power behind Fedora Linux is the Bash shell that empowers users to be problem solvers. The good news is that the text-based command is universally compatible across different versions of Linux. The Bash shell comes with the Fedora Linux, so there is no need to install it.
The following will give you a feeling for the command line. However, you can accomplish many if not all day-to-day tasks without using the command line.
#### How to use commands?
Access the command line by selecting “Activities” and then the “Show Applications” icon at the bottom of the screen at the far right. Select _Terminal_.
#### Understand the shell prompt
The standard shell prompt looks like this:
```
[hank@fedora_test ~]$
```
The shell prompt waits for a command.
It shows the name of the user (hank), the computer being used (fedora_test), and the current working directory within the filesystem (~, meaning the users home directory). The last character of the prompt, $, indicates that this is a normal users prompt.
#### Enter commands
What common tasks should a beginner try out with command lines?
* Command line information is available from the [Fedora Magazine][16] and [other sites][17].
* Use _ls_ and _cd_ to list and navigate your file system.
* Make new directories (folders) with _mkdir_.
* Delete files with _rm_.
* Use _lsblk_ command to display partition details.
#### How to deal with the error messages
* Be attentive to error messages in the terminal. Common errors are missing arguments, typo of file name.
* Pause to think about why that happened.
* Figure out the correct syntax using the _man_ command. For example:
_man ls_
displays the manual page for the _ls_ command.
#### Perform administration tasks using _sudo_
When a user executes commands for installation, removal, or change of software, [the _sudo_ command][18] allows users to gain administrative or root access. The actions that required _sudo_ command are often called the administrative tasks. Sudo stands for **SuperUser DO**. The syntax for the _sudo_ command is as follows:
```
sudo [COMMAND]
```
1. Replace _COMMAND_ with the command to run as the root user.
2. Enter password
What are the most used _sudo_ commands to start with?
* List privileges
```
sudo -l
```
* Install a package
```
sudo dnf install [package name]
```
* Update a package
```
sudo dnf update [package name]
```
* List all packages
```
sudo dnf grouplist [package name]
```
* Manage disk partitions
```
sudo fdisk -l
```
### Built-in text editor is light and efficient
[Nano][19] is the default command-line-based text editor for Fedora Linux. [vi][20] is another one often used on Fedora Linux. Both are light and fast. Which to us is a personal choice, really. Nano and vi remain essential tools for editing config files and writing scripts. Generally, Nano is much simpler to work with than vi but vi can be more powerful when you get used to it.
##### What does a beginner benefit from a text editor?
* Learn fundamentals of computing
Linux offers a vast range of customization options and monitoring. Shell scripts make it possible to add new functionality and the editor is used to create the scripts.
* Build cool things for home automation
Raspberry Pi is a testing ground to build awesome projects for homes. [Fedora can be installed on Raspberry Pi][21]. Schools use the tiny microcomputer for IT training and experiment. Instead of a visual editor, it is easier to use a light and simple Nano editor to write files.
* Test proof of concept with the public cloud services
Most of the public cloud suppliers offer free sandbox account to spin up a virtual machine or configure the network. Cloud servers run Linux OS, so editing configuration files require a text editor. Without installing additional software, it is easy to invoke Nano on a remote server.
##### How to use Nano text editor
Type _nano_ and file name after the shell prompt $ and press Enter.
```
[hank@fedora_test ~]$ nano [filename]
```
Note that many of the most used commands are displayed at the bottom of the nano screen. The symbol ^ in Nano means to press the Ctrl key.
* Use the arrow keys on the keyboard to move up and down, left and right.
* Edit file.
* Get built-in help by pressing ^G
* Exit by entering ^X and Y to save your file and return to the shell prompt.
##### Examples of file extensions used for configuration or shell scripts
* .cfg: User-configurable files in the /etc directory.
* .yaml: A popular type of configuration file with cross-language data portability.
* .json: JSON is a lightweight &amp; open standard format for storing and transporting data.
* .sh: A shell script used universally for Unix/Linux systems.
Above all, this is not a comprehensive guide on Nano or vi. Yet, adventurous learners should be aware of text editors for their next step in becoming accomplished in Fedora Linux.
### Conclusion
Does Fedora Workstation simplify the user experience of a beginner with Linux? Yes, absolutely. It is entirely possible to create a desktop quickly and get the job done without installing additional software or extensions.
Taking it to the next level, how to get more people into Fedora Linux?
* Make Fedora Linux device available at home. A repurposed computer with the above guide is a starting point.
* Demonstrate [cool things][22] with Fedora Linux.
* Share [power user tips][23] with shell scripts.
* Get involved with Open Source Software community such as the [Fedora project][24].
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/getting-ready-for-fedora-linux/
作者:[Hanku Lee][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/hankuoffroad/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2021/08/ready_for_fedora-816x345.jpg
[2]: https://unsplash.com/@jacquesbopp?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[3]: https://unsplash.com/?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[4]: https://fedoramagazine.org/make-fedora-usb-stick/
[5]: https://docs.fedoraproject.org/en-US/fedora/rawhide/install-guide/appendixes/Disk_Partitions/
[6]: https://docs.fedoraproject.org/en-US/fedora/rawhide/install-guide/install/Booting_the_Installation/
[7]: https://docs.fedoraproject.org/en-US/fedora/rawhide/install-guide/install/Installing_Using_Anaconda/
[8]: https://labs.fedoraproject.org/
[9]: https://docs.fedoraproject.org/en-US/Fedora/14/html/User_Guide/chap-User_Guide-Printing.html
[10]: https://venthur.de/2021-04-30-keychron-c1-on-linux.html
[11]: https://fedoramagazine.org/connect-your-google-drive-to-fedora-workstation/
[12]: https://developer.gnome.org/hig/principles.html
[13]: https://fedoramagazine.org/wp-content/uploads/2021/08/Screenshot-from-2021-08-12-23-27-13-1024x576.png
[14]: https://help.gnome.org/users/gnome-help/stable/mouse-touchpad-click.html.en
[15]: https://docs.fedoraproject.org/en-US/docs/
[16]: https://fedoramagazine.org/?s=command+line
[17]: https://www.redhat.com/sysadmin/essential-linux-commands
[18]: https://fedoramagazine.org/howto-use-sudo/
[19]: https://fedoramagazine.org/gnu-nano-minimalist-console-editor/
[20]: https://www.redhat.com/sysadmin/vim-commands
[21]: https://docs.fedoraproject.org/en-US/quick-docs/raspberry-pi/
[22]: https://fedoramagazine.org/automatically-light-up-a-sign-when-your-webcam-is-in-use/
[23]: https://fedoramagazine.org/?s=bash
[24]: https://docs.fedoraproject.org/en-US/project/

View File

@ -0,0 +1,131 @@
[#]: subject: "Ubuntu Server vs Desktop: Whats the Difference?"
[#]: via: "https://itsfoss.com/ubuntu-server-vs-desktop/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Ubuntu Server vs Desktop: Whats the Difference?
======
When you click on the download button on the [Ubuntu website][1], it gives you a few options. Two of them are Ubuntu Desktop and Ubuntu Server.
This could confuse new users. Why are there two (actually 4 of them)? Which one should be downloaded? Ubuntu desktop or server? Are they the same? What is the difference?
![Ubuntu website gives you multiple options][2]
I am going to explain the difference between the desktop and server editions of Ubuntu. Ill also explain which variant you should be using.
### Ubuntu desktop vs Ubuntu server
![Ubuntu desktop and server illustartion][3]
To understand the difference between Ubuntu desktop and server, you should understand the difference between a desktop and a server operating system.
#### Desktop
A desktop is referred to a personal computer. A desktop operating system comes with a graphical user interface so that the users can use their mouse and keyboard. The primary purpose of a desktop is to give you a system that can be used for web browsing, document editing, viewing/editing pictures and videos, coding and gaming. Basically, a general purpose computer for individuals, end users, or family members.
I am using the term desktop here, but this does not mean that it cannot be used on a laptop. Desktop is the generic term for a personal computer.
#### Server
On the other hand, a server operating system is specifically created for hosting web services like websites, apps, media servers, databases etc.
Usually, a server operating system does not come with a graphical interface. If it is Linux based operating system, youll have to use the system entirely via commands in terminal.
The advantage here is that the server OS do not need a lot of RAM and computational power because they do not use [graphical desktop environment][4]. Apart from that, the server operating system has packages configured differently as well.
Now that you understand the difference between server and desktop a little, lets see the difference between Ubuntu server and desktop.
#### The user interface
The most visible difference between Ubuntu server and desktop is the user interface.
Ubuntu desktop features a graphical user interface with GNOME desktop environment. This makes it easier to use with the help of mouse clicks.
![User interface of Ubuntu GNOME edition][5]
Ubuntu server edition runs headless. You will only see a terminal interface when you are logged in to it. Youll often manage it remotely from other computers overs SSH.
![Connecting to remote Ubuntu server via SSH][6]
#### Installation
[Installing Ubuntu as a desktop is easy][7] thanks to the graphical installer. You can create a live USB and experience the desktop version without installing. If you like it, you can install it in minutes following the on-screen instructions.
![Installing Ubuntu desktop via graphical installer][8]
Installing Ubuntu as a server is not as easy as the desktop edition. You are stuck with terminal interface. Even the simplest tasks like connecting to Wi-Fi could be a difficult task if you are not familiar with the procedure.
![Ubuntu server installation][9]
#### Applications
The default set of applications in Ubuntu desktop is focused on regular computer users. So, youll find web browsers, office suite, media players, games etc.
![Applications in Ubuntu][10]
Ubuntu server has applications that are more tailored for running web services. And thats not it. Some applications are also configured differently. Take SSH for example. Ubuntu server has SSH preconfigured so that you can easily connect to it from remote systems. You have to explicitly enable SSH on Ubuntu desktop.
#### Hardware requirement
Since the desktop edition features a graphical user interface, you need at least 4 GB of RAM to run Ubuntu desktop. Disk space should be 20 GB at least.
This is where it gets interesting for Ubuntu server. It does not have a graphical interface. The command line interface does not consume a lot of system resources. As a result, you can easily run Ubuntu server on a machine with 512 MB and 5 GB of disk space.
The RAM and disk space on the server is subjected to the web service you run. If a web application requires at least 2 GB of RAM, you should have that much of RAM. But in the simplest of scenario, even 512 MB or 1 GB of RAM could work.
#### Usage
This is the main differentiator between Ubuntu desktop and server. Ask yourself, for what purpose you want to use Ubuntu?
If it is specifically for deploying web services, go for Ubuntu server. Keep in mind that you need to have basic Linux command line knowledge to navigate through the terminal.
If you want to use Ubuntu as a regular computer like Windows, go with Ubuntu desktop. If you want to use it for learning Linux commands, Docker or even simple (but local) LAMP server installation for learning, stay with Ubuntu desktop.
For a server, Ubuntu server is better than Ubuntu desktop. For regular computing usage, Ubuntu desktop is the better choice.
#### Should you use Ubuntu desktop for server or install GUI on server?
Heres the thing. Both Ubuntu desktop and server are Linux. You can use Ubuntu desktop as server for hosting web services. That works.
Similarly, [you can install GUI on Ubuntu server][11] and use it graphically. That also works.
![GUI login on an Ubuntu server][12]
But just because it works, doesnt mean you should do it. It defies the entire purpose of creating different editions for server and desktop.
You have to put extra effort in converting a server to desktop and vice versa. Why take that pain?
If your purpose of using Ubuntu is clear, download and install the appropriate Ubuntu edition.
_**I hope this makes things around Ubuntu desktop and server editions a bit more clear now. If you have questions or suggestions, please utilize the comment section.**_
--------------------------------------------------------------------------------
via: https://itsfoss.com/ubuntu-server-vs-desktop/
作者:[Abhishek Prakash][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/abhishek/
[b]: https://github.com/lujun9972
[1]: https://ubuntu.com/
[2]: https://itsfoss.com/wp-content/uploads/2021/08/ubuntu-server-desktop-download-800x338.webp
[3]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/ubuntu-desktop-server.png?resize=800%2C450&ssl=1
[4]: https://itsfoss.com/what-is-desktop-environment/
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/05/installing-gui-ubuntu-server-gnome-desktop.png?resize=792%2C597&ssl=1
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/system-restart-required.png?resize=800%2C469&ssl=1
[7]: https://itsfoss.com/install-ubuntu/
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/02/installing-ubuntu.png?resize=800%2C549&ssl=1
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/ubuntu-server-installation.png?resize=800%2C600&ssl=1
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/09/gnome-app-arranger.jpg?resize=799%2C450&ssl=1
[11]: https://itsfoss.com/install-gui-ubuntu-server/
[12]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/05/installing-gui-ubuntu-server-gnome-desktop-greet.png?resize=798%2C600&ssl=1

View File

@ -0,0 +1,97 @@
[#]: subject: "What are container runtimes?"
[#]: via: "https://opensource.com/article/21/9/container-runtimes"
[#]: author: "Nived V https://opensource.com/users/nivedv"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
What are container runtimes?
======
Take a deep dive into container runtimes so you can understand how
container environments are built.
![Ships at sea on the web][1]
In my examination of [container images][2], I discussed container fundamentals, but now it's time to delve deeper into container runtimes so you can understand how container environments are built. The information in this article is in part extracted from the [official documentation][3] of the Open Container Initiative (OCI), the open standard for containers, so this information is relevant regardless of your container engine.
### Container runtimes
So what really happens in the backend when you run a command like `podman run` or `docker run` command? Here is a step-by-step overview for you:
1. The image is pulled from an image registry if it not available locally
2. The image is extracted onto a copy-on-write filesystem, and all the container layers overlay each other to create a merged filesystem
3. A container mount point is prepared
4. Metadata is set from the container image, including settings like overriding CMD, ENTRYPOINT from user inputs, setting up SECCOMP rules, etc., to ensure container runs as expected
5. The kernel is alerted to assign some sort of isolation, such as process, networking, and filesystem, to this container (namespaces)
6. The kernel is also alerted to assign some resource limits like CPU or memory limits to this container (cgroups)
7. A system call (syscall) is passed to the kernel to start the container
8. SELinux/AppArmor is set up
Container runtimes take care of all of the above. When we think about container runtimes, the things that come to mind are probably runc, lxc, containerd, rkt, cri-o, and so on. Well, you are not wrong. These are container engines and container runtimes, and each is built for different situations.
_Container runtimes_ focus more on running containers, setting up namespace and cgroups for containers, and are also called lower-level container runtimes. Higher-level container runtimes or container engines focus on formats, unpacking, management, and image-sharing. They also provide APIs for developers.
### Open Container Initiative (OCI)
The Open Container Initiative (OCI) is a Linux Foundation project. Its purpose is to design certain open standards or a structure around how to work with container runtimes and container image formats. It was established in June 2015 by Docker, rkt, CoreOS, and other industry leaders.
It does this using two specifications:
#### 1\. Image Specification (image-spec)
The goal of this specification is to enable the creation of interoperable tools for building, transporting, and preparing a container image to run.
The high-level components of the spec include:
* [Image Manifest][4] — a document describing the elements that make up a container image
* [Image Index][5] — an annotated index of image manifests
* [Image Layout][6] — a filesystem layout representing the contents of an image
* [Filesystem Layer][7] — a changeset that describes a containers filesystem
* [Image Configuration][8] — a document determining layer ordering and configuration of the image suitable for translation into a [runtime bundle][9]
* [Conversion][10] — a document explaining how this translation should occur
* [Descriptor][11] — a reference that describes the type, metadata, and content address of referenced content
#### 2\. Runtime specification (runtime-spec)
This specification aims to define the configuration, execution environment, and lifecycle of a container. The config.json file provides the container configuration for all supported platforms and details the field that enables the creation of a container. The execution environment is detailed along with the common actions defined for a containers lifecycle to ensure that applications running inside a container have a consistent environment between runtimes.
The Linux container specification uses various kernel features, including namespaces, cgroups, capabilities, LSM, and filesystem jails to fulfill the spec.
### Now you know
Container runtimes are managed by the OCI specifications to provide consistency and interoperability. Many people use containers without the need to understand how they work, but understanding containers is a valuable advantage when you need to troubleshoot or optimize how you use them.
* * *
_This article is based on a [techbeatly][12] article and has been adapted with permission._
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/container-runtimes
作者:[Nived V][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/nivedv
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/kubernetes_containers_ship_lead.png?itok=9EUnSwci (Ships at sea on the web)
[2]: https://opensource.com/article/21/8/container-fundamentals-2
[3]: https://github.com/opencontainers
[4]: https://github.com/opencontainers/image-spec/blob/master/manifest.md
[5]: https://github.com/opencontainers/image-spec/blob/master/image-index.md
[6]: https://github.com/opencontainers/image-spec/blob/master/image-layout.md
[7]: https://github.com/opencontainers/image-spec/blob/master/layer.md
[8]: https://github.com/opencontainers/image-spec/blob/master/config.md
[9]: https://github.com/opencontainers/runtime-spec
[10]: https://github.com/opencontainers/image-spec/blob/master/conversion.md
[11]: https://github.com/opencontainers/image-spec/blob/master/descriptor.md
[12]: https://medium.com/techbeatly/container-runtimes-deep-dive-77eb0e511939

View File

@ -0,0 +1,152 @@
[#]: subject: "4 Linux technologies fundamental to containers"
[#]: via: "https://opensource.com/article/21/8/container-linux-technology"
[#]: author: "Nived V https://opensource.com/users/nivedv"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
4 Linux technologies fundamental to containers
======
Namespaces, cgroups, seccomp, and SELinux are the Linux technologies
that make up the foundations of building and running a container process
on your system.
![Penguin driving a car with a yellow background][1]
In previous articles, I have written about [container images][2] and [runtimes][3]. In this article, I look at how containers are made possible by a foundation of some special Linux technologies, including namespaces and control groups.
![layers of linux technologies][4]
Figure 1: Linux technologies that contribute to containers
(Nived Velayudhan, [CC BY-SA 4.0][5])
Linux technologies make up the foundations of building and running a container process on your system. Technologies include:
1. Namespaces
2. Control groups (cgroups)
3. Seccomp
4. SELinux
### Namespaces
_Namespaces_ provide a layer of isolation for the containers by giving the container a view of what appears to be its own Linux filesystem. This limits what a process can see and therefore restricts the resources available to it.
There are several namespaces in the Linux kernel that are used by Docker or Podman and others while creating a container:
 
```
$ docker container run alpine ping 8.8.8.8
$ sudo lsns -p 29413
        NS TYPE   NPROCS PID USER COMMAND
4026531835 cgroup   299   1  root /usr/lib/systemd/systemd --
switched...
4026533105 mnt 1 29413 root ping 8.8.8.8
4026533106 uts 1 29413 root ping 8.8.8.8
4026533105 ipc 1 29413 root ping 8.8.8.8
[...]
```
#### **User**
The user namespace isolates users and groups within a container. This is done by allowing containers to have a different view of UID and GID ranges compared to the host system. The user namespace enables the software to run inside the container as the root user. If an intruder attacks the container and then escapes to the host machine, they're confined to only a non-root identity.
#### **Mnt**
The mnt namespace allows the containers to have their own view of the system's file system hierarchy. You can find the mount points for each container process in the _/proc/&lt;PID&gt;/mounts_ location in your Linux system.
#### **UTS**
The Unix Timesharing System (UTS) namespace allows containers to have a unique hostname and domain name. When you run a container, a random ID is used as the hostname even when using the `— name` tag. You can use the [`unshare` command][6] to get an idea of how this works.
```
$ docker container run -it --name nived alpine sh
/ # hostname
9c9a5edabdd6
/ #
$ sudo unshare -u sh
# hostname isolated.hostname
# hostname
# exit
$ hostname
homelab.redhat.com
```
#### **IPC**
The Inter-Process Communication (IPC) namespace allows different container processes to communicate by accessing a shared range of memory or using a shared message queue.
 
```
# ipcmk -M 10M
Shared memory id: 0
# ipcmk -M 20M
Shared memory id: 1
# ipcs
\---- Message Queues ----
key  msqid  owner  perms  used-bytes  messages
\---- Shared Memory Segments
key        shmid owner perms bytes    nattch status
0xd1df416a 0     root  644   10485760 0
0xbd487a9d 1     root  644   20971520 0
[...]
```
#### **PID**
The Process ID (PID) namespace ensures that the processes running inside a container are isolated from the external world. When you run a `ps` command inside a container, you only see the processes running inside the container and not on the host machine because of this namespace.
#### **Net**
The network namespace allows the container to have its own view of network interface, IP addresses, routing tables, port numbers, and so on. How does a container able to communicate to the external world? All containers you create get attached to a special virtual network interface for communication.
### Control groups (cgroups)
Cgroups are fundamental blocks of making a container. A cgroup allocates and limits resources such as CPU, memory, network I/O that are used by containers. The container engine automatically creates a cgroup filesystem of each type, and sets values for each container when the container is run.
### SECCOMP
Seccomp basically stands for _secure computing_. It is a Linux feature used to restrict the set of system calls that an application is allowed to make. The default seccomp profile for Docker, for example, disables around 44 syscalls (over 300 are available).
The idea here is to provide containers access to only those resources which the container might need. For example, if you don't need the container to change the clock time on your host machine, you probably have no use for the _clock_adjtime_ and _clock_settime_ syscalls, and it makes sense to block them out. Similarly, you don't want the containers to change the kernel modules, so there is no need for them to make _create_module, delete_module_ syscalls.
### SELinux
SELinux stands for _security-enhanced Linux_. If you are running a Red Hat distribution on your hosts, then SELinux is enabled by default. SELinux lets you limit an application to have access only to its own files and prevent any other processes from accessing them. So, if an application is compromised, it would limit the number of files that it can affect or control. It does this by setting up contexts for files and processes and by defining policies that would enforce what a process can see and make changes to.
SELinux policies for containers are defined by the `container-selinux` package. By default, containers are run with the **container_t** label and are allowed to read (r) and execute (x) under the _/usr_ directory and read most content from the _/etc_ directory. The label **container_var_lib_t** is common for files relating to containers.
### Wrap up
Containers are a critical part of today's IT infrastructure and a pretty interesting technology, too. Even if your role doesn't involve containerization directly, understanding a few fundamental container concepts and approaches gives you an appreciation for how they can help your organization. The fact that containers are built on open source Linux technologies makes them even better!
* * *
_This article is based on a [techbeatly][7] article and has been adapted with permission._
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/container-linux-technology
作者:[Nived V][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/nivedv
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/car-penguin-drive-linux-yellow.png?itok=twWGlYAc (Penguin driving a car with a yellow background)
[2]: https://opensource.com/article/21/8/container-fundamentals-2
[3]: https://opensource.com/article/21/8/deep-dive-container-runtimes
[4]: https://opensource.com/sites/default/files/1linuxtechs.png (layers of linux technologies)
[5]: https://creativecommons.org/licenses/by-sa/4.0/
[6]: https://opensource.com/article/19/10/namespaces-and-containers-linux
[7]: https://nivedv.medium.com/container-internals-deep-dive-5cc424957413

View File

@ -0,0 +1,404 @@
[#]: subject: "Best Web Browsers for Ubuntu and Other Linux Distributions"
[#]: via: "https://itsfoss.com/best-browsers-ubuntu-linux/"
[#]: author: "Ankush Das https://itsfoss.com/author/ankush/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Best Web Browsers for Ubuntu and Other Linux Distributions
======
There is no such thing as the perfect web browser. It all depends on what you prefer and what you use it for.
But, what are your best options when it comes to web browsers for Linux?
In this article, I try to highlight the best web browsers that you can pick for Ubuntu and other Linux.
**Note:** We have tried and tested these browsers on Ubuntu. But, you should be able to install it on any Linux distribution of your choice.
### Top Web Browsers for Linux
![Illustration for web browser running in Ubuntu Linux][1]
Every browser offers something unique. And, when it comes to the Linux platform, there are some interesting exclusive choices as well.
_**Before you see this list, please note that it is not a ranking list. The browser listed at number 1 should not be considered better than the ones at 2, 3 or 10.**_
Non-FOSS alert!
Some applications mentioned here are not open source. They are listed here because they are available on Linux and the articles focus is on Linux. We have a separate [dedicated list of open source web browsers][2] as well.
### 1\. Vivaldi
![][3]
**Pros**
* Sidebar for quick web application access
* Calendar and Email integration
* Unique tab management
* Pomodoro feature
* Mobile app available
**Cons**
* Resource-heavy when using a variety of features
* Not 100% open-source
Vivaldi is an impressive browser that has been getting more attention from Linux users more than ever.
While it is not 100% open-source, you can find most of its source code (except for its UI) online.
With [Vivaldi 4.0 release][4], they have been focusing more on improving the experience for Linux users. You can set clock timers to increase your work productivity, use the built-in translation for web pages, track your calendar, add shortcuts to web applications, and multi-task at its peak with this browser.
Even though it is a fast web browser, I wouldnt bet on it as the “fastest” or lightest. You need a good amount of memory (RAM) to make use of all the features while you work on stuff.
Overall, it is a feature-rich web browser. So, if you need something with as many as features possible to multi-task, Vivaldi can be your choice.
[Vivaldi][5]
#### How to Install Vivaldi on Linux?
Vivaldi offers both **.deb** and **.rpm** packages to let you directly install it in your Linux system.
You can refer to our resources to [install Deb files][6] and [install RPM files][7] in case you are new to Linux.
### 2\. Mozilla Firefox
![][8]
**Pros**
* Privacy protection
* Not based on Chrome engine
* Open Source
* Firefox Account services
**Cons**
* User Experience changes with major updates
Firefox is the default web browser for most Linux distributions. Hence, it is an obvious choice to start with.
In addition to being open-source, it offers some of the best privacy protection features. And, with the right settings, you can turn it into one of the most secure browsers similar to Tor Browser (which is also based on Firefox).
Not just limited to its security, but Firefox also offers useful integrated features like Pocket (to save web pages and read later), VPN, email alias, breach monitor, and more when you sign in with your Firefox account.
[Firefox][9]
#### How to Install Firefox on Linux?
It should already come pre-installed in your Linux distribution. But, if it is not present, you can search for it in the software center or install it using the terminal with the following command:
```
sudo apt install firefox
```
### 3\. Chromium
![][10]
**Pros**
* Open Source Chrome alternative
* Similar features to Google Chrome
**Cons**
* Lacks certain features that Google Chrome offers
Chromium is the open-source alternative and the base for Google Chrome and many other chrome-based browsers.
If you do not want to use Google Chrome, chromiums your best bet to get the same experience on Linux.
Even though Google controls Chromium and [has been locking down Chrome][11], it is a good option for Linux systems.
[Chromium][12]
#### How to Install Chromium on Linux?
You should be able to find it easily in the software center. But, if you need help, refer to our [installation guide for Chromium][13].
### 4\. Google Chrome
![][14]
**Pros**
* Seamless integration with Google services
**Cons**
* Not open-source
Google Chrome is an excellent web browser unless you do not want to opt for a proprietary solution or products by Google.
You get all the essential features and the ability to integrate all Google services. If you prefer using Google Chrome on Android and want to sync across multiple platforms, it is an obvious choice for desktop Linux.
If you were looking for a simple and capable web browser while using Google services, Google Chrome can be a great pick.
[Google Chrome][15]
#### How to Install Google Chrome on Linux?
Google Chrome offers both Deb and RPM packages to let you install on any Ubuntu-based or Fedora/openSUSE distribution.
If you need help with the installation, I should point you to our guide on [installing Google Chrome on Linux][16].
### 5\. Brave Browser
![][17]
**Pros**
* Privacy protection features
* Performance
**Cons**
* No account-based sync
Brrave browser is one of the most popular Linux browsers.
It is an open-source project and is based on chromium. It offers several useful privacy protection features and is known for its blazing fast performance.
Unlike any other browsers, you can get rewards even if you block advertisements on websites. The rewards you collect can only be used to give back to your favorite websites. This way, you get to block ads and also support the website.
You can expect a faster user experience with minimum resource usage.  
We also have a detailed [comparison article on Brave vs Firefox][18], if you need to decide between the two.
Brave
#### How to Install Brave on Linux?
Unlike some other web browsers, you cannot directly find a package or in the software center. You need to enter some commands in the terminal to install the browser.
Fret not, you can follow our [instructions to install brave browser][19] to proceed.
### 6\. Opera
![][20]
**Pros**
* Free VPN in-built
* Extra features
**Cons**
* Not open source
While Opera is not the most popular choice, it is definitely a useful browser for Linux users.
It comes with a built-in VPN and adblocker. So, you should have the basic privacy protection sorted with the help of the Opera web browser.
You can quickly access popular chat messengers right from the sidebar without needing to launch a separate app or window. This is similar to Vivaldi considering the side chat messenger web apps but the user experience is significantly different.
Overall, it is a good pick if you want a free VPN as an added bonus to other essential browsing features.
It is worth noting that Opera offers a unique [Opera GX][21] browser which lets you tweak/enforce limit on system resources when using a browser along with gaming activities. This was still in development for Linux at the time of writing, if it is available by the time you read it, that could be a fantastic option!
[Opera][22]
#### How to Install Opera?
Opera provides Deb package for Linux. You just head to its official website to download and install it.
### 7\. Microsoft Edge
![][23]
**Pros**
* Convenient option for Windows users who also use Linux
**Cons**
* Not open-source
* Still in Beta
Microsoft Edge has surpassed Mozilla Firefox in terms of its popularity. Not just because its the default Windows browser, but it also offers a promising web experience while based on Chrome.
At the time of writing this article, Microsoft Edge is available as a beta release for Linux. It works fine at the moment, but lacks quite a few features normally available for Windows.
Overall, you should find most of the essential features available.
If you use Windows and Linux as your desktop platforms, Microsoft Edge can come in handy as the preferred web browser.
[Microsoft Edge][24]
#### How to install Microsoft Edge on Linux?
It is currently available through Microsoft Insiders channel as a beta. So, this could change once the stable release is out.
For now, you can get the Deb/RPM file through the Microsoft Edge insiders web page and install it.
You can also have a look at our how-to article on [installing Microsoft Edge on Linux][25].
### Unique Web Browsers for Linux
Most of the users prefer to stick with the mainstream options because of security updates and future upgrades, but there are some different options as well. And, some exclusive to Linux users.
### 8\. GNOME Web or Epiphany
![][26]
**Pros**
* Minimal
* Open Source
**Cons**
* Lacks many features
* No cross-platform support
Epiphany browser is the default GNOME browser. elementary OS utilizes it as its default web browser.
It is a minimal browser that offers a clean and elegant user experience. You cannot sync your bookmarks or history, so you need to manually export them if you want to back them up or transfer to another browser.
[GNOME Web][27]
#### How to Install GNOME Web?
You may find it pre-installed in some Linux distros. If not, you can check out its [Flatpak package][28] to install the latest version on any Linux distro.
### 9\. Falkon
![][29]
**Pros**
* Firefox-based alternative
**Cons**
* Not a replacement to Firefox
* No cross-platform support
Falkon is a Firefox-based browser with privacy in mind. It should be good enough for basic web browsing, but it may not be a solution for your daily driver.
You can explore more about it and get the installation instructions in our dedicated [article on Falkon browser][30].
[Falkon][31]
### 10\. Nyxt
![][32]
**Pros**
* Highly customizable
* Keyboard use focused
**Cons**
* Suitable for certain users
* Lack of cross-platform support
Nyxt is an interesting web browser built for power keyboard users. You can browse and navigate the web using keyboard shortcuts.
To know more about it and the installation instructions, go through our detailed article on [Nyxt browser][33].
Nyxt
### Wrapping Up
When it comes to Linux, you get a variety of choices available to pick. I have deliberately skipped [command line based web browsers like Lynx][34] here.
So, what would be your selection for the best web browser?
Moreover, Id be curious to know what do you look for when installing a web browser for your system?
Feel free to share your thoughts in the comments below.
--------------------------------------------------------------------------------
via: https://itsfoss.com/best-browsers-ubuntu-linux/
作者:[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://i1.wp.com/itsfoss.com/wp-content/uploads/2021/09/web-browser-ubuntu.png?resize=800%2C450&ssl=1
[2]: https://itsfoss.com/open-source-browsers-linux/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/08/vivaldi-screenshot.png?resize=800%2C502&ssl=1
[4]: https://news.itsfoss.com/vivaldi-4-0-release/
[5]: https://vivaldi.com
[6]: https://itsfoss.com/install-deb-files-ubuntu/
[7]: https://itsfoss.com/install-rpm-files-fedora/
[8]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/firefox-proton.png?resize=800%2C450&ssl=1
[9]: https://www.mozilla.org/en-US/firefox/new/
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/chromium-screenshot.png?resize=800%2C558&ssl=1
[11]: https://news.itsfoss.com/is-google-locking-down-chrome/
[12]: https://www.chromium.org
[13]: https://itsfoss.com/install-chromium-ubuntu/
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/08/google-chrome-screenshot.png?resize=800%2C557&ssl=1
[15]: https://www.google.com/chrome/
[16]: https://itsfoss.com/install-chrome-ubuntu/
[17]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/07/brave-ui-new.jpg?resize=800%2C450&ssl=1
[18]: https://itsfoss.com/brave-vs-firefox/
[19]: https://itsfoss.com/brave-web-browser/
[20]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/opera-screenshot.png?resize=800%2C543&ssl=1
[21]: https://www.opera.com/gx
[22]: https://www.opera.com/
[23]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2021/04/microsoft-edge-on-linux.png?resize=800%2C439&ssl=1
[24]: https://www.microsoftedgeinsider.com/en-us/
[25]: https://itsfoss.com/microsoft-edge-linux/
[26]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/08/gnome-web.png?resize=800%2C450&ssl=1
[27]: https://apps.gnome.org/en-GB/app/org.gnome.Epiphany/
[28]: https://flathub.org/apps/details/org.gnome.Epiphany
[29]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2019/12/falkon-browser-1.png?resize=800%2C450&ssl=1
[30]: https://itsfoss.com/falkon-browser/
[31]: https://www.falkon.org
[32]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2021/05/nyxt-browser-settings.png?resize=800%2C617&ssl=1
[33]: https://itsfoss.com/nyxt-browser/
[34]: https://itsfoss.com/terminal-web-browsers/

View File

@ -0,0 +1,341 @@
[#]: subject: "Get started programming with DOS conio"
[#]: via: "https://opensource.com/article/21/9/programming-dos-conio"
[#]: author: "Jim Hall https://opensource.com/users/jim-hall"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Get started programming with DOS conio
======
Create various practical and exciting applications by programming with
conio.
![Person using a laptop][1]
One of the reasons so many DOS applications sported a text user interface (or TUI) is because it was so easy to do. The standard way to control **con**sole **i**nput and **o**utput (**conio**) was with the `conio` library for many C programmers. This is a de-facto standard library on DOS, which gained popularity as implemented by Borland's proprietary C compiler as `conio.h`. You can also find a similar `conio` implementation in TK Chia's IA-16 DOS port of the GNU C Compiler in the `libi86` library of non-standard routines. The library includes implementations of `conio.h` functions that mimic Borland Turbo C++ to set video modes, display colored text, move the cursor, and so on.
For years, FreeDOS included the OpenWatcom C Compiler in the standard distributions. OpenWatcom supports its own version of `conio`, implemented in `conio.h` for particular console input and output functions, and in `graph.h` to set colors and perform other manipulation. Because the OpenWatcom C Compiler has been used for a long time by many developers, this `conio` implementation is also quite popular. Let's get started with the OpenWatcom `conio` functions.
### Setting the video mode
Everything you do is immediately displayed on-screen via hardware. This is different from the `ncurses` library on Linux, where everything is displayed through terminal emulation. On DOS, everything is running on hardware. And that means DOS `conio` programs can easily access video modes and leverage screen regions in ways that are difficult using Linux `ncurses`.
To start, you need to set the _video mode_. On OpenWatcom, you do this with the `_setvideomode` function. This function takes one of several possible values, but for most programs that run in color mode in a standard 80x25 screen, use `_TEXTC80` as the mode.
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
int
main()
{
  _setvideomode(_TEXTC80);
  … 
```
When you're done with your program and ready to exit back to DOS, you should reset the video mode back to whatever values it had before. For that, you can use `_DEFAULTMODE` as the mode.
```
 _setvideomode(_DEFAULTMODE);
  return 0;
}
```
### Setting the colors
Every PC built after 1981's Color/Graphics Adapter supports [16 text colors and 8 background colors][2]. Background colors are addressed with color indices 0 through 7, and text colors can be any value from 0 to 15:
| | | | | | | --------- | | ----------------- | | | 0 Black | | 8 Bright Black | | | 1 Blue | | 9 Bright Blue | | | 2 Green | | 10 Bright Green | | | 3 Cyan | | 11 Bright Cyan | | | 4 Red | | 12 Bright Red | | | 5 Magenta | | 13 Bright Magenta | | | 6 Brown | | 14 Yellow | | | 7 White | | 15 Bright White |
You can set both the text color and the color behind it. Use the `_settextcolor` function to set the text "foreground" color and `_setbkcolor` to set the text "background" color. For example, to set the colors to yellow text on a red background, you would use this pair of functions:
```
 _settextcolor(14);
 _setbkcolor(4);
```
### Positioning text
In `conio`, screen coordinates are always _row_,_col_ and start with 1,1 in the upper-left corner. For a standard 80-column display with 25 lines, the bottom-right corner is 25,80.
Use the `_settextposition` function to move the cursor to a specific screen coordinate, then use `_outtext` to print the text you want to display. If you've set the colors, your text will use the colors you last defined, regardless of what's already on the screen.
For example, to print the text "FreeDOS" at line 12 and column 36 (which is more or less centered on the screen) use these two functions:
```
  _settextposition(12, 36);
  _outtext("FreeDOS");
```
Here's a small example program:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
int
main()
{
    _setvideomode(_TEXTC80);
    _settextcolor(14);
    _setbkcolor(4);
    _settextposition(12, 36);
    _outtext("FreeDOS");
    [getch][3]();
    _setvideomode(_DEFAULTMODE);
    return 0;
}
```
Compile and run the program to see this output:
![Print to the screen with conio][4]
(Jim Hall, [CC BY-SA 4.0][5])
### Text windows
The trick to unleashing the power of `conio` is to leverage a feature of the PC video display where a program can control the video hardware by region. These are called text windows and are a really cool feature of `conio`.
A text window is just an area of the screen, defined as a rectangle starting at a particular _row_,_col_ and ending at a different _row_,_col_. These regions can take up the whole screen or be as small as a single line. Once you define a window, you can clear it with a background color and position text in it.
To define a text window starting at row 5 and column 10, and extending to row 15 and column 70, you use the `_settextwindow` function like this:
```
`  _settextwindow(5, 10, 15, 70);`
```
Now that you've defined the window, any text you draw in it uses 1,1 as the upper-left corner of the text window. Placing text at 1,1 will actually position that text at row 5 and column 10, where the window starts on the screen.
You can also clear the window with a background color. The `_clearscreen` function does double duty to clear either the full screen or just the window that's currently defined. To clear the entire screen, give the value `_GCLEARSCREEN` to the function. To clear just the window, use `_GWINDOW`. With either usage, you'll fill that region with whatever background color you last set. For example, to clear the whole screen with cyan (color 3) and a smaller text window with blue (color 1) you could use this code:
```
  _clearscreen(_GCLEARSCREEN);
  _setbkcolor(3);
  _settextwindow(5, 10, 15, 70);
  _setbkcolor(1);
  _clearscreen(_GWINDOW);
```
This makes it really easy to fill in certain areas of the screen. In fact, defining a window and filling it with color is such a common thing to do that I often create a function to do both at once. Many of my `conio` programs include some variation of these two functions to clear the screen or window:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
void
clear_color(int fg, int bg)
{
  _settextcolor(fg);
  _setbkcolor(bg);
  _clearscreen(_GCLEARSCREEN);
}
void
textwindow_color(int top, int left, int bottom, int right, int fg, int bg)
{
  _settextwindow(top, left, bottom, right);
  _settextcolor(fg);
  _setbkcolor(bg);
  _clearscreen(_GWINDOW);
}
```
A text window can be any size, even a single line. This is handy to define a title bar at the top of the screen or a status line at the bottom of the screen. Again, I find this to be such a useful addition to my programs that I'll frequently write functions to do it for me:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
#include &lt;string.h&gt;                    /* for strlen */
void
clear_color(int fg, int bg)
{
  … 
}
void
textwindow_color(int top, int left, int bottom, int right, int fg, int bg)
{
  … 
}
void
print_header(int fg, int bg, const char *text)
{
  textwindow_color(1, 1, 1, 80, fg, bg);
  _settextposition(1, 40 - (strlen(text) / 2));
  _outtext(text);
}
void
print_status(int fg, int bg, const char *text)
{
  textwindow_color(25, 1, 25, 80, fg, bg);
  _settextposition(1, 1);
  _outtext(text);
}
```
### Putting it all together
With this introduction to `conio`, and with the set of functions we've defined above, you can create the outlines of almost any program. Let's write a quick example that demonstrates how text windows work with `conio`. We'll clear the screen with a color, then print some sample text on the second line. That leaves room to put a title line at the top of the screen. We'll also print a status line at the bottom of the screen.
This is the basics of many kinds of applications. Placing a text window towards the right of the screen could be useful if you were writing a "monitor" program, such as part of a control system, like this:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
int
main()
{
  _setvideomode(_TEXTC80);
  clear_color(7, 1);                   /* white on blue */
  _settextposition(2, 1);
  _outtext("test");
  print_header(0, 7, "MONITOR");       /* black on white */
  textwindow_color(3, 60, 23, 79, 15, 3);       /* br white on cyan */
  _settextposition(3, 2);
  _outtext("hi mom");
  print_status(0, 7, "press any key to quit...");       /* black on white */
  getch();
  _setvideomode(_DEFAULTMODE);
  return 0;
}
```
Having already written our own window functions to do most of the repetitive work, this program becomes very straightforward: clear the screen with a blue background, then print "test" on the second line. There's a header line and a status line, but the interesting part is in the middle where the program defines a text window near the right edge of the screen and prints some sample text. The `getch()` function waits for the user to press a key on the keyboard, useful when you need to wait until the user is ready:
![Conio mon][6]
(Jim Hall, [CC BY-SA 4.0][5])
We can change only a few values to completely change the look and function of this program. By setting the background to green and red text on a white window, we have the start of a solitaire card game:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
int
main()
{
  _setvideomode(_TEXTC80);
  clear_color(7, 2);                   /* white on green */
  _settextposition(2, 1);
  _outtext("test");
  print_header(14, 4, "SOLITAIRE");    /* br yellow on red */
  textwindow_color(10, 10, 17, 22, 4, 7);       /* red on white */
  _settextposition(3, 2);
  _outtext("hi mom");
  print_status(7, 6, "press any key to quit...");       /* white on brown */
  getch();
  _setvideomode(_DEFAULTMODE);
  return 0;
}
```
You could add other code to this sample program to print card values and suits, place cards on top of other cards, and other functionality to create a complete game. But for this demo, we'll just draw a single "card" displaying some text:
![Conio solitaire][7]
(Jim Hall, [CC BY-SA 4.0][5])
You can create other effects using text windows. For example, before drawing a message window, you could first draw a black window that's offset by one row and one column. The text window will appear to create a shadow over that area of the screen to the user. And we can do it all by changing only a few values in our sample program:
```
#include &lt;conio.h&gt;
#include &lt;graph.h&gt;
int
main()
{
  _setvideomode(_TEXTC80);
  clear_color(7, 1);                   /* white on blue */
  _settextposition(2, 1);
  _outtext("test");
  print_header(15, 3, "PROGRAMMING IN CONIO");  /* br white on cyan */
  textwindow_color(11, 36, 16, 46, 7, 0);       /* shadow */
  textwindow_color(10, 35, 15, 45, 7, 4);       /* white on red */
  _settextposition(3, 2);
  _outtext("hi mom");
  print_status(0, 7, "press any key to quit...");       /* black on white */
  getch();
  _setvideomode(_DEFAULTMODE);
  return 0;
}
```
You often see this "shadow" effect used in DOS programs as a way to add some visual flair:
![Conio Window with shadow][8]
(Jim Hall, [CC BY-SA 4.0][5])
The DOS `conio` functions can do much more than I've shown here, but with this introduction to `conio` programming, you can create various practical and exciting applications. Direct screen access means your programs can be more interactive than a simple command-line utility that scrolls text from the bottom of the screen. Leverage the flexibility of `conio` programming and make your next DOS program a great one.
### Download the conio cheat sheet
As you explore programming with `conio`, it's helpful to have a list of common functions close at hand. I've created a double-sided cheat sheet with all the basics of `conio`, so **[download it][9]** and use it on your next `conio` project.
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/9/programming-dos-conio
作者:[Jim Hall][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/jim-hall
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/laptop_screen_desk_work_chat_text.png?itok=UXqIDRDD (Person using a laptop)
[2]: https://opensource.com/article/21/6/freedos-sixteen-colors
[3]: http://www.opengroup.org/onlinepubs/009695399/functions/getch.html
[4]: https://opensource.com/sites/default/files/conio-hello.png (Print to the screen with conio)
[5]: https://creativecommons.org/licenses/by-sa/4.0/
[6]: https://opensource.com/sites/default/files/uploads/conio-mon.png (Conio mon)
[7]: https://opensource.com/sites/default/files/uploads/conio-sol.png (Conio solitaire)
[8]: https://opensource.com/sites/default/files/uploads/conio-win.png (Conio Window with shadow)
[9]: https://opensource.com/downloads/dos-conio-cheat-sheet

View File

@ -0,0 +1,97 @@
[#]: subject: "How to Completely Uninstall Google Chrome From Ubuntu"
[#]: via: "https://itsfoss.com/uninstall-chrome-from-ubuntu/"
[#]: author: "Abhishek Prakash https://itsfoss.com/author/abhishek/"
[#]: collector: "lujun9972"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
How to Completely Uninstall Google Chrome From Ubuntu
======
So, you managed to [install Google Chrome on Ubuntu][1]. It is the most popular web browser in the world, after all.
But perhaps you dislike Google products for the heavy tracking and data mining they employ on its users. You decided to opt for [other web browsers on Ubuntu][2], perhaps a [non-Chromium browser][3].
Now that you are no longer using it, it would be wise to remove [Google Chrome][4] from Ubuntu.
How to do that? Let me show you the steps.
### Remove Google Chrome completely from Ubuntu
![Illustration for removing Google Chrome from Ubuntu][5]
You probably installed Google Chrome graphically. Unfortunately, youll have to resort to command line for removing it, unless you opt to [use Synaptic Package Manager][6].
It is not too difficult. Press the [Ctrl+Alt+T keyboard shortcut in Ubuntu to open a terminal][7].
Type the following command in the terminal:
```
sudo apt purge google-chrome-stable
```
It asks for a password. It is your user accounts password, the one which you use to log in to your Ubuntu system.
When you type the password, nothing is displayed on the screen. This is normal behavior in Linux. Just type the password blindly and press enter.
It will ask you to confirm the removal of Google Chrome by entering Y or simply pressing the enter key.
![Removing Google Chrome for Ubuntu][8]
This will remove Google Chrome from your Ubuntu Linux system along with most of the system files.
However, the personal setting files remain in your home directory. This includes things like cookie sessions, bookmarks and other Chrome related settings for your user account. If you install Google Chrome again, the same files could be used by Chrome again.
![Google Chrome leftover settings in Ubuntu][9]
If you want to completely uninstall Google Chrome, you may want to remove these files as well. Heres what you should do.
Change to the .config directory. _**Mind the dot before config**_. Thats the [way to hide files and folders in Linux][10].
```
cd ~/.config
```
And now remove the google-chrome directory:
```
rm -rf google-chrome
```
![Removing the leftover Google Chrome settings from Ubuntu][11]
You could have also used rm -rf ~/.config/google-chrome to delete it in one single command. Since this tutorial is focused on absolute beginners, I made it in two steps to reduce the error margin because of a typo.
Tip
Want to make your terminal look beautiful like the ones in the screenshot? Use these [terminal customization tips][12].
I hope this quick beginner tip helped you to get rid of Google Chrome from Ubuntu Linux.
--------------------------------------------------------------------------------
via: https://itsfoss.com/uninstall-chrome-from-ubuntu/
作者:[Abhishek Prakash][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/abhishek/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/install-chrome-ubuntu/
[2]: https://itsfoss.com/best-browsers-ubuntu-linux/
[3]: https://itsfoss.com/open-source-browsers-linux/
[4]: https://www.google.com/chrome/index.html
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/removing-google-chrome-ubuntu.png?resize=800%2C450&ssl=1
[6]: https://itsfoss.com/synaptic-package-manager/
[7]: https://itsfoss.com/open-terminal-ubuntu/
[8]: https://itsfoss.com/wp-content/uploads/2021/09/remove-google-chrome-ubuntu.webp
[9]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/google-chrome-ubuntu-leftover-settings.png?resize=800%2C518&ssl=1
[10]: https://itsfoss.com/hide-folders-and-show-hidden-files-in-ubuntu-beginner-trick/
[11]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2021/09/remove-google-chrome-leftover-settings-from-Ubuntu.png?resize=800%2C277&ssl=1
[12]: https://itsfoss.com/customize-linux-terminal/

View File

@ -7,34 +7,34 @@
[#]: publisher: " " [#]: publisher: " "
[#]: url: " " [#]: url: " "
How to Download Audio Only Using youtube-dl 如何使用 youtube-dl 只下载音频
====== ======
[youtube-dl][1] is a versatile command line tool for downloading videos from YouTube and many other websites. I use it for making back up of my own YouTube videos. [youtube-dl][1] 是一个多功能的命令行工具,用于从 YouTube 和许多其他网站下载视频。我用它来做我自己的 YouTube 视频的备份。
By default, you [use youtube-dl for downloading videos][2]. How about extracting only the audio with youtubde-dl? Thats very simple actually. Let me show you the steps. 默认情况下,你[使用 youtube-dl 下载视频][2]。用 youtube-dl 只提取音频怎么样? 其实很简单。让我告诉你步骤。
Attention 注意
Downloading videos from websites could be against their policies. Its up to you if you choose to download videos or audio. 从网站下载视频可能违反他们的政策。这取决于你是否选择下载视频或音频。
### Download only audio with youtube-dl ### 使用 youtube-dl 只下载音频
Please make sure that you have installed youtube-dl on your Linux distribution first. 请确保你已经在你的 Linux 发行版上安装了 youtube-dl。
``` ```
sudo snap install youtube-dl sudo snap install youtube-dl
``` ```
If you only want to download audio from a YouTube video, you can use the -x option with youtube-dl. This extract-audio option converts the video files to audio-only files. 如果你只想从 YouTube 视频中下载音频,你可以使用 youtube-dl 的 -x 选项。这个提取音频的选项将视频文件转换为纯音频文件。
``` ```
youtube-dl -x video_URL youtube-dl -x video_URL
``` ```
The file is saved in the same directory from where you ran the youtube-dl command. 该文件被保存在你运行 youtube-dl 命令的同一目录下。
Heres an example where I downloaded the voice-over of our Zorin OS 16 review video. 这是我下载 Zorin OS 16 评论视频的画外音的示例。
``` ```
youtube-dl -x https://www.youtube.com/watch?v=m_PmLG7HqbQ youtube-dl -x https://www.youtube.com/watch?v=m_PmLG7HqbQ
@ -45,15 +45,15 @@ youtube-dl -x https://www.youtube.com/watch?v=m_PmLG7HqbQ
[ffmpeg] Post-process file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a exists, skipping [ffmpeg] Post-process file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a exists, skipping
``` ```
Did you notice the audio format? It is in .m4a format. You may specify the audio format to something of your choice. 你注意到音频格式了吗?它是 .m4a 格式。你可以把音频格式指定为你所选择的格式。
Say you want to extract the audio in MP3 format. You can use it like this: 比如你想提取 MP3 格式的音频。你可以像这样使用它:
``` ```
youtube-dl -x --audio-format mp3 video_URL youtube-dl -x --audio-format mp3 video_URL
``` ```
Heres the same example I showed previously. You can see that it [uses ffmpeg to convert][3] the m4a file into mp3. 下面是我之前展示的同一个例子。你可以看到它[使用 ffmpeg 转换][3] m4a 文件为 mp3
``` ```
youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=m_PmLG7HqbQ youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=m_PmLG7HqbQ
@ -65,33 +65,33 @@ youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=m_PmLG7HqbQ
Deleting original file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a (pass -k to keep) Deleting original file Zorin OS 16 Review - It's a Visual Masterpiece-m_PmLG7HqbQ.m4a (pass -k to keep)
``` ```
### Download entire YouTube playlist in MP3 format ### 以 MP3 格式下载整个 YouTube 播放列表
Yes, you can totally do that. The main thing is to get the URL of the playlist here. It is typically in the following format: 是的,你完全可以这样做。最主要的是要在这里得到播放列表的 URL。它通常是以下格式
``` ```
https://www.youtube.com/playlist?list=XXXXXXXXXXXXXXXXXXX https://www.youtube.com/playlist?list=XXXXXXXXXXXXXXXXXXX
``` ```
To get the URL of a playlist, click on its name when the playlist is being displayed in the right sidebar. 要获得一个播放列表的 URL当播放列表显示在右边栏时点击其名称。
![Click on the playlist title][4] ![Click on the playlist title][4]
It will take you to the playlist page and you can copy the URL here. 它将带你到播放列表页面,你可以在这里复制 URL。
![Grab the playlist URL][5] ![Grab the playlist URL][5]
Now that you have the playlist URL, you can use it to download the audio files in MP3 format in the following fashion: 现在你有了播放列表的 URL你可以用它来下载 MP3 格式的音频文件,方法如下:
``` ```
youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" playlist_URL youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" playlist_URL
``` ```
That scary looking `-o "%(title)s.%(ext)s"` specifies the output file (with option -o) and instructs it to use the title of the video and the extension (mp3 in this case) for naming the audio files. 那个看起来很可怕的 `-o "%(title)s.%(ext)s"` 指定了输出文件(带选项 -o并指示它使用视频的标题和扩展名本例为 mp3来命名音频文件。
![][6] ![][6]
I hope you find this quick tip helpful. Enjoy the audio files :) 我希望你觉得这个技巧对你有帮助。享受音频文件吧 :)
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -99,7 +99,7 @@ via: https://itsfoss.com/youtube-dl-audio-only/
作者:[Abhishek Prakash][a] 作者:[Abhishek Prakash][a]
选题:[lujun9972][b] 选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID) 译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID) 校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,187 @@
[#]: subject: "10 Things to Do After Installing elementary OS 6 “Odin”"
[#]: via: "https://www.debugpoint.com/2021/08/10-things-to-do-after-install-elementary-os-6/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lujun9972"
[#]: translator: " anine09"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
安装elementary OS 6 “Odin”后要做的 10 件事
======
一个关于安装 elementary OS 6 “Odin” 后要做的事情的列表。
在经过两年多的开发后 [elementary OS 6 “Odin”][1] 于不久前发布,此次版本更新在核心模块、 Pantheon 桌面、本地应用中引入了一系列变化巨大的新特性elementary OS 6 “Odin” 基于 Ubuntu 20.04 LTS。
也就是说,如果你完成了安装,你可能想要尝试通过一些特定的设置来使你的系统更加的个性化。这里描述的选项是通用的,在某些情况下可能对你无效,但是我们觉得有必要列出一些基础知识,让你有合适的方式来探索这个漂亮的 elementary OS。
### 安装完 elementary OS 6 “Odin” 后要做的事情
***准备步骤***
首先确保你已经连上了互联网,你可以在顶部的通知区域查看可用的网络列表
#### 1\. 更改 hostname
这可能不是你想做的第一件事。但是我不知道为什么在安装过程中没有给出更改 hostname 的选项。例如,见下图的终端提示, 这个 hostname 是 elementary OS 的默认硬件配置。在我看来这一点都不好。
![hostname 修改之前][2]
打开终端并运行下列命令以更改 hostname
```bash
hostnamectl set-hostname your-new-hostname
```
示例:
![修改 hostname][3]
![hostname 修改之后][4]
#### 2\. 升级你的系统
在安装任何 Linux 发行版后,你应该做的第一件事就是确保系统处于最新的软件包和安全更新状态。
你可以通过打开应用中心来检查或者安装更新。
或者打开终端运行下列命令。
```bash
sudo apt update
sudo apt upgrade
```
#### 3\. 安装 Pantheon Tweaks
Pantheon Tweaks 是 elementary OS 的必备应用。它提供了一些无法通过系统原生设置程序修改的额外的设置和配置选项,请打开终端并运行以下命令以安装 Pantheon Tweaks。注意先前版本的 Tweak 工具叫做 elementary Tweaks从 Odin 版本开始更名为 Pantheon Tweaks。
```bash
sudo apt install software-properties-common
sudo add-apt-repository -y ppa:philip.scott/pantheon-tweaks
sudo apt install -y pantheon-tweaks
```
安装后打开系统设置,你可以在那里找到 Tweaks 选项。
[这里][5] 提供了更详细的安装指南(如果你需要了解更多信息)
### 4. 配置 Dock
Dock 是整个桌面的中心。老实说Dock 中默认包含的应用并不常用,因此你是可以通过以下步骤配置 Dock 中的项目的。
* 移除:右键单击并取消 **在 Dock 中驻留** 选项。
* 添加新的项目:单击顶部的应用程序。然后右键单击你想要放在 Dock 的应用图标。选择 **添加到 Dock**。
在我看来你应该至少把文件管理、截图工具、Firefox 、计算器,以及其他的一些应用添加到 Dock。然后移除 Dock 上那些你不需要的应用。
#### 5\. 更改外观
elementary OS 6 Odin 改进了桌面的整体外观,为整个桌面和应用程序提供了自带的强调色和原生的夜间模式,同时,系统自带了许多漂亮的壁纸。你可以通过 **应用 > 系统设置 > 桌面** 来定制壁纸、外观、面板和多任务视图。
![elementary OS 6 Odin 桌面设置界面][6]
按照你希望的样子来配置你系统的外观
参见:[elementary OS 6 Odin Promises Complete Dark Style](https://www.debugpoint.com/2020/11/elementary-os-6-odin-dark-style/)
你也可以基于日出和日落的时间来设置夜间模式。
#### 6\. 安装其他的应用
自带的应用中心非常适合这个系统,我发现它是 Linux 桌面最好的应用商店之一。然而,有时候需要安装没有预装的必要应用(大多数是知名的应用)。下面是个新系统推荐安装的软件列表。(说真的,为什么 LibreOffice 没有预装?)
* firefox
* gimp
* gedit
* inkscape
* obs-studio
* libreoffice
#### 7\. 一些针对笔记本电脑的省电贴士
有许多方法可以配置你的 elementary OS (或者一般的 Linux 桌面),以达到延长电池寿命的目的。记住,电池寿命取决于你的笔记本硬件,以及电池和笔记本的使用年限。所以,遵循下面的一些建议,最大限度的利用你的笔记本电池。
* 安装 [tlp][8]. tlp 是一个简单易用的命令行程序,用来帮你在 Linux 上延长电池寿命。你只需要安装它,默认情况下,它会处理好其他的设置。安装命令:
```
sudo add-apt-repository ppa:linrunner/tlp
sudo apt update
sudo apt-get install tlp
sudo tlp start
```
* 关闭蓝牙,默认情况下,蓝牙是开启状态。在需要的时候再启动它。
* 通过下面的命令安装 thermald。这个实用程序实际是个守护进程控制着你的 CPU 的 P-States 和 T-States 的温度以及 CPU 发热。
```
sudo apt install thermald
```
* 根据你的需要将亮度调到最小。
#### 8\. 安装磁盘实用程序
在很多情况下,你发现你需要格式化 USB 或者向 USB 中写入一些东西。默认情况下,系统没有安装任何相关的应用。你可以安装以下这些易用的应用。
```
gnome-disk-utility
gparted
```
#### 9\. 启用最大化和最小化选项
许多用户喜欢在窗口标题栏左边或者右边使用最大化、最小化的按钮elementary OS 默认只提供关闭和恢复两个选项。这没什么问题,因为这就是它的设计理念。然而你可以通过使用 Pantheon Tweaks 来开启最大化和最小化按钮,具体的方式是:调整 > 外观 > 窗口控制。
![在 elementary OS 中启动最大化和最小化设置][9]
#### 10\. 在 Odin 中学习新的多点触控手势
如果你是笔记本用户,并且使用 elementary OS Odin那么你一定要看看这些超酷的新触控手势。三根手指向上滑动就会平滑的打开多任务视图打开应用程序和工作空间。用三根手指向左或向右滑动就能在动态工作空间之间流畅的切换使任务之间的额切换更快。
用两根手指也可以再本地应用中实现类似的功能。
### 结束语
我希望安装elementary OS 6 Odin 后要做的 10 件事能帮助到你,让你开始使用 elementary OS 6 Odin尽管这些事情完全是用户的偏好因此这些事情有可能适合你也有可能不适用于你但总的来说这些都是一般用户喜欢的预期调整。
如果你觉得有更多的东西应该添加到列表中,请在下面的评论中告诉我。
* * *
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/2021/08/10-things-to-do-after-install-elementary-os-6/
作者:[Arindam][a]
选题:[lujun9972][b]
译者:[anine09](https://github.com/anine09)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lujun9972
[1]: https://www.debugpoint.com/2021/08/elementary-os-6/
[2]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/hostname-change-before.jpeg
[3]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/changing-hostname.jpeg
[4]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/changed-hostname.jpeg
[5]: https://www.debugpoint.com/2021/07/elementary-tweaks-install/
[6]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/elementary-OS-6-Odin-settings-window-Desktop.jpeg
[7]: https://www.debugpoint.com/2020/09/elementary-os-6-odin-new-features-release-date/
[8]: https://linrunner.de/tlp/
[9]: https://www.debugpoint.com/blog/wp-content/uploads/2021/08/enable-minimize-maximize-buttons-elementary-OS-1024x501.png

View File

@ -1,105 +0,0 @@
[#]: subject: "How to set up your printer on Linux"
[#]: via: "https://opensource.com/article/21/8/add-printer-linux"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "fisherue "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
如何在 Linux 系统设置打印机
======
如果系统没有自动检测到你的打印机,这篇文章教你任何在 Linux 系统手动添加打印机。
![printing on Linux][1]
即使未来已来,电子墨水 (e-ink) 和 AR 技术可以现实应用,我们还是会用到打印机的。打印机制造商还不能做到让自己的专利打印机可以与各种计算机完全标准化传递信息,以至于我们需要各种打印机驱动程序,在任何操作系统上都是如此。电子电气工程师协会信息科学与技术处 (IEEE-ISTO) 下属的打印机工作组 (PWG) 和开放打印技术组织 (OpenPrinting.org) 长期合作致力于让人们可以(使用任何型号打印机)轻松打印。带来的便利就是,很多打印机可以不需要用户进行配置就可以自动被识别使用。
如果系统没有自动检测到你的打印机,你可以在这篇文章中找到如何在 Linux 系统手动添加打印机。文中假定你使用的是 GNOME 图形桌面系统,其设置流程同样适用于 KDE 或其他多数桌面系统。
### 打印机驱动程序
在你尝试用打印机打印文件时,要先确认你的 Linux 系统上是不是已经安装了匹配的打印机驱动程序。
可以尝试安装的打印机驱动程序有三大类:
* 在你的 Linux 系统作为安装包提供的开源打印机驱动程序 [Gutenprint drivers][2]
* 打印机制造商提供的专用驱动程序
* 第三方开发提供的打印机驱动程序
开源打印机驱动程序库可以驱动 700 多种打印机,值得安装,这里面可能就有你的打印机的驱动,说不定可以自动设置好你的打印机(,你就可以使用它了)。
### 安装开源驱动程序包(库)
有些 Linux 发行版已经预装了开源打印机驱动程序包,如果没有,你可以用包管理器来安装。比如说,在 Fedora, CentOS, Magela 等类似发行版的 Linux 系统上,执行下面命令来安装:
```
`$ sudo dnf install gutenprint`
```
惠普 (HP) 系列的打印机,还需要安装惠普的 Linux 图形及打印系统软件包 (Hewlett-Packard's Linux Imaging and Printing (HPLIP) ). 类似 Debian, Linux Mint 等系列的系统,使用下面的命令:
```
`$ sudo apt install hplip`
```
### 安装制造商提供的驱动程序
很多时候因为打印机制造商使用非标准的接口协议,这种情况开源打印机驱动程序就不能驱动打印机。另外的情况就是,开源驱动程序可以驱动打印机工作,但是会缺少品牌特有的有些性能。这些情况,你需要访问制造商的网站,找到适合你的打印机型号的 Linux 平台驱动。安装过程各异,仔细阅读安装指南逐步安装。
即便是厂家的驱动也不能驱动你的打印机工作,你或许也只能尝试第三方提供的该型号打印机的驱动软件 [third-party driver authors][3] 了。这类第三方驱动程序不是开源的,和打印机专用驱动程序一样闭源。如果你需要额外花费 45 美元(约 400 员人民币)从供应商那里获取帮助服务才能安装好驱动并使用你的打印机,那是很心疼,或者你索性把这台打印机扔掉,至少你知道下次再也不会购买这个品牌的打印机了。(译者注:国内售后服务收费没有北美那么高,有需要还是先电话咨询售后,有没有 Linux 平台的专用驱动可真是碰运气。
### 统一接口打印驱动系统(CUPS)
统一接口打印驱动系统 (CUPS) 是由 Easy Software Products 公司于 1997 年开发的2007 年被苹果公司 (Apple) 收购。这是 Linux 平台打印的开源基础软件包,很多改进的发行版本提供定制化的界面。得益于 CUPS 技术,你可以发使用通过 USB 接口连接到电脑的打印机,甚至连接在同一网络的共享打印机。
一旦你安装了需要的驱动程序包,你就能手工添加你的打印机了。首先,把打印机连接到运行的电脑上,并打开打印机电源。然后从启动器 **Activities**)或者应用列表中找到并打开打印机设置**Printers**。![printer settings][4]
CC BY-SA Opensource.com
基于你已经安装的驱动包,你的 Linux 系统有可能自动检测识别到你的打印机型号,不需要额外的设置就可以使用你的打印机了。
![printer settings][5]
CC BY-SA Opensource.com
一旦你在列表中找到你的打印机型号,设置使用这个驱动,恭喜你就可以在 Linux 系统上用它打印了。
(如果你的打印机没有被自动识别,)你需要自行添加打印机。在打印机设置界面**Printers**,点击右上角的解锁按钮(**Unlock**),输入管理用户密码,按钮转换成**添加打印机**按钮 (**Add**) 。
然后点击这个**添加打印机**按钮 (**Add**) ,电脑会搜索已经连接的本地打印机型号并匹配相应驱动程序。如果要添加网络共享打印机,在搜索框输入打印机或者其服务器机的 IP 地址。
![searching for a printer][6]
CC BY-SA Opensource.com
选中你想添加的打印机型号,点击**添加**按钮 (**Add**) 把打印机驱动加入系统,就可以使用它了。
### 在 Linux 系统上打印
在 Linux 系统上打印很容易,不管你是在使用本地打印机还是网络打印机。如果你计划购买打印机,建议查看开放打印技术组织的(可支持打印机)数据库 ( [OpenPrinting.org database][7] ) ,看看你想购买的打印机是不是有相应的开源驱动程序。如果你已经拥有一台打印机,你现在也知道怎样在你的 Linux 系统上使用你的打印机了。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/8/add-printer-linux
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[fisherue](https://github.com/fisherue)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/happy-printer.png?itok=9J44YaDs "printing on Linux"
[2]: http://gimp-print.sourceforge.net/
[3]: https://www.turboprint.info/
[4]: https://opensource.com/sites/default/files/system-settings-printer_0.png "printer settings"
[5]: https://opensource.com/sites/default/files/settings-printer.png "printer settings"
[6]: https://opensource.com/sites/default/files/printer-search.png "searching for a printer"
[7]: http://www.openprinting.org/printers/