
简介由安德烈与马里乌斯合作完成的Java版Pacman项目是一款面向Java初学者和游戏开发入门者的完整可运行示例。项目围绕经典吃豆人玩法展示了图形用户界面设计、游戏主循环、碰撞检测、鬼魂行为模拟、键盘事件处理和动画刷新等核心知识点帮助读者将理论与实践结合起来。资源包中共有12个文件以5个Java源代码文件为主另有3个已编译类文件、1个Markdown说明文件和几个工程配置辅助文件压缩后整体大小仅12KB体积轻巧便于下载和快速阅读。工程结构采用标准布局可以直接导入常用IDE中运行和调试边看代码边体验效果。目前已有151人学习具备一定参考意义。通过分析代码可以学会迷宫的存储与渲染、吃豆与分数更新逻辑、鬼魂简单追击路径的实现同时了解双人合作开发时模块划分与文件组织方式对后续独立完成小游戏或深入Java桌面开发具有启发价值。 最近在梳理 pacman-andreimarius 这个项目这是 Andrei 和 Marius 两个人整理的 pacman 使用项目。先说清楚这里说的 pacman 不是那个吃豆人游戏而是 Arch Linux 生态里的包管理器。他们做的就是把 pacman 从镜像源配置、日常命令、系统升级到最后用 pacman 安装 sddm 和 sddm-kcm 搭建图形登录环境这一整套流程沉淀成可以照着做的方案。我结合自己的实操经验把这套内容重新拆了一遍尽量把容易踩的坑也一并写出来给刚接触 Arch 系发行版的朋友一个少走弯路的参考。1. pacman-andreimarius 项目到底在做什么1.1 不是吃豆人是 Arch 的包管理核心很多人第一次听到 pacman 这个词第一反应都是那个吃豆豆的游戏。但 Andrei 和 Marius 这个项目里的 pacman是 Arch Linux 环境下最核心的包管理工具。看名字能猜出来这个项目就是围绕 pacman 命令、pacman 配置、以及用它安装软件展开的一系列实践总结。为什么要专门整理这样一个项目因为 pacman 本身虽然命令不多但真正用顺手需要理解它的运行机制。Arch 是滚动发行版所有软件包都通过 pacman 从远程仓库拉取。它不像 Debian 系那么“保守”很多包更新很快所以你必须知道怎么正确设置源、怎么升级、怎么处理升级过程中出现的冲突。Andrei 和 Marius 这个项目的好处就是把这些原本散落在文档、论坛和个人笔记里的操作整理成了一条清晰的路径。1.2 项目沉淀下来的一套标准工作流我参考这个项目时最有价值的不是单个命令而是它给出了一套可以复用的工作流。对于一台刚装好的 Arch 系统一般按照下面这个顺序操作配置镜像源也就是修改/etc/pacman.d/mirrorlist。执行一次完整的系统升级sudo pacman -Syu。按需安装软件包比如桌面环境、显示管理器、常用工具。启用系统服务让图形登录界面能正常启动。这套流程看起来简单但每一步都有细节。比如源配置不好后面所有安装都会很慢直接运行pacman -Sy而不是pacman -Syu又可能把系统带进“部分升级”的危险状态。所以这个项目最核心的价值就是把这些细节提前帮你排掉了。下面我从命令本身开始拆。2. pacman 核心命令拆解安装、卸载、升级与查询2.1 安装软件的四种常见姿势pacman 安装软件最常用的命令是sudo pacman -S 软件包名-S是从仓库同步并安装。可以一次装多个用空格隔开。比如sudo pacman -S firefox vim git如果是搜索某个包叫什么名字用-Sspacman -Ss 关键词这个命令会搜索远程仓库里的包名和描述非常实用。想看某个包的详细信息比如版本、依赖、大小可以用pacman -Si 软件包名如果你想安装一个本地已经下载好的.pkg.tar.zst文件用-Usudo pacman -U /path/to/package.pkg.tar.zst这几种姿势覆盖了绝大多数安装场景。需要刻意记住的是-S和-U都需要 root 权限而-Ss和-Si只需要读权限普通用户就能跑。2.2 升级系统的正确姿势pacman -Syu升级系统是 pacman 操作里最容易被忽视、也最容易出问题的一步。正确的命令是sudo pacman -Syu这个命令拆开看-S同步相关操作。-y从镜像源刷新本地包数据库。-u升级所有可升级的软件包。之所以必须用-Syu是因为先刷新数据库再升级所有包系统里包和包之间的依赖关系才能保持一致。很多人图省事只运行pacman -Sy firefox想着先刷新数据库再单独装一个软件。这个操作非常危险因为你的本地数据库已经刷新到较新版本但系统里大部分包还是旧版本新安装的 firefox 可能依赖某个新版动态库而系统里那个库还是旧的运行起来就会报错。这种状态在 Arch 社区里叫“部分升级”一旦出现后续升级会非常痛苦。所以我在这套工作流里唯一的建议就是不要单独使用-Sy除非你马上接着执行完整的-Syu。另外长时间没有更新系统时优先跑一次全量升级再安装新软件。2.3 查询和清理pacman -Q、-Sc 的日常用法除了安装和升级日常用得最多的就是查询和清理。查询当前系统里是否装了某个包pacman -Q 软件包名如果已经安装会输出版本号没有安装会返回错误。列出某个已安装包带的文件列表pacman -Ql 软件包名反过来你想知道某个文件是哪个包安装的用pacman -Qo /路径/到/文件这个命令排查来源特别有用尤其是遇到文件冲突的时候。卸载软件也有讲究。直接卸载目标包sudo pacman -R 软件包名同时删除不再被其他包依赖的依赖库sudo pacman -Rs 软件包名如果连配置文件也想一起清理掉用sudo pacman -Rns 软件包名清理缓存方面pacman 下载的包都会缓存在/var/cache/pacman/pkg/时间长了会占用不少磁盘空间。清理未使用缓存sudo pacman -Sc清空所有旧版本缓存sudo pacman -Scc上面这些命令组合起来基本覆盖了日常 all day 的操作。下面进入真正影响体验的一步源配置。3. pacman 设置源的完整实操从 mirrorlist 到第三方源3.1 源配置的核心文件pacman 的源配置主要在两个文件里/etc/pacman.conf和/etc/pacman.d/mirrorlist。/etc/pacman.conf是主配置文件里面定义了仓库段比如[core]、[extra]、[multilib]。每个段下面会写Include /etc/pacman.d/mirrorlist意思是从 mirrorlist 里读取这个仓库的镜像源地址。/etc/pacman.d/mirrorlist则维护着一长串镜像地址每条长这样Server https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch这里$repo表示仓库名$arch表示系统架构。配置源的核心任务就是把速度最快的镜像放到这个文件最前面或者把不常用的镜像用#注释掉。3.2 用 reflector 自动选源手动微调镜像源顺序如果你是国内用户或者有更近的节点手动选择源是必然的。不过 pacman 本身没有测速工具我一般推荐先用 reflector 自动生成一份镜像列表再手动调整。如果系统里还没装 reflector先确保默认源能连上然后安装sudo pacman -S reflector接着运行sudo reflector --country China --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist这条命令的参数含义--country China只选择中国地区的镜像。--age 12只保留 12 天内同步过的镜像避免选到僵尸节点。--protocol https只使用 HTTPS 协议避免运营商劫持。--sort rate按测速结果从快到慢排序。--save直接把结果写回 mirrorlist。不过 reflector 测速是基于当前网络的瞬时状态结果不一定永远准确。我建议生成完以后再手动打开 mirrorlist 看一眼把最稳定的镜像放在最上面。比如清华、阿里云、中科大这几个通常对国内用户都很快。手动配置时要注意$repo和$arch这两个变量不能写死。像有些人图方便直接写成固定路径比如https://mirrors.tuna.tsinghua.edu.cn/archlinux/core/os/x86_64那其他仓库段也会跑到这个固定路径下最终导致仓库找不到软件包。3.3 添加 archlinuxcn 源的注意事项官方源里的软件数量已经不少但有些社区软件和 AUR 里的热门包不一定在官方源及时出现。国内很多用户会选择添加 archlinuxcn 这个第三方源。在/etc/pacman.conf末尾追加[archlinuxcn] Server https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch保存后刷新数据库并安装密钥环sudo pacman -Syu archlinuxcn-keyring这里有一个坑archlinuxcn 源的 keyring 依赖官方 keyring 初始化正常。如果你刚装完系统最好先执行一次sudo pacman-key --init sudo pacman-key --populate archlinux然后再添加第三方源否则后面验证签名时会一直报 GPG 错误。另外第三方源不是官方承诺的版本兼容性加入后如果升级出现奇怪依赖问题优先检查是不是第三方源引入了和官方源冲突的包。4. 用 pacman 安装 sddm 和 sddm-kcm搭建图形登录环境4.1 sddm 和 sddm-kcm 是什么为什么这么装当你装好一个桌面环境后还需要一个显示管理器来负责图形登录界面。sddmSimple Desktop Display Manager就是这样一个轻量级显示管理器和 KDE Plasma 的匹配度很高当然它也能配其他桌面。sddm-kcm 则是 KDE 系统设置里的模块提供一个图形化界面来配置 sddm 的主题、用户、自动登录等。安装时我喜欢两个一起装sudo pacman -S sddm sddm-kcm只装 sddm 也能用但所有配置都要手动改配置文件对新手不友好。sddm-kcm 装好后在 KDE 的系统设置里会多出一个“开机和登录”入口很多选项都能直接点选省心很多。4.2 安装、启用与切换显示管理器装完后需要把 sddm 设置为默认显示管理器并立即启动sudo systemctl enable sddm --now如果你机器上之前装过其他显示管理器比如 lightdm 或 gdm要先禁用旧的否则两个服务同时存在重启后很可能登录界面花掉或者直接进不了图形界面。禁用旧服务的示例sudo systemctl disable lightdm --now之后可以再启用 sddm。重启系统时sddm 就会自动接管登录界面。这里建议不要只enable不start因为很多人在enable后直接重启测试如果配置有问题会误以为没生效。用--now可以立刻看到反馈。4.3 配置自动登录和主题sddm 的全局配置文件默认是/etc/sddm.conf。如果没有这个文件系统会读取/usr/lib/sddm/sddm.conf.d/default.conf这个是出厂默认配置一般不要直接改。我更推荐在/etc/sddm.conf.d/下新建配置文件比如autologin.conf。需要自动登录时内容可以写成[Autologin] User你的用户名 Sessionplasma这里Sessionplasma对应 KDE Plasma 桌面会话。如果用的是其他桌面需要改成对应的 desktop 文件名称比如xfce。主题文件一般存放在/usr/share/sddm/themes/目录你也可以通过 sddm-kcm 图形界面切换到不同主题。修改主题后建议重启一次 sddm 服务验证sudo systemctl restart sddm如果重启后卡在黑色屏幕大概率是主题文件不兼容或者显卡驱动没装好可以从日志里查这个放到下一节说。5. 常见问题与排查技巧实录5.1 密钥环初始化失败我最早用 pacman 时遇到过安装任何包都报签名错误例如error: GPGME error: No data。这通常是 pacman 的密钥环没有初始化成功或者密钥过期。解决办法很直接sudo pacman-key --init sudo pacman-key --populate archlinux然后更新密钥环包sudo pacman -S archlinux-keyring需要注意的是pacman-key --init会等待系统熵充足如果新机器刚刚开机初始化可能卡住多等一会儿就行。另外某些第三方源有自己的 keyring也要安装对应的 keyring 包否则签名验证过不了。5.2 数据库锁和文件冲突pacman 如果在更新中途被强制关闭比如断电、CtrlC下次执行命令时会提示unable to lock database这说明/var/lib/pacman/db.lck文件残留了。先确认没有 pacman 进程在跑ps aux | grep pacman确认真没有进程后再删除锁文件sudo rm /var/lib/pacman/db.lck不要一看到锁文件就删万一是后台还在跑删掉锁会导致另一个 pacman 事务同时操作数据库损坏包数据库这就不好收拾了。文件冲突也是常见问题。升级时报类似error: failed to commit transaction (conflicting files)这时候先查冲突文件属于谁pacman -Qo /路径/到/冲突文件如果确实是自己装过的第三方包和官方包冲突优先考虑卸载旧包而不是强制覆盖。实在需要覆盖时可以这样sudo pacman -Syu --overwrite /路径/到/冲突文件但全局--overwrite *一定慎用这会让 pacman 跳过所有冲突检查一旦覆盖掉系统关键文件系统可能直接起不来。5.3 升级后桌面起不来怎么办升级内核或者显卡驱动后重启发现 sddm 起不来这是很典型的滚动发行版问题。先看服务状态systemctl status sddm再看日志journalctl -u sddm -b -p err如果日志里出现内核模块加载失败多半是内核更新后没重启。滚动发行版里内核更新只是把新文件放到磁盘必须重启后才会加载新内核模块。你可以在重启前先确认当前运行的版本和已安装的内核版本uname -r pacman -Q linux如果已安装版本比运行版本新先重启通常能解决。NVIDIA 显卡用户还要特别注意驱动和内核模块版本要匹配。实在起不来图形界面时可以先用CtrlAltF3切到 tty 终端登录后重装驱动或者回滚内核包再重启测试。最后分享一个我自己的习惯每次跑sudo pacman -Syu之前我会习惯性花半分钟看一眼 Arch 官网首页的更新公告尤其是内核、glibc、systemd 这类底层包有更新时提前知道有没有手动步骤。另外我会把更新命令写成一个简单别名或者脚本内容就是sudo pacman -Syu每次更新前先查一下磁盘剩余空间因为升级过程中如果空间不够很容易中途失败。Andrei 和 Marius 这个项目里也有很多类似的细节我在整理时把它们加入了日常流程。别人踩过的坑自己能不踩就尽量不踩这才是 pacman 项目留给我们的最大价值。本文还有配套的精品资源点击获取