misc/108183: mergemaster doesn't install target if a file become a
directory
Riccardo Torrini
riccardo at torrini.org
Sun Jan 21 16:40:20 UTC 2007
>Number: 108183
>Category: misc
>Synopsis: mergemaster doesn't install target if a file become a directory
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Jan 21 16:40:19 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Riccardo Torrini
>Release: FreeBSD 6.2-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD castle.torrini.org 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #69: Tue Nov 21 20:12:39 CET 2006 root at castle.torrini.org:/usr/obj/usr/src/sys/SILOS i386
>Description:
When an object is used as a file in a version but become a directory
in any later version mergemaster neither remove file nor create the
new directory so the install target file under that directory fails
(and mergemaster say "installed successfully").
>How-To-Repeat:
First of all you need to have an "always upgraded installation :-)",
than check if you already have /etc/security as a file:
# ls -land /etc/security
-r-x------ 1 0 0 214 Jan 21 16:22 /etc/security
If this is your case start a mergemaster (i use -cvsi), at the end
check log, scrolling back console or xterm, you'd have this lines:
[...]
*** Temp ./etc/rc.d/sshd and installed are the same, deleting
*** There is no installed version of ./etc/security/audit_class
install: /etc/security exists but is not a directory
*** ./etc/security/audit_class installed successfully
*** There is no installed version of ./etc/security/audit_event
install: /etc/security exists but is not a directory
*** ./etc/security/audit_event installed successfully
*** There is no installed version of ./etc/security/audit_control
install: /etc/security exists but is not a directory
*** ./etc/security/audit_control installed successfully
*** There is no installed version of ./etc/security/audit_user
install: /etc/security exists but is not a directory
*** ./etc/security/audit_user installed successfully
*** There is no installed version of ./etc/security/audit_warn
install: /etc/security exists but is not a directory
*** ./etc/security/audit_warn installed successfully
*** Temp ./etc/ssh/ssh_config and installed are the same, deleting
[...]
You can even simulate this situation:
# rm -rf /etc/security
# touch /etc/security
and than run mergemaster as noted above.
>Fix:
Manually remove /etc/security than run mergemaster again, this time
it create directory and correctly install files under /etc/security/
# ls -land /etc/security
drwxr-xr-x 2 0 0 512 Jan 21 17:02 /etc/security
# ls -lan /etc/security
total 32
drwxr-xr-x 2 0 0 512 Jan 21 17:02 .
drwxr-xr-x 21 0 0 2560 Jan 21 17:02 ..
-r--r--r-- 1 0 0 689 Jan 21 17:02 audit_class
-rw------- 1 0 0 229 Jan 21 17:02 audit_control
-r--r--r-- 1 0 0 16831 Jan 21 17:02 audit_event
-rw------- 1 0 0 168 Jan 21 17:02 audit_user
-r-x------ 1 0 0 214 Jan 21 17:02 audit_warn
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list