Shadowrocket Linux 版安装:deb、rpm、AppImage 怎么选,apt / dnf 命令与 chmod +x

按发行版选 deb、rpm 或 AppImage,给出 apt / dnf 本地安装命令,以及 AppImage 加执行权限后启动的方法。

本文速览

本文适用于在 Linux 图形桌面安装 Shadowrocket 的用户:Debian / Ubuntu 通常选 deb,Fedora 通常选 rpm,其他发行版可在满足运行条件时选择 AppImage。先核对系统与 CPU 架构,再使用实际下载路径安装;完成后还要导入已有配置并检查流量接管,不能把“窗口能打开”当作“连接已生效”。

先确认发行版、架构与获取入口

Shadowrocket(小火箭)的 Linux 安装包从本站下载指南获取,下载页提供的格式与架构是选择依据。iPhone / iPad 在 App Store $2.99 一次性购买,系统要求以 App Store 页面标注为准;Mac(Apple 芯片与 Intel)、Windows、安卓、Linux 版免费。客户端获取与线路服务是两件事,后续使用的订阅从你的服务商处获取。

在终端运行下面两条命令。第一条读取发行版信息,重点看 ID、ID_LIKE 与 VERSION_ID;第二条查看内核报告的机器架构。不能仅凭桌面外观判断包格式,同一个桌面环境可以运行在不同发行版上。

cat /etc/os-release
uname -m

发行版与包管理器

Debian / Ubuntu
通常使用 deb,由 apt 处理本地安装及依赖。
Fedora
通常使用 rpm,由 dnf 处理本地安装及依赖。
其他发行版
先检查下载页支持范围,AppImage 仍有运行环境要求。

rpm 是包格式,不代表所有 rpm 系统都使用 dnf。

CPU 架构对应

x86_64
通常对应下载项中的 x64 或 amd64。
aarch64
通常对应下载项中的 arm64。
其他输出
先确认下载页是否有匹配构建,不强行安装异架构包。

架构名称有不同写法,最终以下载页标注为准。

不要用改扩展名的办法转换格式,deb 改成 rpm 并不会改变包结构。下面的命令不假设安装包文件名,也不使用通配符批量安装。请在 Bash 终端中逐段执行,在提示出现时输入下载文件的实际路径;输入路径时不加外层引号,路径内有空格也可以保留。

Debian / Ubuntu:用 apt 安装本地 deb

先确认文件已经下载完成,再执行以下命令。read -r 接收实际路径,realpath -e 检查文件是否存在并转为绝对路径,最后交给 apt。这样既不依赖当前工作目录,也不会误把文件名当成软件仓库里的包名。

read -r -p "请输入已下载 deb 文件的实际路径: " pkg
if [ -f "$pkg" ]; then
  pkg=$(realpath -e -- "$pkg") && sudo apt install "$pkg"
else
  printf '%s\n' "文件不存在,请核对路径后重试。"
fi

若提示找不到依赖,先确认发行版和安装包要求是否匹配,再运行 sudo apt update 刷新软件源索引后重试。刷新索引不会把不兼容的包变成兼容包。若提示另一个包管理进程持有锁,等待系统更新结束,不要直接删除锁文件。

Fedora:用 dnf 安装本地 rpm

在使用 dnf 的系统中,本地 rpm 可以直接作为安装参数,dnf 会处理事务并尝试解析依赖。不要为了绕过依赖错误而改用忽略依赖的安装方式,否则可能出现安装记录存在、程序却无法启动的情况。

read -r -p "请输入已下载 rpm 文件的实际路径: " pkg
if [ -f "$pkg" ]; then
  pkg=$(realpath -e -- "$pkg") && sudo dnf install "$pkg"
else
  printf '%s\n' "文件不存在,请核对路径后重试。"
fi
  1. 核对终端列出的包架构,确认与 uname -m 对应。
  2. 阅读依赖和事务摘要,确认没有意外移除重要桌面组件。
  3. 完成安装后,在桌面应用菜单搜索 Shadowrocket 并启动。
  4. 若出现依赖或信任相关错误,保留完整提示,重新核对下载来源和发行版要求,不通过关闭系统验证机制解决。

其他使用 rpm 的发行版未必采用 dnf,也未必满足相同的依赖条件。不要仅看到扩展名相同就照搬 Fedora 命令。应使用该发行版的包管理方式,并先确认下载页的适用说明;若没有匹配的系统构建,再评估 AppImage 的运行条件。

AppImage:添加执行权限后以普通用户启动

AppImage 通常以单个文件分发,不需要像 deb 或 rpm 那样先登记到系统包数据库。它也不是完全脱离系统环境的文件:CPU 架构、图形会话、基础运行库以及部分构建所需的 FUSE 都可能影响启动。建议把文件放在用户有读取和执行权限的本地目录,再进行操作。

read -r -p "请输入已下载 AppImage 文件的实际路径: " app
if [ -f "$app" ]; then
  app=$(realpath -e -- "$app") && chmod +x -- "$app" && "$app"
else
  printf '%s\n' "文件不存在,请核对路径后重试。"
