2021年7月

谷歌的量子计算机首次展示了“时间晶体”

在一篇有待评审的预印本论文中声称,谷歌的研究人员与物理学家们合作使用谷歌的量子计算机首次展示了一个真正的“时间晶体”。

“时间晶体”是一个物体,其部件在一个有规律的、重复的循环中移动,在不燃烧任何能量的情况下维持这种不断变化。这打破了热力学第二定律。“时间晶体”既稳定又不断变化,具有在时间的周期性间隔中出现的特殊时刻。时间晶体是“物质相”的一个新类别,扩大了对“相”的定义。所有其他已知的相,如水或冰,都处于热平衡状态。时间晶体是第一个“非平衡”相。

虽然感觉有些不明所以,但是量子计算机真的做到了难以想象的事情。

PyPI 上的恶意软件被下载了 3 万次

安全研究人员在 PyPI 中发现了 8 个软件包,它们进行了一系列的恶意活动,估计这些恶意软件包被下载了大约 3 万次。这些软件包有的用于收集 Discord 账户的认证 cookies 和电脑信息,也有的用于提取浏览器存储的任何密码或支付卡数据。还有的试图连接到攻击者指定的 IP 地址,然后执行套接字中的任何 Python 代码。这些恶意软件包会感染开发者的计算机,但不会让开发者写的代码沾上恶意软件。

这种开放式的组件存储库,在其设计之初对安全的考虑是不足的,因此,对这种基于开源组件的软件的安全需要慎重评估。

RISC-V 开发者继续开发 KVM 支持

KVM 虚拟化的 RISC-V 架构支持工作已经持续了一年多,这对于 RISC-V 处理器最终能够在服务器领域获得提升非常重要。目前,KVM RISC-V 支持工作已经进行到第 19 次修订,但还不清楚是否已经准备好进行主线。目前已经能够在 RISC-V 硬件上用多个虚拟 CPU 启动 32 位和 64 位的 RISC-V 访客应用。

如果能有完善的 KVM 支持,RISC-V 会得到更大的发展。

使用 Podman Machine 创建一个基本的 Fedora CoreOS 虚拟机来使用容器和容器化工作负载。

 title=

Fedora CoreOS 是一个自动更新、最小化的基于 rpm-ostree 的操作系统,用于安全地、大规模地运行容器化工作负载。

Podman “是一个用于管理容器和镜像、挂载到这些容器中的卷,以及由这些容器组组成的吊舱的工具。Podman 基于 libpod,它是一个容器生命周期管理库”。

当你使用 Podman Machine 时,神奇的事情发生了,它可以帮助你创建一个基本的 Fedora CoreOS 虚拟机(VM)来使用容器和容器化工作负载。

开始使用 Podman Machine

第一步是安装 Podman。如果你已经安装了最新版本的 Podman,你可以跳过这个步骤。在我的 Fedora 34 机器上,我用以下方式安装 Podman:

$ sudo dnf install podman

我使用的是 podman-3.2.2-1.fc34.x86\_64。

初始化 Fedora CoreOS

Podman 安装完成后,用以下方法初始化它:

❯ podman machine init vm2
Downloading VM image: fedora-coreos-34.20210626.1.0-qemu.x86_64.qcow2.xz: done 
Extracting compressed file

这个命令创建了 vm2,并下载了 .xz 格式的 Fedora CoreOS 的 qcow2 文件并将其解压。

列出你的虚拟机

了解你的虚拟机和它们的状态是很重要的,list 命令可以帮助你做到这一点。下面的例子显示了我所有的虚拟机的名称,它们被创建的日期,以及它们最后一次启动的时间:

❯ podman machine list 
NAME          VM TYPE     CREATED     LAST UP
podman-machine-default* qemu      6 days ago   Currently running
vm2           qemu      11 minutes ago 11 minutes ago

启动一个虚拟机

要启动一个虚拟机,请运行:

❯ podman machine start
Waiting for VM ...

SSH 到虚拟机

你可以使用 SSH 来访问你的虚拟机,并使用它来运行工作负载,而没有任何麻烦的设置:

