分类 技术 下的文章

软件包管理器在 Linux 系统中扮演着重要的角色。它允许你安装、更新、查看、搜索和删除软件包,以满足你的需求。

每个发行版都有自己的一套包管理器,依据你的 Linux 发行版来分别使用它们。

RPM 是最古老的传统软件包管理器之一,它是为基于 Red Hat 的系统设计的,如 Red Hat Enterprise Linux(RHEL)、CentOS、Fedora 和 openSUSE(它基于 suse Enterprise Linux)等系统。但在依赖解析和包更新(全系统更新/升级)方面,RPM 包管理器有一个突出的限制。

如果你想知道 YUM 和 DNF 包管理器的区别请参考该文章。

这意味着 yum 可以自动下载并安装所有需要的依赖项,但 rpm 会告诉你安装一个依赖项列表,然后你必须手动安装。

当你想用 rpm 命令 安装一组包时,这实际上是不可能的,而且很费时间。

这时,YUM 包管理器 就派上了用场,解决了这两个问题。

什么是 RPM?

RPM 指的是 RPM Package Manager(原名 Red Hat Package Manager),是一个功能强大的命令行包管理工具,是为 Red Hat 操作系统开发的。

它现在被用作许多 Linux 发行版的核心组件,如 Centos、Fedora、Oracle Linux、openSUSE 和 Mageia 等。

RPM 软件包管理器允许你在基于 RPM 的 Linux 系统上安装、升级、删除、查询和验证软件包。

RPM 文件的扩展名为 .rpm。RPM 包由一个存档文件组成,其中包含了一个特定包的库和依赖关系,这些库和依赖关系与系统上安装的其他包不冲突。

在 Linux 上有很多前端工具可以用来安装 RPM 包,与 RPM 工具相比,这些工具可以使安装过程更加高效,尤其是在处理依赖关系方面。

如果你想了解更多关于 Linux 发行版的前端包管理器的信息,请到下面的链接。

如果你想了解 Linux 的 GUI 包管理器,请到下面的链接。

什么是 YUM?

Yum 是一个 Linux 操作系统上的自由开源的命令行包管理程序,它使用 RPM 包管理器。Yum 是一个 RPM 的前端工具,可以自动解决软件包的依赖关系。它可以从发行版官方仓库和其他第三方仓库中安装 RPM 软件包。

Yum 允许你在系统中安装、更新、搜索和删除软件包。如果你想让你的系统保持更新,你可以通过 yum-cron 启用自动更新。

此外,如果你需要的话,它还允许你在 yum update 中排除一个或多个软件包。

Yum 是默认安装的,你不需要安装它。

编号RPMYUM
1红帽在 1997 年引入了 RPMYellowdog UPdater(YUP)开发于 1999-2001 年,YUM 于 2003 年取代了原来的 YUP 工具
2RPM 代表 RPM Package manager(原名 Red Hat package manager)YUM 代表 Yellowdog Updater Modified
3RPM 文件的命名规则如下,httpd-2.4.6-92.el7.x86_64.rpmhttpd - 实际的包名;2.4.6 - 包发布版本号;92 - 包发布子版本号;el7 - Red Hat 版本;x86_64 - 硬件架构;rpm - 文件扩展名后台使用 rpm 数据库
4不解析依赖关系,你必须手动安装依赖可以自动解析依赖关系并同时安装它们(任何包都会和它的依赖关系一起安装)
5允许你同时安装多个版本的软件包不允许,并显示该软件包已经安装
6当使用 RPM 命令安装一个软件包时,你必须提供 .rpm 软件包的确切位置你可以安装仓库中的任何软件包,而你只需要知道软件包的名称就可以了
7RPM 不依赖于 YUM它是一个前端工具,在后台使用 RPM 包管理器来管理包
8RPM 在安装包的管理方面比较难YUM 是最简单的管理 RPM 包的方法
9RPM 不能让你将整个系统升级到最新的版本YUM 可以让你将系统升级到最新的版本(例如 7.0 到 7.x 的小版本升级)
10RPM 不能让你自动更新/升级安装在系统上的软件包YUM 可以让你自动更新/升级系统上的更新
11不使用在线仓库来执行任何操作完全依赖在线仓库来完成所有的工作
12RPM 是一种包格式,它也是一个底层的包管理器,只做基本的事情这是一个上层的包管理器前端,它可以完成你所需要的一切工作

