Opened 11 years ago

Closed 11 years ago

#3978 closed bug (fixed)

Update install from CD fails at r30914

Reported by: haiqu Owned by: korli
Priority: normal Milestone: R1
Component: Applications/Installer Version: R1/pre-alpha1
Keywords: Cc:
Blocked By: Blocking: #3994
Has a Patch: no Platform: x86


I'm getting a message "File or directory already exists" and the install stops. A cp -f, or a check for the existence of directory before creating, is required somewhere.

Change History (8)

comment:1 by bonefish, 11 years ago

How about adding the build output?

comment:2 by haiqu, 11 years ago

Builds fine. Problem is in the change to the directory structure. The installer is trying to create symlinks to /boot/develop/headers/cpp and /boot/develop/lib/x86 where directories already exist. These directories need to be deleted or renamed first.

The new link to the compiler is also wrong, /boot/develop/tools/gnupro now points to /boot/develop/abi/current/tools/current (broken).

comment:3 by bonefish, 11 years ago

Component: Build SystemApplications/Installer
Owner: changed from bonefish to korli

comment:4 by stippi, 11 years ago

I will have a look if no-one beats me to it, but possibly not soon enough. The problem will be in the "CopyEngine" in the Installer source, where it should probably special case creating symlinks. Apparently, it needs to make sure nothing is there before creating them.

comment:5 by bonefish, 11 years ago

Blocking: 3994 added

(In #3994) First of all: Please refrain from setting the component to Build System unless it is a problem that happens while running configure or jam!

The offending directory is /system/add-ons/kernel/debugger/demangle. Apparently the installer doesn't remove anything which is in the way. Closing as dup of #3978.

comment:6 by bonefish, 11 years ago

Replying to stippi's comment in #3978. system/ is definitely safe to be removed completely, since the user has no business changing anything there. And save for the current ABI link I also don't see a reason why anything in develop/ would be changed either.

For everything else things are somewhat complicated. One can't really decide on a per-file basis. E.g. if an optional package was updated, we shouldn't leave over files from the older version just because they don't exit in the new one. This is really a package management issue and I don't suppose we can solve it before actually implementing a package management solution. For the time being the installer could generate an installation log/DB listing all files/directories/symlinks it has created (with checksums for file contents and attributes). On the next run it would first remove all untouched objects before starting the installation, maybe also offering a dialog where the user can choose which of the changed ones shall be overwritten, too.

comment:7 by haiqu, 11 years ago

An install system that takes control of changes to whole second-level directories isn't something I'd want to use. I agree (and current policy confirms) that changes to /boot/system by the user shouldn't be preserved. However /boot/develop has traditionally been where tools live and messing with that may have consequences. As an example I have BeIDE in there, also Free Pascal is now in /boot/develop/tools

A more fine-grained approach would be preferred.

comment:8 by stippi, 11 years ago

Resolution: fixed
Status: newclosed

Fixed in hrev31042. However, the Installer will still merge all existing folders besides /system. That will probably give you a mess in /develop. However, you need to know what you are doing anyways, for example installing the Be Developer Tools will overwrite the Haiku headers with BeOS versions. I've seen such a problem the other day. If you want to avoid problems like that, you should backup and then remove/rename existing folders where you need a clean installation as a start.

Note: See TracTickets for help on using tickets.