2021年2月

简而言之,归档是一个包含一系列文件和(或)目录的单一文件。归档文件通常用于在本地或互联网上传输,或作为一个一系列文件和目录的备份副本,从而允许你使用一个文件来工作(如果压缩,则其大小会小于所有文件的总和)。同样的,归档也用于软件应用程序打包。为了方便传输,可以很容易地压缩这个单一文件,而存档中的文件会保留原始结构和权限。

我们可以使用 tar 工具来创建、列出和提取归档中的文件。用 tar 生成的归档通常称为“tar 文件”、“tar 归档”或者“压缩包”(因为所有已归档的文件被合成了一个文件)。

本教程会展示如何使用 tar 创建、列出和提取归档中的内容。这三个操作都会使用两个公共选项 -f-v:使用 -f 指定归档文件的名称,使用 -v(“冗余”)选项使 tar 在处理文件时输出文件名。虽然 -v 选项不是必需的,但是它可以让你观察 tar 操作的过程。

在本教程的下面部分中,会涵盖 3 个主题:1、创建一个归档文件;2、列出归档文件内容;3、提取归档文件内容。另外我们会回答归档文件管理的 6 个实际问题来结束本教程。你从本教程学到的内容对于执行与网络安全云技术相关的任务至关重要。

1、创建一个归档文件

要使用 tar 创建一个归档文件,使用 -c(“创建”)选项,然后用 -f 选项指定要创建的归档文件名。通常的做法是使用带有 .tar 扩展名的名称,例如 my-backup.tar。注意,除非另有特别说明,否则本文其余部分中使用的所有命令和参数都以小写形式使用。记住,在你的终端上输入本文的命令时,无需输入每个命令行开头的 $ 提示符。

输入要归档的文件名作为参数;如果要创建一个包含所有文件及其子目录的归档文件,提供目录名称作为参数。

要归档 project 目录内容,输入:

$ tar -cvf project.tar project

这个命令将创建一个名为 project.tar 的归档文件,包含 project 目录的所有内容,而原目录 project 将保持不变。

使用 -z 选项可以对归档文件进行压缩,这样产生的输出与创建未压缩的存档然后用 gzip 压缩是一样的,但它省去了额外的步骤。

要从 project 目录创建一个 project.tar.gz 的压缩包,输入:

$ tar -zcvf project.tar.gz project

这个命令将创建一个 project.tar.gz 的压缩包,包含 project 目录的所有内容,而原目录 project 将保持不变。

注意: 在使用 -z 选项时,你应该使用 .tar.gz 扩展名而不是 .tar 扩展名,这样表示已压缩。虽然不是必须的,但这是一个很好的实践。

gzip 不是唯一的压缩形式,还有 bzip2 和 xz。当我们看到扩展名为 .xz 的文件时,我们知道该文件是使用 xz 压缩的,扩展名为 .bz2 的文件是用 bzip2 压缩的。随着 bzip2 不再维护,我们将远离它而关注 xz。使用 xz 压缩时,需要花费更长的时间。然而,等待通常是值得的,因为压缩效果要好的多,这意味着压缩包通常比使用其它压缩形式要小。更好的是,不同压缩形式之间的解压缩或提取文件并没有太大区别。下面我们将看到一个使用 tar 压缩文件时如何使用 xz 的示例:

$ tar -Jcvf project.tar.xz project

我们只需将 gzip-z 选项转换为 xz 的大写 -J 即可。以下是一些输出,显示压缩形式之间的差异:

如你所见,xz 的压缩时间最长。但是,它在减小文件大小方面做的最好,所以值得等待。文件越大,压缩效果也越好。

2、列出归档文件的内容

要列出 tar 归档文件的内容但不提取,使用 -t 选项。

要列出 project.tar 的内容,输入:

$ tar -tvf project.tar

这个命令列出了 project.tar 归档的内容。-v-t 选项一起使用会输出每个文件的权限和修改时间,以及文件名。这与 ls 命令使用 -l 选项时使用的格式相同。

要列出 project.tar.gz 压缩包的内容,输入:

$ tar -tzvf project.tar.gz

3、从归档中提取内容

要提取(解压)tar 归档文件中的内容,使用 -x(“提取”)选项。

要提取 project.tar 归档的内容,输入:

$ tar -xvf project.tar

这个命令会将 project.tar 归档的内容提取到当前目录。

