我已经从现场 Ubuntu CD 启动了我的系统,我需要修复一些软件包问题。我已经安装了我的硬盘,现在我想像正常启动一样运行 apt-get。即更改apt-get 的工作目录,这样它就可以在我的硬盘上运行。我以前做过,但我不记得语法了。我认为这只是一些标志,就像这样:
apt-get --root-directory=/mnt/partition1 install....
但我只得到“命令行选项......不被理解”。有任何想法吗?
我已经从现场 Ubuntu CD 启动了我的系统,我需要修复一些软件包问题。我已经安装了我的硬盘,现在我想像正常启动一样运行 apt-get。即更改apt-get 的工作目录,这样它就可以在我的硬盘上运行。我以前做过,但我不记得语法了。我认为这只是一些标志,就像这样:
apt-get --root-directory=/mnt/partition1 install....
但我只得到“命令行选项......不被理解”。有任何想法吗?
这也应该有效:
sudo apt-get -o Dir=/media/partitioni1 update
chroot /mnt/partition1
如果您的系统使用多个磁盘分区,您可能必须挂载其中一些才能使软件包系统正常工作(10 年前,当硬盘开始变得太大而无法进行原始物理备份时,我停止设置多个分区)。
如果您在该位置还没有可用的 debian 系统,这将不起作用。——阿科斯塔迪诺夫
如果您在 chroot 时无法使包系统正常工作,那么它可能太混乱而无法再次被信任 - 根据我的经验,使其恢复生机的努力很少有回报。如果发生这种情况,很高兴您仍然可以访问您的 HD、备份您的数据并执行全新的重新安装。
其他答案的一些相关评论:
apt-get -o RootDir=/tmp/test_apt 将(几乎)所有路径设置为不同的根目录。顺便说一句,在正在运行的系统上,如果您复制 /etc/apt、/usr/lib/apt 和 mkdir -p usr/lib etc var/cache var/lib/dpkg var/lib/apt/lists/partial var/cache/ apt/archives/partial 最后触摸 var/lib/dpkg/status,然后 apt 将在该根目录中工作。如果您添加选项 -o Debug::NoLocking=1,它甚至可以作为非 root 用户工作。nolock 选项是必需的,因为我找不到在不同根目录中设置锁定文件的方法。——阿科斯塔迪诺夫
工作是指使用搜索和下载包等操作。如果某些基本软件包不存在,则实际上无法安装。如果目标实际上是出于某种原因将软件包安装在新的根目录中,则 debootstrap 可以提供帮助。——阿科斯塔迪诺夫
运行chroot /mnt/partition1
将启动一个新的 shell,其中文件系统的根目录是/mnt/partition1
. 假设apt-get
您的硬盘驱动器仍然正常工作,您可以从那里继续。
dpkg --root=/mnt/partition1 -i mypackage.deb
是一个不需要的选项chroot
,但需要您自己下载包。