☰
Manjaro常用命令整理:从pacman到AUR的实用指南
2026/10/1 22:33:33 网站建设 项目流程

先说一句:标题里的“manjao”大概率是“Manjaro”的笔误。如果你搜“manjao命令”搜到这篇文章,说明你想找的就是Manjaro这个基于Arch Linux的发行版常用命令。我用了几年Manjaro,从桌面日常维护到命令行折腾都踩过不少坑,这篇就把我实际高频用到的命令整理出来,按使用场景分好类,附带一些文档里不会写的注意事项。无论你是刚从Ubuntu转过来,还是已经在Manjaro上折腾了一阵子,这份清单应该都能帮你少走弯路。

1. 先搞明白Manjaro的命令体系与Arch的异同

1.1 名字拼写问题和Manjaro的定位

很多人第一次听到“Manjaro”这个词都会拼错,manjao、manjaro、manjaruo都有。它其实是Manjaro Linux,一个基于Arch Linux的滚动更新发行版。滚动更新的意思是:你不需要像Ubuntu那样等大版本升级,系统组件会持续收到更新,装一次可以用到天荒地老(前提是你别把系统搞坏)。

为什么要把Manjaro单独拎出来讲命令,而不是直接看Arch Linux的教程?因为Manjaro虽然继承了Arch的包管理体系,但它做了自己的二次开发。最主要的区别在于:

  • Arch用的是纯pacman包管理器,Manjaro底层也是pacman,但增加了Manjaro专属的仓库分层(stable、testing、unstable)。
  • Manjaro默认预装了很多桌面环境辅助工具,比如mhwd(硬件检测)、manjaro-settings-manager(系统设置面板),这些在Arch里是没有的。
  • Manjaro的内核切换、显卡驱动安装有自己的一套命令,和Arch的手动方式不一样。

所以如果你直接照搬Arch wiki里的命令,有些能跑通,有些会提示找不到工具,还有些甚至会把系统搞坏。我下面列的命令,全部在Manjaro上实测过。

1.2 三条命令主线:pacman、AUR helper、systemctl

Manjaro的命令操作,绝大部分绕不开这三个体系:

  • pacman:官方包管理器,负责安装/卸载/更新来自官方仓库的软件。它的用法是pacman -参数 包名,参数全是小写字母,大小写敏感,记错会出大问题。
  • AUR helper:AUR是Arch用户软件仓库,里面有大量社区维护的软件包,Manjaro默认没有安装AUR helper,需要你自己装一个(最常见的是yay或paru,后面细说)。装完之后,AUR软件和官方软件的操作体验就统一了。
  • systemctl:系统服务管理工具,用来启动、停止、开机自启各种守护进程。Manjaro沿用了systemd作为初始化系统,所以这个命令体系也不会变。

理解了这三条线,后面所有命令基本都是它们的组合和延伸。

2. pacman包管理命令:装机后最先要背熟的这一套

2.1 安装、卸载、更新:最核心的增删改查

我先说最常用的增删改查。pacman的语法是pacman [选项] [包名],注意选项前面只有一个横杠,不像很多Linux工具用两个横杠。

搜索软件包:

pacman -Ss 关键词

比如我想装一个截图工具,但是不确定叫什么名字,可以pacman -Ss screenshot,它会列出所有名称或描述里包含“screenshot”的包。这个搜索是模糊匹配,结果可能很多,所以关键词尽量精确。

安装软件包:

pacman -S 包名

-S是安装(Synchronize的S),后面跟精确的包名。安装时它会自动解析依赖,把需要的东西一起装好。如果安装过程中提示某个依赖版本冲突,不要硬来,先看看是不是仓库源的问题。

卸载软件包:

pacman -R 包名

这是单纯卸载,不删除依赖。我一般更常用这个:

pacman -Rns 包名

-Rns三个参数含义分别是:Removal(移除包)、nosave(不保留配置文件)、dependencies(同时删除不再被其他包依赖的孤儿依赖)。我实际用过之后感觉,-Rns才是真正意义上的“卸载干净”,-R卸载完有时候会残留一堆用不到的依赖库,占空间不说,还会让系统越来越乱。