如果一个归档文件被压缩,通常来说它的扩展名为 .tar.gz.tgz,请包括 "-z" 选项。

要提取 project.tar.gz 压缩包的内容,输入:

$ tar -zxvf project.tar.gz

注意: 如果当前目录中有文件或子目录与归档文件中的内容同名,那么在提取归档文件时,这些文件或子目录将被覆盖。如果你不知道归档中包含哪些文件,请考虑先查看归档文件的内容。

在提取归档内容之前列出其内容的另一个原因是,确定归档中的内容是否包含在目录中。如果没有,而当前目录中包含许多不相关的文件,那么你可能将它们与归档中提取的文件混淆。

要将文件提取到它们自己的目录中,新建一个目录,将归档文件移到该目录,然后你就可以在新目录中提取文件。

FAQ

现在我们已经学习了如何创建归档文件并列出和提取其内容,接下来我们可以继续讨论 Linux 专业人员经常被问到的 9 个实用问题。

可以在不解压缩的情况下添加内容到压缩包中吗?

很不幸,一旦文件将被压缩,就无法向其添加内容。你需要解压缩或提取其内容,然后编辑或添加内容,最后再次压缩文件。如果文件很小,这个过程不会花费很长时间,否则请等待一会。

可以在不解压缩的情况下删除归档文件中的内容吗?

这取决压缩时使用的 tar 版本。较新版本的 tar 支持 -delete 选项。

例如,假设归档文件中有 file1file2,可以使用以下命令将它们从 file.tar 中删除:

$ tar -vf file.tar –delete file1 file2

删除目录 dir1

