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