📖 本文由 Batocera 官方 Wiki 翻译整理,内容可能随版本更新而变化。
软件包管理器(Pacman)
在 Batocera 的“更新与下载”功能背后,其实隐藏着一个强大的功臣——Pacman(软件包管理器)。如果你曾经接触过 Arch Linux,那你对它一定不会感到陌生。通过 Pacman,你可以随心所欲地安装、升级或卸载各种软件包,无论是你自己制作的,还是由 Batocera 社区提供并维护的资源。
【注意】有一个例外:Batocera 自身的系统更新程序(Updater)并不通过 Pacman 运行。
工具一样,但不代表“通用”
虽然 Batocera 使用的确实是 Pacman,而 Arch Linux 也用它来安装软件,但这并不意味着你可以把为 Arch Linux 设计的安装包直接塞进 Batocera 里。
生活化类比:这就像是你有一把通用的十字螺丝刀(Pacman),虽然这把工具在 Arch Linux 和 Batocera 两个“家具”上都能用,但你不能把为 Arch 衣柜设计的专用螺丝强行拧进 Batocera 的小板凳里。工具是通用的,但“零件”(软件包)必须是为 Batocera 量身定制的。
安全与内容说明
请放心,Batocera 官方托管的软件包绝不会包含任何侵权资料。你在这里能找到的通常是:
* 免费软件(Freeware)或共享版(Shareware)ROM
* 玩家自制的“自制程序(Homebrews)”
* 免费游戏、系统主题、免费音乐素材等
这是让你的 Batocera 变得更有个性、更符合你使用习惯的最佳途径。
使用软件包管理器的核心优势
为什么我们要用这种方式来管理资源呢?
- 第一步:实现“拎包入住”般的体验
一个软件包里就已经打包好了所有必要的文件:包括游戏 ROM、刮削好的元数据(Scraped Metadata),甚至连gamelist.xml里的列表更新信息都帮你写好了。 - 第二步:享受“云端同步”的便捷
你不再需要手动到处寻找资源,直接通过互联网即可在线安装所有配套内容。
为什么软件包管理器(Pacman)这么好用?
除了前面提到的优势,Pacman 还为你带来了这些像智能手机应用商店一样的体验:
- 第三步:一键同步更新
每当软件包发布了新版本,你可以直接进行更新,确保始终使用的是最新功能。 - 第四步:轻松卸载清理
如果你不再需要某个软件包,可以轻而易举地将其彻底移除,不留垃圾文件。 - 第五步:自动处理依赖关系(Dependencies)
这是最省心的一点。当你安装一个软件时,Pacman 会自动帮你找齐它运行所需的所有“零件”,并自动安装好。
为什么 Batocera 选择了 Pacman?
我们选择 Pacman 是因为它非常轻量且易于移植。最棒的是,通过 Batocera 特供版的工具,你不需要配置复杂的开发环境(Dev Environment),直接在你的 Batocera 设备上就能打包制作自己的软件包。
生活化类比:这就像是 Batocera 为你提供了一套“精简版木工工具箱”。虽然它不像 Arch Linux 那套“专业家具工厂”设备那么全,但足够让你在自家的车库里轻松组装出好用的小家具。
从技术角度来看,一个 Pacman 软件包本质上就是一个 .tar.zstd 或 .tar.xz 格式的压缩包,这和 Batocera 系统启动镜像的格式完全一致。新版软件包更倾向于使用 Zstandard(zstd) 压缩算法,因为它在解压缩时速度极快,处理大型软件包时优势尤其明显。
如何通过远程连接(SSH)操作 Pacman
通常情况下,你可以直接在 Batocera 的图形界面(EmulationStation)中操作:进入 更新与下载(UPDATES & DOWNLOADS) -> 内容下载器(CONTENT DOWNLOADER) 即可管理。
但如果你更喜欢“极客”一点的方式,或者想通过 SSH 远程连接(Secure Shell) 来操作,可以使用内置的命令行工具 Batocera-store。
【注意】输入命令时请确保路径和拼写准确,以下是常用的操作指令:
| 命令 | 功能说明 |
|---|---|
/usr/bin/Batocera-store install <package> |
安装指定的软件包 |
/usr/bin/Batocera-store remove <package> |
卸载指定的软件包 |
/usr/bin/Batocera-store list |
列出所有可以安装的软件包 |
/usr/bin/Batocera-store list-repositories |
查看所有可用的软件仓库(Repositories) |
更多便捷的维护指令
除了安装和卸载,这里还有几个常用的维护命令,能帮你保持系统整洁。
| 命令 | 功能说明 |
|---|---|
/usr/bin/Batocera-store clean |
清理旧版缓存,仅保留已安装包的最新版本 |
/usr/bin/Batocera-store clean-all |
彻底清空所有下载缓存文件 |
/usr/bin/Batocera-store refresh |
刷新所有仓库中的可用软件包信息 |
/usr/bin/Batocera-store update |
一键升级所有已安装软件至最新版 |
缓存管理:给磁盘瘦瘦身
每当你下载并安装一个软件包时,Pacman 都会在 /userdata/system/pacman/pkg/ 目录下保留一份副本,这被称为本地缓存(Local Cache)。
生活化类比:这就像是你买组装家具时留下的包装盒和零件备份。如果你觉得家里(磁盘空间)太挤,可以使用
clean命令把旧型号的“空盒子”扔掉,只留最近买的那套;或者用clean-all把所有“盒子”都清理干净。
进阶操作:普通用户如何玩转 Pacman?
对于大多数用户来说,使用上面提到的 Batocera-store 命令已经完全够用了。但如果你想了解它是如何“在引擎盖下”运作的,或者想体验更原汁原味的命令行操作,可以尝试直接使用 Pacman 原生指令。
第一步:同步数据库
在使用 Pacman 搜索或安装之前,你首先需要同步本地的 Pacman 数据库(DB)。
生活化类比:这就像是你在逛“应用商店”之前,先点击一下刷新,让手机同步一下货架上最新的商品清单。
在命令行中输入:
# pacman -Sy
:: Synchronizing package databases...
Batocera 768.0 B 0.00 B/s 00:00 [----------------------------------------------] 100%
【提示】这里的 -Sy 参数就是告诉系统:“去服务器上看看有没有新鲜货,并把最新的商品目录下载到我的本地。”
搜索与查找可用的软件包
同步完数据库后,你就可以开始探索有哪些好东西可以下载了。
第二步:查看商品清单
如果你想看看“货架”上目前都有哪些软件,可以输入:
# pacman -Ss
Batocera/bezels-default-glazed 1.0.0-1
带有 CRT 显像管效果的 Batocera 边框
Batocera/NES-alter-ego 1.0.0-1
NES 免费益智游戏 - 提供 PDF 格式的说明书
Batocera/ports-quake-shareware 1.0.0-1
Quake 游戏文件(共享版)
第三步:精准搜索关键词
如果你已经有明确的目标,比如想找“边框(Bezels)”,不需要从头翻到尾。
生活化类比:这就像是在超市的导视牌上搜索关键词。你只需要输入关键字,系统就会把相关的商品都挑出来展示在你面前。
示例命令:pacman -Ss bezels
如何安装或升级软件包
当你发现心仪的“宝贝”后,安装过程非常直观,就像在应用商店点击“下载”一样。
第四步:启动安装程序
以安装一款名为 NES-alter-ego 的游戏为例,输入以下命令:
# pacman -S NES-alter-ego
输入后,系统会自动开始以下准备工作:
1. 解析依赖关系:检查是否还需要安装其他配套的小零件。
2. 冲突检查:确认这个软件会不会和你现有的其他软件“打架”。
3. 显示安装概况:告知你下载和安装需要占用多少磁盘空间。
【注意】当屏幕出现 Proceed with installation? [Y/n] 时,这是系统在向你做最后确认。按下键盘上的 Y 键并回车,安装就会正式开始:
(1/1) 正在检查密钥环(Keyring)中的密钥 [----------------------------------------------] 100%
(1/1) 正在检查软件包完整性(Integrity) [----------------------------------------------] 100%
(1/1) 正在加载包文件 [----------------------------------------------] 100%
(1/1) 正在检查文件冲突 [----------------------------------------------] 100%
(1/1) 正在检查可用磁盘空间 [----------------------------------------------] 100%
第五步:收尾并开始游玩
当安装进度条跑完后,系统会自动执行一些最后的“挂钩(Hooks)”任务,把新游戏正式录入系统。
(1/1) 正在安装 NES-alter-ego [----------------------------------------------] 100%
:: 正在运行事务后钩子(Post-transaction hooks)...
(1/1) Batocera-install.hook
已将 Alter_Ego.NES 的条目添加到 /userdata/roms/NES/gamelist.xml
生活化类比:这就像是你买了一件家具,快递员不仅帮你搬进了屋,还顺手把它的说明书放进了你的“收藏目录”里。
现在,新安装的游戏已经出现在了 EmulationStation(系统图形前端)的列表中,你可以直接启动并享受它了!
如何卸载不需要的软件包
如果你想腾出磁盘空间,卸载过程也同样干脆利落。
第一步:下达卸载指令
使用 -R 开关(代表 Remove)来指定要移除的软件包:
# pacman -R NES-alter-ego
第二步:确认清理
系统会检查是否有其他程序依赖它,并询问你是否确定:
正在检查依赖关系...
软件包 (1) NES-alter-ego-1.0.0-1
总体释放空间:0.47 MiB
:: 您确定要移除这些软件包吗? [Y/n]
输入 Y 后,系统就会自动处理剩下的工作:
:: 正在处理软件包变更...
(1/1) 正在移除 NES-alter-ego [---------------------------------------------] 100%
安装与管理软件包的两种姿势
你可以根据软件的来源,选择最适合的安装方式:
1. 从官方仓库直接获取
这是最简单的方式。只要知道软件名,一行命令就能让系统自动从“商店”下载并安装:
pacman -S NES-alter-ego
2. 安装本地测试包
如果你正在测试自己制作的包,或者通过其他方式拿到了后缀为 .tar.xz 的离线安装文件,并不需要先搭建复杂的仓库。
生活化类比:这就像是“从 App Store 下载”和“用 U 盘拷贝安装包”的区别。如果你手里已经有了现成的“文件”,直接安装即可。
使用 -U 开关(代表 Upgrade/Install local package)进行本地安装:
pacman -U mypackage-1.0.0-1.tar.xz
【提示】即便命令里的字母是 U,它同样适用于第一次安装某个本地文件。
软件包的进阶管理
无论你的软件包是从官方仓库在线下载的,还是通过单个文件本地安装的,管理它们的逻辑都是一致的。
第一步:卸载不需要的包
使用 -R 参数即可移除软件包。需要注意的是,你只需要输入软件的名字,不需要带上版本号。
生活化类比:这就像从手机里删掉一个 App,你只需要点击图标下的“卸载”按钮,而不需要知道它的内部版本号是 1.2 还是 2.0。
示例命令:
pacman -R mypackage
第二步:查看已安装清单
如果你想检查当前系统里到底装了哪些软件包,可以使用以下命令:
pacman -Q
缓存清理:释放磁盘空间
每当你安装一个软件包,系统都会在本地目录 /userdata/system/pacman/pkg/ 中保留一份备份。这被称为本地缓存(Local Cache)。
【注意】随着安装的软件越来越多,这个缓存文件夹会悄悄占用你的存储空间。如果你想彻底“大扫除”,清空这些已经安装过的包文件,可以输入:
pacman -Scc
建立属于你自己的“私人仓库”
如果你想管理属于自己的资源库(例如,把你收藏的 ROM 整合进 Batocera 游戏商店),Pacman 也能帮到你。
生活化类比:这就像是在公共图书馆(官方仓库)旁边,你自己又开了一间“私人收藏室”。你可以把收藏室里的书也编入索引,让系统能够像对待官方书籍一样对待它们。
第一步:修改配置文件
你需要编辑 /userdata/system/pacman/pacman.conf 文件,在其中添加一个新的区块:
[private_repo]
Server = file:///userdata/local_repo/
第二步:确定仓库位置
这里的 Server 指向你存放软件包的具体位置。你有两种选择:
* 本地目录:例如上面例子中的 /userdata/local_repo/,直接放在你的 Batocera 设备里。
* 网络托管:你也可以把软件包放在自己的 Web 服务器上,通过网址进行访问。
【提示】设置完成后,你就可以像逛官方商店一样,管理你私人的游戏和工具包了!
如何往你的私有仓库里“进货”?
当你准备好了自己的软件包文件,就可以把它们加入到刚刚建好的私人仓库中,让系统能够识别并安装。
第一步:放置软件包
将你的新包(例如 mypackage-1.0.0-1.tar.xz)拷贝到你设置的本地仓库目录中(比如 /userdata/local_repo/)。
第二步:更新数据库索引
你需要告诉仓库这里来了新成员。运行 repo-add 命令,这就像是在图书馆的索引卡片上记下新书的名字:
# repo-add /userdata/local_repo/private_repo.db.tar.gz mypackage-1.0.0-1-any.pkg.tar.xz
==> 正在将 private_repo.db.tar.gz 提取到临时位置...
==> 正在将 private_repo.files.tar.gz 提取到临时位置...
==> 正在添加软件包 'mypackage-1.0.0-1-any.pkg.tar.xz'
-> 正在计算校验和 (Checksums)...
-> 正在创建 'desc' 数据库条目...
-> 正在创建 'files' 数据库条目...
==> 正在创建更新后的数据库文件 '/userdata/local_repo/private_repo.db.tar.gz'
第三步:让系统刷新信息
包加进去了,但系统还不知道。输入以下命令让 Pacman 同步最新情报:
pacman -Sy
现在,你就可以像安装官方软件一样,从你自己的仓库里安装这个包了。
如何从仓库中移除软件包?
如果你不想要仓库里的某个包了,可以使用 repo-remove 命令。
【提示】移除时,你只需要提供软件包的名称(比如 mypackage),而不需要输入带版本号的完整文件名。
示例命令:
repo-remove /userdata/local_repo/private_repo.db.tar.gz mypackage
进阶:如何制作自己的软件包?
如果你想更进一步,学习如何亲手制作一个 Pacman 软件包,可以查阅开发者专属页面:《创建属于你自己的 Pacman 软件包(Create your own pacman package)》。里面有详细的开发者指南供你参考。
原文: Pacman包管理器用法 • 翻译: DIY8 Bot



暂无评论内容