1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
|
# Zeta Package Manager (ZPM)
一个受 paru/yay 启发的多功能包管理器,支持 AUR、Debian 包转换、Pacman 和 APT 源。
## 作者
**Zeta** <3380089537@qq.com>
## 功能特性
### 1. AUR 包管理
- 🔍 搜索 AUR 包
- 📦 安装 AUR 包(自动解析递归依赖)
- 🔄 更新 AUR 包
- 📋 克隆 AUR 仓库
- ℹ️ 查看 AUR 包信息
- 📊 列出已安装的 AUR 包
### 2. Debian 包支持
- 📦 直接安装 .deb 包
- 🔄 将 .deb 包转换为 Arch 的 pkg.tar.zst 格式
- 📋 解析 Debian control 文件
- 🗺️ **智能依赖映射**(500+ 预定义映射)
- ❓ **依赖名不匹配时询问用户**(跳过/手动输入/从 AUR 安装)
- 📂 提取 deb 包内容
### 3. APT 源支持
- 🔍 从 APT 源搜索包
- 📦 从 APT 源下载并安装到 Arch 系统
- 🔄 自动转换为 Arch 格式
- 🗺️ 依赖自动映射和转换
- ⚙️ 支持多个 APT 源配置
### 4. Pacman 软件源
- 📋 读取 pacman.conf 中的软件源
- 📊 列出所有配置的软件源
- 🔍 在软件源中搜索包
- 🔄 同步软件源数据库
### 5. 本地构建
- 🔨 从 PKGBUILD 本地构建
- 📦 自动安装构建依赖
- 📂 支持自定义构建目录
## 安装
### 方法1: 使用安装脚本(推荐)
```bash
# 克隆仓库
git clone https://github.com/ZhongHongSoftware/zpm.git
cd zpm
# 运行安装脚本
sudo ./install.sh
```
### 方法2: 使用 Makefile
```bash
# 安装到系统
sudo make install
# 本地安装(无需 root)
make local-install
# 卸载
sudo make uninstall
```
### 方法3: 构建 Arch 包
```bash
# 使用构建脚本
./build-aur.sh
# 或使用 Makefile
make dist # 创建源码压缩包
make package # 构建 Arch 包
makepkg -si # 构建并安装
```
## 使用方法
### 基本命令 (pacman 风格)
```bash
# 安装包
zpm -S firefox # 从官方仓库或 AUR 安装
zpm -S ./package.deb # 安装 deb 包
zpm install firefox
# 移除包
zpm -R firefox
zpm remove firefox
# 升级所有包
zpm -U
zpm upgrade
# 更新软件源
zpm -Sy
zpm update
# 搜索包
zpm -Ss editor
zpm search editor
# 显示包信息
zpm -Si firefox
zpm info firefox
# 列出已安装包
zpm -Q
zpm list
# 清理缓存
zpm clean
# 显示帮助
zpm -h
zpm --help
# 显示版本
zpm -V
zpm --version
```
### AUR 命令
```bash
# 搜索 AUR
zpm aur search google-chrome
# 安装 AUR 包(自动处理 AUR 依赖)
zpm aur install google-chrome
# 更新所有 AUR 包
zpm aur update
# 列出已安装的 AUR 包
zpm aur list
# 查看 AUR 包信息
zpm aur info google-chrome
# 克隆 AUR 仓库
zpm aur clone google-chrome
```
### Debian 包命令
```bash
# 显示 deb 包信息
zpm deb info ./package.deb
# 转换 deb 包为 Arch 格式
zpm deb convert ./package.deb
zpm deb convert ./package.deb /output/dir
# 安装 deb 包(转换后安装)
zpm deb install ./package.deb
# 提取 deb 包
zpm deb extract ./package.deb
```
**deb 包依赖处理:**
当转换或安装 deb 包时,如果依赖在 Arch 官方仓库找不到,会显示以下菜单:
```
依赖 'xxx' 在 Arch 官方仓库中未找到。
选项:
1) 跳过此依赖 (继续构建)
2) 输入 Arch 系统中的对应包名
3) 从 AUR 安装
请选择 [1-3] (默认: 1):
```
### APT 源命令
```bash
# 从 APT 源搜索
zpm apt search htop
# 从 APT 源安装(自动转换)
zpm apt install htop
# 更新 APT 源列表
zpm apt update
# 添加 APT 源
zpm apt add myrepo http://myrepo.com/debian stable main
# 列出 APT 源
zpm apt list
```
### 软件源命令
```bash
# 列出所有软件源
zpm repo list
# 更新软件源
zpm repo update
# 在软件源中搜索
zpm repo search firefox
```
### 本地构建
```bash
# 构建 PKGBUILD
zpm build ./PKGBUILD
# 或构建目录
zpm build ./my-package
```
### 全局选项
```bash
# 跳过确认
zpm -S firefox --noconfirm
zpm --noconfirm -S firefox
# 详细输出
zpm -S firefox --verbose
# 调试模式
zpm -S firefox --debug
# 只安装需要的包
zpm -S firefox --needed
# 作为依赖安装
zpm -S firefox --asdeps
```
## Debian 到 Arch 包名映射
ZPM 内置了 **500+** 个 Debian 到 Arch 的包名映射,涵盖:
- **基础系统**: libc, gcc, zlib, openssl
- **Python 生态**: python3, numpy, requests, flask, django 等 50+ 包
- **图形库**: GTK, Qt, Mesa, OpenGL
- **X11 系统**: 完整的 X11 库
- **字体**: FreeType, FontConfig, 中文字体
- **图像处理**: PNG, JPEG, WebP, TIFF
- **压缩**: bzip2, xz, zstd, lz4
- **网络**: curl, gnutls, krb5, openssh
- **数据库**: SQLite, MariaDB, PostgreSQL, MongoDB
- **音频/视频**: ALSA, PulseAudio, GStreamer
- **开发工具**: cmake, meson, autotools
- **系统工具**: systemd, dbus, polkit, pam
- **安全**: apparmor, selinux, audit
- **硬件**: libusb, libdrm, Vulkan, Wayland
映射规则:
1. 首先查找预定义映射表
2. 如果没有匹配,尝试通用规则(如 `libxxx` → `xxx`)
3. 如果还找不到,询问用户
## 配置文件
### 主配置
配置文件位于 `~/.zpm/config/zpm.conf`:
```ini
[general]
noconfirm = no
verbose = no
debug = no
[aur]
base_url = https://aur.archlinux.org
[deb]
auto_map_deps = yes
```
### APT 源配置
APT 源配置文件位于 `~/.zpm/config/apt.conf`:
```
# 格式: 名称 URL 发行版 组件...
debian-stable http://deb.debian.org/debian stable main contrib non-free
debian-security http://security.debian.org/debian-security stable-security main contrib non-free
ubuntu-jammy http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
```
## 依赖
- bash
- curl
- jq
- git
- pacman
- tar
- gzip
- python3
- makepkg
## 目录结构
```
~/.zpm/
├── cache/ # 缓存目录
│ ├── aur/ # AUR 包缓存
│ ├── deb/ # deb 包缓存
│ └── apt/ # APT 源缓存
├── build/ # 构建目录
│ ├── aur/ # AUR 构建
│ └── deb/ # deb 转换构建
├── config/ # 配置文件
│ ├── zpm.conf # 主配置
│ └── apt.conf # APT 源配置
└── logs/ # 日志文件
└── zpm.log # 主日志
```
## 系统目录
```
/usr/lib/zpm/
├── bin/zpm # 主程序
├── lib/
│ ├── sh/ # Shell 脚本库
│ │ ├── install.sh # 安装模块
│ │ ├── aur.sh # AUR 模块
│ │ ├── deb.sh # Debian 包模块
│ │ ├── apt.sh # APT 源模块
│ │ ├── repo.sh # 软件源模块
│ │ └── ...
│ └── python/ # Python 工具
│ └── deb_parser.py # deb 包解析器
└── docs/ # 文档
```
## 工作原理
### AUR 安装流程
1. 通过 AUR RPC API 搜索包信息
2. 递归解析所有依赖(包括 AUR 依赖的依赖)
3. 安装官方仓库依赖
4. 递归安装 AUR 依赖
5. 克隆 AUR 仓库
6. 构建并安装包
### deb 包转换流程
1. 提取 deb 包内容(ar + tar)
2. 解析 control 文件
3. 转换依赖名(Debian → Arch)
4. 创建 PKGBUILD
5. 安装依赖(找不到时询问用户)
6. 使用 makepkg 构建
7. 生成 pkg.tar.zst 包
### APT 源安装流程
1. 从 APT 源下载 Packages.gz
2. 解析包信息和依赖
3. 下载 deb 包
4. 转换为 Arch 格式
5. 安装转换后的包
## 常见问题
### Q: 为什么有些 deb 包依赖找不到?
A: Debian 和 Arch 的包名不完全一致。ZPM 会:
1. 首先使用内置映射表(500+ 映射)
2. 尝试通用规则(libxxx → xxx)
3. 询问用户手动输入或从 AUR 安装
### Q: AUR 包的依赖也是 AUR 包,怎么处理?
A: ZPM 会自动递归解析和安装 AUR 依赖。
### Q: 如何跳过依赖询问?
A: 使用 `--noconfirm` 选项,会自动跳过所有依赖。
### Q: deb 包转换失败怎么办?
A: 可以尝试直接安装:`zpm deb install ./package.deb`,选择"直接提取安装"模式。
## 许可证
GPL-3.0
## 致谢
- 受 paru 和 yay 启发
- AUR RPC API: https://aur.archlinux.org/rpc
|