linux查看xzutils是否安装
Linux查看xzutils是否安装
你敲下 xz --version,终端返回 bash: xz: command not found。否安这不一定代表 xz-utils 没装——可能只是否安可执行文件没在 PATH 里,或者你用的否安发行版把包名拆成了 xz 和 xz-libs 两部分。我见过一个 CentOS 7 的否安容器,which xz 没输出,否安但 rpm -qa | grep xz 却列着 xz-libs-5.2.2。否安所以“是否安否安装”得看你问的是库还是命令行工具,以及你用什么包管理器。否安
最直接的否安办法:command -v xz。它比 which 更靠谱,否安因为 which 在某些 shell 里行为不一致。否安如果返回类似 /usr/bin/xz,否安那命令行工具已经在了。否安但要是否安返回空,别急着下结论。试试 type xz,或者 hash xz——后者能告诉你 shell 有没有缓存过这个命令。有次我在 Alpine 上跑 command -v xz 没反应,结果发现 busybox 把 xz 做成了内置 applet,得用 busybox xz --help 才能调出来。这种坑,查包管理器反而更清晰。
Debian/Ubuntu 系:dpkg -l | grep xz-utils。注意 dpkg -l 的输出格式,第二列是状态,ii 才代表正常安装。如果只看到 xz-utils 的库文件比如 liblzma5,那命令行工具可能没装。我习惯用 dpkg-query -W -f='${ Status}' xz-utils 2>/dev/null | grep -q "install ok installed" && echo "已安装" || echo "未安装",干净利落,不用解析那些列对齐的表格。
RHEL/CentOS/Fedora 系:rpm -q xz 或 rpm -q xz-libs。包名通常是 xz 和 xz-libs,但 Fedora 最近把 xz 拆成了 xz(命令行)和 xz-libs(库)。如果你只装了 xz-libs,rpm -q xz 会返回 package xz is not installed,但 rpm -q xz-libs 会显示版本。别搞混。用 rpm -qa | grep -i xz 能一次看全,但输出可能包含 xz-devel、xz-static 之类,你得自己筛。
Arch 用户直接 pacman -Q xz。没有输出就是没装。openSUSE 用 zypper se -i xz,注意 -i 只显示已安装的。这些包管理器命令比手动翻 /usr/bin 快得多,尤其当你在写自动化脚本时。
RUN xz -d data.tar.xz,构建失败说找不到 xz。他以为基础镜像 ubuntu:20.04 自带 xz,实际上官方镜像为了瘦身把 xz-utils 踢掉了。apt-get install -y xz-utils 之后一切正常。所以查是否安装,有时是为了确认依赖,而不是单纯满足好奇心。 如果你不想依赖包管理器,直接找文件也行。ls /usr/bin/xz* 看看有没有 xz、unxz、xzcat 这些。但注意,有些系统把 xz 放在 /bin 而不是 /usr/bin(比如合并 /usr 之前的旧系统)。更稳妥的是 find / -name "xz" -type f 2>/dev/null,但全盘搜索太慢,一般 ls /usr/bin/xz /bin/xz 2>/dev/null 就够了。
还有一种情况:你装了 xz-utils 但版本太老。比如 RHEL 6 自带 xz 4.999,有些新特性不支持。这时候 xz --version 能输出 xz (XZ Utils) 4.999.9beta,说明装了,但你可能需要自己编译新版。所以“是否安装”和“是否够用”是两个问题。
最后提一个容易忽略的点:xz 命令和 liblzma 库是两码事。有些程序链接了 liblzma 但没装 xz 命令行工具。反过来,你装了 xz 但没装 liblzma-dev,编译时照样报错。查安装状态时,先想清楚你要的是运行时工具还是开发库。我一般先 command -v xz,再 ldconfig -p | grep lzma,两样都确认才放心。
行了,就这些。下次遇到 xz: command not found,别急着重装系统,先跑一遍上面的命令,大概率能定位到是包没装、路径不对,还是你根本在 busybox 环境里。
(责任编辑:综合)