❯ podman machine ssh  
Connecting to vm podman-machine-default. To close connection, use `~.` or `exit`
Fedora CoreOS 34.20210611.1.0
Tracker: https://github.com/coreos/fedora-coreos-tracker
Discuss: https://discussion.fedoraproject.org/c/server/coreos/
 
Last login: Wed Jun 23 13:23:36 2021 from 10.0.2.2
[core@localhost ~]$ uname -a
Linux localhost 5.12.9-300.fc34.x86_64 #1 SMP Thu Jun 3 13:51:40 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[core@localhost ~]$

目前,Podman 只支持一次运行一个虚拟机。

停止你的虚拟机

要停止运行中的虚拟机,请使用 stop 命令:

❯ podman machine stop

[core@localhost ~]$ Connection to localhost closed by remote host.
Connection to localhost closed.
Error: exit status 255

我希望这能帮助你开始使用 Podman Machine。请试一试,并在评论中告诉我们你的想法。


via: https://opensource.com/article/21/7/linux-podman

作者:Sumantro Mukherjee 选题:lujun9972 译者:geekpi 校对:wxy

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

非技术人员也可以使用 Linux 和开源软件进行非技术工作。这是我的故事。

(LCTT 译注:本文原文标题用 “F(r)iction” 一语双关的表示了 小说 fiction 写作过程中的 摩擦 friction 苦恼。)

时间:2009 年 12 月。我准备辞去工作。

我希望专心写我的第一本书;我的工作职责和技术环境都没办法让我完成这本书的写作。

写作是件苦差事。

在现代世界中,很少有工作像写作这样奇特或者说艰巨的追求 —— 面对一张白纸,坐下来,迫使你的大脑吐出文字,向读者传达一个想法。当然,我并不是说写作不能与他人合作完成,而只是想说明,对于作家来说,自己着手写一部新作品是多么令人生畏。小说还是非小说写作都是如此。但由于我是一名小说家,我在这篇文章中主要想关注是小说的写作。

还记得 2009 年是什么样子吗?

智能手机已经诞生 3 年了 —— 而我还在使用功能机。笔记本电脑又大又笨重。同时,基于云的生产力 Web 应用还处于起步阶段,并不那么好用。从技术上讲,像我这样的作家们正在以 Gmail 账户(和一个非常年轻的基于云的存储服务 Dropbox)作为一个始终可用的选项来处理自己的草稿,即使我的个人电脑不在身边。虽然这与作家们必须要使用打字机(或,上帝保佑,使用笔和纸)工作时相比已经是一个很好的变化了,但并没有好多少。

首先,对手稿的版本控制是一场噩梦。此外,我为简化工作流程而在工具包中添加的工具越多,我转换写作环境(无论是用户界面还是用户体验)的次数就越多。

我是在 Windows 记事本上开始写草稿的,然后把它保存在家里电脑上的 MS Word 文档中,用电子邮件发给自己一份副本,同时在 Dropbox 上保留另一份副本(因为在上班时无法访问 Dropbox),在公司时对该文件的副本进行处理,在一天结束时用电子邮件发给自己,在家里的电脑上下载它,用一个新的名字和相应的日期保存它,这样我就能认出该文件是在公司(而不是家里)进行修改的……好吧,你知道这是怎样一个画面。如果你能感受到这种涉及 Windows 记事本、MS Word、Gmail 和 Dropbox 的工作流程有多么疯狂,那么现在你就知道我为什么辞职了。

让我更清醒的是,我仍然知道一些作家,其中竟然有些还是好作家,依然在使用我 2009 年遵循的工作流程的各种变体。

在接下来的三年里,我一直在写手稿,在 2012 年完成了初稿。在这三年里,技术环境发生了很大变化。智能手机确实相当给力,我在 2009 年遇到的一些复杂情况已经消失了。我仍然可以用手机处理我在家里外理的文件(不一定是新的写作,但由于手机上的 Dropbox,编辑变得相当容易)。我的主要写作工具仍然是微软的 Windows 记事本和 Word,我就是这样完成初稿的。