via: https://www.2daygeek.com/comparison-difference-between-yum-vs-rpm/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:wxy 校对:wxy

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

默认情况下,在设置服务器时你会配置主网络接口。这是每个人所做的构建工作的一部分。有时出于各种原因,你可能需要配置额外的网络接口。

这可以是通过网络 绑定 bonding / 协作 teaming 来提供高可用性,也可以是用于应用需求或备份的单独接口。

为此,你需要知道计算机有多少接口以及它们的速度来配置它们。

有许多命令可检查可用的网络接口,但是我们仅使用 ip 命令。以后,我们会另外写一篇文章来全部介绍这些工具。

在本教程中,我们将向你显示可用网络网卡(NIC)信息,例如接口名称、关联的 IP 地址、MAC 地址和接口速度。

什么是 ip 命令

ip 命令 类似于 ifconfig, 用于分配静态 IP 地址、路由和默认网关等。

# ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:a0:7d:5a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.101/24 brd 192.168.1.101 scope global eth0
    inet6 fe80::f816:3eff:fea0:7d5a/64 scope link
       valid_lft forever preferred_lft forever

什么是 ethtool 命令

ethtool 用于查询或控制网络驱动或硬件设置。

# ethtool eth0

1)如何在 Linux 上使用 ip 命令检查可用的网络接口

在不带任何参数的情况下运行 ip 命令时,它会提供大量信息,但是,如果仅需要可用的网络接口,请使用以下定制的 ip 命令。

# ip a |awk '/state UP/{print $2}'

eth0:
eth1:

2)如何在 Linux 上使用 ip 命令检查网络接口的 IP 地址

如果只想查看 IP 地址分配给了哪个接口,请使用以下定制的 ip 命令。

# ip -o a show | cut -d ' ' -f 2,7
或
ip a |grep -i inet | awk '{print $7, $2}'

lo 127.0.0.1/8
192.168.1.101/24
192.168.1.102/24

3)如何在 Linux 上使用 ip 命令检查网卡的 MAC 地址

如果只想查看网络接口名称和相应的 MAC 地址,请使用以下格式。

检查特定的网络接口的 MAC 地址:

# ip link show dev eth0 |awk '/link/{print $2}'
00:00:00:55:43:5c

检查所有网络接口的 MAC 地址,创建该脚本:

# vi /opt/scripts/mac-addresses.sh

#!/bin/sh
ip a |awk '/state UP/{print $2}' | sed 's/://' | while read output;
do
  echo $output:
  ethtool -P $output
done

运行该脚本获取多个网络接口的 MAC 地址:

# sh /opt/scripts/mac-addresses.sh

eth0:
Permanent address: 00:00:00:55:43:5c
eth1:
Permanent address: 00:00:00:55:43:5d

4)如何在 Linux 上使用 ethtool 命令检查网络接口速度

如果要在 Linux 上检查网络接口速度,请使用 ethtool 命令。

检查特定网络接口的速度:

# ethtool eth0 |grep "Speed:"

Speed: 10000Mb/s

检查所有网络接口速度,创建该脚本:

# vi /opt/scripts/port-speed.sh

#!/bin/sh
ip a |awk '/state UP/{print $2}' | sed 's/://' | while read output;
do
  echo $output:
  ethtool $output |grep "Speed:"
done

运行该脚本获取多个网络接口速度:

# sh /opt/scripts/port-speed.sh

eth0:
Speed: 10000Mb/s
eth1:
Speed: 10000Mb/s

5)验证网卡信息的 Shell 脚本

通过此 shell 脚本你可以收集上述所有信息,例如网络接口名称、网络接口的 IP 地址,网络接口的 MAC 地址以及网络接口的速度。创建该脚本:

# vi /opt/scripts/nic-info.sh

#!/bin/sh
hostname
echo "-------------"
for iname in $(ip a |awk '/state UP/{print $2}')
do
  echo "$iname"
  ip a | grep -A2 $iname | awk '/inet/{print $2}'
  ip a | grep -A2 $iname | awk '/link/{print $2}'
  ethtool $iname |grep "Speed:"
done

运行该脚本检查网卡信息:

# sh /opt/scripts/nic-info.sh

