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
每月下载次数 581
460KB
10K SLoC
pacwrap
一个利用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