小说 《第一声》 于 2016 年出版,获得了评论界和商业界的好评。

结束了。

或许我是这么想的。

我一完成手稿发给了编辑,就已经开始着手第二部小说的写作。我不再为写作而辞职,而是采取了一种更务实的方法:我会在每年年底请两个星期的假,这样我就可以到山上的一个小木屋里去写作。

花了半天时间我才意识到,那些让我讨厌的 写作工具 和工作流程并没有消失,而是演变成了一个更复杂的野兽。作为一个作家,我并不像我想像的那样高产或高效。

新冠期间的 Linux

时间:2020 年。世界正处于集体疯狂的边缘。

(为某些原因而删改的文字)一种新型病毒正在演变成 1911 年以来的第一次全球大流行疾病。3 月 20 日,斯里兰卡,跟随世界上大多数国家的脚步,封城了。

四月是斯里兰卡旱季的高峰。在像科伦坡这样的混凝土丛林中,温度可以达到三十多度,湿度高达九十多度。在最好的情况下,它也可以使大多数人精神错乱,更别说在全球大流行病正在进行的时候,被困在没有一直开着空调的家里?真是一个让人疯狂的好温床。

让我的疯狂是 Linux,或者说是“发行版跳跃”,像我们在开源社区中所说的。

我越在各种 *nix 发行版间蹿来蹿,我就对控制的想法越迷恋。当任何事情似乎都不在我们的控制之中时 —— 即使是与另一个人握手这样的简单行为 —— 我们自然会倾向于做那些我们感觉更有控制力的事。

在我的生活中,还有什么比计算机更容易被控制的呢?自然,这也延伸到我的写作工具和工作流程。

通往 Vim 之路

有一个关于 Vim 的笑话完美地描述了我对它的第一次体验:人们对 Vim 难以割舍是因为他们不知道怎么关掉它。

我试图编辑一个配置文件,而 新安装的 Ubuntu 服务器 只预装了 Vim 文本编辑器。第一次是恐慌 —— 以至于我重新启动了机器,以为操作系统没有识别出我的键盘。然而当它再次发生时,不可避免地,我谷歌搜索:“我该如何关闭 Vim?

哦。这真有趣,我想。

但为什么呢?

要理解我为什么会对一个复杂到无法关闭的文本编辑器有点兴趣,你必须了解我是多么崇拜 Windows 记事本。

作为一个作家,我喜欢在它的没有废话、没有按钮、白纸一样的画布上写作。它没有拼写检查。它没有格式。但这些我并不关心。

对于我这个作家来说,记事本是有史以来最好的草稿写作板。不幸的是,它并不强大 —— 所以即使我会先用记事本写草稿,一旦超过 1000 字,我就会把它移到 MS Word 上 —— 记事本不是为散文而生的,当超过这个字数限制时,这些局限就会凸显出来。

因此,当我把我所有的计算机工作从 Windows 上迁移走时,我第一个要安装的就是一个好的文本编辑器。

Kate 是第一个让我感到比用 Windows 记事本更舒服的替代品 —— 它更强大(它有拼写检查功能!),而且,我可以在同一个环境中搞一些业余爱好式的编程。

当时它是我的爱。

但后来 Vim 出现了。

我对 Vim 了解得越多,看开发者在 Vim 上现场进行编码的次数越多,我就越发现自己在编辑文本时更想打开 Vim。我使用 Unix 传统意义上“文本编辑”这一短语:编辑配置文件中的文本块,或者有时编写基本的 Bash 脚本。

我仍然没有用 Vim 来满足我的散文写作需求。

在这方面我有 Libre Office。

算是吧。

虽然它是一个适当的 MS Office 替代品,但我发现自己没有被它打动。它的用户界面可能比 MS Word 更让人分心,而且每个发行版都有不同的 Libre Office 软件包,我发现自己使用的是一个非常零散的工具包和工作流程,更不用说用户界面在不同的发行版和桌面环境中差异是多么大。

事情变得更加复杂了,因为我也开始读我的硕士学位了。这时,我要在 Kate 上做笔记,把它们转移到 Libre Office 上,然后保存到我的 Dropbox 上。

