新手入门

在 Linux 上安装 Telegram:Flatpak、Snap、原生压缩包与系统集成

本文介绍 Linux 上 Telegram Desktop 的三种打包形式:官方压缩包、Flatpak 与 Snap,比较它们的来源、沙盒限制与更新方式,并给出屏幕共享、托盘图标、会话文件夹与本地密码等实用建议。

内容导读

本文介绍 Linux 上 Telegram Desktop 的三种打包形式:官方压缩包、Flatpak 与 Snap,比较它们的来源、沙盒限制与更新方式,并给出屏幕共享、托盘图标、会话文件夹与本地密码等实用建议。

在 Linux 上安装 Telegram:Flatpak、Snap、原生压缩包与系统集成主题插画

在 Linux 上,这个应用到处都一样——就是第 003 步介绍的跨平台客户端 Telegram Desktop。变化的是打包方式,而 Linux 提供了三种:来自 Telegram 的普通压缩包、Flatpak 和 Snap。

这个选择通常被说成是口味问题。其实并不尽然:这三者在由谁组装软件包、隔离程度如何,以及因此屏幕共享和文件对话框是否如你所愿地工作方面都有所不同。

完成这一步后你将能够

  • 有根有据地选择一个打包格式,并能说出理由。
  • 说明哪些构建来自 Telegram,哪些是由其他人打包的。
  • 在 Wayland 上修复屏幕共享,而不是断定它坏了。
  • 找到你的会话文件夹,并以它应得的谨慎对待它。

一个应用,三种软件包——以及两个不同的发布者

Telegram 自己只发布一个 Linux 构建:来自 desktop.telegram.org 的压缩包。你解压它、运行它,它会自行更新。这个构建直接来自编写这款软件的人,并按照第 002 步所述的方式签名。

Flatpak 和 Snap 是由这些生态系统中的人从同一份源代码打包的。这在 Linux 上完全正常——大多数软件就是这样到达大多数发行版的——而且相关的打包者是公开可见、可追责的。但这一点值得了解,因为它解释了人们注意到的两件事:打包构建有时会比直接构建晚几天,而且由于打包对它们进行了隔离,它们在处理文件和屏幕时表现不同。

你所在发行版自己的软件仓库也可能带有 Telegram 软件包。这些包的新旧程度差异极大,而过旧的客户端最终会被服务器拒绝。如果你的发行版提供的是较新的版本,就用它;如果版本落后一年,那就用压缩包。

“由别人打包”不等于“不可信” 这不是第 002 步的那个警告。Flathub 和 Snap Store 公开地从已发布的源代码构建,没有人隐瞒是谁做的。这里的要点更窄:三者中只有一个是 Telegram 自己产出的二进制文件,如果这个区别对你重要,它一句话就能决定这个问题。
交互式

三种软件包,三组后果

选择一个格式。各列展示了它给你什么,以及它要求什么作为回报。

直接压缩包

Flatpak

Snap

它给你什么

Telegram 发布的构建,没有中间商,也没有打包延迟。
没有隔离,因此文件对话框、屏幕共享和通知的表现和任何普通程序一样。
在你的主目录中就地自行更新,不需要包管理器,也不需要 root。

它要求什么

由你自己管理:把它解压到某个合适的地方,如果想要菜单里有条目,就自己创建桌面入口。
它以你的完整用户权限运行,因此你能读的东西它也能读。
你的系统更新器永远不会告诉你有关它的更新,因为它不是一个软件包。

最直接的选择。如果你想要官方二进制文件,且你与它之间没有任何中间环节,就选它。

它给你什么

隔离:应用通过门户访问你的文件,而不是随意取用你的主目录。
在每个发行版上都是同一个软件包,与你的其他 Flatpak 一起更新。
你可以事后按应用查看和更改权限。

它要求什么

屏幕共享需要安装你所用桌面环境的桌面门户,否则它会静默地产生黑屏。
打开允许路径之外的文件需要授予访问权限,这第一次会让人困惑。
由 Flathub 社区打包,因此发布可能比直接压缩包稍晚一些。

在你共享或在意的桌面上,这是合适的默认选择。同时安装你桌面环境的门户,这个粗糙的边缘就会消失。

它给你什么

Ubuntu 及其衍生版上已经存在,因此安装只需一条命令或一次点击。
受系统自身安全配置文件的隔离,并在后台自动更新。
卸载时会把所有东西干净地一并带走。

它要求什么

重启后首次启动明显更慢,这是该格式的特性,而不是 Telegram 的问题。
屏幕共享同样需要门户,文件访问也有同样的意外。
同样由社区打包,同样可能比发布滞后。

如果你的系统本来就运行在 Snap 上,这很合理。对于本来不运行 Snap 的机器,没什么理由引入它。

真正会出问题的两件事

几乎所有针对 Telegram 的 Linux 专属抱怨都是这两个问题之一,而两者都有简短的答案。

屏幕共享显示一个黑色矩形。在 Wayland 上,应用不能直接抓取屏幕;它必须通过桌面门户来请求,而门户是一个与你桌面环境匹配的独立软件包。安装适合 GNOME、KDE 或 wlroots 的门户,确保 PipeWire 正在运行,显示器选择器就会如预期出现。客户端本身没有任何问题——它只是在请求一个尚未安装的组件。

托盘图标不见了。有几个桌面环境在没有扩展的情况下不再显示旧式托盘图标,这让一个最小化到托盘的应用程序看起来消失了。要么添加你桌面所用的扩展,要么别再认为托盘是应用所在的地方。这不是 Telegram 的决定,Telegram 内部的任何设置都修不好它。

