Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如果dpkg或apt get将删除Ubuntu上的程序,该怎么办?_Linux_Ubuntu_Apt Get_Dpkg - Fatal编程技术网

Linux 如果dpkg或apt get将删除Ubuntu上的程序,该怎么办?

Linux 如果dpkg或apt get将删除Ubuntu上的程序,该怎么办?,linux,ubuntu,apt-get,dpkg,Linux,Ubuntu,Apt Get,Dpkg,问题是我安装了一个.deb文件,当我试图用dpkg-r…清除它时,dpkg声称已将其删除。尽管如此,我可以输入“removed”命令,它仍然有效 我需要把它弄下来,因为我意识到我需要的是一个包含它的更大的程序。当我尝试在较大的程序上运行make时,它会尝试将较小的程序与不同的选项一起使用(较大的程序似乎采用较小程序的较新版本) 不管怎么说,我不能摆脱它真是太奇怪了。我已重新安装并尝试使用清除选项,尝试了apt get clean,尝试重新启动机器,等等 任何想法都将不胜感激。谢谢 感谢H2CO3

问题是我安装了一个
.deb
文件,当我试图用
dpkg-r…
清除它时,
dpkg
声称已将其删除。尽管如此,我可以输入“removed”命令,它仍然有效

我需要把它弄下来,因为我意识到我需要的是一个包含它的更大的程序。当我尝试在较大的程序上运行
make
时,它会尝试将较小的程序与不同的选项一起使用(较大的程序似乎采用较小程序的较新版本)

不管怎么说,我不能摆脱它真是太奇怪了。我已重新安装并尝试使用清除选项,尝试了
apt get clean
,尝试重新启动机器,等等


任何想法都将不胜感激。谢谢

感谢H2CO3:“如果其他一切都失败了,也许可以手动删除可执行文件……可执行文件[位于]shell的搜索路径中,如果不存在则不会执行”


flop是程序的名称。

警告!!!:只有当您知道包没有对文件系统做任何疯狂的事情时,才可以这样做

下载但不要安装debian软件包。然后跑

$ touch clean_up.sh
$ chmod +X clean_up.sh
$ gedit clean_up.sh
在文件中添加以下内容:

#!/bin/bash

all=$(dpkg -c steam*deb | awk '{print $6}')
for item in $all; do
  #echo "Checking $item"
  item=$(echo $item | sed 's/^\.//g')
  if [[ -d ${item} ]]; then
    #echo "-is a directory. Skipping"
    continue
  fi
  echo "Removing file ${item}"
  sudo rm -f ${item}
done
然后,保存并退出gedit并运行:

./clean_up.sh
这将删除它静态放置在系统上的所有文件

试试这个:

rm /var/lib/dpkg/info/program.*
dpkg --remove --force-remove-reinstreq program

将“程序”替换为要删除的程序。

如果其他操作都失败,可以手动删除可执行文件。好的,谢谢。我想到了这一点,但我不确定这是否会留下命令名——或者这是否会成为一个问题:)没有“命令名”。在shell的搜索路径中有一些可执行文件,如果不存在(显然)就不会执行。啊,太酷了。我不知道这是怎么回事。成功了!非常感谢。但是现在我有一个不同的问题,请参阅Srdjan答案下的注释。要删除这个小的可执行文件,您也可以运行sudo rm-f$(哪个较小的程序名)。不过,请注意这条命令好的,我实际上运行了
rm`which flop`
,但是当我试图用apt get重新安装我想要的版本时,它会安装。但是我得到:
$flop
bash:/usr/local/bin/flop:没有这样的文件或目录
,您认为安装了flop的软件包可能没有这样做,但可能是它的一个依赖项。我会查找依赖项列表,看看是否有任何依赖项包含/usr/local/bin/floppy。谢谢,但看起来不是这样。啊,我明白了。新包将其安装到/usr/bin/而不是/usr/local/bin/。我必须删除一个sym链接,而不是先前的二进制链接。谢谢大家!
rm /var/lib/dpkg/info/program.*
dpkg --remove --force-remove-reinstreq program