vps.2daygeek.com
----------------
eth0:
192.168.1.101/24
00:00:00:55:43:5c
Speed: 10000Mb/s
eth1:
192.168.1.102/24
00:00:00:55:43:5d
Speed: 10000Mb/s

via: https://www.2daygeek.com/linux-unix-check-network-interfaces-names-nic-speed-ip-mac-address/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:geekpi 校对:wxy

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

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器已被 DNF 包管理器取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。

DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。

Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。

Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。

为什么他们要建立一个新的工具,而不是修复现有的问题呢?

Ales Kozamblak 解释说,这个修复在技术上是不可行的,而且 Yum 团队还没有准备好立即接受修改。

另外,最大的挑战是,Yum 有 56000 行代码,但 DNF 只有 29000 行代码。

所以除了分叉,没有办法解决。

不过 Yum 的运行情况还算可以。

编号DNF(Dandified YUM)YUM(Yellowdog Updater, Modified)
1DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护YUM 使用公开的 API 来解析依赖关系
2API 有完整的文档API 没有完整的文档
3由 C、C++、Python 编写的只用 Python 编写
4DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用
5DNF 支持各种扩展Yum 只支持基于 Python 的扩展
6API 有良好的文档,因此很容易创建新的功能因为 API 没有正确的文档化,所以创建新功能非常困难
7DNF 在同步存储库的元数据时,使用的内存较少在同步存储库的元数据时,YUM 使用了过多的内存
8DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息)由于使用公开 API 的原因,Yum 依赖性解析变得迟钝
9从内存使用量和版本库元数据的依赖性解析来看,性能都不错总的来说,在很多因素的影响下,表现不佳
10DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新YUM 将在没有验证的情况下更新软件包
11如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务如果有存储库不可用,YUM 会立即停止
12dnf updatednf upgrade 是等价的在 Yum 中则不同
13安装包的依赖关系不更新Yum 为这种行为提供了一个选项
14清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包Yum 不会这样做
15存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。这个动作由系统定时器单元 dnf-makecache.timer 控制Yum 也会这样做
16内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包Yum 不允许你删除运行中的内核
17libsolv:用于解包和读取资源库。hawkey: 为 libsolv 提供简化的 C 和 Python API 库。librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。Yum 不使用单独的库来执行这些功能
18DNF 包含 29000 行代码Yum 包含 56000 行代码
19DNF 由 Ales Kozumplik 开发YUM 由 Zdenek Pavlas、Jan Silhan 和团队成员开发

via: https://www.2daygeek.com/comparison-difference-between-dnf-vs-yum/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:wxy 校对:wxy

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

Ubuntu 20.04 已经发布,你可能对升级、安装等有一些问题和疑问。

我在各种社交媒体渠道上主持了一些问答环节,回答像你这样的读者的疑虑。我将列出这些关于 Ubuntu 20.04 的常见问题,并给出答案。我希望它能帮助你消除你的疑虑。如果你仍有问题,请随时在下面的评论栏提问。

Ubuntu 20.04:已回复的问题

为了澄清一下,这里的一些答案也许受我个人意见的影响。如果你是一个有经验的 Ubuntu 用户,有些问题听起来可能有点愚蠢,但它对 Ubuntu 新用户不是这样。

Ubuntu 20.04 何时发布?

Ubuntu 20.04 LTS 于 2020 年 4 月 23 日发布。所有变种,如 Kubuntu、Lubuntu,、Xubuntu、Budgie、MATE 都将和 20.04 同一天发布。

Ubuntu 20.04 的系统要求是什么?

对于默认的 GNOME 版本,应至少具有 4GB 的内存、2GHz 双核处理器和至少 25GB 的磁盘空间。

其他 Ubuntu 变种可能有不同的系统要求。

我可以在 32 位系统上使用 Ubuntu 20.04 吗?

完全不行。你不能在 32 位系统上使用 Ubuntu 20.04。即使你使用的是 32 位 Ubuntu 18.04,也不能升级到 Ubuntu 20.04。32 位的系统 ISO 是以前用的。

Error while upgrading 32-bit Ubuntu 18.04 to Ubuntu 20.04

我可以在 Ubuntu 20.04 上使用 Wine 吗?

是的,你仍然可以在 Ubuntu 20.04 上使用 Wine,因为仍然用于 Wine 和 Steam Play 软件包所需的 32 位库。

我需要购买 Ubuntu 20.04 或许可证?

