When Wubi is installed from CD, ubiquity crashes at the end of the installation
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Wubi |
Invalid
|
Low
|
Unassigned | ||
apt (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
ubiquity (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Because of bug #207137 Wubi now copies the CD content as opposed to extract an ISO. This was implemented via bug #230716 which allows casper to boot off a directory. That directory is bindmounted to /cdrom in the initrd. But that makes ubiquity/install.py > install_extras > do_install > cache.commit fail, since apt/python-apt does not work correctly when /cdrom is bind-mounted.
That in turn can be tracked down to fetcher.Run() in apt/cache.py
cache.py > Cache.commit > Cache._
Where
fetcher = apt_pkg.
When installing Wubi from an ISO (no bindmount) or when setting up /cdrom via a symlink in casper, the installation proceeds correctly.
Changed in wubi: | |
assignee: | nobody → ago |
importance: | Undecided → High |
status: | New → In Progress |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
tags: | added: ubiquity-1.8.12 |
tags: | added: hardy |
Changed in wubi: | |
assignee: | Agostino Russo (ago) → nobody |
<cjwatson> // IsMounted - Returns true if the mount point is mounted /*{{{*/ ------- ------- ------- ------- ------- ------- ------- ------- ------ paste.ubuntu. com/23063/
<cjwatson> // -------
<cjwatson> /* This is a simple algorithm that should always work, we stat the mount point
<cjwatson> and the '..' file in the mount point and see if they are on the same device.
<cjwatson> By definition if they are the same then it is not mounted. This should
<cjwatson> account for symlinked mount points as well. */
<cjwatson> if /cdrom is bind-mounted from the same device then that algorithm would fail
<cjwatson> though I don't see why a symlink to something on the same device would be any better
<cjwatson> so, while this looks like a plausible guess, it could do with some verification
<cjwatson> oh, hmm now, apt is running in the live CD root filesystem not in /target
<cjwatson> maybe it just needs to be configured to use /target/cdrom
<cjwatson> you might try something like http://
<cjwatson> I'm not entirely sure that will work but it makes a twisted kind of sense
Paste from cjwatson at Thu, 26 Jun 2008 07:03:31 +0100
=== modified file 'scripts/ install. py'
apt_conf_ nmc.close( ) Config. Set("APT: :CDROM: :NoMount" , "true") Config. Set("Acquire: :cdrom: :mount" , "/target/cdrom") Config. Set("Acquire: :cdrom: :/target/ cdrom/: :Mount" , "true") Config. Set("Acquire: :cdrom: :/target/ cdrom/: :UMount" , "true")
--- scripts/install.py 2008-04-23 21:25:05 +0000
+++ scripts/install.py 2008-06-26 11:07:52 +0000
@@ -954,6 +954,13 @@
};
}""")
+ # Configure python-apt separately. Leaving it at /cdrom normally
+ # works, but can lead to problems if /cdrom is bind-mounted from a
+ # directory on the same device.
+ apt_pkg.
+ apt_pkg.
+ apt_pkg.
+ apt_pkg.
dbfilter = apt_setup. AptSetup( None, self.db) run_command( auto_process= True)
ret = dbfilter.