为另一个分区/目录运行 apt-get?
Posted
技术标签:
【中文标题】为另一个分区/目录运行 apt-get?【英文标题】:Running apt-get for another partition/directory? 【发布时间】:2011-04-26 15:46:26 【问题描述】:我已从实时 Ubuntu CD 启动我的系统,我需要修复一些软件包问题。我已经安装了我的硬盘,现在我想像正常启动一样运行 apt-get。即更改 apt-get 的工作目录,以便它可以在我的硬盘驱动器上运行。我以前做过,但我不记得语法了。我认为这只是一些标志,像这样:
apt-get --root-directory=/mnt/partition1 install....
但我只得到“命令行选项...不理解”。有什么想法吗?
【问题讨论】:
问题与编程无关。可能属于Serverfault。 (版主会根据需要进行迁移,请勿复制粘贴到Serverfault上) 【参考方案1】:chroot /mnt/partition1
如果您的系统使用多个磁盘分区,您可能必须挂载其中一些才能使软件包系统正常工作(10 年前,当硬盘开始变得太大而无法进行原始物理备份时,我停止设置多个分区)。
如果您在该位置还没有可用的 debian 系统,这将不起作用。 ——阿科斯塔迪诺夫
如果您在 chroot 时无法让软件包系统正常工作,那么可能它太混乱了,无法再次被信任 - 根据我的经验,让它恢复生机的努力很少有回报。如果发生这种情况,很高兴您仍然可以访问您的 HD、备份您的数据并执行全新的重新安装。
来自其他答案的一些相关cmets:
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 可以提供帮助。 ——阿科斯塔迪诺夫
【讨论】:
如果您在该位置还没有可用的 debian 系统,这将不起作用。 如果您在 chroot 时无法使软件包系统正常工作,那么再次被信任就是一团糟——根据我的经验,使它恢复生机的努力很少得到回报。我的建议是:很高兴您仍然可以访问您的 HD、备份您的数据并执行全新的重新安装。【参考方案2】:运行chroot /mnt/partition1
将启动一个新的shell,其中文件系统的根是/mnt/partition1
。假设您硬盘上的 apt-get
仍然可以正常工作,您可以从那里继续。
dpkg --root=/mnt/partition1 -i mypackage.deb
是一个不需要chroot
的选项,但需要您自己下载包。
【讨论】:
【参考方案3】:这也应该有效:
sudo apt-get -o Dir=/media/partitioni1 update
【讨论】:
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 可以提供帮助。 @akostadinov 您的 cmets 可以在这里写成一个很好的答案。以上是关于为另一个分区/目录运行 apt-get?的主要内容,如果未能解决你的问题,请参考以下文章
由于 openSUSE 的 repo,apt-get 更新不起作用
LINUX apt-get install 提示 不能找到包的 疑问?