我每天都面临着情境转换。

生产力下降,因为我不得不打开和关闭一些不相关的应用程序。我需要一个写作工具来满足我所有的需求,无论是作为一个小说家,还是一个学生、亦或是一个业余的程序员。

这时我意识到,解决我场景切换噩梦的方法也同样摆在我的面前。

这时,我已经经常使用 Vim —— 甚至在我的安卓手机上利用 Termux 使用它。这使我对要把所有东西都搬到 Vim 上的想法感到相当舒服。由于它支持 Markdown 语法,记笔记也会变得更加容易。

这仅仅是大约两个月前的事。

现在怎么样了?

时间:2021 年 4 月。

坐在出租车上,我通过 Termux(借助蓝牙键盘)用 Vim 在手机上开始写这个草稿。我把文件推送到 GitHub 上我的用于写作使用的私人仓库,我从那里把文件拉到我的电脑上,又写了几行,然后再次出门。我把新版本的文件从 GitHub 拉到我的手机上,修改、推送,如此往复,直到我把最后的草稿用电子邮件发给编辑。

现在,场景切换的情景已经不复存在。

在文字处理器中写作所带来的分心问题也没有了。

编辑工作变得无比简单,而且更快了。

我的手腕不再疼痛,因为我不再需要鼠标了。

现在是 2021 年 4 月。

我是一名小说家。

而我在 Vim 上写作。

怎么做的?我将在本专栏系列的第二部分讨论这个工作流程的具体内容,即非技术人员如何使用免费和开源技术。敬请关注。


via: https://news.itsfoss.com/how-i-started-loving-vim/

作者:Theena 选题:lujun9972 译者:piaoshi 校对:wxy

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

微软:Windows 11 将重构操作系统体验

微软纳德拉对 Windows 11 给予了非常高的期望,他希望通过 Windows 11 来“重新构建操作系统的全部”。纳德拉说,“Windows 11 是我们操作系统十年来最大的一次更新。我们正在重新构想一切 —— 从 Windows 平台到商店 —— 以帮助人们和组织提高生产力和安全性,并为开发者和创作者建立一个更加开放的生态系统。”

微软表示,Windows 11 预览版的下载量超过了 Windows Insider 计划中的其它 Windows 系统。Windows 11 在被调查 PC 中比重已经接近于 1%。微软刚刚发布了 Windows 11 的第一个 Beta 测试版,预计将在今年秋季推出正式版。

不能不说微软的 Windows 曾经改变了操作系统的定义,但是 Windows 11 是否能续写传奇,还需要时间来验证。

新的安卓恶意软件通过 VNC 记录智能手机以窃取密码

其他安卓恶意软件通常依靠漂浮在合法应用程序上的假登录屏幕来收集受害者的凭证,这款名为 Vultur 的恶意软件在受感染的手机上打开一个 VNC 服务器,并将屏幕截图广播给攻击者的命令与控制服务器,Vultur 操作员在那里提取所需应用程序的密码。

这真是“有创意的” VNC 用法。

NTFS3 内核驱动发布了第 27 个版本,但仍未推向主线

Paragon 公司的 NTFS3 驱动以前是由该公司提供商业支持的,但他们现在一直在积极工作,使该驱动进入内核主线,并承诺将继续维护它。这个 NTFS3 驱动比现有的树上内核驱动要好,有更可靠的读写支持和其他没有的功能,也比基于 FUSE 的 NTFS 驱动工作得要好。

之前 Linus Torvalds 曾呼吁 Paragon 发送 NTFS3 的拉取请求。但目前还没有人提出拉动请求,而是发布了这个驱动程序的第 27 个轮转版本。如果没有别的阻碍,这个新的 NTFS 驱动有可能在一个月后的 Linux 5.15 合并窗口中进入主线。

虽然 Linus 有点迫不及待了,但是可能 NTFS3 的开发人员觉得他们的驱动仍然距离进入主线尚有距离吧。

