如果安装了软件包,为什么 aptitude 二进制文件会丢失?

Dav*_*d Z 2 package-management aptitude apt dpkg

昨天我将一台笔记本电脑从 Kubuntu 9.04 (Lucid) 升级到 9.10 (Karmic)。然后我尝试安装一些软件

$ sudo aptitude install dont-remember-what-it-was
Run Code Online (Sandbox Code Playgroud)

我得到

sudo: aptitude: command not found
Run Code Online (Sandbox Code Playgroud)

等等,什么?天赋怎么会少呢?不仅如此——apt-get而且dpkg还以某种方式神秘地从系统中消失了。我已经手动签入/usr/bin并确认了所有其他目录中$PATH的文件实际上不存在。

$ ls /usr/bin/aptitude
ls: cannot access /usr/bin/aptitude: No such file or directory
Run Code Online (Sandbox Code Playgroud)

幸运的是,我有两个可用的图形包管理器,Adept Installer 和 KPackageKit。他们都报告aptitude安装了软件包。为了安全起见,我尝试通过 GUI 卸载并重新安装它,卸载/重新安装似乎顺利进行。但实际的程序二进制文件仍然缺失。

这是正常的事情吗?如果没有,有没有人听说过它发生了?如果我升级到 10.04,丢失的程序是否会神奇地重新出现?

编辑:我不知道发生了什么,但是在将计算机关闭一整夜并重新启动后,问题似乎已自行解决。所有正确的文件似乎都在那里。

Las*_*sen 7

那绝对不正常!

要获取 dpkg 和 apt-get,您可以执行以下操作:下载dpkg_1.15.8.2ubuntu3_i386.debapt_0.7.25.3ubuntu9.1_i386.deb

ar x dpkg_1.15.8.2ubuntu3_i386.deb
sudo tar -C / -xzf data.tar.gz
ar x apt_0.7.25.3ubuntu9.1_i386.deb
sudo tar -C / -xzf data.tar.gz
Run Code Online (Sandbox Code Playgroud)

请注意,某些包在内部使用 lzma 而不是 gzip 压缩,因此必须使用

sudo tar --lzma -xf data.tar.lzma
Run Code Online (Sandbox Code Playgroud)

之后你应该能够做到apt-get update然后安装 aptitude

apt-get install --reinstall aptitude
Run Code Online (Sandbox Code Playgroud)

警告!
我真的不建议人们安装这样的软件包!一定要看具体包的配置,有没有缺少依赖!如果可能的话,之后通过 apt 或 dpkg 重新安装软件包。