不,Ubuntu 完全可以免费使用。你不必像在 Windows 中那样购买许可证密钥或激活 Ubuntu。

Ubuntu 的下载页会请求你捐赠一些资金,如果你想为开发这个强大的操作系统捐钱,由你自己决定。

GNOME 版本是什么?

Ubuntu 20.04 有 GNOME 3.36。

Ubuntu 20.04 的性能是否优于 Ubuntu 18.04?

是的,在几个方面。Ubuntu 20.04 系统速度更快,甚至超快。我在下面这个视频的 4:40 处展示了性能对比。

在 GNOME 3.36 中,滚动、窗口动画和其他 UI 元素更加流畅,提供了更流畅的体验。

Ubuntu 20.04 将支持多长时间?

它是一个长期支持(LTS)版本,与任何 LTS 版本一样,它将在五年内得到支持。这意味着 Ubuntu 20.04 将在 2025 年 4 月之前获得安全和维护更新。

升级到 Ubuntu 20.04 时,是否会丢失数据?

你可以从 Ubuntu 19.10 或 Ubuntu 18.04 升级到 Ubuntu 20.04。你无需创建 live USB 并从中安装。你所需要的是一个良好的互联网连接,来下载约 1.5GB 的数据。

从现有系统升级不会破坏你的文件。你应该会留有所有文件,并且大多数现有软件应具有相同的版本或升级后的版本。

如果你使用了某些第三方工具或其他 PPA,升级过程将禁用它们。如果 Ubuntu 20.04 可以使用这些其他存储库,那么可以再次启用它们。

升级大约需要一个小时,重启后,你将登录到新版本。

虽然你的数据不会被触碰,并且不会丢失系统文件和配置,但最好在外部设备备份重要数据。

何时可以升级到 Ubuntu 20.04?

如果你正在使用 Ubuntu 19.10 并有正确的更新设置(如前面部分所述),那么应在发布后的几天内通知你升级到 Ubuntu 20.04。

对于 Ubuntu 18.04 用户,可能需要几周时间才能正式通知他们 Ubuntu 20.04 可用。可能,你可能会在第一个点版本 Ubuntu 20.04.1 后获得提示。

如果我升级到 Ubuntu 20.04,我可以降级到 19.10 或 18.04 吗?

不行。虽然升级到新版本很容易,但无法选择降级。如果你想回到 Ubuntu 18.04,你需要重新安装 Ubuntu 18.04

我使用的是 Ubuntu 18.04 LTS。我应该升级到 Ubuntu 20.04 LTS 吗?

这取决于你。如果你对 Ubuntu 20.04 中的新功能印象深刻,并希望上手尝试,那么你应该升级。

如果你想要一个更稳定的系统,我建议等待第一个点版本 Ubuntu 20.04.1,新版本会有 bug 修复。20.04.1 通常在 Ubuntu 20.04 发布后大约两个月到来。

无论是那种情况,我都建议你或早或晚升级到 Ubuntu 20.04。Ubuntu 20.04 具有更新的内核、性能改进,尤其是仓库中有更新版本的软件。

在外部磁盘上进行备份,并且有良好的互联网连接,升级不应成为问题。

我应该重新安装 Ubuntu 20.04 还是从 18.04/19.10 升级到 Ubuntu?

如果你可以选择,请备份数据,并重新安装 Ubuntu 20.04。

从现有版本升级到 20.04 是一个方便的选择。然而,在我看来,它仍然保留有一些旧版本的痕迹/包。全新安装更加干净。

关于 Ubuntu 20.04 的任何其他问题?

如果你对 Ubuntu 20.04 有任何疑问,请随时在下面发表评论。如果你认为应该将其他信息添加到列表中,请让我知道。


via: https://itsfoss.com/ubuntu-20-04-faq/

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

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

GTWS 是一系列脚本,它使我们在开发环境中管理不同的项目和项目的各个版本变得很容易。

Great Teeming Workspaces(GTWS)是一个 Git 的复杂工作空间管理工具包,它使我们在开发环境中管理不同的项目和项目的各个版本变得很容易。

有点像 Python 的 venv,但不是为 Python 语言准备的。GTWS 用来管理多个项目的多个版本的工作空间。你可以很容易地创建、更新、进入和离开工作空间,每个项目或版本的组合(最多)有一个本地的 origin,用来与 upstream 同步 — 其余的所有工作空间都从本地的 origin 更新。

