bug-cpio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Regression: 2.14 does not create directories of symlinks


From: Kris Karas (Bug Reporting)
Subject: Regression: 2.14 does not create directories of symlinks
Date: Wed, 17 May 2023 04:09:47 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0

Hi cpio miantainers,

I encountered a regression in cpio 2.14: the --make-directories option is ignored if the file being created is a symbolic link.  cpio 2.13 and prior are not affected.

Example using cpio 2.14:
	# rpm2cpio < ../source/RPMS/libreoffice7.4-freedesktop-menus-7.4.7-2.noarch.rpm |\
	  cpio -i -u -m -d --no-absolute-filenames --quiet
	cpio: ./usr/bin/libreoffice7.4: Cannot open: No such file or directory
	cpio: ./usr/share/applications/libreoffice7.4-base.desktop: Cannot open: No such file or directory
	# ls ./usr/bin
	/bin/ls: cannot access './usr/bin': No such file or directory
	# 
Same command after downgrading to cpio 2.13:
	# rpm2cpio < ../source/RPMS/libreoffice7.4-freedesktop-menus-7.4.7-2.noarch.rpm |\
	  cpio -i -u -m -d --no-absolute-filenames --quiet
	cpio: Removing leading `/' from hard link targets
	# ls -l ./usr/bin
	total 4
	lrwxrwxrwx 1 root root 34 May 17 03:44 libreoffice7.4 -> opt/libreoffice7.4/program/soffice
	#
As an aside, there's another bug - or rather a misfeature - displayed here, and that is that --no-absolute-filenames is not only removing the leading "/" from pathnames of files extracted, but also removes the leading "/" from the target of symbolic links.  This makes building an OS package very frustrating (as you need to remake all the symlinks by hand).

That is, if we are extracting under /tmp/package_build/ we get /tmp/package_build/usr/bin/libreoffice7.4 and so on, which when installed under the root "/", we get this:

	# libreoffice7.4
	-bash: libreoffice7.4: command not found
	# readlink /usr/bin/libreoffice7.4
	opt/libreoffice7.4/program/soffice
	# realpath -m /usr/bin/libreoffice7.4
	/usr/bin/opt/libreoffice7.4/program/soffice
	#
So, to fix this, one would want another option, similar to rsync's option --munge-symlinks, that defaults off but could be turned on to remove the leading "/" on the link target.
Best regards,
Kris

reply via email to

[Prev in Thread] Current Thread [Next in Thread]