fi

chmod +x 为文件添加执行权限,不负责安装依赖,也不会改变 CPU 架构。用 && 连接命令,可以在权限设置失败时停止后续启动。日常启动不要在文件前加 sudo,否则可能把用户配置写入管理员目录,造成后续普通用户无法正常访问。

从终端启动的好处是能保留错误输出。若双击没有窗口,先用上面的方式观察提示,再决定下一步。AppImage 是否自动建立桌面快捷方式取决于实际集成方式;没有菜单入口并不等于启动失败,文件本身仍需保留在原位置。

首次打开:先配置,再判断流量是否接管

软件安装完成后,需要把“应用启动”“配置有效”“流量进入代理”分开检查。Linux 的桌面代理设置和应用自身的网络行为并不完全相同:浏览器可能遵循桌面代理,某些终端程序却不会。不能仅凭 Home 显示连接状态就认定所有进程都已使用相同路径。

  1. 启动应用

    从应用菜单或 AppImage 文件打开 Shadowrocket,先确认 Home 能正常显示。若尚未进入界面,继续处理安装或运行库错误,不急于更换订阅。

  2. 导入配置

    从你的服务商处获取订阅,在 Config 的 Subscribe 入口添加;已有单条服务器参数时,在 Home → Add Server 按对应 Type 填写。订阅导入与单条参数录入用途不同。

  3. 检查策略

    在 Home 选择服务器,检查 Global Routing 当前姿态。使用 Config 时,还需在 Config 确认活动配置和规则引用的策略确实存在。

  4. 验证接管

    开启连接后,用同一个浏览器访问同一测试地址,并检查客户端连接记录。若浏览器有记录而终端没有,检查终端程序是否配置了代理,不先归因于安装包。

如果需要给终端程序填写本地代理地址,先到实际设置中查看监听地址、端口和协议,不猜端口号,也不把 HTTP 代理端口当成 SOCKS5 使用。仅供本机使用时,监听在回环地址通常比开放到局域网更合适;不要为排障随意扩大监听范围。

Global Routing:用姿态区分规则问题与连接问题

下面比较的是 Shadowrocket 自身的 Global Routing 姿态,不是安装包格式。它们决定已进入客户端的流量如何处理,不会自动让所有 Linux 程序都遵循桌面代理。测试时只改一个设置,并记录变更前后的访问结果。

Config

推荐

按活动配置中的规则与策略处理请求。DOMAIN-SUFFIX 匹配域名后缀,IP-CIDR 匹配地址段,GEOIP 按地址归属匹配,FINAL 处理此前未命中的请求。

适合:已有有效规则配置的日常使用

Proxy

将进入客户端的请求交给当前代理策略,用于减少规则分流对测试的影响。如果 Proxy 可用而 Config 不可用,应回到 Config 检查规则顺序和策略引用。

适合:临时检查服务器与代理链路

Direct

将进入客户端的请求按直连方式处理。它可以作为同一网络下的对照,但直连结果取决于当前网络,不能单独证明服务器配置正确。

适合:对照本地网络与代理路径差异

Scene 用于按已配置的场景应用相应行为,不应被当作一个固定的“全部代理”开关。尚未建立场景时,先用明确的 Config、Proxy 或 Direct 做基础验证。自动连接也应放在手动连接验证之后处理,避免自动行为干扰排障。

安装、更新与卸载常见问题

安装成功了,为什么没有窗口?

先确认当前有可用的图形桌面会话。AppImage 从终端按实际路径启动并保留报错;deb / rpm 安装则先检查包管理器事务是否完成,再从桌面菜单启动。纯命令行远程会话不等同于本地图形桌面。

新安装包下载后可以直接覆盖吗?

先在 Config 备份活动配置,并妥善保存已有订阅信息。deb / rpm 使用同一种包管理器安装新版本地包,让包管理器处理升级;AppImage 先退出旧进程,再保存新文件、设置执行权限并启动确认。

要不要同时安装三种格式?

通常保留一种即可。多份应用可能产生重复菜单入口,导致无法判断正在运行哪一份。切换格式前先退出应用并备份配置,再按原安装方式移除旧副本,不手动删除系统包管理目录里的文件。

卸载时该用哪个包名?

不要从下载文件名猜包名。deb 可用 dpkg-deb -f "$pkg" Package 查询,rpm 可用 rpm -qp --queryformat '%{NAME}\n' "$pkg" 查询,其中变量应指向保留的对应安装文件。然后在系统软件管理器按查到的包名卸载。

窗口正常,但订阅更新超时怎么办?

先区分安装和网络问题:确认系统时间正确、网络可用,再核对从你的服务商处获取的链接是否完整。记录更新时的具体错误;分享日志前移除链接中的 token、服务器凭据和其他私密内容。

AppImage 的移除通常是退出程序后删除对应文件;若另行建立过桌面入口,也需清理自己的入口文件。无论哪种格式,卸载程序与删除用户配置并不总是同一步。准备重装或迁移时,先确认备份可用,再决定是否清理用户数据。

下载 Shadowrocket