首页 / 资讯中心 / 文章详情

Manjaro 高频命令实战:从 pacman 到 yay 的完整指南

Manjaro 高频命令实战:从 pacman 到 yay 的完整指南 ★ FEATURED ARTICLE
Manjaro 的命令行永远是新手和老手分化最明显的地方有人觉得它比 Ubuntu 清爽有人则被 pacman 一上来就整懵。我最初看到“常用的 manjao 命令”这个问题时还愣了一下后来才反应过来这多半是 Manjaro 的手滑。今天这篇就围绕 Manjaro 环境下的高频命令展开从最核心的 pacman、yay 到日常文件操作、系统维护、网络排查全是实战里能用上的。刚装完系统不知道下一步敲什么的人可以直接照着抄用了一段时间想整理操作流程的人也能在这里找到对应的场景。1. 先啃最硬的一块骨头pacman 包管理命令1.1 为什么我建议你先记 pacman 而不是编辑器Manjaro 是基于 Arch Linux 的滚动发行版特点就是软件包特别新、软件源特别丰富而这一切都建立在 pacman 上。很多从 Ubuntu 转过来的朋友刚开始习惯性敲apt install在 Manjaro 上只会得到一个“command not found”然后就开始怀疑人生。其实只要把记忆锚点从 apt 换成 pacman后面的路就顺了。你可以把 pacman 理解成系统的“应用商店后端”而 AUR 是“第三方应用市场”yay 是“自动帮你从第三方市场下载安装的小助手”。这三者的层级关系清楚了Manjaro 的包管理就算入门了。pacman 本身是 Arch 系专用的包管理器但它并不难记核心动作就几个-S是安装/搜索、-R是删除、-Q是查询、-U是安装本地包。后面跟着的小写字母则是细化和扩展。你会发现它比 apt 更紧凑一个字母代表一个参数但也正因为紧凑很多人一看到sudo pacman -Syu就懵了。不要慌拆开看-S是包管理主动作y表示刷新数据库u表示升级所有可升级的包合起来就是“先同步远端软件包列表再升级整个系统”。等这个概念建立起来后面很多命令都能一眼看懂。1.2 最常用的 pacman 操作速查我把平时用到频率最高的 pacman 命令整理成了下面这张速查表建议先抄下来贴在终端旁边用几天就熟了。目标命令一句话解释安装软件sudo pacman -S firefox-S是安装主动作后跟包名搜索软件pacman -Ss 关键词搜索官方仓库里名字或描述匹配的包查看是否已安装pacman -Q 包名有输出说明已装没输出说明没装查看包详细信息pacman -Qi 包名查看本地已安装包的信息、依赖、安装原因升级整个系统sudo pacman -Syu先同步数据库再升级所有软件删除软件sudo pacman -Rns 包名-R删除-s删依赖-n删配置清理缓存sudo pacman -Sc清理旧版本的安装包缓存保留当前版本查询文件归属pacman -Qo /usr/bin/vim想知道某个文件是谁安装时用这个查看包包含的文件pacman -Ql 包名列出本地包安装后生成了哪些文件安装本地包sudo pacman -U 包路径安装.pkg.tar.zst格式的本地包安装命令最容易出问题的是包名写错。pacman -Ss搜索的时候返回结果里第一行一般是“仓库/包名 版本号”下面一行是描述。比如搜索微信pacman -Ss wechat可能搜不到官方仓库里的包这是正常的微信这类软件往往在 AUR后面会专门讲。如果搜索时提示target not found大多数情况是拼写不对或者没先同步数据库。同步一下再搜就好。删除命令-Rns里的-n很多人会忽略但它的作用很贴心把软件残留的配置文件也一并删掉。第一次使用如果你不确定会删什么可以先跑sudo pacman -R 包名不带参数让 pacman 只删软件主体。更稳的方式是先执行sudo pacman -Rns 包名之前用pacman -Qi 包名看一遍依赖关系确认没有重要的共享依赖会被误删。实际上 pacman 在删除时会自动检查依赖如果有其他包依赖它会提示无法删除或列出受影响包。清理孤儿包是一个很常用的维护动作。所谓孤儿包是指曾经作为某个软件的依赖被装进来但后来那个软件被删了依赖已经没有其他包需要了。查一下再删pacman -Qdtq如果输出列表里都是你确认没用的包再执行sudo pacman -Rns $(pacman -Qdtq)注意pacman -Qdtq里d代表“作为依赖被安装”t代表“不再被任何包依赖”q代表“只输出包名不输出版本”。如果列表里有你印象中还在用的软件可能是有包没声明好依赖建议先留着不要盲目清理。1.3 我踩过的 pacman 的坑使用 pacman 最大的坑是升级过程中中断。Manjaro 是滚动发行版一次升级可能要处理上百个包如果终端意外关闭、断电或者你直接kill了 pacman 进程下次再运行很可能会报could not lock database。这是因为 pacman 会在/var/lib/pacman/db.lck留下锁文件。解决方法很简单确认没有其他 pacman 或 yay 进程在跑后sudo rm /var/lib/pacman/db.lck第二个坑是很多人图快只执行sudo pacman -Sy而不带-u。-Sy只是刷新数据库不升级系统如果这时候再安装新包可能把某个依赖升到较新版本而系统里其他包还依赖旧版本造成“部分升级”状态。Arch 系最忌讳部分升级轻则依赖不满足重则系统起不来。所以日常升级请始终使用sudo pacman -Syu不要没事单独跑-Sy。第三个坑是同一时间只允许一个包管理进程操作。开了两个终端一个跑sudo pacman -Syu另一个跑sudo pacman -S firefox后一个大概率会报数据库被锁。yay 也是同样的道理不要在 pacman 还在跑的时候启动 yay。很多新手遇到 “could not lock database” 就是这个原因不是系统坏了是自己在另一个终端把锁占住了。2. 装软件离不开的 AUR 与 yay 命令2.1 AUR 是什么以及为什么 Manjaro 用户离不开 yayAUR 的全称是 Arch User Repository可以理解成 Arch 社区的软件集散地。官方仓库里的软件以开源、稳定、经过维护的为主但很多闭源或者相对小众的软件没有进官方仓库。Manjaro 用户想装微信、部分商业软件、一些最新版的开发工具最先想到的就是去 AUR 找。AUR 里不是直接提供编译好的安装包而是一堆PKGBUILD脚本脚本会告诉你从哪里下载源码、怎么编译、怎么打包、怎么安装。手动处理这些脚本也不是不行但太啰嗦于是就有了 AUR helperyay 是现在最主流的一个。yay 的出现解决了很多痛点它能在官方仓库和 AUR 之间自动判断缺的依赖自动安装打包过程全自动还支持模糊搜索。如果你懒得上 AUR 网页翻评论直接yay -S 包名就能搞定很多用过 Arch 的老玩家从 yaourt 转到 yay 之后就再没换过。安装 yay 有两种常见方式。第一种是如果 Manjaro 官方仓库里已经有 yay 包直接sudo pacman -S yay第二种是通用方法从 AUR 源码编译。先确保有基础编译工具链和 gitsudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/yay.git cd yay makepkg -si这里要特别提醒makepkg不能以 root 身份直接跑所以用普通用户执行上面这些命令。执行过程中如果提示需要安装依赖可能会要求你输入 sudo 密码这是正常的。yay 装好之后常用命令和 pacman 很像只是多了一整套 AUR 支持目标命令说明安装软件yay -S 包名官方源有就直接装没有就自动去 AUR 搜索搜索软件yay -Ss 关键词同时搜索官方仓库和 AUR升级系统yay -Syu升级官方源和 AUR 里的包删除软件yay -Rns 包名和 pacman 一样不过也适用于 AUR 装的包清理无用的依赖yay -Yc交互式清理孤立包删之前会问你只下载 PKGBUILDyay -G 包名拿到当前目录方便人工审查比如说我想装微信最简单的操作就是yay -S wechat-universal然后按提示选择版本确认依赖剩下的交给 yay 编译安装就可以。这类 AUR 包不是官方维护的安装前最好多看一眼它的最后更新时间、安装数和评论。我会在下一小节展开。2.2 用 AUR 前先学会看 PKGBUILD很多人用 AUR 最大的心理障碍是“安全”。我的态度是不要盲信也不用因噎废食。AUR 包本质上是一个脚本只要你会看 PKGBUILD风险就能控制在自己手里。一条很实用的操作是先把某个包的 PKGBUILD 拉下来看看再决定装不装cd ~/Downloads yay -G wechat-universal cd wechat-universal cat PKGBUILD重点看两处source()里的下载地址是不是官方域名build()或install()里有没有干奇怪的事。如果脚本里出现curl xxx | bash或者从不明网址下载可执行文件那就要警惕。大多数社区常用包的 PKGBUILD 都很稳健无非是下载发布包、校验哈希、安装到指定目录。你在 AUR 网页上还能看到评论区不少用户会把实际安装是否成功、有没有坑写在那里装之前花两分钟扫一眼能省很多折腾时间。多看几次 PKGBUILD 之后你会发现它并不复杂无非是“变量定义 下载 编译 打包”四步。我自己现在遇到冷门 AUR 包会先yay -G拉下来复制给别人看基本看两行就知道干不干净。如果没时间细看至少选择安装数高、评论活跃、最近还在更新的包踩坑概率会低很多。另外要注意AUR 的包更新节奏不一样有的几周不更有的天天更。yay 升级时如果在编译阶段报错通常是上游源码变了或者依赖缺失先执行sudo pacman -Syu把系统更新到最新再重试yay -Syu或单独重装那个包一般能解决。编译过程中yay会在~/.cache/yay留下很多源代码目录时间久了很占空间清理时可以直接删除该目录或者用yay -Sc清理不再需要的构建缓存。3. 文件、编辑器和进程通用 Linux 命令速查3.1 文件、目录和权限Manjaro 毕竟还是 Linux文件操作的底层命令和 Ubuntu、Debian 完全一样。这里我不打算把每个命令都讲一遍只挑日常使用频率最高、且容易踩坑的几个做记录。pwd显示当前所在目录。刚进终端不知道自己在哪先敲这个。ls -lah列出目录内容带权限、大小、修改时间-a会把隐藏文件也显示出来。cd切换目录。cd ~回用户主目录cd -回上一次所在目录cd ..回上一级。mkdir -p a/b/c递归创建多级目录不用一层一层建。touch file.txt创建一个空文件或者刷新文件时间戳。cp -r 源目录 目标目录复制目录必须带-r否则会报错。mv 源 目标移动或重命名文件。同一个目录下用 mv 就是重命名。rm -rf 目录递归强制删除目录注意这个命令没有回收站删了就没了。rm -rf是新手最容易出事的地方。我的习惯是敲完命令先pwd确认自己在哪个目录再用ls看一眼要删的东西到底叫什么最后从rm -r 目录名开始而不是一上来就rm -rf /。网络热词里“linux 删除文件夹命令”很多人搜的就是这个不是不能删而是要知道自己在删什么。权限管理方面最常用的是这两个chmod x script.sh chown user:group filenamechmod x给脚本添加执行权限装上软件后提示没有权限时经常要用。chown改文件和目录的所有者处理外部挂载盘拷贝文件时会遇到比如从 Windows 分区拷过来的文件 owner 是 root导致普通用户没法编辑用chown -R 用户名:用户名 目录一次性改回来。查找文件我常用find和grep搭配比如find ~/Downloads -name *.pdf grep -rn 关键字 ~/codefind定文件路径grep在文件内容里搜关键字这两个命令组合起来等于给整个目录装了一个搜索框。Manjaro 安装的图形文件管理器也有搜索功能但命令行在远程会话、大量文件场景下依然快得多。3.2 vim 命令只记八个键就够了vim 是很多新手在终端里的第一道心理障碍其实它并不需要你会背一大堆命令。日常改配置文件只要掌握下面这 8 个操作就够了。vim 文件名打开文件。如果文件不存在vim 会创建空的缓冲区保存后才生成文件。i进入插入模式。此时才能像普通编辑器一样打字。Esc退出插入模式回到普通模式。:wq保存并退出。:q!不保存强制退出改坏了文件最好的逃生通道。dd删除光标所在行。/关键词在当前文件里搜索关键词按n跳下一处。u撤销上一次修改。在 Manjaro 上我们经常要改/etc/pacman.conf、/etc/mkinitcpio.conf这类系统配置文件很多情况下没有图形编辑器可用vim 是最后的保险。如果你实在用不惯安装 nano 也是一个选择sudo pacman -S nano nano /etc/pacman.confnano 底部会显示常用快捷键提示比如CtrlO保存CtrlX退出对新手更友好。我不会说一定要强迫自己用 vim但你只要掌握上面 8 个键以后再遇到“远程服务器上只有 vi”的场景就不会慌。3.3 top、free、ps 怎么看进程排错三板斧系统卡了、风扇狂转、某个进程占满 CPUManjaro 下排查进程常用的命令是 top。直接在终端敲top进入全屏实时刷新页面。按P可以按 CPU 占用排序按M按内存占用排序按q退出。很多人问“top 命令详解”其实最常用到的就是这三个键P、M、q。top 的界面信息很多但不用全看懂。第一行看负载第二行看进程数第三行看 CPU 按核分布第四行和第五行看内存和交换分区。如果你只想针对某个进程看用ps aux | grep更直接ps aux | grep firefox输出结果里有进程号 PID想结束它就用kill PID。不想一个个查 PID 的话可以按名字结束pkill firefox内存和磁盘信息我用下面三条free -h df -h du -sh ~/Downloadsfree -h看内存总量和剩余量df -h看每个分区挂载和剩余空间du -sh 目录看某个目录占了多少空间。系统升级前我会先跑一遍df -h确认根目录空间够不够Manjaro 升级一旦因为磁盘满了一半包管理就可能进入很尴尬的状态。后来我还装了 htopsudo pacman -S htophtop 支持鼠标操作和颜色显示能更直观地看到每个进程的 CPU、内存占用条按 F6 可以选排序方式。top 够用但日常排查我更习惯 htop。4. 网络、systemd 与内核进阶场景4.1 systemctl 管理服务Manjaro 使用 systemd 管理系统服务所以systemctl是日常排查逃不开的命令。它和 pacman 一样只要理解“动作 服务名”的规律用起来并不难。最常用的操作是看服务状态systemctl status sshd服务没起来第一件事就是看它现在的状态提示。启动、停止、重启服务sudo systemctl start sshd sudo systemctl stop sshd sudo systemctl restart sshd设置开机自启并立即启动sudo systemctl enable --now sshd--now很实用它表示“设置开机自启的同时马上启动”不用分两步执行。关闭自启则用sudo systemctl disable sshd。如果服务文件在用户态比如用户自己的服务不需要 sudo用systemctl --user前缀。配合 systemctl日志查询是我最常做的事情之一。服务起不来第一反应不应该是反复 restart而是看日志journalctl -u sshd -f-u指定服务名-f是 follow 实时滚动。如果只想看最近的报错信息journalctl -xe-x会输出更详细的信息-e直接跳到日志末尾。日志文件也会不断变大清理时用sudo journalctl --vacuum-size200M这条命令会把日志总量压缩到 200MB 以内不会误删正在使用的重启记录比直接删 journal 文件安全得多。4.2 网络排查ping、telnet、ss 这三板斧网络不通的时候命令不要乱敲按顺序排查会舒服很多。第一步先用 ping 测基本连通性ping -c 4 archlinux.org-c 4是只发 4 个包然后自动停。如果 ping 不通先看网卡有没有地址继续用ip addr ip route第一台测试能拿到 IP第二台看默认网关和路由是否正常。很多“能上内网不能上外网”的问题大概率出在默认路由上。第二步测某个 IP 的某个端口通不通。热词里“telnet 命令怎么用”“telnet ip 端口”其实问的就是这个。telnet 本身是古老的远程终端协议但把它当端口探测工具用非常经典。Manjaro 默认不一定安装 telnet先装一下sudo pacman -S inetutils然后测端口telnet 192.168.1.10 22如果端口开着终端会显示连接成功甚至出现对方服务的 banner 信息如果端口不通会看到Connection refused或Connection timed out。退出 telnet 不要直接关终端先按Ctrl]在telnet提示符下输入quit回车。telnet 有一个缺点它是明文协议不适合当真正的远程终端用。所以现代系统里大家更习惯用 nc 测端口nc -zv 192.168.1.10 22-z是只扫描端口不发送数据-v是显示详细信息。想看本机哪些端口在监听用 ssss -tunap-t只看 TCP-u看 UDP-n不做域名反解-a显示所有 socket-p显示对应进程。这条命令能直接告诉我某个端口被哪个进程占用排查“端口被占用”必备。Manjaro 上旧的 ifconfig/netstat 也需要额外安装 net-tools但新系统我更推荐直接用 ip 和 ss。4.3 内核管理命令Manjaro 区别于大多数发行版的地方是内核更新非常频繁而且同一个系统可以同时装多套内核。日常用到的不多但你需要知道去哪看、怎么换。uname -r这条命令查看当前正在运行的内核版本。如果是 linux66、linux65 之类的后缀说明是带内核版本的命名。Manjaro 提供了一个专门管理内核的命令mhwd-kernel。先列出当前装了多少内核mhwd-kernel -li安装新内核比如 linux66sudo mhwd-kernel -i linux66删除旧内核比如 linux65sudo mhwd-kernel -r linux65需要注意删除内核前先看一眼uname -r如果你正用着 linux65就别删 linux65。删除正在运行的内核会导致 GRUB 配置异常甚至下次启动找不到内核。Manjaro 更新内核后重启有时会遇到图形界面起不来、黑屏或驱动不兼容的问题这时候不用着急重装系统重启时在 GRUB 菜单选择“高级选项”挑旧内核进入往往就能回到正常状态。进入旧内核后再把问题内核卸载掉等下次更新再试。如果手动改过/etc/mkinitcpio.conf比如添加了显卡驱动相关的钩子需要重建 initramfs 才能生效sudo mkinitcpio -P这条命令会为所有内核生成新的 initramfs 镜像。有经验的 Arch 系用户基本都知道改了 mkinitcpio 配置不重建重启就是开机黑屏或无法挂载根目录。4.4 磁盘、缓存和日常清理磁盘清理是 Manjaro 用户绕不开的话题因为滚动更新的缓存和日志都很占空间。先看整体磁盘情况df -h如果根目录占用率超过 80%先查哪个目录最大sudo du -ah /var | sort -rh | head -20du -ah会列出/var下所有文件和目录大小sort -rh按数值从大到小排head -20只显示前 20 行。看完结果就能判断是 pacman 缓存、journal 日志还是某些软件的数据占用严重。对应的清理操作sudo pacman -Sc yay -Yc sudo journalctl --vacuum-size200Mpacman -Sc清理 pacman 缓存的旧安装包yay -Yc交互式清理不再需要的 AUR 依赖journalctl --vacuum-size限制日志大小。如果缓存占用还是大可以进/var/cache/pacman/pkg目录手动确认一下但一般情况下-Sc足够不用-Scc把整个缓存清空因为保留当前可用的软件包以后降级或重装时会方便很多。操作硬盘分区时lsblk是最安全的检查命令lsblk -f它会列出所有磁盘、分区、文件系统类型和挂载点。需要格式化某个分区时先lsblk确认设备名再执行sudo mkfs.ext4 /dev/sdX。我这里必须强调格式化是不可逆操作设备名写错会清空整个盘。如果只是插入 U 盘想手动挂载可以sudo mkdir -p /mnt/usb sudo mount /dev/sdb1 /mnt/usb用完别忘了sudo umount /mnt/usb再拔。热词里还有“c 盘清理命令”在 Manjaro 下对应的就是上面的磁盘清理逻辑只是路径变成了/、/var、/home没有 C 盘这一说。5. 我的私藏命令组合与记忆方法5.1 新装系统后建议跑一遍的命令每次新装完 Manjaro我会按下面这个顺序把基础环境理顺。第一步更新镜像源排序并全量升级。Manjaro 自带pacman-mirrors可以快速测速并生成一份可用性高的镜像列表sudo pacman-mirrors --fasttrack sudo pacman -Syyu--fasttrack会测试并挑出速度最快的镜像首次运行可能花费几分钟很正常。后面的pacman -Syyu里有两个y是为了强制刷新数据库避免源切换后数据库还残留旧信息。第二步装基础编译工具和 git为 AUR 做准备sudo pacman -S --needed base-devel git第三步安装几个高频软件sudo pacman -S htop neofetch firefoxhtop是进程管理工具neofetch用来快速显示系统信息firefox是浏览器。后面如果遇到软件在官方仓库没有再用前面讲的 yay 去 AUR 补。这一套流程跑完后Manjaro 基本就能进入日常状态了。以后每周或者每两周跑一次yay -Syu保持系统在安全版本上比隔几个月才想起来升级要稳得多。5.2 把命令拆开记命令 工具 动作 对象很多人记不住命令是因为在死背字符串。其实 Linux 命令的共性很强sudo pacman -S firefox拆开就是“用 sudo 身份调 pacman 这个工具执行 -S 这个动作目标对象是 firefox”。换到systemctl restart sshd一样成立“用 systemctl 这个工具执行 restart 动作对象是 sshd 服务”。理解这个结构后遇到新命令的第一反应不是抄而是拆。拆开之后再用man查帮助就会轻松很多。想知道 pacman 有哪些参数man pacman在 man 页面里按/搜索某个关键词比如搜-S很快就能找到对应解释。记不住某个历史命令时用history | grep来搜history | grep pacman或者直接在终端按CtrlR进入反向搜索历史记录输入几个字母就能找到之前敲过的命令。这个技巧在长命令很多时特别好用比翻终端滚动条快多了。5.3 最后再分享一个我的习惯我用 Manjaro 这几年最深的体会是命令数量永远记不完但核心场景就那么几个。装包用 pacman、AUR 用 yay、服务看 systemctl、日志看 journalctl、排错先用 ping 和 ss。把这五个场景理顺Manjaro 的命令行就算真正上手了。遇到不确定的命令先man后history再不行就用yay -S装一个辅助工具比如 htop 这种界面友好的替代品没必要硬背一堆冷门参数。日常升级前我会看一眼df -h升级时绝不中断终端升级后如果图形界面异常就切到旧内核这套流程走下来系统基本不会出大问题。
阅读完成 · 觉得有帮助?
咨询建站