#arch-linux #bubblewrap #sandbox #package-manager #virtualization #package-management #package

app pacwrap

简化了基于Arch的bubblewrap容器的创建、管理和执行,无需权限

8个版本

0.8.4 2024年6月14日
0.8.3 2024年6月7日
0.8.2 2024年5月21日
0.8.1 2024年4月24日
0.7.2 2024年2月13日

Unix API 中排名 174

Download history 169/week @ 2024-04-19 25/week @ 2024-04-26 3/week @ 2024-05-03 140/week @ 2024-05-17 19/week @ 2024-05-24 155/week @ 2024-06-07 210/week @ 2024-06-14 5/week @ 2024-06-21 3/week @ 2024-06-28 14/week @ 2024-07-05

每月下载次数 581

GPL-3.0-only

460KB
10K SLoC

pacwrap

pacwrappacwrap-gitLicenseMSRV

一个利用libalpm的包管理前端,用于创建无权限的用户空间容器,具有并行化、与文件系统无关的重复数据删除。这些容器通过bubblewrap构建,用于执行包事务和启动应用程序。

该应用程序旨在允许创建和执行安全、可复制的通用容器化环境。支持CLI和GUI应用程序*。一旦配置了容器环境,就可以在任何系统上重新建立或复制。

本项目的目标是提供一个基于分发版的flatpak替代品,具有易于配置的安全参数。

* 一些基于CLI的应用程序,如ncspot,需要禁用termios隔离。这可能会允许攻击者接管终端并因此突破容器。

示例用法

要创建基础容器,执行以下命令

$ pacwrap -Syucb --target=base

然后在此容器内部启动shell以配置它

$ pacwrap -Es base

最后,在名为 editor 的新聚合容器中安装 neovim

$ pacwrap -Syucat editor --dep=base neovim

更新这些刚刚创建的聚合容器

$ pacwrap -Syu

更高级的示例以及配置的进一步文档可以在 此处 找到。

特性

由于此项目仍在进行中,并非所有功能都已完成。请参考下表以获取更多详细信息。

如果您看到的功能尚未完成,请随时提交PR;或者提交有关未在此处列出功能的问题以进行分类。

特性 描述 状态
聚合事务 跨容器聚合包事务
事务代理 在沙箱运行时环境中进行事务
事务CLI 功能
全局配置 功能
包依赖关系解析 利用递归深度优先搜索算法;对循环具有容错性
外国数据库解析 在聚合容器中填充外国软件包数据库
外国数据库解析(延迟式) 尚未实现
冲突解决 尚未实现
软件包安装 功能
软件包移除 功能
桌面条目创建 功能
容器执行 功能
在现有命名空间内启动 尚未实现
容器配置 功能
容器创建 功能
容器组合 功能
容器运行时 嵌入式运行环境
容器架构 具有版本跟踪的容器文件系统架构
文件系统去重 通过硬链接保留容器间文件系统状态
Seccomp过滤器 通过libseccomp绑定应用seccomp过滤器到实例
Dbus隔离 功能型 - 由xdg-dbus-proxy提供
网络隔离 尚未实现
转换为Rust 已完成
配置命令行界面(用户友好型) 尚未实现
进程API 容器进程枚举
进程命令行界面 功能
实用工具命令行界面 功能
本地化 尚未实现

手册

用户手册的在线版本可在此查看 这里

构建需求

构建时需要Rust 1.72或更高版本,以下库由您的发行版提供

libalpm>=14, libseccomp, libzstd

打包需求

以下Arch Linux软件包(或您发行版的等效软件包)是构建时所需生成物

bash, busybox, coreutils, fakeroot, fakechroot

发行版支持

尽管本项目旨在与任何发行版兼容,但目前仅支持基于Arch的发行版。然而,本项目确实旨在实现发行版无关性,因此未来应该能够支持其他发行版。

依赖项

~15–27MB
~426K SLoC