bpftrace 是一个 基于 eBPF 的新型追踪工具,在 Fedora 28 第一次引入。Brendan Gregg、Alastair Robertson 和 Matheus Marchini 在网上的一个松散的黑客团队的帮助下开发了 bpftrace。它是一个允许你分析系统在幕后正在执行的操作的追踪工具,可以告诉你代码中正在被调用的函数、传递给函数的参数、函数的调用次数等。

这篇文章的内容涉及了 bpftrace 的一些基础,以及它是如何工作的,请继续阅读获取更多的信息和一些有用的实例。

eBPF( 扩展的伯克利数据包过滤器 extended Berkeley Packet Filter

eBPF 是一个微型虚拟机,更确切的说是一个位于 Linux 内核中的虚拟 CPU。eBPF 可以在内核空间以一种安全可控的方式加载和运行小型程序,使得 eBPF 的使用更加安全,即使在生产环境系统中。eBPF 虚拟机有自己的指令集架构(ISA),类似于现代处理器架构的一个子集。通过这个 ISA,可以很容易将 eBPF 程序转化为真实硬件上的代码。内核即时将程序转化为主流处理器架构上的本地代码,从而提升性能。

eBPF 虚拟机允许通过编程扩展内核,目前已经有一些内核子系统使用这一新型强大的 Linux 内核功能,比如网络、安全计算、追踪等。这些子系统的主要思想是添加 eBPF 程序到特定的代码点,从而扩展原生的内核行为。

虽然 eBPF 机器语言功能强大,由于是一种底层语言,直接用于编写代码很费力,bpftrace 就是为了解决这个问题而生的。eBPF 提供了一种编写 eBPF 追踪脚本的高级语言,然后在 clang / LLVM 库的帮助下将这些脚本转化为 eBPF,最终添加到特定的代码点。

安装和快速入门

在终端 使用 sudo 执行下面的命令安装 bpftrace:

$ sudo dnf install bpftrace

使用“hello world”进行实验:

$ sudo bpftrace -e 'BEGIN { printf("hello world\n"); }'

注意,出于特权级的需要,你必须使用 root 运行 bpftrace,使用 -e 选项指明一个程序,构建一个所谓的“单行程序”。这个例子只会打印 “hello world”,接着等待你按下 Ctrl+C

BEGIN 是一个特殊的探针名,只在执行一开始生效一次;每次探针命中时,大括号 {} 内的操作(这个例子中只是一个 printf)都会执行。

现在让我们转向一个更有用的例子:

$ sudo bpftrace -e 't:syscalls:sys_enter_execve { printf("%s called %s\n", comm, str(args->filename)); }'

这个例子打印了父进程的名字(comm)和系统中正在创建的每个新进程的名称。t:syscalls:sys_enter_execve 是一个内核追踪点,是 tracepoint:syscalls:sys_enter_execve 的简写,两种形式都可以使用。下一部分会向你展示如何列出所有可用的追踪点。

comm 是一个 bpftrace 内建指令,代表进程名;filenamet:syscalls:sys_enter_execve 追踪点的一个字段,这些字段可以通过 args 内建指令访问。

追踪点的所有可用字段可以通过这个命令列出:

bpftrace -lv "t:syscalls:sys_enter_execve"

示例用法

列出探针

bpftrace 的一个核心概念是 探针点 probe point ,即 eBPF 程序可以连接到的(内核或用户空间的)代码中的测量点,可以分成以下几大类:

  • kprobe——内核函数的开始处
  • kretprobe——内核函数的返回处
  • uprobe——用户级函数的开始处
  • uretprobe——用户级函数的返回处
  • tracepoint——内核静态追踪点
  • usdt——用户级静态追踪点
  • profile——基于时间的采样
  • interval——基于时间的输出
  • software——内核软件事件
  • hardware——处理器级事件

所有可用的 kprobe / kretprobetracepointssoftwarehardware 探针可以通过这个命令列出:

$ sudo bpftrace -l

uprobe / uretprobeusdt 是用户空间探针,专用于某个可执行文件。要使用这些探针,通过下文中的特殊语法。

profileinterval 探针以固定的时间间隔触发;固定的时间间隔不在本文的范畴内。

统计系统调用数

映射 是保存计数、统计数据和柱状图的特殊 BPF 数据类型,你可以使用映射统计每个系统调用正在被调用的次数:

$ sudo bpftrace -e 't:syscalls:sys_enter_* { @[probe] = count(); }'

一些探针类型允许使用通配符匹配多个探针,你也可以使用一个逗号隔开的列表为一个操作块指明多个连接点。上面的例子中,操作块连接到了所有名称以 t:syscalls:sysenter_ 开头的追踪点,即所有可用的系统调用。

bpftrace 的内建函数 count() 统计系统调用被调用的次数;@[] 代表一个映射(一个关联数组)。该映射的键 probe 是另一个内建指令,代表完整的探针名。

这个例子中,相同的操作块连接到了每个系统调用,之后每次有系统调用被调用时,映射就会被更新,映射中和系统调用对应的项就会增加。程序终止时,自动打印出所有声明的映射。

下面的例子统计所有的系统调用,然后通过 bpftrace 过滤语法使用 PID 过滤出某个特定进程调用的系统调用:

$ sudo bpftrace -e 't:syscalls:sys_enter_* / pid == 1234 / { @[probe] = count(); }'

进程写的字节数

让我们使用上面的概念分析每个进程正在写的字节数:

$ sudo bpftrace -e 't:syscalls:sys_exit_write /args->ret > 0/ { @[comm] = sum(args->ret); }'

bpftrace 连接操作块到写系统调用的返回探针(t:syscalls:sys_exit_write),然后使用过滤器丢掉代表错误代码的负值(/arg->ret > 0/)。

映射的键 comm 代表调用系统调用的进程名;内建函数 sum() 累计每个映射项或进程写的字节数;args 是一个 bpftrace 内建指令,用于访问追踪点的参数和返回值。如果执行成功,write 系统调用返回写的字节数,arg->ret 用于访问这个字节数。

进程的读取大小分布(柱状图):

bpftrace 支持创建柱状图。让我们分析一个创建进程的 read 大小分布的柱状图的例子:

$ sudo bpftrace -e 't:syscalls:sys_exit_read { @[comm] = hist(args->ret); }'

柱状图是 BPF 映射,因此必须保存为一个映射(@),这个例子中映射键是 comm

这个例子使 bpftrace 给每个调用 read 系统调用的进程生成一个柱状图。要生成一个全局柱状图,直接保存 hist() 函数到 @(不使用任何键)。

程序终止时,bpftrace 自动打印出声明的柱状图。创建柱状图的基准值是通过 args->ret 获取到的读取的字节数。

追踪用户空间程序

你也可以通过 uprobes / uretprobes 和 USDT(用户级静态定义的追踪)追踪用户空间程序。下一个例子使用探测用户级函数结尾处的 uretprobe ,获取系统中运行的每个 bash 发出的命令行:

$ sudo bpftrace -e 'uretprobe:/bin/bash:readline { printf("readline: \"%s\"\n", str(retval)); }'

要列出可执行文件 bash 的所有可用 uprobes / uretprobes, 执行这个命令:

$ sudo bpftrace -l "uprobe:/bin/bash"

uprobe 指向用户级函数执行的开始,uretprobe 指向执行的结束(返回处);readline()/bin/bash 的一个函数,返回键入的命令行;retval 是被探测的指令的返回值,只能在 uretprobe 访问。

使用 uprobes 时,你可以用 arg0..argN 访问参数。需要调用 str()char * 指针转化成一个字符串。

自带脚本

bpftrace 软件包附带了许多有用的脚本,可以在 /usr/share/bpftrace/tools/ 目录找到。

这些脚本中,你可以找到:

  • killsnoop.bt——追踪 kill() 系统调用发出的信号
  • tcpconnect.bt——追踪所有的 TCP 网络连接
  • pidpersec.bt——统计每秒钟(通过 fork)创建的新进程
  • opensnoop.bt——追踪 open() 系统调用
  • bfsstat.bt——追踪一些 VFS 调用,按秒统计

你可以直接使用这些脚本,比如:

$ sudo /usr/share/bpftrace/tools/killsnoop.bt

你也可以在创建新的工具时参考这些脚本。

链接


via: https://fedoramagazine.org/trace-code-in-fedora-with-bpftrace/

作者:Augusto Caringi 选题:lujun9972 译者:YungeG 校对:wxy

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

通过使用 pipx 隔离运行 Python 应用来避免版本冲突并提高安全性。

 title=

如果你使用 Python,你可能会安装很多 Python 应用。有些是你只想尝试的工具。还有一些是你每天都在使用的久经考验的应用,所以你把它们安装在你使用的每一台计算机上。这两种情况下,在虚拟环境中运行你的 Python 应用是非常有用的,这可以使它们以及它们的依赖关系相互分离,以避免版本冲突,并使它们与你系统的其它部分隔离,以提高安全性。

这就是 pipx 出场的地方。

大多数 Python 应用可以使用 pip 进行安装,它只安装 Python 包。然而,pipx 为你的 Python 应用创建并管理一个虚拟环境,并帮助你运行它们。

安装 pipx

pipx 主要是一个 RPM 包,你可以在任何 Fedora、RHEL 或 CentOS 机器上安装它:

$ sudo dnf install pipx

使用 pipx

我将通过 Cowsay 以及 Concentration 工具演示如何使用 pipx

安装软件包

安装完 pipx 后,你可以用以下方法安装 Python 包:

$ pipx install <python_package>

要安装 Cowsay 包:

$ pipx install cowsay                         ✔ │ 20:13:41 
 installed package cowsay 4.0, Python 3.9.5
 These apps are now globally available
    - cowsay
done! ✨ ? ✨

现在你可以在系统的任何地方运行 Cowsay,通过终端与你对话!

$ cowsay "I <3 OSDC"                         
  _________
| I <3 OSDC |
  =========
        \
        \
                ^__^
                (oo)\_______
                (__)\           )\/\
                ||----w |
                ||      ||

 title=