更新系统:

sudo pacman -Syu

-Sy是刷新软件源数据库,-u是升级所有可更新包。Manjaro因为是滚动更新,我建议养成定期更新的习惯,最好一两周一次,不要几个月不更新然后一次性大跨度升级,那样出问题的概率会高很多。更新前建议先看一眼Manjaro官方论坛或者官方博客的更新通知,有时候官方会提示某些更新需要手动处理。

2.2 查询与验证:确认装了啥、文件属于哪个包

这部分命令在排查问题的时候特别救命。

列出所有显式安装的包:

pacman -Qe

“显式安装”是指你自己主动装的,而不是作为依赖被带进来的。批量备份软件清单时,这个命令输出很好用。我换电脑时会把输出存成文件,在新机器上重新安装。

查看某个包安装了哪些文件:

pacman -Ql 包名

输出会列出该包在系统里创建的所有文件路径。比如你想知道某个软件的配置文件到底放在哪,就可以用这个查。

查询某个文件属于哪个包:

pacman -Qo /路径/文件

这个和上面刚好是反过来的。有时候你发现系统里多了一个不知道哪里来的文件,或者某个命令提示“找不到命令”,但是你又确定装过某个包,就可以拿文件路径去反查。比如:

pacman -Qo /usr/bin/nvim

就能查到这个nvim是哪来的。

查看包详情:

pacman -Qi 包名

这个会显示版本的版本号、依赖关系、安装日期、描述等信息。排查问题前我习惯先跑一下这个,确认当前装的版本和依赖是否符合预期。

查找孤儿依赖包:

pacman -Qdt

这个命令列出所有不再被任何已安装包依赖的包。它们通常是软件卸载后留下的“尸体”,清理掉能省不少空间。清理命令是:

sudo pacman -Rns $(pacman -Qdtq)

-q参数让pacman -Qdt只输出包名不带表格,再用-Rns统一删除。我每次都这么清理,实测很安全,因为是孤儿包才删,不会动到正常软件。

2.3 本地缓存清理:install的包都堆在硬盘上

pacman会把下载的安装包缓存在/var/cache/pacman/pkg/目录下。时间久了,这个目录可能膨胀到几个GB,里面全是旧版本的安装包。

查看缓存占用:

du -sh /var/cache/pacman/pkg/

清理缓存,只保留最近版本:

sudo pacman -Sc

这个命令会删除所有不再安装的软件包缓存,保留当前安装版本的缓存。如果想要更激进一点,只保留最近几个版本:

sudo paccache -r

paccache是pacman自带的一个工具,-r表示保留最近版本,默认保留3个版本,其余全删。我现在的习惯是:每两周执行一次paccache -r,缓存占用控制在500MB以内,既不浪费空间,也不至于把缓存全清了导致想降级时找不到旧包。

3. AUR仓库命令:把社区软件装出“官方感”

3.1 为什么Manjaro比Arch更需要AUR helper

AUR(Arch User Repository)是Arch生态里一个巨大的软件仓库,社区用户把自己打包的软件提交上去,其他人通过特殊方式安装。很多软件官方仓库里没有,但AUR里有——比如一些商业软件的Linux版、某些GitHub上的工具、还有一些国内软件的非官方打包。

Manjaro虽然基于Arch,但官方仓库比Arch滞后更新一些,因为Manjaro要做自己的稳定性测试。这就导致部分软件在Manjaro官方仓库里没有,但AUR里一定有。所以一个Manjaro用户如果不会用AUR,很多软件就装不了。

AUR的安装方式原本很繁琐,需要手动克隆PKGBUILD、执行makepkg,AUR helper就是把这个流程自动化。装上helper之后,你可以用类似pacman的命令格式来装AUR包,体验和官方仓库几乎一样。

3.2 yay还是paru:我选了paru

