On 01/22/2019 04:17 AM, Bruce Dubbs wrote:
On 01/22/2019 03:36 AM, Pierre Labastie via blfs-dev wrote:
Maybe this should go to support, but this might also be an issue with tar or
git man-pages.
Tar version: 1.31
git version: 2.20.1

Running:
-----
sudo tar -xf ../git-manpages-2.20.1.tar.xz \
     -C /usr/share/man --no-same-owner --no-overwrite-dir
-----
just returns:
-----
Aborted
-----
the exit code is 134 (means SIGABRT was received)
and nothing is extracted.


Adding -v to the command, the output is just:
-----
./
Aborted
-----

Running:
-----
tar -tvf git-manpages-2.20.1.tar.xz
-----
shows that all paths begin with ./ and that all directories (including ./)
have mode drwxr-sr-x. So the set-group-id flag might be the culprit.

I've tried --no-same-permission, to no avail.

using --strip-components=1 allows the files to be extracted, but the
set-group-id flag is set on the extracted files.

If I run the command with these 2 switches: --strip-components=1
--no-same-permission and remove the -C /usr/share/man (that is extract to the
current directory), it works, and the extracted files have the right
permissions (drwxr-xr-x) and owner root:root. But if I run the same command
again (that is, now man[157] exists), the command aborts.

But with the /usr/share/man, the command still aborts!


The only way I've found to install the man pages (besides installing asciidoc and generating them) is to extract them as a user to the current directory,
chown them to root:root, and copy them to where they belong.

specifically:
install -dvm 755 man
tar -xf ../git-manpages-2.20.1.tar.xz -C man
chown -Rv root:root man
cp -Rv man /usr/share

This is an issue with tar-1.31.  I am using the current instructions without problem with tar-1.30.

http://lists.gnu.org/archive/html/bug-tar/2019-01/msg00015.html

Apparently a workaround is using the -U option until the next tar release.

No it still fails with -U.  Here is the fix:

diff --git a/src/extract.c b/src/extract.c
index 090b866..8276f8f 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -787,7 +787,7 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
        case UNLINK_FIRST_OLD_FILES:
          break;
        }
-      abort (); /* notreached */
+      FALLTHROUGH;

     case ENOENT:
       /* Attempt creating missing intermediate directories.  */

Alternatively:

sed -i 's/abort.*$/FALLTHROUGH;/' src/extract.c

Not tested.

  -- Bruce

--
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to