更新TOR搞砸了我的客户端:“下载错误:404”

Tor浏览器已经有很长时间没有更新弹窗了。今天,因为浏览器在播放视频时出现卡顿、冻结/跳帧的问题,我决定试一试更新。它提醒我会关闭当前运行的实例并在后台重新安装。
我使用的是debian/ubuntu 20.04 KDE。现在任务栏快捷方式无法启动,只会打开一个小窗口显示“下载错误:404”。
当我进入应用菜单,选择子菜单“互联网”,我看到剩下的应用有“Tor浏览器启动器设置”和“Tor浏览器”。我还有第三个应用,也叫做“Tor浏览器”。它们都有相同的标志。前两个应用会弹出那个小错误窗口,而第三个应用可以正常启动Tor浏览器,我就是通过它来发帖的。
现在我有了“两个”Tor,因为我能够启动的第三个应用是从torproject网站下载的,然后我将它们的文件夹解压到某个地方,在这里打开终端,并执行了$ ./start-tor-browser.desktop --register-app命令。所以我猜前两个应用是从apt软件源中获取的(通过“Discover” KDE图形界面安装的)。
在从torproject网站下载新实例之前,我尝试使用sudo apt remove tor torbrowser-launcher -y命令进行修复,没有使用--purge选项以保留我的书签,然后使用sudo apt install tor torbrowser-launcher -y命令重新安装。从终端的输出来看,这一切都进行得很顺利。但是点击应用时仍然出现错误...
当我右键单击无法工作的“Tor浏览器”应用和能够工作的应用时,我注意到命令有所不同。能够工作的应用执行的命令是sh -c '"/home/user/softwares/tor-browser/Browser/start-tor-browser" --detach || ([ ! -x "/home/user/softwares/tor-browser/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k,而旧的apt软件源中获取的应用执行的命令是torbrowser-launcher %u。因此出于好奇,我打开了终端并输入了$ torbrowser-launcher,然后得到了以下输出:
Tor Browser Launcher
By Micah Lee, licensed under MIT
version 0.3.2
https://github.com/micahflee/torbrowser-launcher
Downloading Tor Browser for the first time.
Downloading https://aus1.torproject.org/torbrowser/update_3/release/Linux_x86_64-gcc3/x/en-US
Latest version: 12.0
Downloading https://dist.torproject.org/torbrowser/12.0/tor-browser-linux64-12.0_en-US.tar.xz.asc
Download Error: 404

请问旧实例有什么问题?试图拉取的URL是什么?我问这个是因为在新下载的torproject实例上,我保存在apt下载的浏览器中的书签不见了...

此外,当我从工作实例附加任务栏快捷方式时,它总是启动旧实例,因此弹出错误窗口。所以我总是不得不深入应用菜单点击第三个应用。

如果你们知道如何恢复旧实例,或者从旧实例中提取我的配置文件注入到新实例中,我将非常感谢。

(在这里找到了https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804184 但我不太理解,因为他们的构建似乎是某种加固版的...

此外,当我执行echo $PATH并猜测torbrowser-launcher文件位于/usr/,并搜索该文件以修改URL结尾从"_en-US"到"_ALL",我真的找不到这样的文件来修改。只有一些什么都不做,只是导入了一些torbrowser-launcher模块的Python脚本...)


请提供清晰的操作系统和版本详情...对于大多数版本,您不应该遇到问题,但在您提供必要的详细信息之前,我们无法确定特定的操作系统和版本。顺便说一下:Tor浏览器是可以使用的,我经常使用它(并非每天),并且与维护人员有一定的沟通。 - guiverc
感谢您的回答,已完成:Ubuntu 20.04,Tor的新安装版本是12.0。之前损坏的版本我不知道具体是哪个版本,但现在我尝试修复时从apt仓库中获取了最新的版本。希望这个版本也是12.0。 - dejna728
很高兴听到这个消息,顺便告诉你,我们这里也正在进行一项平行调查:https://www.reddit.com/r/TOR/comments/zic3ta/updating_tor_screwed_up_my_client_download_error/ - dejna728
这个问题可能与https://bugs.launchpad.net/ubuntu/+source/torbrowser-launcher/+bug/2000077有关,目前正在进行修复。 - guiverc
Debian的上游问题已经解决,Thomas(teward)现在已经在lunar上解决了这个问题,并且已经开始了对已发布产品的SRU(稳定版本更新)请求。 - guiverc
6个回答

我在Ubuntu 22.04上,最新更新。从官方仓库安装了torbrowser-launcher
进行这些更改应该使torbrowser-launcher按预期工作。但在此之前,您必须删除以下目录:~/.cache/torbrowser~/.local/share/torbrowser~/.config/torbrowser,因为它们保存了启动器的信息,而使用这些目录无法修复问题。
请注意,如果您有一个正常运行的Tor浏览器安装,您将丢失设置和已安装的内容。使用此修复方法不会考虑现有的安装,但可以让您了解为什么启动器无法下载当前版本。
首先,在/usr/lib/python3/dist-packages/torbrowser_launcher/common.py文件的第171行更改此行,您需要以root权限更改此文件。
if hasattr(self, 'settings') and self.settings['force_en-US']:
    language = 'en-US'
else:
    #language = self.language
    language = "ALL"