还有第三个较小的问题:如果你希望客户端随会话静默启动,而不是在屏幕上打开一个窗口,它需要在命令行上加一个最小化启动标志,或者应用自身设置中的等效开关。平铺窗口管理器的用户通常希望把这个标志写进他们的会话文件。

重装之前先检查门户 屏幕共享失败时,人的本能是切换打包格式,而且它偶尔看起来有效——因为另一种格式恰好把门户作为依赖拉了进来。直接安装门户才是真正的修复方法,而且花的时间少得多。

你的会话存放在哪里

和在 Windows 上一样,Telegram Desktop 把它的授权信息和缓存保存在一个名为 tdata 的文件夹中。这个文件夹的位置取决于打包方式:压缩包构建位于你的本地共享目录下,Flatpak 位于它自己的应用数据目录内,而 Snap 则位于你主目录中的 Snap 目录下。

第 003 步的警告在这里同样适用,在多用户机器上更值得重复。那个文件夹就是一个已登录的会话。任何能读取它的人——同一台机器上权限宽松的另一个账户、你复制到共享驱动器上的备份、网络挂载上的主目录——都能在别处无需密码、无需验证码地打开你的账户。在“设置”的“隐私和安全”中开启本地密码会加密它,关上这扇门。

这也意味着没有什么需要备份。复制 tdata 来保存你的聊天是不必要的,因为聊天并不在里面;在新机器上登录会产生相同的历史记录。那个文件夹唯一能帮你省下的就是输入验证码,而为此把你的账户留在备份归档里,是一笔糟糕的交易。

如果一台机器不在你手中,就结束该会话 你不需要访问那台电脑,也不需要弄清楚是否有东西被复制了。在任意已登录的客户端上打开“设置”和“设备”,终止那个会话。它会立即停止工作。第 028 步会介绍如何正确地审查这个列表。

现在就试试——五分钟

有四件事值得在你安装它的当天就处理好。每一件都能防止一个否则会在几周后、当你已经忘了自己配置过什么时才浮现的问题。

  1. 现在就安装你环境的桌面门户 不要等到通话开始时才做。屏幕共享是关于这个客户端最常见的 Linux 抱怨,修复方法是一个软件包而不是一个设置,而且对着你自己的第二台显示器测试只需三十秒。
  2. 限制缓存并限制自动下载 “设置”,然后“高级”,然后“数据和存储”。一个在繁忙频道中一直开着的桌面客户端会抓取大量没人看的视频。限制缓存控制的是磁盘;限制自动下载控制的才是磁盘和带宽。
  3. 开启本地密码 “设置”,然后“隐私和安全”。正是这个设置让会话文件夹对任何复制它的人都毫无用处,而在共享或网络化的主目录上,它不是可选项。
  4. 决定它如何随你的会话启动 要么在客户端自己的设置中启用该选项,要么如果你运行平铺窗口管理器,就把最小化启动标志加入你的会话文件。一个每次登录都打开完整窗口的客户端,是一个你会禁用它、然后错过消息的客户端。

这个阶段的常见问题

压缩包构建如何在没有 root 的情况下自行更新?

因为它位于你拥有的主目录中。客户端会下载新版本,并在下次启动时替换自己的文件——没有包管理器,没有提权,没有提示。推论是,你应该把它解压到你拥有的地方,而不是系统级的地方;把它放进 root 拥有的目录,正是人们最终得到一个无法自行更新、并悄悄落后的客户端的原因。

我可以从一种打包格式换到另一种吗?

可以,而且这是一次全新安装,而不是迁移:安装新的,登录,移除旧的。不要复制会话文件夹——路径不同,而且这么做毫无意义,因为登录会给你完全相同的历史记录。在移除旧安装之前先退出登录,这样会话是结束了,而不只是从你的磁盘上消失。

有终端客户端吗,或者有没有不用图形桌面就能使用 Telegram 的方法?

存在第三方终端客户端,有些口碑不错,但它们是由 Telegram 以外的人编写的,而且它们持有你的会话,这使它们属于第 002 步让你暂时拒绝的那一类。Telegram 自己对没有桌面的机器的答案是浏览器中的网页客户端,或者干脆用你的手机。自动化完全是另一个问题,属于机器人而不是客户端——第 086 步会开启这条线索。

Telegram 在我的主目录下占用了几 GB。我可以删掉它吗?

缓存可以删,而且不会丢失任何东西。“设置”,然后“高级”,然后“数据和存储”会显示正在保留什么,并让你限制大小和保留时长。你不应该手动删除的是 tdata 文件夹,因为那是你的会话而不是缓存的媒体——删掉它会让客户端退出登录。从应用内部清理会移除正确的东西。

我发行版的软件包很旧。这要紧吗?

在一定程度上,它只是缺少功能。超过某个年限后,服务器会完全停止接受该客户端,应用会告诉你这一点并拒绝连接。如果你喜欢通过包管理器安装一切,但你的发行版更新缓慢,那么同时使用 Flatpak 或直接压缩包是常见的折中方案——保留一个,而不是两个,这样你就不会在没意识到的情况下运行两个会话。

在 Linux 上运行 Telegram 会改变我账户的任何东西吗?

完全不会。它是同一账户上的另一个会话,看到相同的云端历史记录,拥有相同的群组和设置。这一步中的差异完全关乎你面前的这台机器:软件是如何打包的、它被允许接触什么,以及它把数据写在哪里。这种分离——账户在服务器上,客户端在设备上——正是第 001 步引入的理念,也正是它让本节的每一步都是本地决定,而不是账户决定。

← 返回 TG知识库