看来我的aptitude有点坏了:

sudo aptitude update
0% [Working]Segmentation fault

dmesg
[223282.616599] aptitude[30972]: segfault at 67707f ip 7f954dcfae5d sp 7ffff5a5f950 error 4 in libapt-pkg-libc6.7-6.so.4.6.0[7f954dca5000+bd000]


所以我想使用aptitude重新安装apt-get。 '没有重新安装选项。

我如何才能使apt-get重新工作?

我有可能找到了aptitude segfault的根本原因。这是我如何重现它的方法:

通过Cygwin的rxvt终端(来自Windows 7 64位德语版)远程登录Debian机器。
放大rxvt窗口,使其跨两个监视器(是的,我有两个监视器)
运行aptitude。注意:当我将rxvt终端的大小调整为正常大小时,则没有这些分段错误!


#1 楼

$ man apt-get | grep reinsta -A2
       --reinstall
           Re-Install packages that are already installed and at the newest
           version. Configuration Item: APT::Get::ReInstall.


因此,要使用它重新安装aptitude,请使用:

sudo apt-get install --reinstall aptitude


评论


您正在欺骗的-A5是什么?

– Vokuhila-Oliba
2010-1-30在12:51

man grep | grep-“ -A”

–user1686
2010-1-30在13:04

那是什么-您正在抱怨吗?

– Desty
2014年9月11日上午9:55

男人getopt,在解析下看

– Tino
2014年11月17日下午16:43

-A5显示匹配的行以及以下5行。 -停止对选项的解析,从而将其后的所有内容解释为位置参数,避免了不必转义表达式-A中的破折号,否则将其解释为grep自身的选项。

– jjmontes
2014年11月18日在18:20

#2 楼

您可以使用sudo apt-get install --reinstall packagename重新安装软件包。
这会完全删除该软件包(但不会删除依赖它的软件包),然后重新安装该软件包。反向依赖性。

评论


感谢您是唯一正确,完整,不言而喻的答案。

–塞林
13-4-5在4:55



@Cerin:我不会称呼其他答案过于刻板:甚至“阅读手册页”实际上也给出了答案以及查找方法。

– David Spillett
13-4-5在13:50



@DavidSpillett,我非常不同意。手册页通常写得很差,对新手也不友好。例如,“-reinstall”选项上的段落没有提到您必须将其与“ install”参数一起使用。新手可能会正确地问“为什么我必须告诉它安装并重新安装?”告诉某人使用RTFM的答案是最糟糕的一种,让我看到票数最高的答案让我很痛苦,尤其是当一个完整且实际有用的答案接近最低点时。

–塞林
13-4-5在21:34



#3 楼

有时您也需要还原配置文件!不只是重新安装。

sudo apt-get install --reinstall xxxx

重新安装应用程序,保留配置文件。

这可能会有所帮助,但有时您需要重新启动,所以我用的是这样的:

sudo dpkg -r xxxx //to remove that xxxx package
sudo dpkg -P xxxx //to purge all related files


然后

sudo apt-get install xxxx


评论


而且,如果仅需要还原配置文件,则在某些情况下(如果它们由ucf管理),应使用UCF_FORCE_CONFFMISS = 1 apt-get --reinstall install [pkgname]。

–Skippy le Grand Gourou
2015年2月23日在18:04

这个答案值得大赞。这是您要“完全重新安装”软件包时需要的。例如。一个简单的--vsftpd重新安装-不会重新创建配置文件,即使该文件不再存在。而是执行“删除+清除+(重新)安装”。

– Kar.ma
19-2-22在15:31



#4 楼

您应该安全删除aptitude并重新安装,因为这不会影响其他apt实用程序。因此:先执行apt-get remove aptitude,再执行apt-get install aptitude,或者仍然失败,请尝试执行apt-get purge aptitude,然后执行apt-get install aptitude。导致问题的问题所在(取决于问题,如果有的话,进一步的活动可能会使情况更糟)。另外,请确保您在继续进行操作之前先检查在“删除/清除”步骤中将要删除的内容(如果由于删除该程序包而进行了其他更改,应该暂停一下以寻求许可),再次检查我的想法是安全的。

评论


非常感谢! apt-get remove然后apt-get install达到了目的!

– Vokuhila-Oliba
2010-1-30在0:32



很久以前,我做了诸如完整文件系统检查之类的工作。您能给我一个简短的提示怎么做吗?

– Vokuhila-Oliba
2010年1月30日,0:50

fsck -f ,例如fsck / dev / sda1。该文件系统将需要在此时被卸载或以只读方式安装,因为这很可能是您的根文件系统,因此您应该重新引导至单用户模式或从其他诸如live cd引导。

– David Spillett
2010-1-30在1:24

您可以使用tune2fs将文件系统标记为已挂载的次数超过其设置的限制,这将强制检查下一次引导。假设文件系统是ext2 / 3/4:tune2fs -C 99 ,或者如果您已关闭基于装载计数的检查,则使用tune2fs -c 17 -C 99 同时打开它。

– David Spillett
2010年1月30日13:20



触摸/ forcefsck;重启

–user23307
2010-1-30 14:53

#5 楼

如果您想使用完整的配置擦除进行重新安装:我经常用运动之类的东西做这件事。

评论


该技术的问题在于它会删除您对/ etc / ...下的设置所做的所有更改,这可能不是您想要的...

– Alexis Wilke
20-09-29在17:45

在其他情况下,它可能正是您想要的。有时您只想找回原始配置或进行清理

– Niwla23
20 Dec 30 '12:30

绝对。实际上,当我测试新软件包时,我会做很多事情,直到对安装过程感到满意为止。因此它可能非常有用。另一方面,如果您不首先使用一些其他地方没有的特定数据来备份设置,那可能是一个难题(您可能会再次提出来,但可能会很耗时)。

– Alexis Wilke
20/12/30在18:06