常见的AUR helper有yay和paru,两个都是主流,功能几乎一样。我用过yay一段时间,后来换成了paru,主要原因是paru是Rust写的,编译出来的二进制更干净,而且paru对pacman新语法的支持更及时。但对新手来说,装哪个都行,选一个用熟就好,没必要在两个之间纠结。

安装paru的命令:

sudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/paru.git cd paru makepkg -si

安装yay的命令也是一样的流程,把仓库地址换成https://aur.archlinux.org/yay.git即可。

装好后,日常使用就这么几条:

paru -Ss 关键词 # 搜索AUR和官方仓库 paru -S 包名 # 安装,自动判断是官方还是AUR paru -Syu # 更新系统(包括AUR包) paru -Rns 包名 # 卸载

paru -S搜到同名包时,会让选择装官方版还是AUR版,默认会用AUR版。我习惯把paru当成主力命令,因为它同时管理官方和AUR的更新,一条paru -Syu通吃,省得来回切。

3.3 AUR安装实操与常见失败处理

AUR安装失败了不要慌,90%的情况是这几个原因:

原因一:缺少base-devel编译工具链。AUR里的包大多数是源码打包,需要在你机器上编译,如果没装base-devel,会报各种缺失依赖。解决办法是补上:

sudo pacman -S --needed base-devel

原因二:PGP签名校验失败。有些AUR包的PKGBUILD会校验作者签名的PGP key,如果本机没有导入这个key,makepkg会报PGP signature could not be verified。解决方法是手动导入key,报错信息里一般会给出指纹ID,执行:

gpg --recv-keys 报错里显示的指纹ID

然后再重新执行安装命令。

原因三:版本冲突或依赖源找不到。这种情况AUR里的包依赖了某个AUR包,但那个依赖包没有更新,或者和官方仓库的版本冲突。解决办法是先用paru -Syu把系统整体更新一遍再试,如果还不行,去AUR页面的评论区看看,通常已经有人在回复里给了临时解决方案。

我不建议新手一上来就装一堆AUR包,因为AUR包的维护质量参差不齐。如果你用的是Manjaro作为主力系统,优先用官方仓库,AUR包尽量少装且只装口碑好的,这样可以减少系统被搞坏的风险。

4. 系统维护与升级命令:Manjaro和Arch最大的区别在这里

4.1 为什么不能无脑用Arch的方法直接升级

很多从Arch转到Manjaro的人会犯一个错误:直接用pacman -Syu,也不看更新通知。Arch是纯滚动,软件上游发布什么很快就到;Manjaro有stable、testing、unstable三层仓库,stable分支比Arch滞后大概两到四周,这是在给Manjaro留时间验证兼容性。

但也正因为这样,有些软件在Manjaro stable仓库里的版本会偏旧,如果你用paru -Syu把系统整体更新,可能会遇到部分软件包被降级或者依赖版本不满足的情况。这是Manjaro的已知特性,不是故障。

我的建议是:

  • 不要用Arch的镜像源替换Manjaro的源。网上有人为了追新把源换成Arch的,短期看起来没问题,长期一定出乱子。Manjaro的包被官方做过定制依赖,混用Arch源会导致依赖解析混乱,系统滚挂概率激增。
  • 升级前先看Manjaro官方论坛的Announcements板块,它有每个更新包的通知帖,如果里面有“需要手动干预”的说明,按说明操作。

4.2 更新内核和显卡驱动:mhwd内核切换

Manjaro最让我觉得省心的地方是内核切换非常简单,不需要像Arch那样手动编译或管理mkinitcpio。

查看当前内核版本:

uname -r

查看Manjaro仓库里有哪些内核可用:

mhwd-kernel -l

安装新内核(例如安装6.6 LTS版本):

sudo mhwd-kernel -i linux66

卸载旧内核(例如卸载6.1)时,需要先确认当前没有在用这个内核:

sudo mhwd-kernel -r linux61

整个过程会自动更新引导配置,不用担心把启动器搞坏。

显卡驱动的命令是mhwd。查看当前驱动的安装情况:

