什么会导致已安装的应用程序无法被识别?

the*_*ian 6 apt dpkg gdb

我需要将我的 gdb 版本恢复到以前的版本,以便它与某个工具兼容。我目前安装了 gdb 7.7.1。如果我进入gdb终端并按回车键,gdb 就会运行。但是,当我运行时sudo apt-get remove gdb,它说:

$ sudo apt-get remove gdb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package 'gdb' is not installed, so not removed
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Run Code Online (Sandbox Code Playgroud)

我用的时候也是这种情况sudo dpkg -r gdb。我该如何解决这个问题,以便程序首先被识别,然后被移除?

Ubuntu 14.04.2 LTS
3.13.0-53-generic
Run Code Online (Sandbox Code Playgroud)

Rav*_*ina 7

首先找出gdb使用which命令运行时将执行的二进制文件:

which gdb
Run Code Online (Sandbox Code Playgroud)

它的输出路径如下:/usr/bin/gdb然后我们应该使用以下命令搜索安装此文件的软件包dpkg

dpkg -S /usr/bin/gdb
Run Code Online (Sandbox Code Playgroud)

甚至:

dpkg -S $(which gdb)
Run Code Online (Sandbox Code Playgroud)

所以它给了我们一个包名,比如 : gdb: /usr/bin/gdb。然后删除该包:sudo apt remove gdb在这种情况下。


作为替代方案,您可以重新安装旧版本,首先查看可用的版本:

apt-cache madison gdb | grep -iv sou
  gdb | 7.11.1-0ubuntu1~16.04 | http://archive.ubuntu.com/ubuntu xenial-updates/main amd64 Packages
  gdb | 7.11-0ubuntu1 | http://archive.ubuntu.com/ubuntu xenial/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

然后安装旧版本,它将自行处理新版本的删除:

$ sudo apt install gdb=7.11-0ubuntu1

The following packages will be DOWNGRADED:
  gdb
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 0 not upgraded.
Run Code Online (Sandbox Code Playgroud)