部署

${GTWS_ORIGIN}/<project>/<repo>[/<version>]
${GTWS_BASE_SRCDIR}/<project>/<version>/<workspacename>/{<repo>[,<repo>...]}

源代码目录的每一级(包括全局的家目录)可以包含一个 .gtwsrc 文件,这个文件中维护与当前级相关的设置和 bash 代码。每一级的配置会覆盖上一级。

安装

用下面的命令检出 GTWS:

git clone https://github.com/dang/gtws.git

配置你的 ${HOME}/.gtwsrc。它应该包含 GTWS_ORIGIN,也可以再包含 GTWS_SETPROMPT

把仓库目录加到环境变量中:

export PATH="${PATH}:/path/to/gtws

配置

通过级联 .gtwsrc 文件来进行配置。它从根目录向下遍历,会执行在每级目录中找到的 .gtwsrc 文件。下级目录的文件会覆盖上一级。

在你最上层的文件 ~/.gtws/.gtwsrc 中进行如下设置:

  • GTWS_BASE_SRCDIR:所有项目源文件目录树的基目录。默认为 $HOME/src
  • GTWS_ORIGIN: 指定 origin git 目录树的路径。默认为 $HOME/origin
  • GTWS_SETPROMPT: 可选配置。如果配置了这个参数,shell 提示符会有工作空间的名字。
  • GTWS_DEFAULT_PROJECT: 不指定项目或项目未知时默认的项目名。如果不指定,使用命令行时必须指明项目。
  • GTWS_DEFAULT_PROJECT_VERSION: 检出的默认版本。默认为 master

在每个项目的根目录进行以下设置:

  • GTWS_PROJECT: 项目的名字(和基目录)。
  • gtws_project_clone: 这个函数用于克隆一个项目的指定版本。如果未定义,它会假定项目的 origin 对每一个版本都有一个单独的目录,这样会导致克隆一堆 Git 仓库。
  • gtws_project_setup: 在克隆完所有的仓库后,可以选择是否调用这个函数,调用后可以对项目进行必要的配置,如在 IDE 中配置工作空间。

在项目版本级进行以下设置:

  • GTWS_PROJECT_VERSION: 项目的版本。用于正确地从 origin 拉取代码。类似 Git 中的分支名字。

下面这些参数可以在目录树的任意地方进行配置,如果能生效,它们可以被重写多次:

  • GTWS_PATH_EXTRA: 这些是工作空间中加到路径后的额外的路径元素。
  • GTWS_FILES_EXTRA: 这些是不在版本控制内,但应该在工作空间中被检出的额外的文件。这些文件包括 .git/info/exclude,每个文件都与仓库的基目录相关联。

origin 目录

GTWS_ORIGIN (大部分脚本中)指向拉取和推送的原始 Git 检出目录。

${GTWS_ORIGIN} 部署:

  • /<project>

    • 这是一个项目的仓库的基目录。
    • 如果指定了 gtws_project_clone,你可以配置任意的部署路径。
    • 如果没有指定 gtws_project_clone,这个路径下必须有个名为 git 的子目录,且 git 目录下有一系列用来克隆的裸 Git 仓库。

工作流示例

假设你有一个项目名为 Foo,它的 upstream 为 github.com/foo/foo.git。这个仓库有个名为 bar 的子模块,它的 upstream 是 github.com/bar/bar.git。Foo 项目在 master 分支开发,使用稳定版本的分支。

为了能在 Foo 中使用 GTWS,你首先要配置目录结构。本例中假设你使用默认的目录结构。

  • 配置你最上层的 .gtwsrc

    • cp ${GTWS_LOC}/examples/gtwsrc.top ~/.gtwsrc
    • 根据需要修改 ~/.gtwsrc
  • 创建顶级目录:

    • mkdir -p ~/origin ~/src
  • 创建并配置项目目录:
+ `mkdir -p ~/src/foo`


`cp ${GTWS_LOC}/examples/gtwsrc.project ~/src/foo/.gtwsrc`
+ 根据需要修改 `~/src/foo/.gtwsrc`。
  • 创建并配置 master 版本目录:
+ `mkdir -p ~/src/foo/master`