mhwd -l

安装A卡/显卡的开源驱动:

sudo mhwd -a pci free 0300

安装闭源驱动(N卡):

sudo mhwd -a pci nonfree 0300

0300这个数字代表显卡设备类别。我建议除非游戏需求,否则优先用开源驱动,Manjaro自带的open source驱动对日常使用完全够,而且不会因为驱动问题导致登录界面循环。

4.3 诊断和修复系统:pacman数据库和缓存锁

用Manjaro时间长了,难免遇到系统半残的情况。最常见的两个命令:

检查pacman的数据库一致性:

sudo pacman -Dk

这个命令会扫描本地的包数据库,检查是否存在依赖缺失、文件冲突之类的问题。如果输出有警告,它会告诉你具体是哪个包有问题。我之前遇到过系统更新后部分命令失效,跑这个命令发现是几个包的元数据损坏,用sudo pacman -S 包名重新安装那几个包就修复了。

清除pacman的进程锁:

sudo rm /var/lib/pacman/db.lck

pacman在更新时会在/var/lib/pacman/下生成一个锁文件,如果更新过程意外中断(断电、窗口关闭、按了Ctrl+C),这个锁文件会残留,之后你再执行任何pacman命令都会提示unable to lock database。这个命令就是手动移除锁文件。但是注意:移除之前一定要确认没有另一个pacman进程在运行,否则可能损坏数据库。可以先看下进程:

ps aux | grep pacman

确认没有输出(除了grep自己)再删。

5. 日常实用命令:硬件查询、服务管理、进程与端口排查

5.1 systemctl服务管理:开机自启和日志查看

Manjaro用systemd,日常管理服务就是systemctl。

启动一个服务:

sudo systemctl start 服务名.service

设置开机自启:

sudo systemctl enable 服务名.service

查看服务状态:

systemctl status 服务名.service

查看某服务的完整日志:

journalctl -u 服务名.service

journalctl是systemd的日志查看器。配合-f参数可以实时跟踪日志输出,调试服务启动失败时很常用:

journalctl -u 服务名.service -f

我排查网络服务问题时的一个固定套路是:先systemctl status看服务是否在跑,如果死了,journalctl -u 服务名 -xe看最近几十行日志,基本都能定位问题。

5.2 系统信息与硬件状态:inxi和neofetch

Manjaro自带一个非常好用的系统信息工具inxi,比neofetch的信息更详细,也更适合排查问题。

查看完整系统信息:

inxi -Fxxx

这个会输出CPU、内存、主板、显卡、声卡、网络、分区、内核、桌面环境、显示服务器等所有关键信息,一个命令全部搞定。如果在论坛求助,发这个输出就够了。

查看CPU信息:

lscpu

查看内存和分区:

free -h df -h lsblk

free -h看内存占用,df -h看磁盘空间,lsblk看分区结构。系统变卡的时候,我一般先跑这三个命令快速判断是内存爆了还是磁盘满了。

查看显卡设备的实际驱动绑定:

lspci -k | grep -A 3 -i vga

这个会显示显卡设备当前用的是哪个内核驱动模块。如果换了驱动后还是不生效,用这个命令确认驱动模块绑没绑上,一查一个准。

5.3 进程与端口排查:谁占用了我的端口

查看所有监听端口:

ss -tlnp

ss命令在Manjaro上默认存在,不需要装netstat。-t表示TCP,-l表示监听中,-n表示显示数字端口不解析服务名,-p显示对应进程PID。比如你启动一个服务但它连不上去,先跑这个看端口有没有监听。

根据端口找进程:

ss -tlnp | grep 8080

查看某个进程的资源占用:

top -p PID

或者更友好的:

htop

htop需要安装,命令是sudo pacman -S htop。它的交互界面能直接看到每个进程的CPU、内存占用,还能用F9直接杀进程。我排查性能问题的时候基本都用它。

杀进程:

kill -9 PID

-9表示强制结束,只有正常kill PID不行时才用。强制杀进程可能导致数据丢失或配置损坏,能不用尽量不用。

