本文适合准备在 Linux 桌面安装 Shadowrocket 的用户:先确认发行版和 CPU 架构,再选择 deb、rpm 或 AppImage,按步骤完成安装、执行权限设置与首次连接检查。命令使用你实际下载文件的完整路径,不依赖固定安装包名称;连接配置以用户已有自己的服务商与订阅为前提。
一、下载前确认发行版与 CPU 架构
Shadowrocket(小火箭)提供 Linux 版。获取方式分两档:iPhone / iPad 在 App Store $2.99 一次性付费,开发者为 Shadow Launch Technology Limited,系统要求以 App Store 页面标注为准;Mac(Apple 芯片与 Intel)、Windows、安卓、Linux 版免费。本文的安装包选择均从本站全平台下载页开始,不在命令里拼接下载地址。
文件扩展名描述的是打包格式,不代表 CPU 架构。即使同为 Linux,x86_64 与 aarch64 也不能直接混用。先在终端执行以下只读命令,记录发行版名称、版本与机器架构,再核对下载页当前提供的安装包说明。
cat /etc/os-release
uname -m
发行版信息
- 查询位置
/etc/os-release- ID
- 用于辨认 ubuntu、debian、fedora 等发行版。
- ID_LIKE
- 如存在,可辅助判断所属发行版家族。
- VERSION_ID
- 记录系统版本,排查运行库兼容问题时使用。
同属一个家族不等于所有版本都能运行同一个二进制文件。
架构信息
- 查询命令
uname -m- x86_64
- 常见的 Intel / AMD 64 位架构,对应包标识常为 amd64 或 x86_64。
- aarch64
- ARM 64 位架构,对应包标识常为 arm64 或 aarch64。
- 选择依据
- 以下载页实际列出的架构为准,不因扩展名相同而混装。
AppImage 同样有架构要求,不是跨 CPU 架构的转换工具。
二、deb、rpm 与 AppImage 怎么选
优先选与发行版包管理器匹配的格式:它能记录安装状态,并在安装时处理仓库中可取得的依赖。AppImage 适合不希望把应用主体安装进系统目录的场景,但仍受系统运行库、桌面环境和文件系统挂载选项影响,不能理解为在所有 Linux 系统上双击即用。
| 格式 | 常见系统 | 安装或启动方式 | 注意事项 |
|---|---|---|---|
| deb | Debian、Ubuntu 及兼容系统 | apt install 加本地文件路径 | 本地路径要有斜杠;推荐完整路径。 |
| rpm | Fedora 及使用 dnf 的兼容系统 | dnf install 加本地文件路径 | 其他 rpm 系统的依赖与管理命令可能不同。 |
| AppImage | 满足包运行条件的 Linux 桌面 | 增加执行权限后运行文件 | 依赖架构匹配、可执行挂载位置及所需运行库。 |
确认系统
执行
cat /etc/os-release和uname -m,不要只凭桌面外观判断发行版。选择格式
进入本站下载页的 Linux 区域,按发行版与已提供的架构选择文件,等待浏览器下载完成。
记录路径
在文件管理器中查看文件属性,记录包含文件名的完整路径。下文终端提示输入路径时,不要额外添加引号。
执行安装
按对应章节操作;阅读包管理器列出的变更,确认没有意外移除系统组件后再继续。
检查启动
安装完成后从应用菜单打开;AppImage 则从终端运行,保留错误输出以便定位问题。
三、Debian / Ubuntu:用 apt 安装本地 deb
以下命令在 Bash 终端中运行。第一行提示输入已下载 deb 的完整路径,例如从文件属性复制的路径;只输入路径本身,路径中有空格也无需手动加引号。变量在后续命令中已被双引号保护。先查看包信息,再让 apt 执行安装。
read -r -p '输入 deb 文件的完整路径:' pkg
dpkg-deb --field "$pkg" Package Version Architecture
sudo apt update
sudo apt install "$pkg"
apt update 更新的是系统软件源索引,不是 Shadowrocket 的配置或订阅。apt install 会读取本地 deb,并尝试从你已经启用的软件源安装依赖。输入完整路径很重要:如果只输入不带斜杠的文件名,apt 可能把它当成软件源里的包名称查找。
- 提示文件不存在:先用
ls -l -- "$pkg"核对路径,检查是否选中了未完成下载的临时文件。 - 提示依赖无法满足:检查系统版本和软件源是否匹配,不要为了单个依赖把其他发行版的软件源混入当前系统。
- 提示架构不匹配:核对包的
Architecture与uname -m,返回下载页重新选择。 - 提示锁被占用:等待系统更新或其他包管理任务结束,不要直接删除锁文件。
四、Fedora 系:用 dnf 安装本地 rpm
在使用 dnf 的系统中,本地 rpm 也建议交给包管理器处理,而不是只用底层工具强制写入文件。先读取包信息,检查名称与架构,再执行安装。下面的变量与 deb 章节独立,可直接在新的 Bash 终端中操作。
read -r -p '输入 rpm 文件的完整路径:' pkg
rpm -qp --queryformat '%{NAME}\n%{VERSION}-%{RELEASE}\n%{ARCH}\n' "$pkg"
sudo dnf install "$pkg"
dnf 会结合当前启用的软件仓库解析依赖。即使某个系统使用 rpm 格式,也不代表它与 Fedora 的依赖版本完全一致。若提示 nothing provides,应查看缺少的库名称及版本约束,核对发行版适配条件,而不是立刻跳过依赖。
- 软件仓库连接失败:先解决系统仓库访问问题,安装包在本地不代表所有依赖都已在本地。
- 事务摘要要求移除关键桌面组件:取消操作,重新核对包与系统兼容性。
- 安装成功但菜单暂未出现:在应用菜单中重新搜索 Shadowrocket,必要时退出当前桌面会话后重新登录。
- 不要使用
--nodeps掩盖依赖错误;安装记录成功并不等于程序具备可运行的环境。
五、AppImage:执行权限、存放位置与启动
AppImage 通常直接作为单个文件运行,不经过 apt 或 dnf 的安装登记。建议放在用户拥有写入权限的固定目录,避免后续清理下载目录时误删。下面先读取完整路径,再仅为文件所有者增加执行权限,最后以当前普通用户身份启动。
read -r -p '输入 AppImage 文件的完整路径:' app
ls -l -- "$app"
chmod u+x -- "$app"
"$app"
chmod +x 是常见的增加执行权限写法;这里采用 chmod u+x,把修改范围明确限定为文件所有者。运行应用不应默认加 sudo,否则可能在用户配置目录产生由 root 拥有的文件,随后普通启动反而无法保存设置。
加了执行权限,为什么仍然 Permission denied?
先执行 ls -l -- "$app" 查看所有者执行位,再用 findmnt -T "$app" 查看所在挂载点。如果挂载选项含 noexec,把文件移到允许执行的本地用户目录后重试,不要为了运行一个文件修改整块外置盘的安全策略。
终端提示缺少 libfuse.so.2,应该装什么?
这是部分 AppImage 运行时需要 FUSE 2 兼容库的表现。先用 apt 或 dnf 的搜索功能查询当前发行版提供的兼容库,核对系统文档后安装;不同系统的包名可能是 libfuse2、libfuse2t64 或其他名称,不要直接移除现有 FUSE 组件。
出现 Exec format error,是文件权限不够吗?
通常应先检查二进制架构。执行 file -- "$app",与 uname -m 对照。重新执行 chmod 不会把 x86_64 程序转换成 ARM 程序;如果文件类型异常,也要检查下载是否完整。
双击没有窗口,如何看到具体错误?
从终端执行 "$app",保留首次出现的错误信息。缺少共享库、图形会话不可用与沙箱初始化失败是不同问题,不要统一用关闭沙箱或 root 启动来处理。
六、首次连接:区分安装、连接与规则问题
能打开窗口只说明应用已经启动,不代表已有可用连接。Shadowrocket 不附带连接服务;本站不提供、不销售、不推荐节点或订阅。请使用自己已有服务商提供的参数或订阅,导入前核对来源,避免把完整订阅链接写入公开截图、日志或终端历史。
在 Home 检查导入的项目及当前选择,在 Config 检查正在使用的配置,在 Settings 检查相关设置。各平台入口呈现可能不同,按实际界面操作,不要把手机系统的 VPN 授权步骤原样套到 Linux。若出现系统网络权限请求,先阅读用途,再按系统提示授权。
Global Routing → Config
推荐按当前配置处理已接管的请求。应先确认配置已启用,再查看规则命中;例如 DOMAIN-SUFFIX 匹配域名后缀,FINAL 提供兜底策略。
适合:已有经过检查的配置,日常按规则使用。
Global Routing → Proxy
让已接管的请求按代理姿态处理,可临时用于区分连接问题与规则问题。它不意味着系统上所有程序的全部流量都会自动被接管。
适合:已有可用连接,临时排查规则是否影响访问。
Global Routing → Direct
让已接管的请求直接连接。切到此姿态后某站点能打开,只能说明直连路径可用,不能据此判定代理服务正常。
适合:对照直连表现,隔离代理路径故障。
如果浏览器与终端表现不同,应进一步区分系统代理、应用自己的代理设置与环境变量。终端程序未必读取桌面系统代理;不要自行假定本地监听端口是某个固定数字,应以当前设置显示的协议、地址和端口为准。
env | grep -iE '^(http|https|all|no)_proxy='
这条命令仅显示当前终端已有的代理环境变量,不会修改配置。若没有输出,不代表 Shadowrocket 没有运行;若有输出,也要确认变量所指的本地端口确实正在监听。排查时一次只修改一项,并记录修改前后的访问结果。
七、更新与卸载:沿用原来的安装方式
deb 和 rpm 的后续更新,应从本站下载页取得适配系统的新包,再分别交给 apt 或 dnf 安装。手动安装本地包不等于已经订阅应用更新仓库,不能把系统日常更新视为一定会更新 Shadowrocket。安装包更新与 Home 中的订阅刷新也是两件事,前者更换应用程序,后者刷新已有服务的连接信息。
- deb 卸载:从
dpkg-deb --field "$pkg" Package的输出取得实际包名,再用sudo apt remove加该包名操作,不要凭产品展示名称猜包名。 - rpm 卸载:从
rpm -qp --queryformat '%{NAME}\n' "$pkg"取得包名,再用sudo dnf remove加该包名操作,并阅读事务摘要。 - AppImage 更新:退出应用后保存好配置,再替换旧文件;新文件可能需要重新执行
chmod u+x。 - AppImage 移除:先退出应用,删除文件及自己创建的桌面快捷方式。用户配置可能独立保留,不要盲目清空整个配置目录。