`cp ${GTWS_LOC}/examples/gtwsrc.version ~/src/foo/master/.gtwsrc`
+ 根据需要修改 `~/src/foo/master/.gtwsrc`。
  • 进入版本目录并创建一个临时工作空间来配置镜像:
+ `mkdir -p ~/src/foo/master/tmp`


`cd ~/src/foo/master/tmp`


`git clone --recurse-submodules git://github.com/foo/foo.git`


`cd foo`


`gtws-mirror -o ~/origin -p foo`(译注:这个地方原文有误,不加 `-s` 参数会报错)
+ 上面命令会创建 `~/origin/foo/git/foo.git` 和 `~/origin/foo/submodule/bar.git`。
+ 以后的克隆操作会从这些 origin 而不是 upstream 克隆。
+ 现在可以删除工作空间了。

到现在为止,Foo 的 master 分支的工作可以结束了。假设你现在想修复一个 bug,名为 bug1234。你可以脱离你当前的工作空间为修复这个 bug 单独创建一个工作空间,之后在新创建的工作空间中开发。

  • 进入版本目录,创建一个新的工作空间:
+ `cd ~/src/foo/master`


`mkws bug1234`
+ 上面的命令创建了 `bug1234/`,在这个目录下检出了 Foo(和它的子模块 `bar`),并创建了 `build/foo` 来构建它。
  • 有两种方式进入工作空间:
+ `cd ~/src/foo/master/bug1234`


`startws`


或者


`cd ~/src/foo/master/`


`startws bug1234`
+ 上面的命令在 `bug1234` 工作空间中开启了一个子 shell。这个 shell 有 GTWS 的环境和你在各级 `.gtwsrc` 文件中设置的环境。它也把你工作空间的基目录加入到了 CD,因此你可以从 base 路径 `cd` 到相关的目录中。
+ 现在你可以修复 `bug1234` 了,构建、测试、提交你的修改。当你可以把代码推送到 upstream 时,执行下面的命令:


`cd foo`


`wspush`
+ `wspush` 会把代码推送到与你工作空间相关的分支 — 先推送到本地的 origin,再推送到 upstream。
+ 当 upstream 有修改时,你可以用下面的命令同步到本地:


`git sync`
+ 上面的命令调用了 GTWS 的 `git-sync` 脚本,会从本地 origin 更新代码。使用下面的命令来更新本地的 origin:


`git sync -o`
+ 上面的命令会更新你本地的 origin 和子模块的镜像,然后用那些命令来更新你的检出仓库的代码。`git-sync` 也有一些其他的很好的工鞥。
+ 当要结束工作空间中的工作时,直接退出 shell:


`exit`
+ 你可以在任何时间重复进入工作空间,也可以在同一时间在相同的工作空间中开多个 shell。
  • 当你不需要某个工作空间时,你可以使用 rmws 来删除它,或者直接删除它的目录树。
  • 还有一个脚本 tmws 使用 tmux 进入工作空间,能创建一系列的窗口/窗格,这完美契合我的工作流。你可以根据你自己的需求来修改它。

via: https://opensource.com/article/20/2/git-great-teeming-workspaces

作者:Daniel Gryniewicz 选题:lujun9972 译者:lxbwolf 校对:wxy

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

Bodhi Linux 是一个基于 Ubuntu 的轻量级 Linux 发行版。与其他大多数发行版不同,Bodhi 使用自己的 Moksha 桌面,并专注于为你提供一个可以在旧计算机上运行的最简设置。

什么是 Bodhi Linux?

Bodhi Linux 最早于 2011 年推出。它以“简约、高效和用户自定义”为设计理念。开发人员旨在提供一个“实用但不臃肿的系统”。因此,它使用轻量级的 Moksha 桌面,只预装了基本的应用程序。这一做法是为了给用户一个稳定的平台来构建他们想要的系统。它基于最新版的 Ubuntu 长期支持版本。

Moksha 桌面

Bodhi Desktop

起初 Bodhi 是装载着 Enlightenment 桌面环境的。Bodhi Linux 一直被认为是“Enlightenment 系的” Linux 发行版。事实上,“Bodhi”(菩提)这个词是基于梵文的“ 开悟 enlightenment ”。

然而,当 Enlightenment 18 版本发布以后,这一切都改变了。该版本是如此的糟糕,以至于它并没有集成到 Bodhi 中。Enlightenment 19 发布后修复了一些问题,但仍然存在一些不足。

