本文适用于准备在 Linux 桌面安装 Shadowrocket 的用户。先确认发行版与处理器架构,再从本站下载页选择 deb、rpm 或 AppImage;随后完成本地安装、执行权限设置与首次启动检查。文中的命令读取你实际下载的文件路径,不需要猜安装包名称。连接验证以用户已有自己的服务商与订阅为前提,安装完成不等于已经具备可用线路。
1. 先确认发行版、架构与获取方式
deb、rpm 和 AppImage 是软件分发形式,不是三种代理协议,也不会替代连接参数。Debian、Ubuntu 及采用相同包管理体系的发行版通常选择 deb;Fedora 等使用 dnf 的系统选择 rpm。其他桌面发行版可以在运行环境满足要求时选择 AppImage,但不能把“单文件运行”理解成兼容所有 Linux 系统。
cat /etc/os-release
uname -m
getconf LONG_BIT
第一条命令显示发行版信息,重点看 ID 与 ID_LIKE;第二条显示内核报告的机器架构;第三条辅助确认当前用户空间位数。常见的 x86_64 与 aarch64 不是同一种架构。安装包格式选对后,仍须核对下载页标明的架构;没有匹配项时不要靠改文件名或强制安装绕过检查。
系统包安装
- deb
- Debian / Ubuntu,使用 apt
- rpm
- Fedora 系,使用 dnf
- 安装权限
- 包管理事务通常需要 sudo
- 后续管理
- 由系统包数据库记录安装信息
包格式与 CPU 架构需要分别匹配,不能只看文件扩展名。
单文件运行
- 格式
- AppImage
- 文件权限
- 需要当前用户的执行权限
- 运行环境
- 仍受架构、系统库与 FUSE 条件限制
- 保存位置
- 建议放入个人目录中的固定位置
AppImage 不通过 apt 或 dnf 安装,不保证自动生成应用菜单入口。
统一从全平台下载页进入 Linux 分区,安装包由本站提供。获取方式分为两档:iPhone / iPad 在 App Store 一次性 $2.99,系统要求以 App Store 页面标注为准;Mac(Apple 芯片与 Intel)、Windows、安卓、Linux 版免费。iPhone / iPad 产品的开发者为 Shadow Launch Technology Limited,应用 ID 为 932747118。
2. Debian / Ubuntu:用 apt 安装本地 deb
建议用 apt 安装本地文件,因为它会在处理软件包时一并检查依赖关系,并尝试从系统已配置的软件源获取依赖。先完成下载,再打开 Bash 终端执行下面的步骤。路径输入提示出现后,粘贴实际文件的完整路径,不要在输入内容外再加引号;命令已经对变量作了引用,可以处理路径中的空格。
-
下载 deb
打开本站下载页,进入 Linux 分区,核对架构后保存 deb 文件。等待浏览器显示下载完成,不要选择仍在下载的临时文件。
-
定位文件
在文件管理器中找到下载的文件,通过属性查看完整路径;也可以在终端输入路径时使用 Tab 补全,避免手工抄错文件名。
-
执行安装
运行下方命令,输入实际路径,确认 apt 给出的安装计划。若事务提示删除大量无关软件或架构不符,先取消并检查原因。
-
启动检查
安装结束后在桌面应用菜单中查找 Shadowrocket,使用普通用户启动,确认能够打开主窗口,再继续导入已有配置。
read -r -p "请输入已下载 deb 的完整路径:" pkg
if [ -f "$pkg" ]; then
pkg="$(realpath -- "$pkg")"
dpkg-deb -f "$pkg" Package Architecture
sudo apt update && sudo apt install "$pkg"
else
printf '%s\n' "文件不存在,请检查路径。"
fi
realpath 将路径转成绝对路径,让 apt 明确处理本地文件;若直接写一个没有路径前缀的文件名,apt 可能把它当成软件包名称搜索。安装期间需要的网络连接通常用于获取依赖,并不意味着本地 deb 没有下载完整。若 apt update 已报软件源错误,应先修复软件源或网络,再重试安装。
3. Fedora 系:用 dnf 安装本地 rpm
rpm 文件也应交给发行版的依赖解析工具处理。下面使用 dnf 安装本地 rpm,而不是只执行底层安装操作。系统可以在已启用的软件源内寻找所需依赖,但无法自动解决发行版之间的所有差异;“系统能识别 rpm”不等于任意 rpm 都适用。
read -r -p "请输入已下载 rpm 的完整路径:" pkg
if [ -f "$pkg" ]; then
pkg="$(realpath -- "$pkg")"
rpm -qp --queryformat '%{NAME} %{ARCH}\n' "$pkg"
sudo dnf install "$pkg"
else
printf '%s\n' "文件不存在,请检查路径。"
fi
- 找不到文件:核对路径和大小写。Linux 文件名通常区分大小写,路径包含空格时保留命令中的双引号。
- 依赖不可用:记录缺失的依赖名称,检查当前发行版与已启用的软件源,不要随意混入其他发行版的软件源。
- 签名或信任提示:先确认文件来自本站下载页,阅读完整错误信息;不要把关闭签名检查当成默认安装步骤。
- 架构不兼容:重新对照
uname -m与下载页,不使用强制架构选项继续安装。
dnf 提示事务完成后,再从桌面启动 Shadowrocket。如果应用菜单没有立即刷新,可以退出桌面会话后重新登录一次。若安装本身已经失败,刷新菜单不会补全缺失的文件,应返回终端处理安装错误。
4. AppImage:添加执行权限并直接运行
AppImage 通常以单个文件保存。先将文件放到准备长期使用的位置,例如个人目录下的 Applications 文件夹,再设置执行权限;这样后续创建的桌面入口不容易因移动文件而失效。文件名和扩展名保持下载时的原样即可,不需要手动改名。
read -r -p "请输入已下载 AppImage 的完整路径:" app
if [ -f "$app" ]; then
app="$(realpath -- "$app")"
chmod u+x -- "$app" && "$app"
else
printf '%s\n' "文件不存在,请检查路径。"
fi
chmod u+x 只为文件所有者增加执行权限,不需要把文件设为所有人可写。如果文件属于其他用户,先确认下载与存放位置是否正确,而不是直接用 sudo 启动整个桌面应用。也可通过文件管理器的文件属性界面启用执行权限,但不同桌面的菜单文字并不统一。
AppImage 启动失败:按错误类型处理
权限与存放位置
Permission denied:检查ls -l输出中的执行权限。- 已经有执行权限仍被拒绝:检查所在文件系统是否以
noexec挂载。 - 优先移到允许执行的个人本地目录,再设置权限并重试。
架构与运行依赖
Exec format error:优先核对安装包架构与系统架构。- 提示 FUSE 或
libfuse.so.2缺失:按当前发行版的软件包说明补充所需兼容库。 - 提示系统库符号缺失:核对运行要求,不替换系统核心库来强行启动。
先在终端直接运行并读取报错,再处理对应条件;不要靠反复双击或扩大权限猜测原因。
FUSE 相关的软件包名称会随发行版与系统版本变化,因此不宜把一条安装命令套到所有系统。容器、受限桌面会话和某些挂载环境还可能不允许必要的操作。AppImage 能启动桌面窗口,也不代表系统已经授予后续网络操作所需的全部权限。
5. 首次启动:把安装验证与连接验证分开
先确认 Shadowrocket 能以普通用户打开并保留基本设置,再测试连接。安装包解决的是程序运行问题,已有订阅与配置解决的是连接目标和分流问题。本文以用户已有自己的服务商与订阅为前提;本站不提供、不销售、不推荐节点或订阅,客户端获取费用也不是线路套餐。
- 在
Home检查已有连接项目;需要添加时,使用右上角+,在Type中选择Subscribe,填写自己已有的订阅链接并保存,再执行订阅更新。 - 检查更新是否得到连接项目。链接获取失败、认证失效与“程序无法启动”是不同问题,不应通过重复安装解决。
- 进入
Config核对当前配置及规则,再在Global Routing中选择适合验证目的的姿态。 - 首次连接时阅读系统授权提示。需要授权时仅按明确提示操作,不把日常启动方式改成始终使用 root。
以下对比只说明路由姿态的用途。选择 Config 不代表所有连接都会直连或代理,实际结果取决于规则顺序和对应策略;选择 Proxy 也不能修复错误的地址、端口、密码或传输参数。
Global Routing → Config
推荐按当前配置的规则决定连接策略。使用前检查规则是否符合预期,尤其是末尾的 FINAL 如何处理此前未命中的连接。
适合:已有明确分流配置,进行日常使用与规则验证
Global Routing → Proxy
以代理姿态验证当前连接是否可用,帮助区分连接参数问题和规则选择问题;实际覆盖范围仍受系统网络接管方式约束。
适合:短时排查已有连接能否建立,不用于证明所有应用均已接管
Global Routing → Direct
使用直连姿态对照基础网络状态。直连可以访问某个站点,只能说明该路径可达,不能证明已有代理连接正常。
适合:对照本地网络、DNS 与站点自身的可达性
排查阶段暂不叠加自动连接条件。若已启用 Settings → On Demand,先核对其触发条件,避免手动断开后又被条件重新连接。Scene 与自动化设置不应拿来替代最基本的手动连接验证,也不要将其他平台的系统 VPN 开关路径直接照搬到 Linux 桌面。
6. 更新、卸载与故障记录
更新前先保存当前使用的配置,并确认已有订阅的管理信息仍可用。deb 和 rpm 可再次使用相同包管理工具安装下载页提供的新文件,由包管理器判断事务;不要假设安装本地包就会自动添加更新源。AppImage 则应先退出正在运行的程序,再替换文件,并重新检查执行权限与桌面入口路径。
| 形式 | 更新处理 | 卸载边界 |
|---|---|---|
| deb | 用 apt 安装新下载的匹配文件,确认事务结果。 | 通过包管理器按实际软件包名移除;软件包名可用 dpkg-deb 查询。 |
| rpm | 用 dnf 处理新下载的匹配文件,不强制跨架构覆盖。 | 通过 dnf 按实际软件包名移除;名称可用 rpm 查询。 |
| AppImage | 退出程序后替换文件,保持启动入口指向正确位置。 | 删除对应文件与手动创建的入口;个人配置需另行确认是否保留。 |
删除程序不等于清除个人配置。遇到启动故障时,不要先删除整个用户目录或清理不明路径;先保留配置,再记录错误。向技术支持描述问题时,提供发行版、架构、包格式、安装命令与终端报错即可,订阅令牌、密码和私钥应从记录中移除。
- 安装阶段失败:记录 apt 或 dnf 的首条关键错误、缺失依赖与事务是否完成。
- 启动阶段失败:记录是否能打开窗口、AppImage 终端报错,以及执行权限和挂载条件。
- 连接阶段失败:记录当前 Global Routing 姿态、订阅更新结果与具体连接现象,勿把所有问题统称为“装不上”。
完成上述区分后,通常可以把问题定位到包格式、架构、依赖、执行条件或连接配置中的某一层。按层处理比反复切换三种安装包更有效,也能避免在安装正常时误删已保存的配置。