这里有一个新用户,在 21.10 impish 版本上运行 ubuntu。
我正在使用 github 页面(https://github.com/ytdl-org/youtube-dl#installation)上的说明安装 youtube-dl:
$ sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl
命令下载了 python 脚本后,多个应用程序完全停止运行,就好像它们已被 youtube-dl 替换了一样 [更新 3:应用程序本身没有被替换,只是它们的链接和快捷方式]。一些受影响的软件是 Ubuntu 的默认应用程序,例如默认文本编辑器 (gedit) 和 gnome-calculator,而其他软件则是手动安装的,例如 qbittorrent 和 steam。
一些像 firefox、nano 和 lutris 这样的东西仍在工作。
例如,尝试从终端运行文本编辑器会导致以下输出:
$ gedit
Usage: gedit [OPTIONS] URL [URL...]
gedit: error: You must provide at least one URL.
Type youtube-dl --help to see a list of all options.
所有受影响的应用程序的错误都是相同的:
$ gnome-calculator
Usage: gnome-calculator [OPTIONS] URL [URL...]
gnome-calculator: error: You must provide at least one URL.
Type youtube-dl --help to see a list of all options.
到目前为止,我唯一尝试过的是通过 apt 重新安装 gedit,但没有任何改变。
我想知道出了什么问题,是否可以修复或者是否需要重新安装。
更新 1:请求命令的输出:
$ history
867 sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
868 sudo chmod a+rx /usr/local/bin/youtube-dl
869 youtube-dl sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
870 sudo chmod a+rx /usr/local/bin/youtube-dl
不知道为什么它似乎被列出两次。
$ which gedit
/usr/local/bin/gedit
$ which gnome-calculator
/usr/local/bin/gnome-calculator
$ ls -al $(which gedit)
lrwxrwxrwx 1 root root 17 loka 28 19:55 /usr/local/bin/gedit -> /usr/bin/firejail
$ ls -al $(which gnome-calculator)
lrwxrwxrwx 1 root root 17 loka 28 19:55 /usr/local/bin/gnome-calculator -> /usr/bin/firejail
$ file $(which gedit)
/usr/local/bin/gedit: symbolic link to /usr/bin/firejail
$ file $(which gnome-calculator)
/usr/local/bin/gnome-calculator: symbolic link to /usr/bin/firejail
“loka”似乎是十月的缩写,我的系统是英文的,但日期似乎仍然使用芬兰语。
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
更新 2:进一步请求的命令输出来自:
fsck 通过拇指驱动器运行
$ sudo fsck -p /dev/nvme0n1p1
fsck from util-linux 2.36.1
fsck.fat 4.2 (2021-01-31)
/dev/nvme0n1p1: 11 files, 1336/130812 clusters
$ sudo fsck -p /dev/nvme0n1p2
fsck from util-linux 2.36.1
/dev/nvme0n1p2: clean, 478908/31227904 files, 49277410/124895488 blocks
回到系统:
$ whereis gedit
gedit: /usr/bin/gedit /usr/lib/x86_64-linux-gnu/gedit /usr/local/bin/gedit /usr/share/gedit /usr/share/man/man1/gedit.1.gz
$ sha256sum /usr/bin/gedit /usr/local/bin/youtube-dl
27545f7fb059c356feeb88a872719c074d0fd5169564ec3fbb3cbb312b093184 /usr/bin/gedit
7880e01abe282c7fd596f429c35189851180d6177302bb215be1cdec78d6d06d /usr/local/bin/youtube-dl
正如答案所建议的那样,也尝试使用sudo ldconfig
,但没有得到任何输出,也没有任何看似改变。
更新3:刚刚发现所有受影响的软件仍然可以使用完整路径(例如/usr/bin/gedit
),问题似乎与这些应用程序的链接和快捷方式有关。诸如右键单击选项“使用文本编辑器打开”之类的东西也仍然被破坏。
这是一个理论:
在您运行第一个命令之前,该命令
/usr/local/bin/youtube-dl
已经存在并且是/usr/bin/firejail
. 可能来自以前的安装。该
curl ... -o /usr/local/bin/youtube-dl
命令不会用新文件替换现有的符号链接。相反,它会覆盖文件的内容,从而覆盖/usr/bin/firejail
. 通常这是一个多调用二进制文件,它检查调用它的名称并在沙箱中执行实际应用程序。但是 youtube-dl 代码当然没有做任何事情。正如评论中所确认的那样,重新安装 firejail 将替换
/usr/bin/firejail
为工作版本。作为参考,firecfg 的典型firejail配置设置是这样工作的:对于每个沙盒应用程序,都有一个符号链接
/usr/local/bin
指向/usr/bin/firejail
. 真正的可执行文件在沙箱中/usr/bin
并在沙箱中执行。这也是为什么使用完整/usr/bin
路径启动程序仍然有效,但默认路径选择符号链接的原因。