我有一个脚本,可以自动更新一些 AppImage 应用程序,然后它会使用新的应用程序创建/更新符号链接(因为它们在集成时文件名中有一个哈希,所以以前的符号链接已经过时了)。
$ ls -l ~/.bin/taskwarrior-tui
/home/user/.bin/taskwarrior-tui -> /home/user/Apps/taskwarrior-tui-$HASH.AppImage
但是,如果我从符号链接执行应用程序,则会调用旧版本。
$ ~/.bin/taskwarrior-tui --version
taskwarrior-tui 0.13.8
$ ~/Apps/taskwarrior-tui-$HASH.AppImage --version
taskwarrior-tui 0.13.10
因此,我发现了两个问题:(1) 我不明白符号链接如何指向旧版本 (2) 据称我不再“安装”的软件(即自动更新脚本删除了旧的 AppImage)。如果我尝试使用 ( locate
after updatedb
) 在我的文件系统上搜索与应用程序相关的文件,则只会显示较新版本的文件,因此至少文件系统上没有任何残留内容。
我尝试跟踪这两个命令 (~/.bin/taskwarrior-tui 和 ~/Apps/taskwarrior-tui-$HASH.AppImage) 的执行情况,但我无法(轻易)在那里找到任何指针。
最终(可能在重启后)问题解决了,但这仍然不应该发生。如果您能为我解决这个问题提供任何帮助,我将不胜感激。
编辑:
更奇怪的是,如果我在符号链接的文件夹中,并使用相对路径执行它,它会调用新版本。如果我从完整路径执行它,它会执行旧版本。
$ ~/.bin/taskwarrior-tui --version
taskwarrior-tui 0.13.8
$ ./taskwarrior-tui --version
taskwarrior-tui 0.13.10
编辑2:以防万一,~/.bin/ 也是一个符号链接。
$ ls -l ~/.bin
/home/user/.bin -> /home/user/automation/bin/
$ ~/.bin/taskwarrior-tui --version
taskwarrior-tui 0.13.8
$ /home/user/automation/bin/taskwarrior-tui --version
taskwarrior-tui 0.13.10