为另一个分区/目录运行apt-get?

时间:2010-10-17 18:21:27

标签: linux ubuntu command-line-arguments apt-get

我已从现场Ubuntu CD启动了我的系统,我需要解决一些包问题。我已经安装了我的硬盘,现在我想运行apt-get,好像我正常启动一样。即更改apt-get的工作目录,以便它可以在我的硬盘上运行。我以前做过这个,但我不记得语法了。我认为这只是一些旗帜,如下:

apt-get --root-directory=/mnt/partition1 install....

但我只得到“命令行选项......不被理解”。有什么想法吗?

3 个答案:

答案 0 :(得分:19)

这也应该有效:

sudo apt-get -o Dir=/media/partitioni1 update

答案 1 :(得分:8)

chroot / mnt / partition1

如果您的系统使用多个磁盘分区,您可能必须安装其中一些以使程序包系统正常工作(10年前,当硬盘开始变得太大而无法进行原始物理备份时,我停止设置多个分区)。

  

如果您在该位置尚未使用可用的debian系统,则无效。 - akostadinov

如果你在chrooting时无法让包装系统工作,也许它太混乱了,再也不能再被信任了 - 根据我的经验,将它恢复生机的努力很少付出代价。如果发生这种情况,请高兴您仍然可以访问您的HD,备份您的数据并执行干净的重新安装。

其他答案的一些相关评论:

  

apt-get -o RootDir = / tmp / test_apt设置(几乎)所有路径都在不同的根目录中。 btw在正在运行的系统上,如果你复制/ etc / apt,/ usr / lib / apt和mkdir -p usr / lib等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选项是必需的,因为我找不到在不同的根目录中设置锁文件的方法。 - akostadinov

     

工作意味着使用搜索和下载包以及此类操作。实际上,如果某些基本包装尚未安装,则无法进行安装。如果目标实际上是出于任何原因在新根目录中安装软件包,则debootstrap可以提供帮助。 - akostadinov

答案 2 :(得分:4)

运行chroot /mnt/partition1将启动一个新的shell,其中文件系统的根目录为/mnt/partition1。假设硬盘驱动器上的apt-get仍能正常运行,您可以从那里继续。

dpkg --root=/mnt/partition1 -i mypackage.deb是一个不需要chroot的选项,但需要您自行下载该包。