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

dej*_*728 13 upgrade updates apt browser tor

Tor 浏览器已经很久没有弹出更新了。今天,由于浏览器在流式传输视频时出现滞后和冻结/跳帧,我试了一下并更新了它,它警告我它将关闭我正在运行的实例并在后台重新安装。

  1. 我使用的是 debian/ubuntu 20.04 KDE。现在任务栏快捷方式将无法启动,只会打开一个显示“下载错误:404”的小窗口。
  2. 当我进入应用程序菜单的子菜单“Internet”时,我会看到剩余的应用程序“Tor 浏览器启动器设置”和“Tor 浏览器”。我还有第三个应用程序,也称为“Tor 浏览器”。全部都有相同的标志。剩下的两个会导致那个微小的错误窗口,而第三个会启动 Tor 浏览器,我可以从中发布此线程。
  3. 我现在有“两个”Tor,因为我能够启动的第三个应用程序是从 torproject 网站下载的,然后我在某处提取了它们的文件夹,在此处打开终端,然后执行了$ ./start-tor-browser.desktop --register-app. 所以我猜前两个应用程序是从 apt 存储库中提取的(因为通过“Discover”KDE GUI 安装)。
  4. 在从 torproject 网站下载新实例之前,我尝试在sudo apt remove tor torbrowser-launcher -y不使用 的情况下进行修复--purge,希望能保留我的书签,然后使用sudo apt install tor torbrowser-launcher -y. 就终端输出而言,一切顺利。但点击应用程序时仍然出现该错误...
  5. 当右键单击不工作的“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-pull 应用程序可以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
Run Code Online (Sandbox Code Playgroud)

那么旧实例有什么问题吗?它试图从中提取的 URL ?? 我问这个是因为在新的 torproject-pulled 实例上,我在 apt-pulled 浏览器上保存的书签丢失了......

此外,当从工作实例附加任务栏快捷方式时,它总是最终启动旧实例,从而弹出该错误窗口。因此,我总是必须深入研究应用程序菜单才能单击第三个应用程序。

如果你们知道如何恢复旧实例,或者从旧实例中提取我的个人资料以注入新实例,我将不胜感激

(发现这个https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804184,但我完全不明白,因为他们的构建似乎是一些硬化的......

另外,当我echo $PATH猜测该torbrowser-launcher文件将在 中/usr/,并搜索该文件以将 URL 结尾从“_en-US”修改为“_ALL”时,我真的找不到要修改的文件。只有一些 python 脚本除了导入一些 torbrowser-launcher 模块之外什么也不做...)

Fel*_*eno 19

我使用的是 Ubuntu 22.04,最新更新。torbrowser-launcher从官方仓库安装。

进行此更改应该会使torbrowser-launcher作品达到预期的效果。但在此之前,您必须删除此目录~/.cache/torbrowser~/.local/share/torbrowser因为~/.config/torbrowser它们保存启动器的信息,并且使用这些目录无法进行修复。

请注意,如果您安装了有效的 Tor 浏览器,您将丢失设置和有效安装。使用此修复程序torbrowser-launcher不会考虑现有安装,但可以了解启动器无法下载当前版本的原因。

首先更改/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"
Run Code Online (Sandbox Code Playgroud)

注释掉该变量language并使用 value 再次设置它"ALL",这样启动器将在镜像中查找正确的签名和 tarball 文件。

还对同一文件的第227行进行了更改,这次在设置安装位置的变量时,启动器将引用语言设置并将其设置为目录安装的一部分,但实际是启动器下载的包将引用目录 astor-browser而不是tor-browser_ALL启动器期望的那样:

                "tbb": {
                    "changelog": tbb_local
                    + "/tbb/"
                    + self.architecture
                    + "/tor-browser"
                    #+ "/tor-browser_"
                    #+ language
                    + "/Browser/TorBrowser/Docs/ChangeLog.txt",
                    "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"
                    #+ "/tor-browser_"
                    #+ language
                    + "/start-tor-browser.desktop",
},
Run Code Online (Sandbox Code Playgroud)

这里有三个条目必须更改。所有这些都引用/tor-browser_+language作为安装目录的一部分。必须将其更改为/tor-browser并注意第二个条目,因为它必须以 结尾,

这个修复很糟糕,它根本没有删除语言设置,只是修复它以使其与镜像中可用的内容一起工作。我想我们需要等待开发人员在回购包上进行此修复,到那时这些更改将被重写并希望仍然有效。

希望这可以帮助。

编辑:更新了第二个修复的行并更新了代码块。再说一次,我们不应该这样做。如果您选择执行此修复,请密切注意。

  • 这是愚蠢的,这是必需的 (2认同)

小智 7

sudo sed -i 's|self.language =.*|self.language = "ALL"|g' /usr/lib/python3/dist-packages/torbrowser_launcher/common.py
rm -rf ~/{cache,.local/share,.config}/torbrowser
ln -s ~/.local/share/torbrowser/tbb/x86_64/tor-browser ~/.local/share/torbrowser/tbb/x86_64/tor-browser_ALL
torbrowser-launcher
Run Code Online (Sandbox Code Playgroud)

上面的完整代码应该足够了。


跑步/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'
Run Code Online (Sandbox Code Playgroud)
ln -s ~/.local/share/torbrowser/tbb/x86_64{tor-browser,tor-browser_ALL}
Run Code Online (Sandbox Code Playgroud)

并运行torbrowser-launcher


小智 1

这对我有用:

  1. 在/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"
         )
    
    Run Code Online (Sandbox Code Playgroud)

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

  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