如何将 .iso 镜像文件用作 CD-ROM 资源库?

我有Debian、Ubuntu和Ubuntustudio的所有镜像文件,格式为.iso。我想知道如何将它们用作软件源,以便使用"sudo apt-get install package-name"命令安装我需要的软件包。
我可以很容易地使用"Archive Mounter"挂载.iso文件,但是当我在"软件和更新"中添加CD-ROM时,它显示"请插入CD-ROM"。
请问我应该如何在不刻录到光盘上的情况下完成这个操作?
10个回答

这个问题已经作为回答另一个问题的一部分得到了解答: 如何将USB驱动器作为本地软件源

将镜像作为软件源最简单的方法是将其刻录到CD/DVD上。然后,您需要进入“系统”->“管理”->“软件源”,点击“其他软件”,再点击“添加光盘...”。

如果您想在不刻录镜像的情况下使用它作为软件源,那么过程会稍微复杂一些。您需要打开终端“应用程序”->“附件”->“终端”并运行以下命令:

sudo mkdir /aptoncd-mountpoint

sudo mount /media/USB/aptoncd.iso ~/aptoncd-mountpoint -oloop

sudo apt-cdrom -d=/aptoncd-mountpoint add

(来源:http://www.debianhelp.org/node/10486)


但是这种方法已经不可行了。我试过使用xubuntu-11.10-alternate-iso,但它显示“无法将'/dev/sr0'挂载到'/media/apt/'”和“无法定位任何软件包文件,可能不是Debian光盘或是错误的架构”。 - Anwar
2我认为第二个命令是 sudo mount /media/USB/aptoncd.iso /aptoncd-mountpoint -oloop,在 /aptoncd-mountpoint 前面没有 ~ - Anwar
还是不工作! - BigSack
4-o loop 不是 -oloop - 3pic
至少对于Buster,你会收到一个错误提示说它不安全。你需要添加以下选项:deb [trusted=yes] file:///path/to/mounted/file。我更新了答案。 - tardis
1我在添加了trusted=yes之后,大部分软件包的校验和仍然是错误的。有什么想法吗? - JPT
你可以通过将以下内容添加到/etc/fstab来自动挂载镜像:image.iso /mountpoint ro,loop,nofail - JPT

试试这个

mkdir /media/mountpoint  
mount -t iso9660 -o loop /pathtoiso.iso /media/mountpoint  

然后用文本编辑器而不是一些图形界面工具向/etc/sources.list添加deb file:///media/mountpoint distro main contrib,然后从软件包管理器更新。

1这是一个被接受的答案。 - Sarit
我在设置这个系统时,使用了这个答案,但是在挂载命令中加入了_sudo_,然后将其暂时添加到了我的_~/.bashrc_文件中。 - Adam Prall
要编辑的文件路径实际上是/etc/apt/sources.list - undefined

sudo mount  ~/Desktop/ubuntu-12.04.3-desktop-i386.iso /media/apt
sudo apt-cdrom --no-mount -d=/media/apt add

这个有效。

4除非我们在“apt-cdrom”命令中添加“-m”选项来阻止自动卸载,否则这个方法行不通。如果没有的话,即使之前已经装载了虚拟的“光盘”,它也会被卸载。所以完整的语法是:“sudo mount /iso/path /mount/point”。然后,执行“sudo apt-cdrom -d=/mount/point add -m”。 - WesternGun

上述步骤对我没有起作用。不过,我碰巧在debian用户列表的帮助下解决了问题,并且成功了。
以下是具体步骤:
假设您在/home/iso-files/文件夹中有iso文件。我在/home/iso-files文件夹中有debian-7.1.0-amd64-DVD-1.iso文件。
在/media中创建一个新文件夹。 mkdir /media/dvd1-mountpoint 您需要以root身份运行上述命令。
以root身份运行以下命令。 mount ~/iso-files/debian-7.1.0-amd64-DVD-1.iso /media/dvd1-mountpoint -o loop 在/etc/fstab中添加以下条目。 ~/iso-files/debian-7.1.0-amd64-DVD-1.iso /media/dvd1-mountpoint iso9660 loop,ro,user,noauto 0 0
在/etc/apt/sources.list中添加以下条目。 deb file:/media/dvd1-mountpoint/ wheezy main contrib
通过在每个条目的开头添加#来注释掉/etc/apt/sources.list中的其他内容,只有上述行应取消注释。
以root身份运行以下命令。 apt-get update 安装任何软件包名称,现在应该可以正常工作。 apt-get install somePackage 您可以通过卸载DVD然后直接挂载挂载点来检查fstab中的条目是否正确。 umount /media/dvd1-mountpoint mount /meida/dvd1-mountpoint
如果您计划在启动时自动挂载DVD,则应从/etc/fstab中的条目中删除user,noauto。
以上步骤对我来说完全有效。对你也应该有效! 我知道我回答你有点晚了,但无论如何!

我在这里找到了答案:http://ubuntuguide.net/4-ways-to-upgrade-to-ubuntu-11-04-natty-narwhalonlineoffline(第四种方法)。
基本上,它建议将ISO文件挂载为光盘。这可能会让系统误以为ISO镜像是一张真正的光盘。 sudo mount -t iso9660 -o loop PATH/TO/ISO /cdrom (我正在使用这种方法从11.10升级到12.04 Alpha2,因为它无法放入CD中,而且由于某种原因,我的系统对USB驱动器不满意。)

我之前描述的方法现在不起作用了。(我想它过去是有效的)。它显示了一个类似的消息:
    W: Failed to mount '/dev/sr0' to '/media/apt/'
    E: Unable to locate any package files, perhaps this is not a Debian Disc or the wrong architecture?

我发现这个解决方法很有用: 在完成了dv3500ea的方法的前两步之后,(我为了用户的方便再次写出来
sudo mkdir /aptoncd-mountpoint
sudo mount /media/USB/aptoncd.iso /aptoncd-mountpoint -o loop

你应该运行这个:
sudo ln -s /aptoncd-mountpoint /media/apt

如果它给你错误,说“/media/apt”不存在,请用以下方法创建一个。
sudo mkdir /media/apt

然后运行dv5300ea命令的第三个命令(稍作修改):
sudo apt-cdrom add

这应该完美地运行。

我的:
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-1.iso /media/dvd1-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-2.iso /media/dvd2-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-3.iso /media/dvd3-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-update-7.6.0-i386-DVD-1.iso /media/dvd4-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-update-7.6.0-i386-DVD-2.iso /media/dvd5-mountpoint

echo "deb file:/media/dvd1-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb file:/media/dvd2-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb file:/media/dvd3-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb file:/media/dvd4-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb file:/media/dvd5-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list

echo "deb http://packages.dotdeb.org wheezy all" >> /etc/apt/sources.list.d/dotdeb.list

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

apt-get update    
apt-get upgrade
apt-get autoremove

稍微修改一下,帮助我在amd64/i386混合环境中使其正常工作。
** 不使用mount命令,而是将iso永久挂载在/etc/fstab中 **
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-amd64-DVD-1.iso /media/dvd1-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-amd64-DVD-1.iso /media/dvd2-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-amd64-DVD-1.iso /media/dvd3-mountpoint 
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-1.iso /media/dvd4-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-2.iso /media/dvd5-mountpoint
mount -t iso9660 -o loop  /media/Disk1/debian-7.6.0-i386-DVD-3.iso /media/dvd6-mountpoint

echo "deb [arch=amd64] file:/media/dvd1-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb [arch=amd64] file:/media/dvd2-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb [arch=amd64] file:/media/dvd3-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb [arch=i386] file:/media/dvd4-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb [arch=i386] file:/media/dvd5-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list
echo "deb [arch=i386] file:/media/dvd6-mountpoint/ wheezy main contrib" >> /etc/apt/sources.list.d/dotdeb.list

echo "deb http://packages.dotdeb.org wheezy all" >> /etc/apt/sources.list.d/dotdeb.list

wget http://www.dotdeb.org/dotdeb.gpg
cat dotdeb.gpg | apt-key add -

apt-get update    
apt-get upgrade
apt-get autoremove


那个维基页面不存在。你能更详细地解释一下你的命令吗?谢谢! - Seth

<Alexare问道:我有Debian、Ubuntu和Ubuntustudio的所有镜像文件,格式为.iso。我该如何将它们用作存储库,以便使用sudo apt-get install package-name安装我想要的软件包?>

我的回答:

我使用file-roller打开iso文件,从中提取出'.../dists/'和'.../pool/'目录到一个空目录(可以是硬盘或可移动介质,比如USB闪存),然后将以下内容添加到/etc/apt/sources.list文件中:

deb file:/path_to/that_directory distro main [contrib]

然后我以root身份打开aptitude并更新源。

完成。

你可以在介质和sources.list中添加多个这样的文件。

如果你愿意,可以尝试使用'apt-get'而不是aptitude来进行测试,我不确定那是否有效。