在尝试与 Enlightenment 开发团队合作却毫无进展之后,Bodhi 开发者在 2015 年复刻了 Enlightenment 17。新的桌面环境被命名为 Moksha,它是基于梵文单词“解脱、解放或释放”。你可以在 GitHub 上找到它的代码。

5.1.0 有什么新特性?

Bodhi 5.1.0 是这两年内发布的第一个版本,也是基于 Ubuntu 18.04 的第二个版本。除了更新包,它还有新的默认图标和主题。该版本对默认应用程序做了几处更改。预装版 Leafpad 取代了 epad 并且 GNOME Web(也被称为 Epiphany)代替了 Midori。删除了 eepDater 系统更新器。

目前有四个不同的版本的 Bodhi5.1.0 可以下载: 标准版 Standard 硬件支持版 Hwe 兼容版 Legacy 软件包版 AppPack

  • 标准适用于过去十年内电脑配置。它不推送内核更新。
  • 硬件支持版是 Bodhi 家族的新成员,其设计用来包括对更新的硬件的支持,并会接收到内核更新。5.1 版本的使用的是 5.3.0-42 内核。
  • 兼容版是仅有的 32 位版本。它使用“较旧的 4.9.0-6-686 Linux 内核,该内核针对旧的(15 年以上)硬件进行了优化。这个内核也不包括许多老系统不支持的 PAE 扩展。”
  • 软件包版是为那些想要一个开箱即用的全载系统的人准备的,并预装了许多应用程序。

Bodhi Linux 的系统要求

最低系统要求:

  • 500 MHz 处理器
  • 256 MB 内存
  • 5 GB 的硬盘存储空间

推荐系统要求:

  • 1.0 GHz 处理器
  • 512 MB 内存
  • 10 GB 的硬盘存储空间

体验 Bodhi Linux

Old Bodhi Linux

由于它是基于 Ubuntu 的,所以安装 Bodhi 非常简单。当我登录到 Bodhi 后,新的主题和图标集让我大吃一惊。上次我安装 Bodhi(包括几个月前的 5.0)时,我认为它需要换一个新的外观。之前的主题并没有什么问题,但看起来像是二十一世纪初的东西。新的主题使它看起来更具现代感。

Bodhi Linux 5.1

我也很高兴看到 Midori 浏览器被 GNOME Web 所取代。我不是 Midori 浏览器的粉丝。对我来说,它总是显得功能太少了。(不过,随着 Midori Next 的推出,这种情况可能会改变。)GNOME Web 更像是我需要的网页浏览器。最重要的是它带有 Firefox Sync,这样我就可以同步我所有的书签和密码了。

与许多 Linux 发行版不同,Bodhi 并没有一个独立的软件中心。相反,如果你点击 AppCenter 图标,它会打开浏览器,并导航到 Bodhi 网站的软件中心页面 AppCenter 页面。这里的应用程序是按类别排序的,它们中的大多数是轻量级应用程序

Bodhi Linux Appcenter

如果你点击其中一个页面并点击“安装”,(在你输入密码之后)Bodhi 就会安装它。这是通过一个名为 apturl 的小程序实现的,它是“是一个非常简单的从网页浏览器安装软件包的方法”。它非常灵巧,我希望更多基于 Ubuntu 的发行版使用它。

总的来说,我喜欢 Moksha 桌面。它坚持我们几十年来看到的桌面风格(这是我最喜欢的)。它不会影响你,却很容易改变和定制。我唯一怀念的是,当我按下超级键时,应用程序菜单不打开。但我猜你不可能拥有生活中的一切。

结语

我对最近发布的 Bodhi Linux 感到十分惊喜。过去,我经常折腾它。并且我一直很喜欢它,但最近的这个版本是迄今为止最好的。在某种程度上,他们打破了 Bodhi 只适合老系统的想法,加入了对较新内核的支持。

如果你想换换个环境,同时又想在 Ubuntu 的世界里寻找新的风景,那就试试Bodhi Linux吧。

你用过 Bodhi Linux 吗?你最喜欢的基于 Ubuntu 的发行版是什么?请在下面的评论中告诉我们。


via: https://itsfoss.com/bodhi-linux-review/

作者:John Paul 选题:lujun9972 译者:qfzy1233 校对:wxy

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