注释掉变量language并重新设置为"ALL",这样启动器将在镜像中查找正确的签名和tarballs文件。
还在同一文件的第277行进行了更改,这次在设置变量到安装位置时,启动器将参考语言设置,并将其作为目录安装的一部分,但是启动器下载的实际软件包将以tor-browser而不是tor-browser_ALL的方式引用该目录,这与启动器的预期不符。
"tbb": {
    "changelog": tbb_local \
    + "/tbb/" \
    + self.architecture \
    + "/tor-browser" \
    + "/Browser/TorBrowser/Docs/ChangeLog.txt",
    #+ "/tor-browser_"
    #+ language
    "dir": tbb_local + "/tbb/" + self.architecture,
    "dir_tbb": tbb_local \
    + "/tbb/" \
    + self.architecture \
    + "/tor-browser",
    #+ "/tor-browser_"
    #+ language,
    "start": tbb_local \
    + "/tbb/" \
    + self.architecture \
    + "/tor-browser" \
    + "/start-tor-browser.desktop",
    #+ "/tor-browser_"
    #+ language
},

这里有三个条目需要更改。它们都涉及到安装目录中的/tor-browser_ + language部分。必须将其更改为/tor-browser,并注意第二个条目必须以,结尾。
这个修复方法很糟糕,它根本没有移除语言设置,只是修复了一下,以使其与镜像中可用的内容配合使用。我想我们需要等待开发人员在软件包仓库中进行修复,到那时这些更改将被重写,并希望仍然有效。
希望这对你有所帮助。

1太棒了。 - Muhammad Zubair
1这是强制要求真的很愚蠢。 - Marcel
我也觉得这个方法对我有效。基本上是在新安装的Ubuntu系统上,有几个不同版本的Python,但是Tor是安装在Python3上的。不过我想知道,如果添加了Tor浏览器的软件源:sudo add-apt-repository ppa:micahflee/ppa,并使用该源进行更新/安装,是否可以解决问题?就像在linuxize.com的教程中提到的那样。 - ntk4
不好意思,对我来说依然显示 404 错误。 - Kelvin Bouma
谢谢你详细的回答!我发现在所有这些回答中,地区/语言是一个共同的主题,这很棒,但是...你能解释一下为什么语言会成为问题的根源吗?是因为默认语言不是en-US时处理不当导致的吗? - Hippo

sudo sed -i 's|self.language =.*|self.language = "ALL"|g' /usr/lib/python3/dist-packages/torbrowser_launcher/common.py
cd ~./cache
rm -rf torbrowser
cd ../.local/share
rm -rf torbrowser
cd ../../.config
rm -rf torbrowser
torbrowser-launcher

运行/home/user/.local/share/torbrowser/tbb/x86_64/tor-browser_ALL/start-tor-browser.desktop

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/torbrowser_launcher/launcher.py", line 442, in success
    self.run_task()
  File "/usr/lib/python3/dist-packages/torbrowser_launcher/launcher.py", line 301, in run_task
    self.run()
  File "/usr/lib/python3/dist-packages/torbrowser_launcher/launcher.py", line 477, in run
    if not self.check_min_version():
  File "/usr/lib/python3/dist-packages/torbrowser_launcher/launcher.py", line 465, in check_min_version
    for line in open(self.common.paths["tbb"]["changelog"], "rb").readlines():
FileNotFoundError: [Errno 2] No such file or directory: '/home/user/.local/share/torbrowser/tbb/x86_64/tor-browser_ALL/Browser/TorBrowser/Docs/ChangeLog.txt'

cd ~/.local/share/torbrowser/tbb/x86_64
ln -s tor-browser tor-browser_ALL
cd ~

运行torbrowser-launcher

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

同样的问题在Mint 21.5上出现了。
删除了以下文件夹:
~/.cache/torbrowser
~/.local/share/torbrowser
~/.config/torbrowser 

正如Fellipe Weno在他的帖子中所说,如果您有一个正常运行的Tor浏览器安装,可能会丢失设置。
使用root权限,您必须更改位于/usr/lib/python3/dist-packages/torbrowser_launcher/common.py的common.py文件。
if hasattr(self, 'settings') and self.settings['force_en-US']:
    language = 'en-US'
else:
    #language = self.language
    language = "ALL" #ADD THIS LINE

我也按照Fellipe的建议将tor-browser_修改为tor-browser。
在Linux Mint上运行正常。
谢谢。

3Linux Mint在本站是不相关的话题。 - Pilot6

这是对我有效的方法:
在 /usr/lib/python3/dist-packages/torbrowser_launcher/common.py 中找到并更改以下语句:
``` ... tarball_filename = ( "tor-browser-linux64-12.0a5_ALL.tar.xz" ) ... self.paths["tarball_url"] = ( "{0}torbrowser/12.0a5/" + tarball_filename ) ... self.paths["sig_url"] = ( "{0}torbrowser/12.0a5/" + tarball_filename + ".asc" ) ```

https://dist.torproject.org/torbrowser/找到的版本是12.0a5

  1. 然后将目录重命名

mv ~/.local/share/torbrowser/tbb/x86_64/tor-browser/ ~/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US

这里的_en-US是我的语言环境,你可能有不同的。

  1. 最后,启动torbrowser-launcher

 sudo sed -i 's|self.language =.*|self.language = "ALL"|g' /usr/lib/python3/dist-packages/torbrowser_launcher/common.py

在终端中使用此命令从common.py设置自身语言:

希望它能正常工作,我已经在Ubuntu 22.04上测试过了。

附注:我是从Snap评论中找到这个命令的,并且对我来说成功了。


如果你遇到下载错误404,请运行以下命令:
sudo sed -i 's|self.language =.*|self.language = "ALL"|g' /usr/lib/python3/dist-packages/torbrowser_launcher/common.py

重新打开Tor后,它将下载并开始运行。

按照所写的来看,这并不是一个答案。一些参考资料会有所帮助。我如何知道这样做不会损坏我的系统? - David
我对这些答案感到困惑:似乎有不同的方法来修复404错误,例如适用于Mint的方法可能对标准Ubuntu 22.04无效。那么,对于标准的Ubuntu 22.04来说,有没有确定的方法呢? - John Rose