I've booted 6.1-RELEASE installation CD and installed this release using 'Custom' mode. I've created 128M-sized root and 256M-sized /usr, 4G /usr/local and 15G /home and selected only base distribution (and kernels). I've booted the new installation from hard drive, created directory /home/ports and made symlink /usr/ports -> /home/ports. Then I mounted CD and ran sysinstall to install Ports Collection. I hoped it will populate /home/ports. However, sysinstall removed /usr/ports symlink and started to fill /usr/ports directory, quickly ran out of vnodes and failed. The same attempt for src distribution was successful, sysinstall has not removed /usr/src -> /home/src symlink and populated /home/src directory. Fix: Unknown. How-To-Repeat: Make empty /home/ports directory, make /usr/ports symlink pointing to /home/ports, run sysinstall and try to install Ports Collection from FreeBSD 6.1-RELEASE CD (disk1). Sysinstall removes /usr/ports symlink, recreates it as directory and unrolls ports to /usr partition.
Responsible Changed From-To: freebsd-bugs->freebsd-qa Over to maintainer(s).
State Changed From-To: open->analyzed The problem here is that the tarballs for source are packaged relative to /usr/src/... while the ports tarball is relative to /usr/... and unpackages ports/... Thus the src tarballs never touch src/, but ports will create, and overwrite any existing, ports/. Fixing is easy, from a code viewpoint. Change the DTE_TARBALL for ports to /usr/ports and let the release building process build ports relative to /usr/ports/. However, doing this will create a ports tarball that is no longer usable by older sysinstall and some form of backwards compatability magic is needed.
Responsible Changed From-To: freebsd-bugs->freebsd-sysinstall Over to maintainer(s)
To add another dimension to the issue, cpio is used when extracting the dist tarballs, and -du is specified on the cpio command line: -d (i and p modes) Create directories as necessary. -u (i and p modes) Unconditionally overwrite existing files. Ordi- narily, an older file will not overwrite a newer file on disk. So it creates the directories if they don't already exist. See media.c for more details. Cheers, -Garrett
sysinstall has been replaced by bsdinstall in FreeBSD 9.x. Closing.