pacman-debian 7.2.0 → 7.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -2
- package/README_zh-CN.md +89 -19
- package/dist/cli/paclink.d.ts.map +1 -0
- package/dist/cli/paclink.js +261 -0
- package/dist/cli/paclink.js.map +1 -0
- package/dist/cli/pacman.d.ts.map +1 -1
- package/dist/cli/pacman.js +64 -38
- package/dist/cli/pacman.js.map +1 -1
- package/dist/core/compress.d.ts.map +1 -1
- package/dist/core/compress.js +29 -0
- package/dist/core/compress.js.map +1 -1
- package/dist/core/deps.d.ts.map +1 -1
- package/dist/core/deps.js +133 -68
- package/dist/core/deps.js.map +1 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/database.js +3 -1
- package/dist/db/database.js.map +1 -1
- package/dist/db/localdb.d.ts.map +1 -1
- package/dist/db/localdb.js +73 -4
- package/dist/db/localdb.js.map +1 -1
- package/dist/i18n/en.json +6 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +52 -6
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/paclink/en.d.ts.map +1 -0
- package/dist/i18n/paclink/en.js +62 -0
- package/dist/i18n/paclink/en.js.map +1 -0
- package/dist/i18n/paclink/zh-CN.d.ts.map +1 -0
- package/dist/i18n/paclink/zh-CN.js +62 -0
- package/dist/i18n/paclink/zh-CN.js.map +1 -0
- package/dist/i18n/setup/en.d.ts.map +1 -0
- package/dist/i18n/setup/en.js +49 -0
- package/dist/i18n/setup/en.js.map +1 -0
- package/dist/i18n/setup/zh-CN.d.ts.map +1 -0
- package/dist/i18n/setup/zh-CN.js +49 -0
- package/dist/i18n/setup/zh-CN.js.map +1 -0
- package/dist/i18n/zh-CN.json +6 -0
- package/dist/ops/install.d.ts.map +1 -1
- package/dist/ops/install.js +238 -45
- package/dist/ops/install.js.map +1 -1
- package/dist/ops/query.d.ts.map +1 -1
- package/dist/ops/query.js +25 -9
- package/dist/ops/query.js.map +1 -1
- package/dist/ops/remove.d.ts.map +1 -1
- package/dist/ops/remove.js +213 -42
- package/dist/ops/remove.js.map +1 -1
- package/dist/ops/upgrade.d.ts.map +1 -1
- package/dist/ops/upgrade.js +13 -15
- package/dist/ops/upgrade.js.map +1 -1
- package/dist/repo/repository.d.ts.map +1 -1
- package/dist/repo/repository.js +246 -90
- package/dist/repo/repository.js.map +1 -1
- package/dist/scripts/setup.js +119 -116
- package/dist/scripts/setup.js.map +1 -1
- package/package.json +18 -7
- package/README.zh.md +0 -388
- package/dist/ar.d.ts +0 -8
- package/dist/cli/pacman.d.ts +0 -2
- package/dist/compress.d.ts +0 -2
- package/dist/config.d.ts +0 -3
- package/dist/control.d.ts +0 -2
- package/dist/core/ar.d.ts +0 -7
- package/dist/core/compress.d.ts +0 -2
- package/dist/core/control.d.ts +0 -2
- package/dist/core/deb.d.ts +0 -4
- package/dist/core/deps.d.ts +0 -25
- package/dist/core/options.d.ts +0 -19
- package/dist/core/pkgfile.d.ts +0 -35
- package/dist/core/tar.d.ts +0 -13
- package/dist/core/types.d.ts +0 -83
- package/dist/database.d.ts +0 -20
- package/dist/db/database.d.ts +0 -17
- package/dist/db/dpkg-compat.d.ts +0 -19
- package/dist/db/localdb.d.ts +0 -9
- package/dist/db/sqlite.d.ts +0 -20
- package/dist/deb.d.ts +0 -5
- package/dist/dpkg-compat.d.ts +0 -18
- package/dist/i18n/index.d.ts +0 -3
- package/dist/index.d.ts +0 -3
- package/dist/install.d.ts +0 -2
- package/dist/makepkg/build.d.ts +0 -19
- package/dist/makepkg/index.d.ts +0 -3
- package/dist/makepkg/pkgbuild.d.ts +0 -36
- package/dist/ops/install.d.ts +0 -5
- package/dist/ops/query.d.ts +0 -9
- package/dist/ops/remove.d.ts +0 -3
- package/dist/ops/upgrade.d.ts +0 -4
- package/dist/pacman.d.ts +0 -2
- package/dist/query.d.ts +0 -5
- package/dist/remove.d.ts +0 -2
- package/dist/repo/config.d.ts +0 -3
- package/dist/repo/repository.d.ts +0 -10
- package/dist/repository.d.ts +0 -10
- package/dist/scripts/pacman-conf.d.ts +0 -3
- package/dist/scripts/setup.d.ts +0 -3
- package/dist/tar.d.ts +0 -17
- package/dist/types.d.ts +0 -80
- package/dist/ui/colors.d.ts +0 -13
- package/dist/ui/format.d.ts +0 -3
- package/dist/ui/progress.d.ts +0 -8
- package/dist/ui/prompt.d.ts +0 -4
- package/lib/pac4deb/Makefile +0 -26
- package/lib/pac4deb/README.md +0 -47
- package/lib/pac4deb/include/alpm.h +0 -166
- package/lib/pac4deb/include/alpm_list.h +0 -42
- package/lib/pac4deb/libalpm.so +0 -0
- package/lib/pac4deb/src/alpm_list.c +0 -102
- package/lib/pac4deb/src/genstubs.sh +0 -51
- package/lib/pac4deb/src/genstubs2.sh +0 -72
- package/lib/pac4deb/src/genstubs3.sh +0 -43
- package/lib/pac4deb/src/libalpm.c +0 -537
- package/lib/pac4deb/src/stubs_manual.c +0 -198
- package/lib/pac4deb/stubs.c +0 -6
- package/lib/pac4deb/update_header.sh +0 -15
- package/src/cli/pacman.ts +0 -308
- package/src/core/ar.ts +0 -54
- package/src/core/compress.ts +0 -27
- package/src/core/control.ts +0 -22
- package/src/core/deb.ts +0 -47
- package/src/core/deps.ts +0 -260
- package/src/core/options.ts +0 -20
- package/src/core/pkgfile.ts +0 -146
- package/src/core/tar.ts +0 -101
- package/src/core/types.ts +0 -89
- package/src/db/database.ts +0 -102
- package/src/db/dpkg-compat.ts +0 -129
- package/src/db/localdb.ts +0 -181
- package/src/i18n/en.json +0 -114
- package/src/i18n/index.ts +0 -32
- package/src/i18n/zh-CN.json +0 -114
- package/src/index.ts +0 -7
- package/src/makepkg/build.ts +0 -351
- package/src/makepkg/index.ts +0 -87
- package/src/makepkg/pkgbuild.ts +0 -146
- package/src/ops/install.ts +0 -260
- package/src/ops/query.ts +0 -117
- package/src/ops/remove.ts +0 -77
- package/src/ops/upgrade.ts +0 -87
- package/src/repo/config.ts +0 -96
- package/src/repo/repository.ts +0 -520
- package/src/scripts/pacman-conf.ts +0 -68
- package/src/scripts/setup.ts +0 -261
- package/src/ui/colors.ts +0 -40
- package/src/ui/format.ts +0 -9
- package/src/ui/progress.ts +0 -26
- package/src/ui/prompt.ts +0 -21
- package/tsconfig.json +0 -19
package/README.md
CHANGED
|
@@ -123,6 +123,7 @@ Uses a directory-per-package format matching Arch Linux's local DB:
|
|
|
123
123
|
|
|
124
124
|
```
|
|
125
125
|
/var/lib/pacman-debian/local/
|
|
126
|
+
├── index.json # name → dir mapping (base64 encoded paths)
|
|
126
127
|
├── by-name/
|
|
127
128
|
│ ├── fastfetch -> ../fastfetch-2.64.2-2/
|
|
128
129
|
│ └── ...
|
|
@@ -132,6 +133,10 @@ Uses a directory-per-package format matching Arch Linux's local DB:
|
|
|
132
133
|
└── ...
|
|
133
134
|
```
|
|
134
135
|
|
|
136
|
+
A flat `index.json` file maps package names to their directories (one `name:base64path`
|
|
137
|
+
per line). This is the primary lookup path for removals and queries, and is
|
|
138
|
+
automatically rebuilt from the filesystem if missing or corrupted.
|
|
139
|
+
|
|
135
140
|
### dpkg compatibility
|
|
136
141
|
|
|
137
142
|
Packages installed via `dpkg` or `apt` are read directly from
|
|
@@ -189,6 +194,18 @@ modification. It reads:
|
|
|
189
194
|
|
|
190
195
|
Over 200 stubs are provided for rarely-used functions.
|
|
191
196
|
|
|
197
|
+
Key implementation details:
|
|
198
|
+
|
|
199
|
+
- **packages.idx binary search (C)**: `alpm_db_get_pkg` and `alpm_find_dbs_satisfier`
|
|
200
|
+
use binary search on the sorted index, then read a single JSONL line by byte
|
|
201
|
+
offset — no full JSONL loading.
|
|
202
|
+
- **Auto-register sync DBs**: `ensure_syncdbs` scans `/var/cache/pacman-debian/packages/`
|
|
203
|
+
on first `alpm_get_syncdbs`, registering all available repos lazily.
|
|
204
|
+
- **Package DB pointer**: `pkg_internal.db` field tracks owning database;
|
|
205
|
+
`alpm_pkg_get_db` returns it, preventing `DB().Name()` nil dereference.
|
|
206
|
+
- **idx-based search**: `alpm_db_search` scans index lines for pattern matching
|
|
207
|
+
instead of loading all packages. ~1.5s for -Ss with 6 repos / 15k packages.
|
|
208
|
+
|
|
192
209
|
## makepkg (`src/makepkg/`)
|
|
193
210
|
|
|
194
211
|
A standalone `makepkg` implementation that builds Arch Linux packages from
|
|
@@ -323,8 +340,11 @@ The dependency resolver (`src/core/deps.ts`) handles:
|
|
|
323
340
|
- Conflict detection across installed and to-be-installed packages
|
|
324
341
|
- System package protection (glibc, libc6, etc.)
|
|
325
342
|
|
|
326
|
-
|
|
327
|
-
|
|
343
|
+
- File validation: installed packages with no real files on disk (empty
|
|
344
|
+
directories only) are considered NOT installed, forcing re-download.
|
|
345
|
+
- Explicit targets always have their dependencies processed even if the
|
|
346
|
+
target itself is already installed.
|
|
347
|
+
- Queue uses `shift()` to pop processed items, preventing memory accumulation.
|
|
328
348
|
|
|
329
349
|
## Architecture
|
|
330
350
|
|
package/README_zh-CN.md
CHANGED
|
@@ -119,6 +119,7 @@ Architecture = auto
|
|
|
119
119
|
|
|
120
120
|
```
|
|
121
121
|
/var/lib/pacman-debian/local/
|
|
122
|
+
├── index.json # 包名 → 目录映射(base64 编码路径)
|
|
122
123
|
├── by-name/
|
|
123
124
|
│ ├── fastfetch -> ../fastfetch-2.64.2-2/
|
|
124
125
|
│ └── ...
|
|
@@ -128,6 +129,9 @@ Architecture = auto
|
|
|
128
129
|
└── ...
|
|
129
130
|
```
|
|
130
131
|
|
|
132
|
+
`index.json` 以 `name:base64path` 格式逐行记录包名到目录的映射,是删除和查询
|
|
133
|
+
的首选查找路径。若文件缺失或损坏会自动从文件系统重建。
|
|
134
|
+
|
|
131
135
|
### dpkg 兼容
|
|
132
136
|
|
|
133
137
|
通过 `dpkg` 或 `apt` 安装的包在查询时直接从 `/var/lib/dpkg/status` 读取
|
|
@@ -145,18 +149,34 @@ Architecture = auto
|
|
|
145
149
|
├── bookworm/
|
|
146
150
|
│ ├── 00000.jsonl # JSON Lines, ~5000 包/块
|
|
147
151
|
│ ├── ...
|
|
148
|
-
│
|
|
152
|
+
│ ├── packages.idx # 全局排序索引 (~200KB)
|
|
153
|
+
│ └── .info # 元数据(总数、块数)
|
|
149
154
|
└── ...
|
|
150
155
|
```
|
|
151
156
|
|
|
152
|
-
|
|
157
|
+
#### 内存索引缓存
|
|
158
|
+
|
|
159
|
+
`packages.idx` 在首次读取后驻留内存,按仓库名 + mtime 缓存:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
_idxCache = new Map<string, IdxEntry>();
|
|
163
|
+
IdxEntry { lines: string[], mtime: number, providesIndex: Map<string, Array<{chunkFile, offset}>> }
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
- 后续 `-S`/`-Ss`/`-Sl` 操作直接读内存,不重复读盘
|
|
167
|
+
- `providesIndex` 是倒排索引:`provides 名 → [{ chunkFile, offset }]`
|
|
168
|
+
- `findProvider()` 查 provides 时 O(1) `Map.get()`,无需扫文件
|
|
169
|
+
- `pacman -Syy` 清空缓存(调用 `invalidateIdxCache()`)
|
|
170
|
+
- 增量同步后 idx 文件 mtime 变化,自动重新加载
|
|
171
|
+
|
|
172
|
+
#### 查找路径
|
|
153
173
|
|
|
154
|
-
| 操作 |
|
|
155
|
-
|
|
156
|
-
| `-S <pkg>` / `-Qo` | 二分搜索 `packages.idx` → seek JSONL |
|
|
157
|
-
| `-Ss` | 逐行扫 `packages.idx`(包名+描述)→ seek JSONL |
|
|
158
|
-
| `-Sl` | 扫 `packages.idx` → seek 每个包 |
|
|
159
|
-
| 依赖 provides | 扫 `packages.idx` provides 字段 |
|
|
174
|
+
| 操作 | 磁盘方法 | 首次后方法 |
|
|
175
|
+
|------|----------|-----------|
|
|
176
|
+
| `-S <pkg>` / `-Qo` | 二分搜索 `packages.idx` → seek JSONL | 二分搜索内存 `lines[]` → seek JSONL |
|
|
177
|
+
| `-Ss` | 逐行扫 `packages.idx`(包名+描述)→ seek JSONL | 扫内存 `lines[]`,不解析 JSON |
|
|
178
|
+
| `-Sl` | 扫 `packages.idx` → seek 每个包 | 扫内存 `lines[]`,懒加载 |
|
|
179
|
+
| 依赖 provides | 扫 `packages.idx` provides 字段 | 内存 `providesIndex.get()`,O(1) |
|
|
160
180
|
| `-Qi` / `-Ql` | dpkg 状态或本地数据库 | 不涉及缓存 |
|
|
161
181
|
|
|
162
182
|
## 仓库支持
|
|
@@ -180,6 +200,17 @@ AUR 助手(如 yay)无需修改即可在 Debian 上运行。它读取:
|
|
|
180
200
|
|
|
181
201
|
提供了 200+ 个不常用函数的桩实现。
|
|
182
202
|
|
|
203
|
+
关键实现细节:
|
|
204
|
+
|
|
205
|
+
- **packages.idx 二分查找(C)**:`alpm_db_get_pkg` 和 `alpm_find_dbs_satisfier`
|
|
206
|
+
对排序索引做二分查找,然后按字节偏移读取单行 JSONL——不加载全部 JSONL。
|
|
207
|
+
- **自动注册 sync DB**:`ensure_syncdbs` 在首次调用 `alpm_get_syncdbs` 时扫描
|
|
208
|
+
`/var/cache/pacman-debian/packages/`,懒加载注册所有可用仓库。
|
|
209
|
+
- **包 DB 指针**:`pkg_internal.db` 字段记录所属数据库;`alpm_pkg_get_db` 返回它,
|
|
210
|
+
防止 `DB().Name()` 空指针崩溃。
|
|
211
|
+
- **基于 idx 的搜索**:`alpm_db_search` 扫描索引行做模式匹配,而非加载全部包。
|
|
212
|
+
6 仓库/15000 包的情况下 `-Ss` 约 1.5 秒。
|
|
213
|
+
|
|
183
214
|
## makepkg(`src/makepkg/`)
|
|
184
215
|
|
|
185
216
|
独立的 `makepkg` 实现,无需 `base-devel` 或任何 Arch 工具即可从 PKGBUILD
|
|
@@ -223,16 +254,16 @@ makepkg --syncdeps --install
|
|
|
223
254
|
|------|------|
|
|
224
255
|
| `pacman -S <pkg>` | 从仓库安装包 |
|
|
225
256
|
| `pacman -Sy` | 刷新包数据库(mtime 检查,24 小时) |
|
|
226
|
-
| `pacman -Syy` |
|
|
257
|
+
| `pacman -Syy` | 强制刷新包数据库(清除内存 idx 缓存) |
|
|
227
258
|
| `pacman -Su` | 升级所有已安装的包 |
|
|
228
259
|
| `pacman -Syu` | 刷新数据库并升级 |
|
|
229
260
|
| `pacman -Ss <keyword>` | 搜索仓库 |
|
|
230
261
|
| `pacman -Si <pkg>` | 显示远程包信息 |
|
|
231
262
|
| `pacman -Sl` | 列出仓库中所有包 |
|
|
232
|
-
| `pacman -Sw <pkg>` |
|
|
233
|
-
| `pacman -Sc` |
|
|
234
|
-
| `pacman -Scc` |
|
|
235
|
-
| `pacman -Sp <pkg>` |
|
|
263
|
+
| `pacman -Sw <pkg>` | 真正下载 .deb/.pkg.tar.zst 到缓存目录,不安装 |
|
|
264
|
+
| `pacman -Sc` | 删除缓存目录中的 .deb/.pkg.tar.zst 文件,保留仓库元数据 |
|
|
265
|
+
| `pacman -Scc` | 清空整个缓存目录(含仓库 jsonl/idx,需重新 -Sy) |
|
|
266
|
+
| `pacman -Sp <pkg>` | 打印实际下载 URL(不会安装) |
|
|
236
267
|
|
|
237
268
|
### 删除(-R)
|
|
238
269
|
|
|
@@ -258,13 +289,15 @@ makepkg --syncdeps --install
|
|
|
258
289
|
| `pacman -Ql <pkg>` | 列出包拥有的文件 |
|
|
259
290
|
| `pacman -Qo <file>` | 查询文件属于哪个包 |
|
|
260
291
|
| `pacman -Qs <keyword>` | 搜索已安装的包 |
|
|
261
|
-
| `pacman -Qk [pkg]` |
|
|
292
|
+
| `pacman -Qk [pkg]` | 验证已安装包的文件完整性(检查文件是否存在且非空) |
|
|
293
|
+
| `pacman -Qq` | 静默模式:仅输出包名,不带版本号 |
|
|
262
294
|
|
|
263
295
|
### 其他
|
|
264
296
|
|
|
265
297
|
| 命令 | 说明 |
|
|
266
298
|
|------|------|
|
|
267
299
|
| `pacman -U <file>` | 安装本地包文件(.deb/.pkg.tar.zst) |
|
|
300
|
+
| `pacman -U <url>` | 从 http/https/ftp URL 下载后安装,装完自动清理 |
|
|
268
301
|
| `pacman -D --asdeps <pkg>` | 将包标记为依赖 |
|
|
269
302
|
| `pacman -D --asexplicit <pkg>` | 将包标记为显式安装 |
|
|
270
303
|
| `pacman -T <pkg>` | 检查依赖是否满足 |
|
|
@@ -305,11 +338,41 @@ makepkg --syncdeps --install
|
|
|
305
338
|
- OR 依赖(`|`)
|
|
306
339
|
- 架构限定符(如 `:arm64`、`:amd64`)
|
|
307
340
|
- Debian(逗号分隔)和 Arch(空格分隔)两种格式
|
|
308
|
-
-
|
|
341
|
+
- BFS 解析,带预加载 DB 状态
|
|
309
342
|
- 已安装和待安装包之间的冲突检测
|
|
310
343
|
- 系统包保护(glibc、libc6 等)
|
|
344
|
+
- `upgradeMode`:升级时依赖基准为"已安装版本",而非"仓库最新版本"
|
|
345
|
+
|
|
346
|
+
- **文件验证**:已安装的包如果磁盘上没有真实文件(只剩空目录),视为未安装,
|
|
347
|
+
强制重新下载。
|
|
348
|
+
- **显式目标始终处理依赖**:即使目标已安装,也会遍历其依赖检查缺失项。
|
|
349
|
+
- **队列出队**:依赖队列用 `shift()` 弹出已处理项,防止内存堆积。
|
|
350
|
+
|
|
351
|
+
### 性能优化
|
|
352
|
+
|
|
353
|
+
| 技术 | 说明 |
|
|
354
|
+
|------|------|
|
|
355
|
+
| **idx 内存缓存** | `findInRepo()` 二分搜索直接在 `_idxCache` 的 `lines[]` 上进行,无需读文件(`src/repo/repository.ts:58`) |
|
|
356
|
+
| **provides 倒排索引** | `providesIndex` 在 idx 加载时构建,`findProvider()` 直接 `Map.get()`,O(1) 定位(`src/repo/repository.ts:69`) |
|
|
357
|
+
| **顺序 BFS + 指针游标** | 依赖队列用索引指针替代 `shift()`,避免数组塌缩开销(`src/core/deps.ts:74`) |
|
|
358
|
+
| **已解析集合去重** | `resolved` 用 `Set<string>` 去重,避免重复解析相同依赖(`src/core/deps.ts:73`) |
|
|
359
|
+
| **批量头尾双扫** | `batchFindInRepo()` 利用排序 idx 从首尾同时二分查找,适合升级候选收集(`src/repo/repository.ts`) |
|
|
360
|
+
| **keep-alive HTTP** | 共享 `https.Agent({ keepAlive: true, maxSockets: 8 })`,复用 TCP/TLS 连接(`src/repo/repository.ts:22`) |
|
|
361
|
+
| **异步解压 .gz** | `decompressAsync()` 用 `zlib.gunzip()` 回调版,不阻塞事件循环(`src/core/compress.ts:9`) |
|
|
362
|
+
| **304 条件请求** | 同步时发 `If-Modified-Since`,服务端返回 304 直接跳过(`src/repo/repository.ts:96`) |
|
|
363
|
+
|
|
364
|
+
### 删除时的依赖处理(`src/ops/remove.ts`)
|
|
365
|
+
|
|
366
|
+
| 操作 | 逻辑 |
|
|
367
|
+
|------|------|
|
|
368
|
+
| `-R` | 仅删除指定包,不处理依赖 |
|
|
369
|
+
| `-Rs` | 删除包 + 递归查找孤儿(不被其他包 RequiredBy 的包),按逆拓扑序删除 |
|
|
370
|
+
| `-Rc` | 级联:找出所有"需要"目标包的包,一并删除 |
|
|
371
|
+
| `-Rsc` | 递归 + 级联组合 |
|
|
372
|
+
| `-Rn` | 备份 `/var/lib/dpkg/info/<pkg>.conffiles` 中的配置文件为 `.dpkg-old`,再删除 |
|
|
311
373
|
|
|
312
|
-
|
|
374
|
+
删除时自动排序:被依赖者先删(叶子节点先于根节点),确保依赖检查不报错。
|
|
375
|
+
`isRequiredByOthers()` 遍历所有已安装包的 `Depends` 字段,判断目标包是否被需要。
|
|
313
376
|
|
|
314
377
|
## 架构
|
|
315
378
|
|
|
@@ -398,11 +461,18 @@ make -C lib/pac4deb # 构建 libalpm.so
|
|
|
398
461
|
该项目在 v7.1.0 时更名为 `pacman-debian`。目前在 Debian 12 上
|
|
399
462
|
可用于日常包管理。已有功能:
|
|
400
463
|
|
|
464
|
+
- **依赖解析**:顺序 BFS + idx 内存缓存 + provides 倒排索引,亚秒级
|
|
465
|
+
依赖查找。删除时正确处理孤儿级联和 conffile 备份。
|
|
401
466
|
- **性能优化**:`packages.idx` 索引实现亚秒级单包查找。`-Ss` 只扫索引
|
|
402
|
-
(不解析 JSON)。全量 `-Sl` 通过索引 seek
|
|
467
|
+
(不解析 JSON)。全量 `-Sl` 通过索引 seek。HTTP keep-alive agent
|
|
468
|
+
复用 TCP 连接,异步 zlib 解压不阻塞事件循环。
|
|
403
469
|
- **并行同步**:多仓库并发下载,每仓库独立进度行。HTTP 条件请求(304)
|
|
404
|
-
跳过未变更仓库。
|
|
405
|
-
-
|
|
470
|
+
跳过未变更仓库。Debian 组件串行但多仓库并行。
|
|
471
|
+
- **真正的下载能力**:`-Sw` 已能实际下载包文件,`-Sp` 打印真实 URL,
|
|
472
|
+
`-U` 支持 http/https/ftp/file URL 自动下载后安装。
|
|
473
|
+
- **选择性缓存清理**:`-Sc` 只删包缓存保留元数据,`-Scc` 清空全部。
|
|
474
|
+
- **多语言**:通过 `$LANG` 自动切换中英文。同步、安装、升级流程均已
|
|
475
|
+
本地化。消息目录在 `src/i18n/`。
|
|
406
476
|
- **颜色输出**:遵守 `pacman.conf` 的 `Color` 选项。颜色方案匹配官方
|
|
407
477
|
pacman(品红=仓库、绿=包名、红=错误)。
|
|
408
478
|
- **权限分离**:查询命令(`-Q`、`-Ss`、`-Si`、`-Sp`、`-Rp`)无需 root。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paclink.d.ts","sourceRoot":"","sources":["../../src/cli/paclink.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const localdb_1 = require("../db/localdb");
|
|
38
|
+
const dpkg_compat_1 = require("../db/dpkg-compat");
|
|
39
|
+
const i18n_1 = require("../i18n");
|
|
40
|
+
const fs = __importStar(require("node:fs"));
|
|
41
|
+
const path = __importStar(require("node:path"));
|
|
42
|
+
const readline = __importStar(require("node:readline"));
|
|
43
|
+
const t = (0, i18n_1.scopedT)('paclink');
|
|
44
|
+
function confirm(prompt) {
|
|
45
|
+
return new Promise(resolve => {
|
|
46
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
47
|
+
rl.question(prompt, answer => {
|
|
48
|
+
rl.close();
|
|
49
|
+
const a = answer.trim().toLowerCase();
|
|
50
|
+
if (a === '' || a === 'y' || a === 'yes')
|
|
51
|
+
resolve(true);
|
|
52
|
+
else
|
|
53
|
+
resolve(false);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const LOCAL_DIR = '/var/lib/pacman-debian/local';
|
|
58
|
+
function help(exit = 0) {
|
|
59
|
+
const v = '1.0';
|
|
60
|
+
console.log(t('help_text', v));
|
|
61
|
+
process.exit(exit);
|
|
62
|
+
}
|
|
63
|
+
function listLinks() {
|
|
64
|
+
const names = (0, localdb_1.listPackageNames)();
|
|
65
|
+
let found = 0;
|
|
66
|
+
for (const entry of names) {
|
|
67
|
+
const dir = path.join(LOCAL_DIR, entry);
|
|
68
|
+
const fp = path.join(dir, 'desc');
|
|
69
|
+
if (!fs.existsSync(fp))
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
const desc = JSON.parse(fs.readFileSync(fp, 'utf8'));
|
|
73
|
+
if (desc.repoType !== 'link')
|
|
74
|
+
continue;
|
|
75
|
+
const target = desc.link_target || '-';
|
|
76
|
+
console.log(`${desc.name} ${desc.version} → ${target} (${desc.description || ''})`);
|
|
77
|
+
found++;
|
|
78
|
+
}
|
|
79
|
+
catch { }
|
|
80
|
+
}
|
|
81
|
+
if (found === 0)
|
|
82
|
+
console.log(t('no_links'));
|
|
83
|
+
}
|
|
84
|
+
function searchLinks(pattern) {
|
|
85
|
+
const lower = pattern.toLowerCase();
|
|
86
|
+
const names = (0, localdb_1.listPackageNames)();
|
|
87
|
+
let found = 0;
|
|
88
|
+
for (const entry of names) {
|
|
89
|
+
const dir = path.join(LOCAL_DIR, entry);
|
|
90
|
+
const fp = path.join(dir, 'desc');
|
|
91
|
+
if (!fs.existsSync(fp))
|
|
92
|
+
continue;
|
|
93
|
+
try {
|
|
94
|
+
const desc = JSON.parse(fs.readFileSync(fp, 'utf8'));
|
|
95
|
+
if (desc.repoType !== 'link')
|
|
96
|
+
continue;
|
|
97
|
+
if (!desc.name.toLowerCase().includes(lower) &&
|
|
98
|
+
!(desc.link_target || '').toLowerCase().includes(lower))
|
|
99
|
+
continue;
|
|
100
|
+
const target = desc.link_target || '-';
|
|
101
|
+
console.log(`${desc.name} ${desc.version} → ${target} (${desc.description || ''})`);
|
|
102
|
+
found++;
|
|
103
|
+
}
|
|
104
|
+
catch { }
|
|
105
|
+
}
|
|
106
|
+
if (found === 0)
|
|
107
|
+
console.log(t('no_link_match', pattern));
|
|
108
|
+
}
|
|
109
|
+
function showLinkInfo(name) {
|
|
110
|
+
const pkg = (0, localdb_1.getPackage)(name);
|
|
111
|
+
if (!pkg || pkg.repoType !== 'link') {
|
|
112
|
+
console.error(t('link_not_found', name));
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
const target = pkg.description?.replace(/^Virtual package - links to Debian package /, '') || '-';
|
|
116
|
+
console.log(t('link_info_name', pkg.name));
|
|
117
|
+
console.log(t('link_info_provides', pkg.provides || pkg.name));
|
|
118
|
+
console.log(t('link_info_version', pkg.version));
|
|
119
|
+
console.log(t('link_info_target', target));
|
|
120
|
+
console.log(t('link_info_desc', pkg.description || '-'));
|
|
121
|
+
console.log(t('link_info_time', new Date((pkg.installTime || 0) * 1000).toISOString()));
|
|
122
|
+
}
|
|
123
|
+
async function createLink(debPkg, virtName, noconfirm) {
|
|
124
|
+
if (!debPkg || !virtName) {
|
|
125
|
+
console.error(t('need_virt_name'));
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
const existing = (0, localdb_1.getPackage)(virtName);
|
|
129
|
+
if (existing && existing.repoType === 'link') {
|
|
130
|
+
const oldTarget = existing.description?.replace(/^Virtual package - links to Debian package /, '') || '?';
|
|
131
|
+
if (oldTarget === debPkg) {
|
|
132
|
+
console.log(t('link_skipped', virtName, debPkg));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!noconfirm) {
|
|
136
|
+
if (!await confirm(t('confirm_overwrite', virtName, oldTarget, debPkg) + ' ' + t('confirm_prompt'))) {
|
|
137
|
+
console.log(t('cancelled'));
|
|
138
|
+
process.exit(0);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
(0, localdb_1.removePackage)(virtName, existing.version);
|
|
142
|
+
console.log(t('link_overwritten', virtName, debPkg, oldTarget));
|
|
143
|
+
}
|
|
144
|
+
const dpkg = (0, dpkg_compat_1.readDpkgStatus)();
|
|
145
|
+
const debInfo = dpkg.get(debPkg);
|
|
146
|
+
if (!debInfo) {
|
|
147
|
+
console.error(t('deb_not_installed', debPkg));
|
|
148
|
+
console.error(t('deb_not_installed_hint', debPkg));
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
const version = debInfo.version || '0';
|
|
152
|
+
const arch = debInfo.architecture || process.arch;
|
|
153
|
+
if (!noconfirm) {
|
|
154
|
+
if (!await confirm(t('confirm_create', virtName, debPkg, version) + ' ' + t('confirm_prompt'))) {
|
|
155
|
+
console.log(t('cancelled'));
|
|
156
|
+
process.exit(0);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const linkPkg = {
|
|
160
|
+
name: virtName,
|
|
161
|
+
version,
|
|
162
|
+
architecture: arch,
|
|
163
|
+
description: `Virtual package - links to Debian package ${debPkg}`,
|
|
164
|
+
provides: virtName,
|
|
165
|
+
depends: debPkg,
|
|
166
|
+
installTime: Math.floor(Date.now() / 1000),
|
|
167
|
+
reason: 'explicit',
|
|
168
|
+
files: [],
|
|
169
|
+
repoType: 'link',
|
|
170
|
+
};
|
|
171
|
+
(0, localdb_1.addPackage)(linkPkg);
|
|
172
|
+
console.log(t('link_created', virtName, version, debPkg));
|
|
173
|
+
}
|
|
174
|
+
async function removeLink(name, noconfirm) {
|
|
175
|
+
const pkg = (0, localdb_1.getPackage)(name);
|
|
176
|
+
if (!pkg || pkg.repoType !== 'link') {
|
|
177
|
+
console.error(t('link_not_found', name));
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
const target = pkg.description?.replace(/^Virtual package - links to Debian package /, '') || '?';
|
|
181
|
+
if (!noconfirm) {
|
|
182
|
+
if (!await confirm(t('confirm_remove', name, target) + ' ' + t('confirm_prompt'))) {
|
|
183
|
+
console.log(t('cancelled'));
|
|
184
|
+
process.exit(0);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
(0, localdb_1.removePackage)(name, pkg.version);
|
|
188
|
+
console.log(t('link_removed', name, target));
|
|
189
|
+
}
|
|
190
|
+
function needRoot(msg) {
|
|
191
|
+
if (!process.getuid || process.getuid() === 0)
|
|
192
|
+
return;
|
|
193
|
+
console.error(t('error_need_root', msg));
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
async function main() {
|
|
197
|
+
const args = process.argv.slice(2);
|
|
198
|
+
if (args.length === 0 || args[0] === '--help' || args[0] === '-h')
|
|
199
|
+
help();
|
|
200
|
+
const noconfirm = args.includes('--noconfirm');
|
|
201
|
+
const cleanArgs = args.filter(a => a !== '--noconfirm');
|
|
202
|
+
const op = cleanArgs[0];
|
|
203
|
+
const rest = cleanArgs.slice(1);
|
|
204
|
+
switch (op) {
|
|
205
|
+
case '-L':
|
|
206
|
+
if (rest.length === 0) {
|
|
207
|
+
listLinks();
|
|
208
|
+
}
|
|
209
|
+
else if (rest.length === 1) {
|
|
210
|
+
showLinkInfo(rest[0]);
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
console.error(t('usage_L'));
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
break;
|
|
217
|
+
case '-Ls':
|
|
218
|
+
if (rest.length === 1) {
|
|
219
|
+
searchLinks(rest[0]);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.error(t('usage_Ls'));
|
|
223
|
+
process.exit(1);
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
case '-Ln':
|
|
227
|
+
if (rest.length === 2) {
|
|
228
|
+
needRoot(t('need_root_create'));
|
|
229
|
+
await createLink(rest[0], rest[1], noconfirm);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
console.error(t('usage_Ln'));
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
case '-Li':
|
|
237
|
+
if (rest.length !== 1) {
|
|
238
|
+
console.error(t('usage_Li'));
|
|
239
|
+
process.exit(1);
|
|
240
|
+
}
|
|
241
|
+
showLinkInfo(rest[0]);
|
|
242
|
+
break;
|
|
243
|
+
case '-R':
|
|
244
|
+
if (rest.length !== 1) {
|
|
245
|
+
console.error(t('usage_R'));
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
needRoot(t('need_root_remove'));
|
|
249
|
+
await removeLink(rest[0], noconfirm);
|
|
250
|
+
break;
|
|
251
|
+
default:
|
|
252
|
+
console.error(t('unknown_op', op));
|
|
253
|
+
console.error(`${t('usage')} paclink -Ls <debPkg> <virtName>`);
|
|
254
|
+
process.exit(1);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
main().catch(e => {
|
|
258
|
+
console.error(t('error_prefix', e.message));
|
|
259
|
+
process.exit(1);
|
|
260
|
+
});
|
|
261
|
+
//# sourceMappingURL=paclink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paclink.js","sourceRoot":"","sources":["../../src/cli/paclink.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/pacman.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pacman.d.ts","sourceRoot":"","sources":["../../src/cli/pacman.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pacman.d.ts","sourceRoot":"","sources":["../../src/cli/pacman.ts"],"names":[],"mappings":"AA4GA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+M7D"}
|