6. 我踩过的几个坑(以及对应的命令补救)

6.1 更新时强行中断,结果半套系统待升级

有一次我更新到一半,电脑断电了,重启之后很多常用命令都提示找不到共享库。当时我没意识到是更新没完成,先跑了sudo pacman -Dk,一堆警告,然后发现自己当时还残留了db.lck锁文件。

正确的处理流程是:

sudo rm /var/lib/pacman/db.lck sudo pacman -Syu

重新执行-Syu,让pacman把剩下的升级自动补完。系统恢复正常。这个坑的关键是:断电或者中断更新后,不要先重启再想着修复,先重新跑一遍更新。

6.2 从AUR装了一个不维护的软件,导致依赖崩溃

还有一次我装了一个AUR上的旧版软件,它依赖了一个很老的库,结果这个老库覆盖了官方仓库的文件,导致几个系统的核心工具全坏了。解决办法是看pacman -Qo确认是哪个包的文件,然后卸载那个AUR包和它带的依赖。

现在我给自己定的规矩是:AUR包安装前先看一眼AUR页面的更新时间,超过一年没更新的包,再想要也不装。如果一定要用,先做好系统快照(Manjaro自带Timeshift,装一个不占多少空间,这个习惯很重要)。

6.3 手动改了镜像源,差点把自己坑出系统

Manjaro的镜像源配置文件在/etc/pacman.d/mirrorlist。有一次我用了一个图形工具自动切换镜像源,切完发现多了一些奇怪的源,更新时总是报错。最后用Manjaro自带的manjaro-settings-manager重新选了国内的镜像源,问题解决。

这个坑的教训是:不要手写镜像源列表,用系统自带工具manjaro-settings-manager的“镜像源”选项卡来选择和排序,它生成的文件格式才是Manjaro最兼容的。

6.4 TTY终端显示中文是方块,装个字体就好

如果你在图形界面正常,但Ctrl+Alt+F2进入命令行模式后发现中文显示成一堆方块,不是系统坏了,是TTY不支持中文字体渲染。解决办法是装一个包含中文字符的终端字体,然后重启或者fc-cache -fv刷新字体缓存。我装的是wqy-microhei包:

sudo pacman -S wqy-microhei

TTY里就能正常显示中文了。顺手说一句,TTY分辨率不合适应时,在/etc/default/grub里修改GRUB_GFXMODE参数也能调。

6.5 别随便用“snap”软件包

Manjaro虽然可以安装snap,但因为Manjaro的某些内核模块和snap的挂载机制偶尔存在兼容性问题,导致部分snap应用启动失败。如果你不是非某个软件不可,建议优先用官方仓库或AUR版本,不要在Manjaro上把snap当成主力安装方式。

我踩过一次:装了一个snap版的编辑器,启动5次能挂3次,换成AUR版之后一切正常。后来查了下,问题通常出在snapd的挂载点与Manjaro的AppArmor配置不完全兼容上,两条命令能够临时缓解:

sudo systemctl restart snapd sudo snap refresh

但治标不治本,能不用就不用才是正解。

7. 最后一句:命令记不住没关系,记住怎么查

Manjaro这类滚动更新的发行版,最大的门槛不是命令本身,而是出了问题时能不能找到靠谱的排查路径。命令是死的,思路是活的。我用了这几年,真正记在脑子里的命令反反复复就是pacman -Syu、pacman -S、paru -S、systemctl status、journalctl -xe、inxi -Fxxx这六条,其他的都是查一下再用。

个人强烈建议你把inxi -Fxxx这个命令的输出存一份备份在云盘里,哪天系统坏了,或者需要给远程求助的人提供环境信息,直接甩出这份输出,至少能省掉来回问两天“你什么配置、什么内核、什么驱动”的沟通成本。Manjaro可能不是最轻量、最稳定的发行版,但它确实是把Arch的灵活性和新手的友好度结合得最平衡的那一个,祝你用得顺手。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询