Merge pull request #2 from LCTT/master

ThirdTrans
This commit is contained in:
CanYellow 2022-12-15 12:19:28 +08:00 committed by GitHub
commit 170a5aa428
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 948 additions and 582 deletions

View File

@ -0,0 +1,94 @@
[#]: subject: "A DevOps guide to documentation"
[#]: via: "https://opensource.com/article/21/3/devops-documentation"
[#]: author: "Will Kelly https://opensource.com/users/willkelly"
[#]: collector: "lujun9972"
[#]: translator: "Veryzzj"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15349-1.html"
文档写作的 DevOps 指南
======
> 将文档写作加入到 DevOps 的生命周期中。
![][0]
DevOps 正在挑战技术文档的规范,这在 IT 历史上是前所未有的。从自动化到提高交付速度,再到拆除瀑布式软件开发生命周期模型,这意味着业务和技术文档写作的理念需要做出巨大改变。
以下是 DevOps 对技术文档写作不同方面的影响。
### 技术写手的角色变化
技术写手必须适应 DevOps。好消息是许多技术写手已经加入到开发团队中并且拥有合作关系和不断增长的产品知识的技术写手很具优势。
但是如果一个技术写手习惯于独立工作,并依赖于领域专家的草稿作为文档的基础,那么就需要做一些调整。
进行一些投资,以确保文档和其他与项目有关的内容开发工作获得所需的工具、结构和支持。从改变 [技术写手聘用方式][2] 开始。以 [DevOps 的速度][3] 编写文档需要重新思考内容规划,并打破 DevOps 团队和支持项目的技术写手之间长期存在的隔阂。
DevOps 使开发团队摆脱了传统文档实践的束缚。首先,文档 [完成的定义][4] 必须改变。一些企业的文化使技术写手成为软件开发的被动参与者。DevOps 提出了新的要求:随着 DevOps 文化的转变技术写手的角色也应发生变化。技术写手需要且必须适应DevOps 提供的透明度。他们必须融入 DevOps 团队。取决于组织如何塑造这个角色,将技术写手带入团队可能会带来技能上的挑战。
### 文档标准、方法和规格
虽然 DevOps 还没有影响到技术文档本身但开源社区已经加强了对应用编程接口API文档的帮助已经有不同规模的企业的 DevOps 团队正在使用这些文档。
用于记录 API 的开源规范和工具是个非常值得关注的领域。我想这是由于 [谷歌文档季][5] 的影响,它使开源软件项目能够获得专业的技术写作人才来解决他们最关键的文档项目。
开源 API 属于 DevOps 文档讨论的一部分。云原生应用集成需求的重要性正在上升。[OpenAPI 规范][6](一个定义和记录 API 的开放标准)是在 DevOps 环境下 API 文档的良好资源。然而,该规范会导致文档的创建和更新过程变得很费时,这使其饱受批评。
曾经也有短暂尝试过创建 <ruby>[持续文档][7]<rt>Continuous Documentation</rt></ruby>,并且还有一个来自 CA现在的 Broadcom的创建 [DocOps][8] 框架的运动。然而DocOps 从来没有作为一个行业运动流行起来。
DevOps 文档标准的现状意味着 DevOps 团队(包括技术写手)需要在项目的最初阶段就开始创建文档。要做到这一点,你需要把文档作为一个敏捷故事和(同样重要的)管理期望,并且把它与年度绩效评估放在一起执行。
### 文档工具
文档的编写应该以一种所有团队成员都可以使用的格式或平台在线进行。MediaWiki、DokuWiki、TikiWiki 和其他 [开源维基][9] 为 DevOps 团队提供了一个编写和维护文档的中央仓库。
让团队选择他们的维基平台,就像让他们选择他们的其他持续集成/持续开发CI/CD工具链一样。开源维基强大之处在于其可扩展性。例如DokuWiki 包括一系列的扩展,你可以通过安装这些扩展来创建一个符合你的 DevOps 团队的创作要求的平台。
如果你有足够的野心来加强你的团队的编写和协作能力,[Nextcloud][10](一个开源的云协作套件)是一个让你的 DevOps 团队上网并给他们提供编写文档所需工具的选择。
### DevOps 最佳实践
文档在 DevOps 转型中也发挥着作用。例如,你会想要记录组织从 DevOps 实现效率和流程增益的最佳实践,这些信息太重要了,不能靠着 DevOps 团中之间口耳相传。如果你所在的组织有多个 DevOps 团队,那么文档就是统一的力量,它可以促进最佳实践的标准化,并设置了衡量代码质量的基准指标。
一般情况下,开发人员承担了记录 DevOps 实践的工作。即使他们的组织有技术写手,他们也可能跨开发团队工作。因此,开发人员和系统管理员能够捕捉、记录和交流他们的最佳实践是很重要的。这里有一些朝正确的方向发展的提示:
* 提前花时间为 DevOps 最佳实践创建标准模板。不要陷入复制在线模板的陷阱。采访利益相关者和团队来创建一个符合团队需求的模板。
* 寻找一些创造性的信息收集的方法,例如记录团队会议和使用聊天系统日志来作为文档的基础。
* 建立一个用于发布最佳实践的维基。使用维基可以跟踪编辑和更新。这样的平台可以帮助团队在最佳实践发生变化时进行更新和维护。
当在构建 CI/CD 工具链时记录依赖关系是非常明智的。尤其是当加入新的团队成员时,你会发现这些记录非常有用,另外当团队成员忘记一些事情时,这也是一种保险。
最后,自动化对 DevOps 利益相关者和从业者都很有吸引力。在自动化中断之前,一切都很有趣。拥有自动化运行手册、管理指南和其他内容的文档(并且是最新的)意味着无论何时发生故障,员工都可以让自动化重新工作。
### 最后一些想法
DevOps 对于技术文档来说是一个积极的因素。它将内容开发纳入 DevOps 生命周期,并打破组织文化中开发人员和技术作者之间的隔阂。在没有技术写手的情况下,团队就可以使用工具来加快文档创作的速度,以与 DevOps 的速度相匹配。
你的组织将如何把文档加入到 DevOps 生命周期?请在评论区分享你的经验。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/3/devops-documentation
作者:[Will Kelly][a]
选题:[lujun9972][b]
译者:[Veryzzj](https://github.com/Veryzzj)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/willkelly
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv "Typewriter with hands"
[2]: https://opensource.com/article/19/11/hiring-technical-writers-devops
[3]: https://searchitoperations.techtarget.com/opinion/Make-DevOps-documentation-an-integral-part-of-your-strategy?_ga=2.73253915.980148481.1610758264-908287796.1564772842
[4]: https://www.agilealliance.org/glossary/definition-of-done
[5]: https://developers.google.com/season-of-docs
[6]: https://swagger.io/specification/
[7]: https://devops.com/continuous-documentation
[8]: https://www.cmswire.com/cms/information-management/the-importance-of-docops-in-the-new-era-of-business-027489.php
[9]: https://opensource.com/article/20/7/sharepoint-alternative
[10]: https://opensource.com/article/20/7/nextcloud
[0]: https://img.linux.net.cn/data/attachment/album/202212/15/101537c4kcxxzqzh6fxkor.jpg

View File

@ -0,0 +1,152 @@
[#]: subject: "Linux su vs sudo: what's the difference?"
[#]: via: "https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin"
[#]: author: "David Both https://opensource.com/users/dboth"
[#]: collector: "lkxed"
[#]: translator: "chai001125"
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15347-1.html"
Linux 中的 su 和 sudo 命令有什么区别?
======
> 本文将比较非 root 用户提权为 root 用户的两个 Linux 命令 的区别。
![][0]
`su``sudo` 命令都允许用户执行非特权用户不允许做的系统管理任务,即只有 root 用户能执行的命令。有些人更喜欢 `sudo` 命令:例如 [Seth Kenlon][2] 最近发布的一篇 《[在 Linux 上使用 sudo 的 5 个理由][3]》,他在其中详细阐述了 `sudo` 命令的许多优点。
但是,相较于 `sudo` 命令,我**更偏好于 `su` 命令** 来做系统管理工作。在本文中,我比较了这两个命令的区别,并解释了为什么我更喜欢 `su` 而不是 `sudo`,但我仍然同时使用这两个命令的原因。
### 过去的系统管理员主要使用 su 命令
`su``sudo` 命令是为**不同的世界**设计的。早期的 Unix 计算机需要全职系统管理员,他们使用 root 用户作为唯一的管理帐户。在这个古老的世界里,有管理员密码的人会在电传打字机或 CRT 终端(例如 DEC VT100上以 root 用户登录,然后执行一些管理 Unix 计算机的工作。
管理员还会有一些非 root 帐户,用于执行一些非 root 的任务,例如编写文档和管理电子邮件等。在这些 Unix 计算机上通常有许多非 root 帐户,他们都不需要完全的 root 访问权限,只需要以 root 权限运行很少的命令,大约 1 至 2 个就可以了。许多系统管理员以 root 用户登录,完成 root 工作,并在任务完成后,退出 root 会话。有时候,系统管理员需要整天以 root 用户来登录,因为 `sudo` 命令需要键入更多的内容才能运行必要的命令,因此大多数系统管理员很少使用 `sudo` 命令。
`sudo``su` 这两个命令都能够提权为 root 用户,但它们实现的方式大不相同。这种差异是由于它们**最初打算用于不同的情况**。
### sudo 命令
`sudo` 命令的初衷是让 root 用户能够让几个非 root 用户访问他们经常需要的一两个特权命令。`sudo` 命令允许非 root 用户暂时地获得更高权限,来执行一些特权命令,例如添加和删除用户、删除属于其他用户的文件、安装新软件以及管理现代 Linux 主机所需的任何命令。
`sudo` 命令允许非 root 用户访问一两个 _需要更高权限_ 的常用命令,这样可以帮助系统管理员节省来自用户的许多请求,并减少等待时间。`sudo` 命令不会将用户帐户切换为 root 用户,因为大多数非 root 用户永远不应该拥有完全的 root 访问权限。在大多数情况下,`sudo` 允许用户执行一两个命令,然后提权就会过期。在这个通常为 5 分钟的短暂的提权时间内,用户可以执行任何需要提权的管理命令。需要继续使用提权的用户可以运行 `sudo -v` 命令来重新验证 root 访问权限,并将提权时间再延长 5 分钟。
使用 `sudo` 命令还有一些副作用,例如生成非 root 用户使用命令的日志条目及其 ID。这些日志可以在之后作为出现问题的检验来给用户更多的操作培训。你以为我会说“问责”用户对吧
### su 命令
`su` 命令能够将非 root 用户提权到 root 权限 —— 事实上,能让非 root 用户成为 root 用户。唯一的要求是用户知道 root 密码。因为用户已经以 root 权限登录,所以之后的操作就没有限制了。
`su` 命令所提供的提权没有时间限制。用户可以作为 root 执行命令,不需要进行重新验证是否有 root 权限。完成任务后,用户可以执行退出命令 `exit`,从 root 用户恢复到自己原来的非 root 帐户。
### su 和 sudo 在使用上的争议和变化
最近在 `su``sudo` 的使用上存在一些分歧。
> 真正的系统管理员不会使用 `sudo`。—— Paul Venezia
Venezia 在他的 [InfoWorld 文章][4] 中辩称,对于许多担任系统管理员的人来说,`sudo` 是一个不必要的工具。他没有花太多时间为这个观点进行解释,他只是把它说成了一个事实。我同意他对于系统管理员的观点,因为我们不需要 `sudo` 来完成我们的工作。事实上,`sudo` 使得事情变得更复杂了。
然而,
> 时代在“改变”。—— Bob Dylan
Bob Dylan 是对的尽管他唱的歌不是指计算机LCTT 译注Bob Dylan 是美国创作歌手、艺术家和作家,这里指他不是针对于电脑而说的)。
自从人手一台的**个人计算机**时代到来,计算机的管理方式发生了重大变化。在许多环境中,计算机的使用者也是它的管理员,这使得为这些用户提供一些对 root 权限的访问是有必要的。
一些现代发行版,例如 Ubuntu 及其衍生版本,只能使用 `sudo` 命令来执行特权命令。在这些发行版中,用户无法直接以 root 用户身份登录,甚至无法通过 `su` 切换到 root因此需要 `sudo` 命令来允许非 root 用户获得 root 权限。在这一环境中,所有系统管理任务均使用 `sudo` 来执行。
通过锁定 root 帐户并将常规用户帐户添加到“轮子”组(`wheel`),可以实现此配置,但是这种配置很容易被绕过。接下来,让我们在 Ubuntu 主机或虚拟机上尝试一些小实验吧。我在这里说明一些我的设置,以便你可以根据需要来重现它。我安装的是 Ubuntu 16.04 LTS1并使用 VirtualBox 将其安装在虚拟机中。在安装过程中,我创建了一个非 root 用户 `student`,为了简便起见我给这个用户设置了一个简单的密码。
`student` 用户身份登录 Ubuntu并打开终端。查看 `/etc/shadow` 文件中的 root 条目,其中存储了经哈希的密码。
```
student@ubuntu1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied
```
可以看到终端拒绝了我们对 `/etc/shadow` 的访问,因此我们无法查看 `/etc/shadow` 文件。所有发行版都是如此,以防止非特权用户看到和访问加密的密码,因为非特权用户可能会使用常见的黑客工具来破解这些密码。
现在,让我们使用 `su -` 命令来成为 root 用户。
```
student@ubuntu1:~$ su -
Password: <Enter root password but there isn't one>
su: Authentication failure
```
认证失败的原因是因为 root 帐户没有密码、并且被锁定了。接下来,使用 `sudo` 命令查看 `/etc/shadow` 文件。
```
student@ubuntu1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the student password>
root:!:17595:0:99999:7:::
<截取>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<截取>
```
在这里,我仅截取了部分结果,只显示 root 和 `student` 用户的条目。我还缩短了加密密码,以便该条目能显示在一行中。各个字段以冒号(`:`分隔第二个字段是密码。请注意root 的密码字段是一个感叹号(`!`),这表明 root 帐户已被锁定,且无法使用。
现在,要将 root 帐户变成一个合适的系统管理员,你只需为 root 帐户设置密码。
```
student@ubuntu1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@ubuntu1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@ubuntu1:~#
```
现在,你可以直接以 root 身份登录到控制台,或者直接使用 `su` 登录到 root而不是在每个命令前都加一个 `sudo`。当然,你也可以在每次想以 root 身份登录时,使用 `sudo su -`,但这又是何必呢?
请不要误解我的意思。像 Ubuntu 这样的发行版及其上下游衍生版非常好,多年来我已经使用了其中的几个。在使用 Ubuntu 和相关发行版时,我做的第一件事就是设置一个 root 密码,这样我就可以直接以 root 身份登录。其他发行版,如 Fedora 及其相关发行版,现在在安装过程中提供了一些有趣的选择。我注意到的第一个 Fedora 版本是 Fedora 34我在写我的一本即将出版的书时安装了很多次。
在安装页面上,可以找到其中一个安装选项,来设置 root 密码。这个新选项允许用户选择“<ruby>锁定 root 帐户<rt> Lock root account </rt></ruby>”,就像 Ubuntu 锁定 root 帐户的方式一样。此页面上还有一个选项,允许使用密码以 root 身份远程 SSH 登录到此主机,但这仅在 root 帐户解锁时有效。第二个选项位于允许创建非 root 帐户的页面上。此页面上的选项之一是“<ruby>让此用户成为管理员<rt> Make this user administrator </rt></ruby>”。选中此选项后,用户 ID 将添加到一个名为 `wheel` 组的特殊组中,该组授权该组的成员使用 `sudo` 命令。Fedora 36 甚至在该复选框的描述中提到了 `wheel` 组。
可以将多个非 root 用户设置为管理员。使用此方法指定为管理员的任何人都可以使用 `sudo` 命令在 Linux 计算机上执行所有管理任务。Linux 在安装时只允许创建一个非 root 用户,所以其他新用户可以在创建时添加到 `wheel` 组中。root 用户或其他管理员可以使用文本编辑器或 `usermod` 命令直接将现有用户添加到 `wheel` 组。
在大多数情况下,今天的管理员只需要执行一些基本任务,例如添加新的打印机、安装更新或新软件,或者删除不再需要的软件。这些 GUI 工具需要 root 或管理密码,并将接受来自管理员用户的密码。
### 在 Linux 上,我是怎么使用 su 和 sudo 的呢
我**同时使用 `su``sudo`**。它们都是我所使用的很重要的系统管理员工具。
我不锁定 root 帐户,因为我需要用 root 帐户来运行我的 [Ansible][5] 脚本和我编写的 [rsbu][6] Bash 程序,来执行备份。这两个程序都需要以 root 身份运行,我编写的其他几个管理 Bash 的脚本也是如此。我**使用 `su` 命令**切换到 root 用户,这样我就可以执行这些脚本和许多其他常见的命令。当我需要确定问题和解决问题时,使用 `su` 命令将我的权限提升到 root 十分有用,因为我不希望 `sudo` 带来的提权会话超时。
当非 root 用户需要执行这些任务时,我**使用 `sudo` 命令**,来执行需要 root 权限的任务。我在 `sudoers` 文件中设置了非 root 帐户,只允许访问完成任务所需的一两个命令。当我只需要运行一两个需要提权的快速命令时,我自己也会使用 `sudo` 命令。
### 结论
实际上只要你把工作完成好了,你使用什么工具都无大碍。你使用的是 Vim 还是 Emacs是 systemd 还是 SystemV是 RPM 亦或是 DEB`sudo` 亦或是 `su`,在结果上会有什么区别呢?这里的关键在于你应该使用**最适合你的工具**。Linux 和开源软件的最大优势之一是通常有许多选项可用于我们需要完成的任务。
`su``sudo` 都各有长处,如果正确使用的话,两者都是非常安全的。我选择同时使用 `su``sudo` 命令,基于它们的历史功能,因为这对我来说十分有用。对于我自己的大部分工作,我更喜欢 `su` 命令,因为它与我的工作流程最适配。
在评论区分享你喜欢的工作方式吧!
本文摘自于我的书《<ruby>系统管理员的 Linux 哲学<rt>The Linux Philosophy for Sysadmins</rt></ruby>Apress2018 年)》一书的第 19 章,并经许可后重新发布。
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin
作者:[David Both][a]
选题:[lkxed][b]
译者:[chai001125](https://github.com/chai001125)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/dboth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/bash_command_line.png
[2]: https://opensource.com/users/seth
[3]: https://opensource.com/article/22/5/use-sudo-linux
[4]: http://www.infoworld.com/t/unix/nine-traits-the-veteran-unix-admin-276?page=0,0&source=fssr
[5]: https://opensource.com/article/20/10/first-day-ansible
[6]: https://opensource.com/article/17/1/rsync-backup-linux
[0]: https://img.linux.net.cn/data/attachment/album/202212/14/171220a47je4l0teaonzos.jpg

View File

@ -3,48 +3,50 @@
[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/"
[#]: collector: "lkxed"
[#]: translator: "robsean"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15350-1.html"
如何在 Linux Mint 上安装 GNOME 桌面环境
======
![][0]
Linux Mint 是一款极好的 Linux 发行版,特别适合初学者。
我喜欢它仍然保持常见的 Ubuntu/Debian 字体,但是它还做了一些 [比 Ubuntu 更好的][1] 工作。其中之一就是它没有使用 Snaps
我喜欢它仍然保持常见的 Ubuntu/Debian 习惯,但是它还做了一些 [比 Ubuntu 更好的][1] 工作,其中之一就是它没有使用 Snap
然而,我不是 Cinnamon 桌面环境的粉丝,因为我从来没有真正地喜欢过 Windows XP 或 7 的默认设置。
当我在为 Linux Mint 寻找能提供稳定使用 GNOME 的能力时,这便是我最终获得的结果:
当我寻求保持 Linux Mint 稳定的同时而提供 GNOME 的能力时,这便是我最终获得的结果:
![install gnome in linux mint][2]
这就是我运行 GNOME 42.5 的 Linux Mint 21 。
不太炫,这就是我运行 GNOME 42.5 的 Linux Mint 21 。
如果你想在 Linux Mint 上安装 GNOME ,那么这篇指南非常适合你。
### 在 Linux Mint 上安装GNOME 之前所要知道的事
你真的应该有足够的理由来在 Mint 上安装 GNOME 。如果你只是为了尝鲜,可以在虚拟机中尝试。我使用 [在 VirtualBox 中安装的 Linux Mint][3] 来演示这篇教程。
要在 Mint 上安装 GNOME你务必需要有足够的理由。如果你只是为了尝鲜,可以在虚拟机中尝试。我使用 [在 VirtualBox 中安装的 Linux Mint][3] 来演示这篇教程。
在发行版上安装一种桌面环境与直接使用来自发行版所提供的桌面环境相比,移除桌面环境部分会使其变成一件很复杂的事。
安装除发行版提供的桌面环境之外的其他桌面环境,移除桌面环境部分会使其变成一件很复杂的事。
Cinnamon 使用一些 GNOME 元素。如果你决定稍后移除 GNOME ,这可能会影响到 Cinnamon 的一部分功能。
Cinnamon 使用一些 GNOME 元素。如果你决定稍后移除 GNOME ,这可能会影响到 Cinnamon 的一部分功能。
这可能会导致缺少实战经验用户的恐慌。当然,在 TTY 屏幕中重新安装 Cinnamon 桌面环境可能是一种可行的解决方案。
最重要的一点是,如果你很容易惊慌地不知所措和不喜欢解决难题,那么你就不应该在你的主力计算机上做这些 ‘试验’
最重要的一点是,如果你很容易惊慌地不知所措和不喜欢解决难题,那么你就不应该在你的主力计算机上做这些 “试验”
抛开这些顾虑,让我们看看在 Linux Mint 上获取 GNOME 的简单过程。
### 在 Linux Mint 上安装 GNOME 桌面环境
在这里,你有两个选项1、你可以使用包含所有的 GNOME 实用程序的完整的 GNOME 桌面2、你也可以使用包含极少数软件包的 GNOME 精简版本
在这里,你有两个选项1、你可以使用包含所有的 GNOME 实用程序的完整的 GNOME 桌面2、你也可以使用包含极少数软件包的 GNOME 精简版本
我都将讲解一下。
**安装精简版本的 GNOME** ,你需要安装一个名称为 `vanilla-GNOME` 的软件包,使用下面给定的命令:
**安装精简版本的 GNOME** ,你需要安装一个名称为 `vanilla-gnome-desktop` 的软件包,使用下面给定的命令:
```
sudo apt install vanilla-gnome-desktop
@ -60,29 +62,29 @@ sudo apt install gnome
![choose display manager][4]
`gdm3` 是 GNOME 桌面的显示管理器,而 Linux Mint 使用 `lightdm` 作为默认的显示管理器,这两种显示器都可以正常工作,但是,我建议你使用 gdm3 来获取完整的 GNOME 体验。
`gdm3` 是 GNOME 桌面的显示管理器,而 Linux Mint 使用 `lightdm` 作为默认的显示管理器,这两种显示器都可以正常工作,但是,我建议你使用 `gdm3` 来获取完整的 GNOME 体验。
#### 切换到 GNOME
在完成后,注销并按一次 enter 按键,在这里,你将看到一个小齿轮图标。从这里选择 GNOME
在完成后,注销并按一次回车键,在这里,你将看到一个小齿轮图标。从这里选择 GNOME
![choose gnome while logging in][5]
现在,你拥有以 Linux Mint 为基础的 GNOME 桌面环境!
#### 额外提示:如何应用整体风格一致的主题
#### 额外提示如何应用整体风格一致的主题
你可以继续使用 Cinnamon 桌面的主题,但是它们大多不能如前工作,因此,我建议使用 GNOME 桌面的主题(例如 Adwaita )来保持桌面环境的一致性。
对我而言,其默认的字体没有一点效果。并且,我更喜欢 Fedora 提供的一些字体。因此,从系统菜单打开 <ruby>GNOME 调整<rt>GNOME tweaks</rt></ruby> 窗口,并作出如下更改:
对我而言,其默认的字体没有一点效果。并且,我更喜欢 Fedora 提供的一些字体。因此,从系统菜单打开 <ruby>GNOME 调整<rt>GNOME tweaks</rt></ruby>,并作出如下更改:
![change fonts in ubuntu to have vanilla gnome experience][6]
这里是我使用的一些东西:
这里是我使用的一些设置:
- **Cantarell Regular (11)** 用于界面和文档文本。
- **Noto Sans Mono Regular (13)** 用于等宽字体文本。
- **Cantarell Bold (11)** 用于窗口标题。
- `Cantarell Regular (11)` 用于界面和文档文本。
- `Noto Sans Mono Regular (13)` 用于等宽字体文本。
- `Cantarell Bold (11)` 用于窗口标题。
它们的结果是,比默认的 Ubuntu 字体方案要好得多。
@ -101,7 +103,7 @@ via: https://itsfoss.com/install-gnome-linux-mint/
作者:[Sagar Sharma][a]
选题:[lkxed][b]
译者:[robsean](https://github.com/robseans)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -114,3 +116,4 @@ via: https://itsfoss.com/install-gnome-linux-mint/
[5]: https://itsfoss.com/wp-content/uploads/2022/11/choose-gnome-while-logging-in.png
[6]: https://itsfoss.com/wp-content/uploads/2022/11/change-fonts-in-ubuntu-to-have-vanilla-gnome-experience.png
[7]: https://itsfoss.com/install-switch-themes-gnome-shell/
[0]: https://img.linux.net.cn/data/attachment/album/202212/15/104944fkv32vbys5x1hiv9.jpg

View File

@ -0,0 +1,73 @@
[#]: subject: "Microsoft Soundscape to Go Open Source Marking the End of the Project"
[#]: via: "https://news.itsfoss.com/microsoft-soundscape-open-source/"
[#]: author: "Sourav Rudra https://news.itsfoss.com/author/sourav/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Microsoft Soundscape to Go Open Source Marking the End of the Project
======
Microsoft makes an excellent decision to open-source its innovative audio app.
![Microsoft Soundscape to Go Open Source Marking the End of the Project][1]
The [Soundscape project][2] was a fascinating experimental research effort undertaken by Microsoft to use sound-based technology to help visually impaired people navigate their surroundings.
Launched back in 2017, it used 3D audio cues and augmented reality to enhance a user's awareness by guiding them through places.
Soon after, they also launched an iOS app to showcase their progress.
The app could use the iPhone's sensors to read out points of interest as the user walked past something or even roads and intersections to help them figure out where they were.
**Unfortunately,** with a [recent announcement][3], Microsoft has decided not to continue further with the development of this project and will be making the **code open-source**.
### Microsoft Soundscape Source Code to be Available on GitHub
![Microsoft Soundscape - an Illustrated Demonstration][4]
**What Happened?:** Well, according to Microsoft, it's natural to either stop or transition a few projects as they evolve their research portfolio.
With this move, Microsoft hopes the community will take over and benefit from the 'novel experiences' they helped develop.
They also add that:
> As Microsoft Research continues to expand into new accessibility innovation areas, we hope the open-source software release of the Soundscape code supports the community in further developing confidence and utility of spatial audio navigation experiences.
You know, this move is quite similar to the one made by ActiveState recently, where they discontinued Komodo IDE and made the code open-source to say thank you to its users.
**What's Next?:** Starting **January 3, 2023**, the source code for Soundscape will be made available on GitHub. Developers are free to use the code in any manner they see fit.
Furthermore, the iOS app will also be discontinued, and existing users can use it until June 2023.
They will also stop taking new feature requests and only focus on bug fixes and general maintenance of the iOS app until the time comes.
As for the Microsoft Soundscape Authoring app, it will no longer be available after January 17, 2023.
Microsoft has also clarified that its other offerings would remain unaffected.
### Community-Driven Approach Wins
As was the case with Komodo IDE, a community-driven approach can be of great help for deprecated software.
Where the community can get together and create something truly unique while also helping the end users add value to their lives.
--------------------------------------------------------------------------------
via: https://news.itsfoss.com/microsoft-soundscape-open-source/
作者:[Sourav Rudra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://news.itsfoss.com/author/sourav/
[b]: https://github.com/lkxed
[1]: https://news.itsfoss.com/content/images/size/w2000/2022/12/microsoft-soundscape-goes-open-source.png
[2]: https://www.microsoft.com/en-us/research/product/soundscape/
[3]: https://www.microsoft.com/en-us/research/blog/microsoft-soundscape-new-horizons-with-a-community-driven-approach/
[4]: https://youtu.be/v5DXykmOdJ8

View File

@ -1,255 +0,0 @@
[#]: subject: "7 pro tips for using the GDB step command"
[#]: via: "https://opensource.com/article/22/12/gdb-step-command"
[#]: author: "Alexandra https://opensource.com/users/ahajkova"
[#]: collector: "lkxed"
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
7 pro tips for using the GDB step command
======
A debugger is software that runs your code and examines any problems it finds. [GNU Debugger][1] (GBD) is one of the most popular debuggers, and in this article, I examine GDB's `step` command and related commands for several common use cases. Step is a widely used command but there are a few lesser known things about it which might be confusing. Also, there are ways to step into a function without actually using the `step` command itself such as using the less known `advance` command.
### No debugging symbols
Consider a simple example program:
```
#include <stdio.h>
int num() {
return 2;
}
void bar(int i) {
printf("i = %d\n", i);
}
int main() {
bar(num());
return 0;
}
```
If you compile without the debugging symbols first, set a breakpoint on `bar` and then try to step within it. The GDB gives an error message about no line number information:
```
gcc exmp.c -o exmp
gdb ./exmp
(gdb) b bar
Breakpoint 1 at 0x401135
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, 0x0000000000401135 in bar ()
(gdb) step
Single stepping until exit from function bar,
which has no line number information.
i = 2
0x0000000000401168 in main ()
```
### Stepi
It is still possible to step inside the function that has no line number information but the `stepi` command should be used instead. Stepi executes just one instruction at a time. When using GDB's `stepi` command, it's often useful to first do `display/i $pc`. This causes the program counter value and corresponding machine instruction to be displayed after each step:
```
(gdb) b bar
Breakpoint 1 at 0x401135
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, 0x0000000000401135 in bar ()
(gdb) display/i $pc
1: x/i $pc
=> 0x401135 <bar+4>: sub $0x10,%rsp
```
In the above `display` command, the `i` stands for machine instructions and `$pc` is the program counter register.
It can be useful to use info registers and print some register contents:
```
(gdb) info registers
rax 0x2 2
rbx 0x7fffffffdbc8 140737488346056
rcx 0x403e18 4210200
(gdb) print $rax
$1 = 2
(gdb) stepi
0x0000000000401139 in bar ()
1: x/i $pc
=> 0x401139 <bar+8>: mov %edi,-0x4(%rbp)
```
### Complicated function call
After recompiling the example program with debugging symbols you can set the breakpoint on the `bar` call in main using its line number and then try to step into `bar` again:
```
gcc -g exmp.c -o exmp
gdb ./exmp
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
```
Now, let's step into`bar()`:
```
(gdb) step
num () at exmp.c:4
4 return 2;
```
The arguments for a function call need to be processed before the actual function call, so `num()` is expected to execute before `bar()`is called. But how do you step into the `bar` as was desired? You need to use the `finish` command and `step` again:
```
(gdb) finish
Run till exit from #0 num () at exmp.c:4
0x0000000000401161 in main () at exmp.c:14
14 bar(num());
Value returned is $1 = 2
(gdb) step
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### Tbreak
The `tbreak` command sets a temporary breakpoint. It's useful for situations where you don't want to set a permanent breakpoint. For example, if you want to step into a complicated function call like `f(g(h()), i(j()), ...)` , in such a case you need a long sequence of `step/finish/step` to step into `f` . Setting a temporary breakpoint and then using continue can help to avoid using such sequences. To demonstrate this, you need to set the breakpoint to the `bar` call in `main` as before. Then set the temporary breakpoint on `bar`.  As a temporary breakpoint it is automatically removed after being hit:
```
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) tbreak bar
Temporary breakpoint 2 at 0x40113c: file exmp.c, line 9.
```
After hitting the breakpoint on the call to `bar` and setting a temporary breakpoint on `bar`, you just need to continue to end up in  `bar`.
```
(gdb) continue
Continuing.
Temporary breakpoint 2, bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### Disable command
Alternatively, you could set a normal breakpoint on `bar` , continue, and then disable this second breakpoint when it's no longer needed. This way you can achieve the same results as with the `tbreak` with one extra command:
```
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) b bar
Breakpoint 2 at 0x40113c: file exmp.c, line 9.
(gdb) c
Continuing.
Breakpoint 2, bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
(gdb) disable 2
```
As you can see, the `info breakpoints`  command displays `n` under `Enb`which means its disabled but you can enable it later if its needed again.
```
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000401157 in main at exmp.c:14
breakpoint already hit 1 time
2 breakpoint keep n 0x000000000040113c in bar at exmp.c:9
breakpoint already hit 1 time
(gdb) enable 2
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000040116a in main at exmp.c:19
breakpoint already hit 1 time
2 breakpoint keep y 0x0000000000401158 in bar at exmp.c:14
breakpoint already hit 1 time
```
### Advance location
Another option you can use is an `advance` command. Instead of `tbreak bar ; continue` , you can simply do `advance bar` . This command continues running the program up to the given location.
The other cool thing about `advance` is that if the location that you try to advance to is not reached, GDB will stop after the current frame's function finishes. Thus, execution of the program is constrained:
```
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) advance bar
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### Skipping a function
Yet another way to step into the `bar,` avoiding `num`, is using the `skip` command:
```
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) skip num
Function num will be skipped when stepping.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) step
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
To know which functions are currently skipped,  `info skip` is used.  The `num` function is marked as enabled to be skipped by `y`:
```
(gdb) info skip
Num Enb Glob File RE Function
1 y n <none> n num
```
If `skip` is not needed any more it can be disabled (and re-enabled later) or deleted altogether. You can add another `skip` and disable the first one and then delete them all. To disable a certain `skip`, its number has to be specified, if not specified, each `skip`is disabled. It works the same for enabling or deleting a `skip`:
```
(gdb) skip bar
(gdb) skip disable 1
(gdb) info skip
Num Enb Glob File RE Function
1 n n <none> n num
2 y n <none> n bar
(gdb) skip delete
(gdb) info skip
Not skipping any files or functions.
```
### GDB step command
Using GDB's `step` command is a useful tool for debugging your application. There are several ways to step into even complicated functions, so give these GDB techniques a try next time you're troubleshooting your code.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/12/gdb-step-command
作者:[Alexandra][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ahajkova
[b]: https://github.com/lkxed
[1]: https://opensource.com/article/21/3/debug-code-gdb

View File

@ -1,61 +0,0 @@
[#]: subject: "Install open source solar power at home"
[#]: via: "https://opensource.com/article/22/12/open-source-solar-power-home"
[#]: author: "Joshua Pearce https://opensource.com/users/joshuapearce"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Install open source solar power at home
======
You might have already given some thought to powering your home with solar. Solar photovoltaic panels, which convert sunlight directly into electricity, have fallen so far down in cost that it makes economic sense everywhere. That is why large companies have put in a lot of solar, and even the electric utilities have started installing massive solar farms—it simply costs less than antiquated fossil fuels. Like most homeowners, you would like to save money and eviscerate your electric bill, but you are probably cringing a bit at the upfront cost. To get a rough idea of the cost, a 5kW system that would power an average home installed at $3/W would cost about $15,000, while a larger home might need 10kW to offset all of their electricity purchases and cost $30,000. If you want batteries, double the cost (you dont need batteries as most solar arrays connect to the grid, but if the grid goes down, so does your solar array until it is turned back on.) Paying for all your electricity for the next several decades is an investment, even if you save a lot of money.
There is some good financial news. First, both the US and Canada have enacted a 30% tax credit for solar. This credit drops the price down to about $2/W. Second, [Opensource.com previously discussed][1] how you could get a free book, [_To Catch the Sun_][2], that walks you through how to design your own system (you will still need a certified electrician and inspections to attach it to the grid). If you are a little handy, you can cut the remaining cost by about 50%. These costs are primarily for materials, including solar panels, wiring, electronics, and racking. Amazingly, solar panel costs have dropped so low for small solar systems (like the ones for your house) the racking (mechanical structures that hold the solar panels up) can cost more than the panels!
### Open source to the rescue again
Applying the open source development paradigm to software results in faster innovation, better products, and lower costs. The same is true of open source hardware—and even in the relatively obscure area of photovoltaic racking. Nearly all commercial photovoltaic racking is made from proprietary odd aluminum extrusions. They cost a lot of money. If you have a bit of unshaded backyard, you have a few open source racking solutions to choose from.
### Open source solar rack designs
The first DIY solar rack design meets the following criteria: (1) made from locally-accessible renewable materials, (2) 25-year lifetime to match solar warranties, (3) able to be fabricated by average consumers, (4) able to meet Canadian structural building codes (if you live where there is no snow this is a bit overkill, but, hey, you might have other weather extremes like hurricanes to deal with), (5) low cost and (6) that it is shared using an open source license. [The open source wood-based fixed-tilt ground-mounted bifacial photovoltaic rack design][3] works throughout North America. The racking system saves from 49% to 77% compared to commercial proprietary racking. The racking design, however, is highly dependent on the cost of lumber, which varies worldwide.
Check your local cost of wood before you dive into this open source design.
![Non-tilting solar rack plans][4]
If you are even more adventurous, you might consider this second design that allows you to change the tilt angle. The results of [the second study][5] show the racking systems with an optimal variable seasonal tilt angle have the best lifetime energy production, with 5.2% more energy generated compared to the fixed-tilt system (or 4.8% more energy, if limited to a maximum tilt angle of 60°). Both fixed and variable wooden racking systems show similar electricity costs, which are only 29% of that of proprietary commercial metal racking. The variable tilt rack provides the lowest cost option even when modest labor costs are included and also may provide specific advantages for applications such as [agrivoltaics][6] (i.e., you can garden underneath the panels and amazingly get increases in yields for shade-tolerant crops like lettuce). This design has been certified by [OSHWA with CERN-OHL-S-2.0 licenses][7].
IMAGE
![Tilt-adjustable solar racks][8]
There is about 1kW for each of the 2 PV module racks shown. So a house would need about five of them. Both papers provide full calculations and step-by-step build instructions.
As anyone with a solar system will tell you, getting a negative electricity bill is pretty rewarding. This happens if you size your system to meet all of your load and live in a net-metered part of the country. Please note that the electric utilities dont pay you; the credit carries over until you use it in the winter.
Have fun with a little open source solar!
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/12/open-source-solar-power-home
作者:[Joshua Pearce][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/joshuapearce
[b]: https://github.com/lkxed
[1]: https://opensource.com/article/21/11/open-source-solar-power
[2]: https://tocatchthesun.com/
[3]: https://doi.org/10.3390/designs6030041
[4]: https://opensource.com/sites/default/files/2022-11/nontilt.png
[5]: https://doi.org/10.3390/designs6030054
[6]: https://www.academia.edu/18406368/The_potential_of_agrivoltaic_systems
[7]: https://certification.oshwa.org/ca000013.html
[8]: https://opensource.com/sites/default/files/2022-11/tilt.png

View File

@ -2,7 +2,7 @@
[#]: via: "https://opensource.com/article/22/12/linux-file-manager-pcmanfm"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -2,7 +2,7 @@
[#]: via: "https://www.debugpoint.com/best-linux-phones/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "

View File

@ -0,0 +1,104 @@
[#]: subject: "Experience Linux desktop nostalgia with Rox"
[#]: via: "https://opensource.com/article/22/12/linux-file-manager-rox"
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Experience Linux desktop nostalgia with Rox
======
Rox-Filer is an open source file manager for Linux, once intended for the defunct Rox desktop but now a streamlined application for any window manager or desktop. There hasn't been much activity on the Rox project since 2014, and even then it is mostly in maintenance mode. And that's part of Rox-Filer's charm. In a way, Rox-Filer is a snapshot of an old desktop style that was progressive for its time but has given way to a more or less standardized, or at least conventional, interface.
### Install Rox-Filer
On Linux, your distribution's software repository may have Rox available for install. For instance, Debian packages it:
```
$ sudo apt install rox-filer
```
If your Linux distribution doesn't package Rox-Filer but you want to try it out, you can [compile from source][1] by downloading the [source code][2], installing its build dependencies, and then compiling:
```
$ sudo dnf install gtk2-devel libSM-devel \
  shared-mime-info glade-libs xterm
$ wget https://codeload.github.com/rox-desktop/rox-filer/zip/refs/heads/master
$ unzip rox*zip
$ cd rox-filer-master
$ ./ROX-Filer/AppRun
```
### Configuring Rox
The Rox file manager is based on the look and feel of RISC OS, an operating system developed by Acorn in Cambridge England (the same group responsible for the popular Arm microprocessor). Today, there's an [open source RISC OS][3] you can install on a Raspberry Pi, but for now, Rox is close enough.
Rox has a simple layout. It has no menu bar, but there's a toolbar across the top, and the file panel is at the bottom.
![Image of the Rox file manager.][4]
As with the KDE Plasma Desktop, the default action of a single click in Rox is to open an item, whether it's a folder or a file. Unfortunately, no version of Rox, either packaged or compiled directly from the source, seems to be completely integrated with the mimetype definitions of the modern Linux desktop. For instance, Rox on CentOS renders an error when I click on even a basic text file, while the packaged version of Rox on Debian opens a plain text file but not a JPEG or archive file. You can fix this by setting a **Run Action** in the right-click context menu.
![Setting a run action in the Rox file manager.][5]
Setting a run action can have broad definitions, so you don't have to set a separate run action for JPEG, PNG, WEBP, and all other image types, instead set the same run command for all mimetypes starting with `image`.
Once you set that, you're ready to manage files with Rox.
### Navigation
You can navigate through your file system using the arrow icon in the top toolbar. The **Up** arrow takes you to the parent directory of your current location (in other words, the folder your current folder is in). To descend into a folder, click on it.
### Refreshing the view
Rox may not redraw the screen for every action, so sometimes you may need to prompt it to refresh. Click the **Circle** arrow in the Rox toolbar to refresh your current location's contents.
### Copy or move a file
There are two ways to copy or move a file in Rox. First, you can launch a second Rox window and drag and drop files from one window to the other. When you do, you're prompted to copy, move, or link the item you've dropped.
Alternatively, you can right-click an item and open the **File** submenu from the context menu. In the **File** submenu, choose **Copy** and then enter the destination path for the item you want to move or copy. After you've confirmed that the file has successfully been copied to the target location, you can optionally select the item again, choosing **Delete** from the **File** menu.
### Options
You can customize some aspects of Rox by selecting **Options** from the right-click menu. This brings up a Rox configuration screen that's admittedly only partially relevant to Rox. The Rox options assume you're running a window manager, like [Windowmaker][6] which provides a traditional dock (or "pinboard" in Rox terminology). I wasn't able to get the pinboard options to work on [Fluxbox][7], my preferred window manager, or Windowmaker. In both cases, the window manager handled iconified windows, and I wasn't able to configure Rox to override the control. It's possible that I wasn't drastic enough in some of my configurations, but considering that Linux window managers are very capable of managing iconified windows, the pinboard mechanism of Rox isn't a vital feature (and probably not as flexible as the window manager's options).
The other options, however, still work as expected. For instance, Rox by default resizes its window size to fit the contents of a folder. When you change from a directory containing twelve items to a directory containing just three, Rox shrinks its footprint. I find this jarring, so I chose the **Never automatically resize** option, forcing Rox to stay whatever size I set.
### Window commands
Some of my favorite features are four menu items hidden away at the bottom of the **Window** submenu in the right-click context menu. They are:
- **Enter path**: Enter an arbitrary path and change directory to it.
- **Shell command**: Enter an arbitrary shell command and execute it.
- **Terminal here**: Open a terminal at your current location.
- **Switch to terminal**: Open a terminal at your current location, and close the Rox.
I love options that allow for quick navigation or quick commands, so it's nice to have these close at hand.
### Oldies
Rox is a "blast from the past," whether or not you've ever used RISC OS or something like it. Rox represents a style of digital file management and even desktop configuration that just doesn't quite exist anymore. I've run Fluxbox, on and off again, at work and at home for the past decade, and I love manually configuring menus and configuration files. However, most of the Linux desktop has moved on from the conventions Rox relies upon. It's not impossible to make Rox fully functional, but it would take a lot of work, and most of what you'd be configuring are already provided by modern window managers and desktops. Even so, Rox is fun to use and experience. It's a great demonstration of how flexible a traditional Linux desktop setup was (and still can be, if you use only a window manager), and much of its charm is in its simplicity. I can't imagine a file manager today not having a dedicated move function, but Rox dares to force you to copy and delete instead. It's a different kind of file manager, and it might not be the one you use all day every day, but it's something you have to try if you miss, or literally missed, the "old days" of the Linux (or RISC OS) desktop.
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/12/linux-file-manager-rox
作者:[Seth Kenlon][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth
[b]: https://github.com/lkxed
[1]: https://opensource.com/article/21/11/compiling-code
[2]: https://sourceforge.net/projects/rox/files/rox/
[3]: https://www.riscosopen.org/content/downloads
[4]: https://opensource.com/sites/default/files/2022-10/rox-filemanager.png
[5]: https://opensource.com/sites/default/files/2022-10/rox-menu-run.png
[6]: https://opensource.com/article/19/12/linux-window-maker-desktop
[7]: https://opensource.com/article/19/12/fluxbox-linux-desktop

View File

@ -0,0 +1,182 @@
[#]: subject: "Best Screen Recorders for Wayland in Linux [Compared & Tested]"
[#]: via: "https://www.debugpoint.com/screen-recorders-linux-wayland/"
[#]: author: "Arindam https://www.debugpoint.com/author/admin1/"
[#]: collector: "lkxed"
[#]: translator: " "
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Best Screen Recorders for Wayland in Linux [Compared & Tested]
======
**Heres a list of screen recorders which work in Wayland currently in most modern Linux distributions.**
![][1]
Modern Wayland protocol is used by default in most frontrunner Linux distributions, such as Ubuntu and Fedora. However, this X.Org successor comes with work for the app developers to re-platform their app for Wayland because Wayland is more secure and follows modern standards.
Linux legacy applications, those written with X.Org in mind, dont work well in most cases unless it is modified.
Screen recorder apps fall into that category. There are many popular screen recorders which were developed for X.Org doesnt work anymore in Wayland.
However, few of them work. In this list, I will walk you through a few that I tested in the Wayland session. And they work well.
### Best screen recorder apps for Wayland in Linux distros
#### 1. Kooha
The first on this list is Kooha, written in GTK and supports X11 and Wayland. Its a fast and simple screen recorder for the GNOME desktop. This application is one of the best GNOME apps that provides hassle-free recording experiences. This utility supports hardware acceleration, a timer, multiple sources as input and many advanced features. Heres a summary:
- Option to select monitor for multiple displays or any window
- Hardware accelerated encoding (disabled by default; enable it via settings)
- Option to record the area of a screen
- Record mic and computer sound together
- Delay timer for records
- Option to choose the frame rate
- Support for WebM, mp4, gif, Mkv file types
![Kooha - Best Screen Recoder for GNOME][2]
![Kooha Settings][3]
Installing Kooha is easy using Flatpak. [Set up your system for Flatpak & Flathub][4] and run the following command to install it.
```
flatpak install io.github.seadve.Kooha
```
We tested it in the latest Ubuntu 22.10 and Fedora 37 with Wayland session, it works flawlessly.
**More details about Kooha**
- [Home page][5]
- [Source code][6]
#### 2. GNOME screen recorder
The second in the list is GNOME Shells built-in screen recorder. Its part of the GNOMEs new screenshot utility which you can launch by searching “screenshot” in the application menu.
GNOME Screen recorder provides you option to record the entire screen or a rectangular portion. In addition, you have the option to record the cursor as well.
However it only supports recording to webM format. And you cant do a delayed start of your recording.
You dont need to install anything extra to use this. Since it comes by default with GNOME desktop.
Use the keyboard shortcut `CTRL+SHIFT+ALT+R` to launch it. And select your option, then hit the record button.
The recordings saved at ~/home/Videos/Screencasts.
![GNOME Screen recorder][7]
#### 3. OBS Studio
The popular free and open-source streaming application OBS Studio recently started supporting Wayland. Although it is primarily used for live streaming, but its screen recording feature actually works in Wayland and you can use it.
Since its a professional grade software, you can take advantage of its recording feature. In addition, you can also record the sound from the mic of your system while recording the screen.
Installing OBS Studio is easy with Flatpak. [Set up your system for Flathub][4] and install it using the following command.
```
flatpak install com.obsproject.Studio
```
Note: OBS Studio need FFmpeg to run. We have a guide [here][8], if you want to install FFmpeg.
After you launch OBS Studio, click on + sign under Sources to add source. Then select “Screen capture..”. And then click ok.
![Screen capture option][9]
![recording in OBS Studio in Wayland][10]
After you stop the recording, it is saved at your ~/home directory.
**More details about OBS Studio**
- [Home page][11]
- [Source code][12]
#### 4. vokoscreenNG
The vokoscreenNG is a little different screen recording app which is totally underrated. Its an old application and supports window capture, rectangular caption. In addition, it also support audio capture alongside screen, system tray control, magnifying glass, countdown, timer and many cool features.
Recently, an experimental Wayland support introduced which you can try out. It works fairly well. Currently it supports webm, m4, mkv, mov and avi formats for Wayland. However, audio recording is not yet available for Wayland sessions.
You can download the pre-compiled executable for Linux distros which require no installation from the below link. And run.
[Download][13]
![vokoscreenNG][14]
**More details about vokoscreenNG**
- [Home page][15]
#### 5. Wayfarer
The final screen recorder in this list is Wayfarer, based on GTK4. It currently supports all the modern protocols such as Wayland, Pipewire with wireplumber. Its simple user interface supports screen recording with audio capture. You can also select a portion of your desktop or the entire screen for recording.
Furthermore, you can select the frame rate, select mouse capture and have the ability to delay the recording. Currently it supports webm, mp4 and mkv formats.
![Wayfarer screen recorder for Linux][16]
However, it is currently available in Arch User repository (AUR) for Arch Linux. You can setup any AUR helper such as Yay and install it using the following command.
```
yay -S wayfarer-git
```
**More details about Wayfarer**
[Home page & source code][17]
### Other excellent screen recorders which are currently not working with Wayland
Other than the above list, there are some excellent screen recorders available for X.Org which is currently broken in Wayland. As per my test in Ubuntu 22.10 and Fedora 37 wayland session, none of these works. You can only see a black screen in the recording file. I hope they get fixed in coming days and become compatible with Wayland.
- [Peek][18] (may work with XWayland backend)
- [Simple screen recorder][19]
- [Blue Recorder][20] (supports Wayland but is currently broken)
### Wrapping Up
From my personal experience, Wayland is faster and better. Since many modern distros are moving towards Wayland, you must change your workflow with replacement apps. I hope this list of screen recorders in Wayland helps you pick the one that suits you best.
Do let me know if you know of any other apps of a similar category which work with Wayland.
[Next:Top 10 32-Bit Linux Distributions in 2022 [Compared]][21]
--------------------------------------------------------------------------------
via: https://www.debugpoint.com/screen-recorders-linux-wayland/
作者:[Arindam][a]
选题:[lkxed][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.debugpoint.com/author/admin1/
[b]: https://github.com/lkxed
[1]: https://www.debugpoint.com/wp-content/uploads/2022/12/wayrec.jpg
[2]: https://www.debugpoint.com/wp-content/uploads/2021/12/Kooha-Best-Screen-Recoder-for-GNOME.jpg
[3]: https://www.debugpoint.com/wp-content/uploads/2022/12/Kooha-Settings.jpg
[4]: https://www.debugpoint.com/how-to-install-flatpak-apps-ubuntu-linux/
[5]: https://apps.gnome.org/app/io.github.seadve.Kooha/
[6]: https://github.com/SeaDve/Kooha
[7]: https://www.debugpoint.com/wp-content/uploads/2022/12/GNOME-Screen-recorder.jpg
[8]: https://www.debugpoint.com/install-ffmpeg-ubuntu/
[9]: https://www.debugpoint.com/wp-content/uploads/2022/12/Screen-capture-option.jpg
[10]: https://www.debugpoint.com/wp-content/uploads/2022/12/recording-in-OBS-Studio-in-Wayland.jpg
[11]: https://obsproject.com/
[12]: https://github.com/obsproject/obs-studio
[13]: https://linuxecke.volkoh.de/vokoscreen/vokoscreen-download.html
[14]: https://www.debugpoint.com/wp-content/uploads/2022/12/vokoscreenNG.jpg
[15]: https://linuxecke.volkoh.de/vokoscreen
[16]: https://www.debugpoint.com/wp-content/uploads/2022/12/Wayfarer-screen-recorder-for-Linux.jpg
[17]: https://github.com/stronnag/wayfarer
[18]: https://github.com/phw/peek
[19]: https://www.maartenbaert.be/simplescreenrecorder/
[20]: https://github.com/xlmnxp/blue-recorder
[21]: https://www.debugpoint.com/32-bit-linux-distributions/

View File

@ -1,92 +0,0 @@
[#]: subject: "A DevOps guide to documentation"
[#]: via: "https://opensource.com/article/21/3/devops-documentation"
[#]: author: "Will Kelly https://opensource.com/users/willkelly"
[#]: collector: "lujun9972"
[#]: translator: "Veryzzj"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
文档写作的 DevOps 指南
======
将文档写作加入到 DevOps 的生命周期中
![Typewriter with hands][1]
DevOps 正在挑战技术文档的规范这在IT历史上是前所未有的。从自动化到提高交付速度再到拆除瀑布式软件开发生命周期模型这意味着业务和技术文档的理念需要做出巨大改变。
以下是DevOps对技术文档不同方面的影响。
### 技术作家的角色变化
技术作家必须适应 DevOps。好消息是许多技术作家已经加入到开发团队中并且由于拥有合作关系和不断增长的产品知识这些技术作家很具优势。
但是如果一个技术作家习惯独立工作,并依赖于领域专家的草稿作为文档的基础,那么就需要做一些调整。
进行一些投资以确保文档和其他与项目有关的开发工作获得所需的工具、结构和支持。 从改变[技术作家聘用习惯][2]开始。以[DevOps 的速度][3]编写文档需要重新思考内容规划并打破DevOps 团队和支持项目的技术作家之间长期存在的隔阂。
DevOps 使开发团队摆脱了传统文档实践的束缚。首先,文档[完成的定义][4]必须改变。一些企业的文化使技术作家成为软件开发的被动参与者。DevOps提出了新的要求--随着 DevOps 文化的转变技术作家的角色也应发生变化。技术作家需要且必须适应DevOps 提供的透明度。他们必须融入 DevOps 团队。取决于组织如何塑造这个角色,将技术作家带入团队可能会带来技能上的挑战。
### 文档标准、方法和规格
虽然 DevOps 还没有影响到技术文档本身但开源社区已经加强了对应用编程接口API文档的帮助质保已经有不同规模的企业的 DevOps 团队正在使用这些文档。
用于记录 API 的开源规范和工具是个非常值得关注的领域。我想这是由于[谷歌文档季][5]的影响,使得一些专业的技术作家能够接触到开源项目,并解决最关键的文档类项目。
开源 API 属于 DevOps文档讨论。云原生应用集成需求的重要性正在上升。[OpenAPI 规范][6]--一个定义和记录API的开放标准--是在 DevOps 环境下 API 文档的良好资源。然而,该规范会导致文档的创建和更新过程变得很费时,这使其饱受批评。
曾经也有短暂尝试过创建[持续文档][7],并且还有一个来自 CA现在的Broadcom的创建[DocOps][8]框架的运动。然而DocOps 从来没有作为一个行业运动流行起来。
DevOps 文档标准的现状意味着 DevOps 团队(包括技术作家)需要在项目的最初阶段开始创建文档。要做到这一点,需要把文档作为一个敏捷故事和(同样重要的)管理期望来添加,并且把它与年度绩效评估放在一起执行。
### Documentation tools 文档工具
文档的编写应该以一种所有团队成员都可以使用的格式或平台在线进行。MediaWiki、DokuWiki、TikiWiki和其他[开源维基][9]为 DevOps 团队提供了一个编写和维护文档的中央仓库。
让团队选择他们的 wiki就像让他们选择他们的其他持续集成/持续开发CI/CD工具链一样。开源维基强大之处在于其可扩展性。例如DokuWiki包括一系列的扩展你可以通过安装这些扩展来创建一个符合你的 DevOps 团队的创作要求的平台。
如果你有足够的野心来加强你的团队的编写和协作能力,[Nextcloud][10](一个开源的云协作套件)是一个让你的 DevOps 团队上网并给他们提供编写文档所需工具的选择。
### DevOps 最佳实践
文档在 DevOps 转型中也发挥着作用。例如,组织从 DevOps 实现效率和流程增益的最佳实践的相关记录,这些信息太重要了,不能靠着 DevOps团中之间口口相传。如果你所在的组织有多个 DevOps 团队,那么文档就是统一的力量,它可以促进最佳实践的标准化,并设置了衡量代码质量的基准指标。。
一般情况下,开发人员承担了记录 DevOps 实践的工作。即使他们的组织有技术作家,他们也可能跨开发团队工作。因此,开发人员和系统管理员能够捕捉、记录和交流他们的最佳实践是很重要的。这里有一些朝正确的方向发展的提示:
* 提前花时间为 DevOps 最佳实践创建标准模板。不要陷入复制在线模板,采访利益相关者和团队来创建一个符合团队需求的模板。
* 寻找一些方法进行信息收集,例如记录团队会议和使用聊天系统日志来作为文档的基础。
* 建立一个用于发布最佳实践的 wiki。使用 wiki 可以跟踪编辑和更新。这样的平台可以帮助团队在最佳实践发生变化时进行更新和维护。
当在构建 CI/CD 工具链时记录依赖关系是非常明智的。尤其是当加入新的团队成员时,你会发现这些记录非常有用,另外当团队成员忘记一些事情时,这也是一种保险。
最后,自动化对 DevOps 利益相关者和从业者都很有吸引力。在自动化中断之前,一切都很有趣。拥有自动化运行手册、管理指南和其他内容的文档(并且是最新的)意味着无论何时发生故障,员工都可以让自动化重新工作。
### 最后一些想法
DevOps 对于技术文档来说是一个积极的因素。它将内容开发纳入DevOps生命周期并打破组织文化中开发人员和技术作者之间的隔阂。没有技术作家的优势团队就可以使用工具来加快文档创作的速度以与DevOps的速度相匹配。
您的组织将如何把文档加入到 DevOps 生命周期?请在评论区分享您的经验。
--------------------------------------------------------------------------------
via: https://opensource.com/article/21/3/devops-documentation
作者:[Will Kelly][a]
选题:[lujun9972][b]
译者:[Veryzzj](https://github.com/Veryzzj)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/willkelly
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/typewriter-hands.jpg?itok=oPugBzgv "Typewriter with hands"
[2]: https://opensource.com/article/19/11/hiring-technical-writers-devops
[3]: https://searchitoperations.techtarget.com/opinion/Make-DevOps-documentation-an-integral-part-of-your-strategy?_ga=2.73253915.980148481.1610758264-908287796.1564772842
[4]: https://www.agilealliance.org/glossary/definition-of-done
[5]: https://developers.google.com/season-of-docs
[6]: https://swagger.io/specification/
[7]: https://devops.com/continuous-documentation
[8]: https://www.cmswire.com/cms/information-management/the-importance-of-docops-in-the-new-era-of-business-027489.php
[9]: https://opensource.com/article/20/7/sharepoint-alternative
[10]: https://opensource.com/article/20/7/nextcloud

View File

@ -1,151 +0,0 @@
[#]: subject: "Linux su vs sudo: what's the difference?"
[#]: via: "https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin"
[#]: author: "David Both https://opensource.com/users/dboth"
[#]: collector: "lkxed"
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
Linux 中的 `su``sudo` 命令有什么区别呢?
======
>本文将比较 <ruby>非 root 用户<rt> non-root user </rt></ruby> 提权为 root 用户的两个 **Linux 命令** 的区别。
![bash logo on green background][1]
`su``sudo` 命令都允许用户执行非特权用户不允许做的系统管理任务,即只有 root 用户能执行的命令。有些人更喜欢 `sudo` 命令:例如 [Seth Kenlon][2] 最近发布的一篇 [《在 Linux 上使用 `sudo` 的 5 个理由》][3],他在其中详细阐述了 `sudo` 命令的许多优点。
但是,相较于 `sudo` 命令,我**更偏好于 `su` 命令**,来做系统管理工作。在本文中,我比较了这两个命令的区别,并解释了为什么我更喜欢 `su` 而不是 `sudo`,但我仍然同时使用这两个命令的原因。
### 过去的系统管理员主要使用 `su` 命令
`su``sudo` 命令是为**不同的世界**设计的。早期的 Unix 计算机需要全职系统管理员,他们使用 root 用户作为唯一的管理帐户。在这个古老的世界里,有管理员密码的人会在电传打字机或 CRT 终端(例如 DEC VT100上以 root 用户登录,然后执行一些管理 Unix 计算机的工作。
root 用户还有一个非 root 帐户,用于执行一些非 root 的任务,例如编写文档和管理电子邮件等。在这些 Unix 计算机上通常有许多非 root 帐户,他们都不需要完全的 root 访问权限,只需要以 root 权限运行很少的命令,大约 1 至 2 个就可以了。许多系统管理员以 root 用户登录,完成 root 工作,并在任务完成后,退出 root 会话。系统管理员需要整天以 root 用户来登录,因为 `sudo` 命令需要键入更多的内容才能运行基本命令,因此大多数系统管理员很少使用 `sudo` 命令。
`sudo``su` 这两个命令都能够提权为 root 用户,但它们实现的方式大不相同。这种差异是由于它们**最初打算用于不同的情况**。
### `sudo` 命令
`sudo` 命令的初衷是让 root 用户能够将他们定期需要的 1 到 2 个特权命令委托给 1 至 2 个非 root 用户。`sudo` 命令允许非 root 用户暂时地获得更高权限,来执行一些特权命令,例如添加和删除用户、删除属于其他用户的文件、安装新软件以及管理现代 Linux 主机所需的任何命令。
`sudo` 命令允许非 root 用户访问 1 到 2 个 _需要更高权限_ 的常用命令,这样可以帮助系统管理员节省来自用户的许多请求,并减少等待时间。`sudo` 命令不会将用户帐户切换为 root 用户,因为大多数非 root 用户永远不应该拥有完全的 root 访问权限。在大多数情况下,`sudo` 允许用户执行 1 或 2 个命令,然后提权就会过期。在这个通常为 5 分钟的短暂的提权时间内,用户可以执行任何需要提权的管理命令。需要继续使用提权的用户可以运行 `sudo -v` 命令来重新验证 root 访问权限,并将提权时间再延长 5 分钟。
使用 `sudo` 命令还有一些副作用,例如生成非 root 用户使用命令的日志条目及其 ID。这些日志可以在之后作为出现问题的检验来给用户更多的操作培训。你以为我会说“责备”用户对吗
### `su` 命令
`su` 命令能够将非 root 用户提权到 root 权限——事实上,能让非 root 用户成为 root 用户。唯一的要求是用户知道根密码。因为用户已经以 root 权限登录,所以之后的操作就没有限制了。
`su` 命令所提供的提权没有时间限制。用户可以作为 root 执行命令,不需要进行重新认证是否有 root 权限。完成任务后,用户可以执行退出命令 `exit`,从 root 用户恢复到自己原来的非 root 帐户。
### `su``sudo` 在使用上的争议和变化
最近在 `su``sudo` 的使用上存在一些分歧。
> 真正的系统管理员不会使用 `sudo`。——保罗·威尼斯Paul Venezia
Venezia 在他的 [InfoWorld 文章][4] 中辩称,对于许多担任系统管理员的人来说,`sudo` 是一个不必要的工具。他没有花太多时间为这个观点进行解释,他只是把它说成了一个事实。我同意他对于系统管理员的观点,因为我们不需要 `sudo` 来完成我们的工作。事实上,`sudo` 使得事情变得更复杂了。
然而,
> 这时代正在“变革”当中。——鲍勃·迪伦
迪伦是对的尽管他没有为电脑唱歌LCTT 译注:鲍勃·迪伦是美国创作歌手、艺术家和作家,这里指他不是针对于电脑而说的)。
自从**个人计算机**时代到来以来,计算机的管理方式发生了重大变化。在许多环境中,计算机的使用者也是它的管理员,这使得为这些用户提供一些对 root 权限的访问是有必要的。
一些现代发行版,例如 Ubuntu 及其衍生版本,只能使用 `sudo` 命令来执行特权命令。在这些发行版中,用户无法直接以 root 用户身份登录,甚至无法通过 `su` 切换到 root因此需要 `sudo` 命令来允许非 root 用户获得 root 权限。在这一环境中,所有系统管理任务均使用 `sudo` 来执行。
通过锁定 root 帐户并将常规用户帐户添加到 wheel 组,可以进行此配置,但是这种配置很容易被绕过。接下来,让我们在任何 Ubuntu 主机或 VM 上尝试一些小实验吧。我在这里说明一些我实验的设置,以便你可以根据需要来重现它。我安装的是 Ubuntu 16.04 LTS1并使用 VirtualBox 将其安装在 VM 中。在安装过程中,我创建了一个非 root 用户 `student`,为了简便起见我给这个用户设置了一个简单的密码。
`student` 用户身份登录 Ubuntu并打开终端。查看 `/etc/shadow` 文件中的 root 条目,其中存储了经哈希的密码。
```
student@ubuntu1:~$ cat /etc/shadow
cat: /etc/shadow: Permission denied
```
可以看到终端拒绝了我们对 `/etc/shadow` 的访问,因此我们无法查看 `/etc/shadow` 文件。所有发行版都是如此,以防止非特权用户看到和访问加密的密码,因为非特权用户可能会使用常见的黑客工具来破解这些密码。
现在,让我们使用 `su -` 命令来成为 root 用户。
```
student@ubuntu1:~$ su -
Password: <Enter root password but there isn't one>
su: Authentication failure
```
认证失败的原因是因为根帐户没有密码、并且被锁定了。接下来,使用 `sudo` 命令查看 `/etc/shadow` 文件。
```
student@ubuntu1:~$ sudo cat /etc/shadow
[sudo] password for student: <enter the student password>
root:!:17595:0:99999:7:::
<snip>
student:$6$tUB/y2dt$A5ML1UEdcL4tsGMiq3KOwfMkbtk3WecMroKN/:17597:0:99999:7:::
<snip>
```
在这里,我仅截取了部分结果,只显示 root 和 `student` 用户的条目。我还缩短了加密密码,以便该条目能显示在一行中。各个字段以冒号(`:`分隔第二个字段是密码。请注意root 的密码字段是一个感叹号(`!`),这表明 root 帐户已被锁定,且无法使用。
现在,要将根帐户变成一个合适的系统管理员,你只需为根帐户设置密码。
```
student@ubuntu1:~$ sudo su -
[sudo] password for student: <Enter password for student>
root@ubuntu1:~# passwd root
Enter new UNIX password: <Enter new root password>
Retype new UNIX password: <Re-enter new root password>
passwd: password updated successfully
root@ubuntu1:~#
```
现在,你可以直接以 root 身份登录到控制台,或者直接使用 `su` 登录到 root而不是在每个命令前都加一个 `sudo`。当然,你也可以在每次想以 root 身份登录时,使用 `sudo su -`,但这又是何必呢?
请不要误解我的意思。像 Ubuntu 这样的发行版非常好,多年来我已经使用了其中的几个。在使用 Ubuntu 和相关发行版时,我做的第一件事就是设置一个 root 密码,这样我就可以直接以 root 身份登录。其他发行版,如 Fedora 及其相关发行版,现在在安装过程中提供了一些有趣的选择。我注意到的第一个 Fedora 版本是 Fedora 34我在写我的一本即将出版的书时安装了很多次。
在安装页面上,可以找到其中一个安装选项,来设置 root 密码。这个新选项允许用户以锁定 Ubuntu root 帐户的方式选择“<ruby>锁定 root 帐户<rt> Lock root account </rt></ruby>”。此页面上还有一个选项,允许使用密码以 root 身份远程 SSH 登录到此主机,但这仅在 root 帐户解锁时有效。第二个选项位于允许创建非根用户帐户的页面上。此页面上的选项之一是“<ruby>让此用户成为管理员<rt> Make this user administrator </rt></ruby>”。选中此选项后,用户 ID 将添加到一个名为 wheel 组的特殊组中,该组授权该组的成员使用 `sudo` 命令。Fedora 36 甚至在该复选框的描述中提到了 wheel 组。
可以将多个非 root 用户设置为管理员。使用此方法指定为管理员的任何人都可以使用 `sudo` 命令在 Linux 计算机上执行所有管理任务。Linux 在安装时只允许创建一个非 root 用户,所以其他新用户可以在创建时添加到 wheel 组中。root 用户或其他管理员可以使用文本编辑器或 `usermod` 命令直接将现有用户添加到 wheel 组。
在大多数情况下,今天的管理员只需要执行一些基本任务,例如添加新的打印机、安装更新或新软件,或者删除不再需要的软件。这些 GUI 工具需要 root 或管理密码,并将接受来自管理员用户的密码。
### 在 Linux 上,我是怎么使用 `su``sudo` 的呢
我**同时使用 `su``sudo`**。它们都是我所使用的很重要的系统管理员工具。
我不锁定根帐户,因为我需要用根帐户来运行我的 [Ansible][5] 脚本和我编写的 [rsbu][6] Bash 程序,来执行备份。这两个程序都需要以 root 身份运行,我编写的其他几个管理 Bash 的脚本也是如此。我**使用 `su` 命令**,切换到 root 用户,这样我就可以执行这些脚本和许多其他常见的命令。当我需要确定问题和解决问题时,使用 `su` 命令将我的权限提升到 root 十分有用,因为我不希望 `sudo` 带来的提权会话超时。
当非 root 用户需要执行这些任务时,我**使用 `sudo` 命令**,来执行需要 root 权限的任务。我在 sudoers 文件中设置了非根帐户,只允许访问完成任务所需的 1 到 2 个命令。当我只需要运行 1 个或 2 个需要提权的快速命令时,我自己也会使用 `sudo` 命令。
### 结论
实际上只要你把工作完成好了,你使用什么工具都无大碍。你使用的是 vim 还是 Emacs是 systemd 还是 SystemV是 RPM 亦或是 DEB`sudo` 亦或是 `su`,在结果上会有什么区别呢?这里的关键在于你应该使用**最适合你的工具**。Linux 和开源软件的最大优势之一是通常有许多选项可用于我们需要完成的任务。
`su``sudo` 都各有长处,如果正确使用的话,两者都是非常安全的。我选择同时使用 `su``sudo` 命令,基于它们的历史功能,因为这对我来说十分有用。对于我自己的大部分工作,我更喜欢 `su` 命令,因为它与我的工作流程最适配。
在评论区分享你喜欢的工作方式吧!
本文摘自于我的书《系统管理员的 Linux 方法Apress2018 年The Linux Philosophy for Sysadmins一书的第 19 章,并经许可后重新发布。
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/6/linux-su-vs-sudo-sysadmin
作者:[David Both][a]
选题:[lkxed][b]
译者:[chai001125](https://github.com/chai001125)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/dboth
[b]: https://github.com/lkxed
[1]: https://opensource.com/sites/default/files/lead-images/bash_command_line.png
[2]: https://opensource.com/users/seth
[3]: https://opensource.com/article/22/5/use-sudo-linux
[4]: http://www.infoworld.com/t/unix/nine-traits-the-veteran-unix-admin-276?page=0,0&source=fssr
[5]: https://opensource.com/article/20/10/first-day-ansible
[6]: https://opensource.com/article/17/1/rsync-backup-linux

View File

@ -0,0 +1,256 @@
[#]: subject: "7 pro tips for using the GDB step command"
[#]: via: "https://opensource.com/article/22/12/gdb-step-command"
[#]: author: "Alexandra https://opensource.com/users/ahajkova"
[#]: collector: "lkxed"
[#]: translator: "chai001125"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
GDB 进入函数内部的 7 个命令
======
>**调试器**是一个可以运行你的代码并检查问题的软件。[GNU Debugger][1]GBD是最流行的调试器之一在这篇文章中我研究了 **GDB 进入函数内部的几个命令**,包含了 **`step` 命令**和其他几个**常见的 GDB 命令**。`step` 是一个被广泛使用的命令,但它有一些人们不太了解的地方,可能会使得他们十分困惑。此外,还有一些方法可以**在不使用 `step` 命令的情况下进入一个函数**,比如使用不太知名的 `advance` 命令。
### 1、无调试符号
考虑以下这个简单的示例程序:
```
#include <stdio.h>
int num() {
return 2;
}
void bar(int i) {
printf("i = %d\n", i);
}
int main() {
bar(num());
return 0;
}
```
如果你在没有 <ruby>调试符号<rt> debugging sysbols </rt></ruby> 的情况下进行编译(即在使用 `gcc` 编译程序时上,没有写 `-g` 选项),然后在 `bar` 上设置一个断点,然后尝试在这个函数内使用 `step`来单步执行语句。GDB 会给出一个 <ruby>没有行号信息<rt> no line number information </rt></ruby> 的错误信息。
```
gcc exmp.c -o exmp
gdb ./exmp
(gdb) b bar
Breakpoint 1 at 0x401135
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, 0x0000000000401135 in bar ()
(gdb) step
Single stepping until exit from function bar,
which has no line number information.
i = 2
0x0000000000401168 in main ()
```
### 2、`stepi` 命令
但是你仍然可以在没有行号信息的函数内部单步执行语句,但要使用 `stepi` 命令来代替 `step`。`stepi` 一次只执行一条指令。当使用 GDB 的 `stepi` 命令时,先做 `display/i $pc` 通常很有用,这会在每一步之后**显示** <ruby>**程序计数器的值**<rt> program counter value </rt></ruby> 和**相应的** <ruby>**机器指令**<rt> machine instruction </rt></ruby>
```
(gdb) b bar
Breakpoint 1 at 0x401135
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, 0x0000000000401135 in bar ()
(gdb) display/i $pc
1: x/i $pc
=> 0x401135 <bar+4>: sub $0x10,%rsp
```
在上述的 `display` 命令中,`i` 代表机器指令,`$pc` 表示程序计数器寄存器(即 PC 寄存器)。
使用 `info registers` 命令,来**打印寄存器的内容**,也是十分有用的。
```
(gdb) info registers
rax 0x2 2
rbx 0x7fffffffdbc8 140737488346056
rcx 0x403e18 4210200
(gdb) print $rax
$1 = 2
(gdb) stepi
0x0000000000401139 in bar ()
1: x/i $pc
=> 0x401139 <bar+8>: mov %edi,-0x4(%rbp)
```
### 3、复杂的函数调用
在带调试符号的 `-g` 选项,重新编译示例程序后,你可以用 `main` 中的行号,在 `bar` 上设置断点,然后再单步执行 `bar` 函数的语句:
```
gcc -g exmp.c -o exmp
gdb ./exmp
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
```
接下来,用 `step`,来单步执行 `bar()` 函数的语句:
```
(gdb) step
num () at exmp.c:4
4 return 2;
```
函数调用的参数需要在实际的函数调用之前进行处理,`bar()` 函数调用了 `num()` 函数,所以 `num()` 会在 `bar()` 被调用之前执行。但是,通过 GDB 调试,你怎么才能如愿以偿地进入 `bar()` 函数呢?你可以使用 `finish` 命令,并再次使用 `step` 命令。
```
(gdb) finish
Run till exit from #0 num () at exmp.c:4
0x0000000000401161 in main () at exmp.c:14
14 bar(num());
Value returned is $1 = 2
(gdb) step
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### 4、`Tbreak` 命令
`tbreak` 命令会设置一个**临时断点**。如果你不想设置永久断点,那么这个命令是很有用的。举个例子🌰,你想进入一个复杂的函数调用,例如 `f(g(h()), i(j()), ...)`,在这种情况下,你需要一个很长的 `step/finish/step` 序列,才能到达 `f` 函数。如果你设置一个临时断点,然后再使用 `continue` 命令,这样就不需要以上的序列了。为了证明这一点,你需要像以前一样将断点设置在 `main``bar` 调用上。然后在 `bar` 上设置临时断点。当到达该临时断点后,临时断点会被自动删除。
```
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) tbreak bar
Temporary breakpoint 2 at 0x40113c: file exmp.c, line 9.
```
在调用 `bar` 的时候遇到断点,并在 `bar` 上设置临时断点后,你只需要使用`continue` 继续运行直到 `bar` 结束。
```
(gdb) continue
Continuing.
Temporary breakpoint 2, bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### 5、`disable` 命令
类似地,你也可以在 `bar` 上设置一个正常的断点,然后执行 `continue`,然后在不再需要第二个断点时,使用`disable` 命令禁用这个断点,这样也能达到与 `tbreak` 相同的效果。
```
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) b bar
Breakpoint 2 at 0x40113c: file exmp.c, line 9.
(gdb) c
Continuing.
Breakpoint 2, bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
(gdb) disable 2
```
正如你所看到的,`info breakpoints` 命令在 `Enb` 下显示为 `n`,这意味着这个断点已被禁用。但你也能在再次需要这个断点时,再启用它。
```
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000000000401157 in main at exmp.c:14
breakpoint already hit 1 time
2 breakpoint keep n 0x000000000040113c in bar at exmp.c:9
breakpoint already hit 1 time
(gdb) enable 2
(gdb) info breakpoints
Num Type Disp Enb Address What
1 breakpoint keep y 0x000000000040116a in main at exmp.c:19
breakpoint already hit 1 time
2 breakpoint keep y 0x0000000000401158 in bar at exmp.c:14
breakpoint already hit 1 time
```
### 6、`Advance` 命令运行程序到指定的位置
另一个进入函数内部的方法是 `advance` 命令。你可以简单地用 `advance bar`,来代替 `tbreak bar ; continue`。这一命令会将程序继续运行到指定的位置。
`advance` 命令的一个很棒的地方在于:如果程序并没有到达你试图进入的位置,那么 GDB 将在当前函数运行完成后停止。因此,程序的执行会受到限制:
```
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) advance bar
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
### 7、`skip` 命令
进入 `bar` 函数的另一种方式是使用 `skip num` 命令:
```
(gdb) b exmp.c:14
Breakpoint 1 at 0x401157: file exmp.c, line 14.
(gdb) skip num
Function num will be skipped when stepping.
(gdb) r
Starting program: /home/ahajkova/exmp
Breakpoint 1, main () at exmp.c:14
14 bar(num());
(gdb) step
bar (i=2) at exmp.c:9
9 printf("i = %d\n", i);
```
请使用 `info skip` 命令,来了解 GDB 跳过了哪些函数。`num()` 函数被标记为 `y`,表示跳过了 `num()` 函数:
```
(gdb) info skip
Num Enb Glob File RE Function
1 y n <none> n num
```
如果不再需要 `skip`,可以禁用(稍后重新启用)或完全删除它。你可以添加另一个 `skip`,并禁用第一个 `skip`,然后全部删除。要禁用某个 `skip`,必须指定其编号(例如,`skip disable 1`),如果没有指定,则会禁用所有的 `skip`。启用或删除 `skip` 的工作原理相同:
```
(gdb) skip bar
(gdb) skip disable 1
(gdb) info skip
Num Enb Glob File RE Function
1 n n <none> n num
2 y n <none> n bar
(gdb) skip delete
(gdb) info skip
Not skipping any files or functions.
```
### GDB 的 `step` 命令
使用 GDB 的 `step` 命令是调试程序的一个有用工具。即使是复杂的函数,也有几种方法可以进入这些函数,所以下次你在排除代码问题的时候,可以尝试一下这些 GDB 技术。
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/12/gdb-step-command
作者:[Alexandra][a]
选题:[lkxed][b]
译者:[chai001125](https://github.com/chai001125)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ahajkova
[b]: https://github.com/lkxed
[1]: https://opensource.com/article/21/3/debug-code-gdb

View File

@ -0,0 +1,61 @@
[#]: subject: "Install open source solar power at home"
[#]: via: "https://opensource.com/article/22/12/open-source-solar-power-home"
[#]: author: "Joshua Pearce https://opensource.com/users/joshuapearce"
[#]: collector: "lkxed"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
在家里安装开源太阳能
======
你可能已经考虑过用太阳能为您的家供电。将太阳光直接转化为电能的太阳能光伏电池板的成本已大幅下降,因此在任何地方都具有经济意义。这就是为什么大公司投入大量太阳能,甚至电力公司也开始安装大型太阳能发电场的原因,因为它的成本低于过时的化石燃料。像大多数房主一样,你想省钱并节省电费,但你可能对前期费用有点畏缩。为了大致了解成本,以 3 美元/瓦的价格为普通家庭供电的 5kW 系统的成本约为 15,000 美元,而更大的家庭可能需要 10kW 才能抵消所有电力购买,成本为 30,000 美元。如果你想要电池,成本加倍(你不需要电池,因为大多数太阳能电池阵列连接到电网,但如果电网瘫痪,你的太阳能电池阵列也会瘫痪,直到它重新开启)支付你未来几十年所有的电费是一种投资,即使你存了很多钱。
有一些好消息。首先,美国和加拿大都对太阳能实行了 30% 的税收抵免。此项优惠将价格降至约 2 美元/W。其次[Opensource.com 之前讨论][1]过你可以获得一本免费书籍[_捕捉阳光_][2],它会引导你完成如何设计自己的系统(你仍然需要一个合格的电工和检查来把它连接到电网)。如果你有一点手艺,你可以将剩余成本削减约 50%。这些成本主要用于材料,包括太阳能电池板、布线、电子设备和支架。令人惊讶的是,对于小型太阳能系统(比如你家的太阳能系统)来说,太阳能电池板的成本下降得如此之低,以至于支架(支撑太阳能电池板的机械结构)的成本可能比面板还高!
### 开源再次拯救
将开源开发范式应用于软件可以加快创新速度、改进产品并降低成本。开源硬件也是如此,甚至在光伏支架这个相对不为人知的领域也是如此。几乎所有的商业光伏支架都是由专有的奇特铝型材制成。它们会花很多钱。如果你有一些没有遮挡的后院,你有一些开源的支架解决方案可以选择。
### 开源太阳能支架设计
第一个 DIY 太阳能支架设计符合以下标准:(1) 由当地可获得的可再生材料制成,(2) 25 年的使用寿命与太阳能保修相匹配,(3) 能够由普通消费者制造,(4) 能够 符合加拿大结构建筑规范如果你住在没有雪的地方这有点矫枉过正但是你可能有其他极端天气需要应对例如飓风5低成本6它是共享的 使用开源许可证。[开源的木质固定倾斜地面安装双面光伏支架设计][3]在整个北美都适用。与商业专有支架相比,该支架系统可节省 49% 至 77%。然而,支架设计高度依赖于世界各地不同的木材成本。
在深入研究这个开源设计之前,请检查你当地的木材成本。
![Non-tilting solar rack plans][4]
如果你更喜欢冒险,你可能会考虑第二种允许改变倾斜角度的设计。[第二项研究][5]的结果表明,具有最佳可变季节性倾斜角的支架系统具有最佳的终身能量产生,与固定倾斜系统相比,产生的能量多 5.2%(或者,如果最大倾斜角限制为 60°能量多 4.8%)。固定和可变木制支架系统的电力成本相似,仅为专有商业金属货架的 29%。可变倾斜支架提供了最低成本的选择,即使包括适度的劳动力成本,也可能为[农业光伏][6]等应用提供特定优势(即,你可以在面板下面种菜,对于莴苣等耐阴作物来说,能惊人地增加产量)。此设计已通过[具有 CERN-OHL-S-2.0 许可证的 OSHWA][7] 的认证。
图片
![Tilt-adjustable solar racks][8]
所示的 2 个 PV 模块架中的每一个大约有 1kW。所以一所房子大约需要五个。这两篇论文都提供了完整的计算和分步建造说明。
正如拥有太阳能系统的任何人都会告诉你的那样,获得负电费是非常有益的。如果你的系统规模能满足你所有的负荷,并且住在该国的净计量地区,就会出现这种情况。请注意,电力公司不会向你付款; 额度会一直延续到你在冬天使用它为止。
享受一点开源太阳能带来的乐趣!
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/12/open-source-solar-power-home
作者:[Joshua Pearce][a]
选题:[lkxed][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/joshuapearce
[b]: https://github.com/lkxed
[1]: https://opensource.com/article/21/11/open-source-solar-power
[2]: https://tocatchthesun.com/
[3]: https://doi.org/10.3390/designs6030041
[4]: https://opensource.com/sites/default/files/2022-11/nontilt.png
[5]: https://doi.org/10.3390/designs6030054
[6]: https://www.academia.edu/18406368/The_potential_of_agrivoltaic_systems
[7]: https://certification.oshwa.org/ca000013.html
[8]: https://opensource.com/sites/default/files/2022-11/tilt.png