以特殊权限进行安装

不是所有的应用都像 Cowsay 一样简单。例如,Concentration 会与你系统中的许多其他组件交互,所以它需要特殊的权限。用以下方式安装它:

$ pipx install concentration                                      ✔ │ 10s │ │ 20:26:12 
 installed package concentration 1.1.5, Python 3.9.5
 These apps are now globally available
    - concentration
done! ✨ ? ✨

Concentration 通过阻止 distractors 文件中列出的特定网站来帮助你集中注意力。要做到这点,它需要以 sudo 或 root 权限运行。你可以用 OpenDoas 来做到这点,这是 doas 命令的一个版本,可以用特定的用户权限运行任何命令。要使用 doassudo 权限来运行 Concentration:

$ doas concentration improve                                 ✔ │ │ 20:26:54 
doas (sumantrom) password: 
Concentration is now improved :D!

如你所见,这个独立的应用能够改变系统中的一些东西。

列出已安装的应用

pipx list 命令显示所有用 pipx 安装的应用和它们的可执行路径:

$ pipx list                                                                       
venvs are in /home/sumantrom/.local/pipx/venvs
apps are exposed on your $PATH at /home/sumantrom/.local/bin
 package concentration 1.1.5, Python 3.9.5
    - concentration
 package cowsay 4.0, Python 3.9.5
    - cowsay

卸载应用

当你使用完毕后,知道如何卸载它们是很重要的。pipx 有一个非常简单的卸载命令:

$ pipx uninstall <package name>

或者你可以删除每个软件包:

$ pipx uninstall-all

pipx uninstall-all                           2 ✘ │ 20:13:35 
uninstalled cowsay! ✨ ? ✨
uninstalled concentration! ✨ ? ✨

尝试 pipx

pipx 是一个流行的 Python 应用的包管理器。它可以访问 PyPi 上的所有东西,但它也可以从包含有效 Python 包的本地目录、Python wheel 或网络位置安装应用。

如果你安装了大量的 Python 应用,可以试试 pipx


via: https://opensource.com/article/21/7/python-pipx

作者:Sumantro Mukherjee 选题:lujun9972 译者:geekpi 校对:wxy

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