我需要修复阻止我的系统启动的网络相关软件包 (Samba)。 (薄荷 17)。
我有一个具有相同操作系统的可启动 USB 记忆棒。如何通过 USB 操作系统修复硬盘上损坏的软件包?
答案1
下载您需要的软件包并dkpg
与--instdir
选项一起使用:
dpkg --instdir=/path/to/mounted/HDD --install yourpackage.deb
如果不想覆盖一半已安装的软件包,您可能需要首先使用--purge
(也需要适当的--instdir
!!)。dpkg
答案2
使固定
最简单的方法是创建 chroot,然后在 chroot 内执行修复操作。您可以通过以下方式执行此操作:
- 验证网络在 chroot 之外是否正常工作。发出一个
sudo ifconfig
. - 为需要修复的安装创建一个安装点。发出一个
sudo mkdir -pv /mnt/mymint
- 现在安装您的安装。
sudo mount -v -t ext4 /dev/sdX
X 是根分区字母的问题。您可能需要-t
根据您的文件系统更改该选项。 - 验证您的交换分区。
sudo swapon /dev/sdY
Y 是交换分区的问题。 - 发出以下命令将 LiveDisk 与您的安装同步:
mount -t proc proc /mnt/mymint/proc
mount --rbind /sys /mnt/mymint/sys
mount --rbind /dev /mnt/mymint/dev
- 输入您的更改根目录。问题:
chroot /mnt/mymint /bin/bash
source /etc/profile
export PS1="(chroot) $PS1"
- 现在,我们不必像 Anthon 的答案中那样对任何目标使用任何额外选项。我们可以使用 apt-get(对所有损坏的包执行此操作):
sudo apt-get remove --purge brokenpackagename && sudo apt-get-install packagename
- 重启。问题:
exit
umount -l /mnt/mymint/dev{/shm,/pts,}
umount /mnt/mymint{/boot,/sys,/proc,}
reboot
推理
我个人的观点是,使用更改根目录是最安全的方法,因为这样 LiveCD/USB 中的任何内容都不会干扰您的系统。我承认这种方法可能会吓跑一些新用户,但我可以向您保证这种方法有效,因为它是 Gentoo 发行版用于新安装的方法。有兴趣的话可以看看Gentoo 安装手册第 6 章。