$ tar -f file.tar –delete dir1/*

压缩和归档之间有什么区别?

查看归档和压缩之间差异最简单的方法是查看其解压大小。归档文件时,会将多个文件合并为一个。所以,如果我们归档 10 个 100kb 文件,则最终会得到一个 100kb 大小的文件。而如果压缩这些文件,则最终可能得到一个只有几 kb 或接近 100kb 的文件。

如何压缩归档文件?

如上所说,你可以使用带有 cvf 选项的 tar 命令来创建和归档文件。要压缩归档文件,有两个选择:通过压缩程序(例如 gzip)运行归档文件,或在使用 tar 命令时使用压缩选项。最常见的压缩标志 -z 表示 gzip-j 表示 bzip-J 表示 xz。例如:

$ gzip file.tar

或者,我们可以在使用 tar 命令时使用压缩标志,以下命令使用 gzip 标志 z

$ tar -cvzf file.tar /some/directory

如何一次创建多个目录和/或文件的归档?

一次要归档多个文件,这种情况并不少见。一次归档多个文件和目录并不像你想的那么难,你只需要提供多个文件或目录作为 tar 的参数即可:

$ tar -cvzf file.tar file1 file2 file3

或者

$ tar -cvzf file.tar /some/directory1 /some/directory2

创建归档时如何跳过目录和/或文件?

你可能会遇到这样的情况:要归档一个目录或文件,但不是所有文件,这种情况下可以使用 --exclude 选项:

$ tar –exclude ‘/some/directory’ -cvf file.tar /home/user

在示例中,/home/user 目录中除了 /some/directory 之外都将被归档。将 --exclude 选项放在源和目标之前,并用单引号将要排除的文件或目录引起来,这一点很重要。

总结

tar 命令对展示不需要的文件创建备份或压缩文件很有用。在更改文件之前备份它们是一个很好的做法。如果某些东西在更改后没有按预期正常工作,你始终可以还原到旧文件。压缩不再使用的文件有助于保持系统干净,并降低磁盘空间使用率。还有其它实用程序可以归档或压缩,但是 tar 因其多功能、易用性和受欢迎程度而独占鳌头。

资源

如果你想了解有关 Linux 的更多信息,强烈建议阅读以下文章和教程:

关于作者

Matt Zand 是一位创业者,也是 3 家科技创业公司的创始人: DC Web MakersCoding BootcampsHigh School Technology Services。他也是 使用 Hyperledger Fabric 进行智能合约开发 一书的主要作者。他为 Hyperledger、以太坊和 Corda R3 平台编写了 100 多篇关于区块链开发的技术文章和教程。在 DC Web Makers,他领导了一个区块链专家团队,负责咨询和部署企业去中心化应用程序。作为首席架构师,他为编码训练营设计和开发了区块链课程和培训项目。他拥有马里兰大学工商管理硕士学位。在区块链开发和咨询之前,他曾担任一些初创公司的高级网页和移动应用程序开发和顾问、天使投资人和业务顾问。你可以通过以下这个网址和他取得联系: https://www.linkedin.com/in/matt-zand-64047871

Kevin Downs 是 Red Hat 认证的系统管理员和 RHCSA。他目前在 IBM 担任系统管理员,负责管理数百台运行在不同 Linux 发行版上的服务器。他是编码训练营的首席 Linux 讲师,并且他会讲授 5 个自己的课程


via: https://www.linux.com/news/how-to-create-and-manage-archive-files-in-linux-2/

作者:LF Training 选题:lujun9972 译者:MjSeven 校对:wxy

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

容器很棒,让你可以将你的应用连同其依赖项一起打包,并在任何地方运行。从 2013 年的 Docker 开始,容器已经让软件开发者的生活变得更加轻松。

Docker 的一个缺点是它有一个中央守护进程,它以 root 用户的身份运行,这对安全有影响。但这正是 Podman 的用武之地。Podman 是一个 无守护进程容器引擎,用于开发、管理和在你的 Linux 系统上以 root 或无 root 模式运行 OCI 容器。

下面这些文章可以用来了解更多关于 Podman 的信息:

如果你使用过 Docker,你很可能也知道 Docker Compose,它是一个用于编排多个可能相互依赖的容器的工具。要了解更多关于 Docker Compose 的信息,请看它的文档

什么是 Podman Compose?

Podman Compose 项目的目标是作为 Docker Compose 的替代品,而不需要对 docker-compose.yaml 文件进行任何修改。由于 Podman Compose 使用 吊舱 pod 工作,所以最好看下“吊舱”的最新定义。

一个“ 吊舱 pod ”(如一群鲸鱼或豌豆荚)是由一个或多个容器组成的组,具有共享的存储/网络资源,以及如何运行容器的规范。

Pods - Kubernetes 文档

(LCTT 译注:容器技术领域大量使用了航海比喻,pod 一词,意为“豆荚”,在航海领域指“吊舱” —— 均指盛装多个物品的容器。常不翻译,考虑前后文,可译做“吊舱”。)

Podman Compose 的基本思想是,它选中 docker-compose.yaml 文件里面定义的服务,为每个服务创建一个容器。Docker Compose 和 Podman Compose 的一个主要区别是,Podman Compose 将整个项目的容器添加到一个单一的吊舱中,而且所有的容器共享同一个网络。如你在例子中看到的,在创建容器时使用 --add-host 标志,它甚至用和 Docker Compose 一样的方式命名容器。

安装

Podman Compose 的完整安装说明可以在项目页面上找到,它有几种方法。要安装最新的开发版本,使用以下命令:

pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

确保你也安装了 Podman,因为你也需要它。在 Fedora 上,使用下面的命令来安装Podman:

sudo dnf install podman

例子:用 Podman Compose 启动一个 WordPress 网站

想象一下,你的 docker-compose.yaml 文件在一个叫 wpsite 的文件夹里。一个典型的 WordPress 网站的 docker-compose.yaml (或 docker-compose.yml) 文件是这样的:

version: "3.8"
services:
  web:
    image: wordpress
    restart: always
    volumes:
      - wordpress:/var/www/html
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: magazine
      WORDPRESS_DB_NAME: magazine
      WORDPRESS_DB_PASSWORD: 1maGazine!
      WORDPRESS_TABLE_PREFIX: cz
      WORDPRESS_DEBUG: 0
    depends_on:
      - db
    networks:
      - wpnet
  db:
    image: mariadb:10.5
    restart: always
    ports:
      - 6603:3306

    volumes:
      - wpdbvol:/var/lib/mysql

    environment:
      MYSQL_DATABASE: magazine
      MYSQL_USER: magazine
      MYSQL_PASSWORD: 1maGazine!
      MYSQL_ROOT_PASSWORD: 1maGazine!
    networks:
      - wpnet
volumes:
  wordpress: {}
  wpdbvol: {}

networks:
  wpnet: {}

如果你用过 Docker,你就会知道你可运行 docker-compose up 来启动这些服务。Docker Compose 会创建两个名为 wpsite_web_1wpsite_db_1 的容器,并将它们连接到一个名为 wpsite_wpnet 的网络。

现在,看看当你在项目目录下运行 podman-compose up 时会发生什么。首先,一个以执行命令的目录命名的吊舱被创建。接下来,它寻找 YAML 文件中定义的任何名称的卷,如果它们不存在,就创建卷。然后,在 YAML 文件的 services 部分列出的每个服务都会创建一个容器,并添加到吊舱中。

容器的命名与 Docker Compose 类似。例如,为你的 web 服务创建一个名为 wpsite_web_1 的容器。Podman Compose 还为每个命名的容器添加了 localhost 别名。之后,容器仍然可以通过名字互相解析,尽管它们并不像 Docker 那样在一个桥接网络上。要做到这一点,使用选项 -add-host。例如,-add-host web:localhost

请注意,docker-compose.yaml 包含了一个从主机 8080 端口到容器 80 端口的 Web 服务的端口转发。现在你应该可以通过浏览器访问新 WordPress 实例,地址为 http://localhost:8080

WordPress Dashboard

控制 pod 和容器

要查看正在运行的容器,使用 podman ps,它可以显示 web 和数据库容器以及吊舱中的基础设施容器。

CONTAINER ID  IMAGE                               COMMAND               CREATED      STATUS          PORTS                                         NAMES
a364a8d7cec7  docker.io/library/wordpress:latest  apache2-foregroun...  2 hours ago  Up 2 hours ago  0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp  wpsite_web_1
c447024aa104  docker.io/library/mariadb:10.5      mysqld                2 hours ago  Up 2 hours ago  0.0.0.0:8080->80/tcp, 0.0.0.0:6603->3306/tcp  wpsite_db_1
12b1e3418e3e  k8s.gcr.io/pause:3.2

你也可以验证 Podman 已经为这个项目创建了一个吊舱,以你执行命令的文件夹命名。

POD ID        NAME             STATUS    CREATED      INFRA ID      # OF CONTAINERS
8a08a3a7773e  wpsite           Degraded  2 hours ago  12b1e3418e3e  3

要停止容器,在另一个命令窗口中输入以下命令:

podman-compose down

你也可以通过停止和删除吊舱来实现。这实质上是停止并移除所有的容器,然后再删除包含的吊舱。所以,同样的事情也可以通过这些命令来实现:

podman pod stop podname
podman pod rm podname

请注意,这不会删除你在 docker-compose.yaml 中定义的卷。所以,你的 WordPress 网站的状态被保存下来了,你可以通过运行这个命令来恢复它。

podman-compose up

总之,如果你是一个 Podman 粉丝,并且用 Podman 做容器工作,你可以使用 Podman Compose 来管理你的开发和生产中的容器。


via: https://fedoramagazine.org/manage-containers-with-podman-compose/

作者:Mehdi Haghgoo 选题:lujun9972 译者:geekpi 校对:wxy

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

微软 Azure 被曝“泄露”使用 Ubuntu Linux 的用户信息

报道,一个用户在微软 Azure 云上使用企业沙箱启动了一个 Ubuntu Linux 的实例进行测试。三个小时后,在他的 LinkedIn 账户上,收到了一条来自 Canonical 销售代表的消息,他说:“我看到你在 Azure 中运行了一个 Ubuntu 镜像”,并告诉他,他将成为他的“企业中任何与 Ubuntu 相关的联系人”。

微软称,“只有在客户部署Azure 市场发布商的产品时,才会按照我们的条款和条件中的规定,与发布商分享客户信息。”而 Canonical 回应称:“根据 Azure 条款和条件,微软与 Ubuntu 的发布商 Canonical 共享在 Azure 上运行 Ubuntu 实例的开发者的联系方式。根据隐私规则,这些联系信息被保存在 Canonical 的 CRM 中。”

所以,这看起来是一则“正常”使用用户隐私的行为?对此我不多加评论,大家自行体会。

C 语言超越 Java 夺得 TIOBE 指数第一

在 2021 年 2 月的榜单中,C 语言取得了第一名。与 2020 年相比,这两种语言在榜单上的位置互换了,但榜单的其他部分几乎与一年前完全相同。Python 位于第三位,其次是 C++、C#、Visual Basic、JavaScript、PHP 和 SQL。

让人吃惊的是,一些新锐语言被老牌语言反超。在过去的一年里,Go 在榜单上跌到了第 13 位,被汇编语言、R 和 Groovy 超越。以及,Swift 从第 10 位下降到第 15 位,在去年被 Ruby 超越。

看来,编程的世界,一些老牌语言老而弥坚啊,或许 C 语言真能长青下去。

顶级银行加入 Linux 和开源专利保护组织

全球企业和投资银行巴克莱银行和拥有 2600 万全球客户的道明银行集团已经加入了开放发明网络(OIN)的 Linux 和开源保护联盟。多年来,有史以来最大的专利非侵犯联盟 OIN 保护 Linux 免受专利攻击和专利巨魔的侵害。而现在连银行都会受到专利巨魔的攻击,所以寻求加入联盟寻求保护也在情理之中。

现在所有企业现在都依赖于 Linux 和开源软件,任何攻击它们的东西都对大家的业务不利。专利巨魔的猖獗可见一斑。

这是 Python 之禅特别系列的一部分,重点是一个额外的原则:命名空间。

 title=

著名的 光明节 Hanukkah 有八个晚上的庆祝活动。然而,光明节的灯台有九根蜡烛:八根普通的蜡烛和总是偏移的第九根蜡烛。它被称为 “shamash” 或 “shamos”,大致可以翻译为“仆人”或“看门人”的意思。

shamos 是点燃所有其它蜡烛的蜡烛:它是唯一一支可以用火的蜡烛,而不仅仅是观看。当我们结束 Python 之禅系列时,我看到命名空间提供了类似的作用。

Python 中的命名空间

Python 使用命名空间来处理一切。虽然简单,但它们是稀疏的数据结构 —— 这通常是实现目标的最佳方式。

命名空间 是一个从名字到对象的映射。

—— Python.org

模块是命名空间。这意味着正确地预测模块语义通常只需要熟悉 Python 命名空间的工作方式。类是命名空间,对象是命名空间。函数可以访问它们的本地命名空间、父命名空间和全局命名空间。

这个简单的模型,即用 . 操作符访问一个对象,而这个对象又通常(但并不总是)会进行某种字典查找,这使得 Python 很难优化,但很容易解释。

事实上,一些第三方模块也采取了这个准则,并以此来运行。例如,variants 包把函数变成了“相关功能”的命名空间。这是一个很好的例子,说明 Python 之禅 是如何激发新的抽象的。

结语

感谢你和我一起参加这次以光明节为灵感的 我最喜欢的语言 的探索。

静心参禅,直至悟道。


via: https://opensource.com/article/19/12/zen-python-namespaces

作者:Moshe Zadka 选题:lujun9972 译者:wxy 校对:wxy

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

用户选择 Arch Linux基于 Arch 的 Linux 发行版的主要原因之一就是 Arch 用户仓库(AUR)

遗憾的是,pacman,也就是 Arch 的包管理器,不能以类似官方仓库的方式访问 AUR。AUR 中的包是以 PKGBUILD 的形式存在的,需要手动过程来构建。

AUR 助手可以自动完成这个过程。毫无疑问,yay 是最受欢迎和备受青睐的 AUR 助手之一。

最近,yay 的两位开发者之一的 Morganamilo宣布将退出 yay 的维护工作,以开始自己的 AUR 助手 paruparu 是用 Rust 编写的,而 yay 是用 Go 编写的,它的设计是基于 yay 的。

请注意,yay 还没有结束支持,它仍然由 Jguer 积极维护。他还评论说,paru 可能适合那些寻找丰富功能的 AUR 助手的用户。因此我推荐大家尝试一下。

安装 Paru AUR 助手

要安装 paru,打开你的终端,逐一输入以下命令:

sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si

现在已经安装好了,让我们来看看如何使用它。

使用 Paru AUR 助手的基本命令

在我看来,这些都是 paru 最基本的命令。你可以在 GitHub 的官方仓库中探索更多。

  • paru <用户输入>:搜索并安装“用户输入”
  • paru -paru -Syu 的别名
  • paru -Sua:仅升级 AUR 包。
  • paru -Qua:打印可用的 AUR 更新
  • paru -Gc <用户输入>:显示“用户输入”的 AUR 评论

充分使用 Paru AUR 助手

你可以在 GitHub 上访问 paru更新日志来查看完整的变更日志历史,或者你可以在首次发布中查看对 yay 的变化。

在 Paru 中启用颜色

要在 paru 中启用颜色,你必须先在 pacman 中启用它。所有的配置文件都在 /etc 目录下。在此例中,我使用 Nano 文本编辑器,但是,你可以选择使用任何基于终端的文本编辑器

sudo nano /etc/pacman.conf

打开 pacman 配置文件后,取消 Color 的注释,即可启用此功能。

反转搜索顺序

根据你的搜索条件,最相关的包通常会显示在搜索结果的顶部。在 paru 中,你可以反转搜索顺序,使你的搜索更容易。

与前面的例子类似,打开 paru 配置文件:

sudo nano /etc/paru.conf

取消注释 BottomUp 项,然后保存文件。

如你所见,顺序是反转的,第一个包出现在了底部。

编辑 PKGBUILD (对于高级用户)

如果你是一个有经验的 Linux 用户,你可以通过 paru 编辑 AUR 包。要做到这一点,你需要在 paru 配置文件中启用该功能,并设置你所选择的文件管理器。

在此例中,我将使用配置文件中的默认值,即 vifm 文件管理器。如果你还没有使用过它,你可能需要安装它。

sudo pacman -S vifm
sudo nano /etc/paru.conf

打开配置文件,如下所示取消注释。

让我们回到 Google Calendar 的 AUR 包,并尝试安装它。系统会提示你审查该软件包。输入 Y 并按下回车。

从文件管理器中选择 PKGBUILD,然后按下回车查看软件包。

你所做的任何改变都将是永久性的,下次升级软件包时,你的改变将与上游软件包合并。

总结

paruAUR 助手家族的又一个有趣的新成员,前途光明。此时,我不建议更换 yay,因为它还在维护,但一定要试试 paru。你可以把它们两个都安装到你的系统中,然后得出自己的结论。


via: https://itsfoss.com/paru-aur-helper/

作者:Dimitrios Savvopoulos 选题:lujun9972 译者:geekpi 校对:wxy

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

macOS 式的 BSD 桌面操作系统 helloSystem 发布新镜像

helloSystem 的口号是“为创作者提供一个简单、优雅、易用的桌面系统。基于FreeBSD。更少,但更好!” helloSystem 基于 FreeBSD 12.1 系统构建的,它的桌面实用程序是用 PyQt5 编写的。最近它发布了一个新的体验版的 ISO 镜像,从截图上看,这是一款看起来很舒服的桌面。

BSD 系列一直在桌面上乏善可陈,不过这款桌面似乎带来了新的希望,喜欢 BSD 的桌面用户可以体验一下。

Facebook 员工的 Fedora 桌面开始逐渐换用 CentOS Stream

Facebook 在上周末的 FOSDEM 2021 虚拟会议上介绍了该公司内部桌面机的情况。

Facebook 内部在过去曾推荐 Ubuntu LTS 版本给他们的员工,但转向 Fedora 能够重新利用他们内部的许多基础设施,用于对接他们的服务器上的 CentOS。但变化在于,Facebook 接下来对 CentOS Stream 的支持会越来越多。之前,在宣布 CentOS Stream 取代 CentOS 时,红帽也曾透露,Facebook 大量使用了基于 CentOS Stream 开发的下游 Linux 发行版。顺便说一句,Windows 和 macOS 仍然是 Facebook 员工笔记本/台式机最常用的平台。

我觉得,各个云厂商和大型 IT 公司,如果没有特别的需求和目标,像 Facebook 一样,基于 CentOS Stream 定制自己的发行版是一个简单实用的方案。

谷歌希望可以不经修改直接在 Fuchsia 上运行 Android/Linux 应用程序

谷歌开发并最近开源的 Fuchsia 操作系统不是基于 Linux 底层开发的操作系统。显然,对于一款从头开始构建的操作系统来说,初期最大的问题,就是应用生态匮乏。

作为谷歌预期的 Chrome OS / Android 移动操作系统的继任者,它不但可以运行 Fuchsia 原生应用,也可以通过类似 Chrome OS 的套壳方案,在虚拟机环境中运行 Linux 应用程序和 Android 应用。当然,运行这种非原生的应用程序也存在一定特性缺陷和性能损耗。

不过,最近谷歌在考虑借助 Starnix 机制,帮助系统在 Linux 内核指令与 Fuchsia 内核指令之间进行转换,以便不修改二进制而直接运行 Android/Linux 应用程序。

我觉得,一个新的操作系统想要突破应用生态匮乏的冷启动期,想接替某个原有的操作系统,那对原有的应用的平滑过渡是非常重要的。这一点,从 Linux 接替 Unix,Windows 接替 DOS 上都可见一斑。同理,对鸿蒙而言,这也是一个绕不开的大山。