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

Ava*_*all 11 linux ubuntu apt-get command-line-arguments

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

apt-get --root-directory=/mnt/partition1 install....
Run Code Online (Sandbox Code Playgroud)

但我只得到"命令行选项...不理解".有任何想法吗?

enz*_*tib 22

这应该工作:

sudo apt-get -o Dir=/media/partitioni1 update
Run Code Online (Sandbox Code Playgroud)

  • 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 选项是必要的,因为我找不到在不同根目录中设置锁定文件的方法。 (3认同)

Pau*_*ine 9

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

  • 如果您在该位置尚未使用可用的debian系统,则无法使用此功能. (4认同)

Jan*_*der 5

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

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