5

I'm trying to run a ./configure executable for a software (I'm doing it through a remote Linux machine using PuTTY) and at some point it says:

ATTENTION! pax archive volume change required.
Ready for archive volume: 1
Input archive name or "." to quit pax.
Archive name >

So, I sent this warning to the makers of the software and they said the pax error is a result of my UID being greater than 21 bits. They suggested trying this prior to running ./configure:

alias pax='/usr/bin/pax -O "S@'"

When I tried this it prompted me to enter something, of which I don't know what to enter.

I've looked online and couldn't find anything to resolve this. Can explain what's the meaning of pax? It's some kind of archive, but is it literally a folder on my file explorer or something?

Also the meaning of what I was sent by the developers "my UID is > 21 bits"?

Do I need to enter something for this pax or what will happen if I just quit? Seems like the software may not compile.

Any/all advice/tips would be greatly appreciated! I virtually have no software engineering experience, but learning!

roaima
  • 107,089
  • 14
  • 139
  • 261
user422335
  • 51
  • 1
  • 2
    In your alias, you're mixed up the quotes, you start with a single quote and end with a double quote. Assuming everything else is correct, you'd want: `alias pax='/usr/bin/pax -O "S@"'` (ends with a double quote followed by a single quote). I suspect the `S` should also be a `$` (`$@`). – Andy Dalton Jul 12 '20 at 22:47
  • 1
    "_it prompted me to enter something_" - what? – roaima Jul 12 '20 at 22:58
  • 4
    Related: [stackoverflow.com/questions/28450303](https://stackoverflow.com/questions/28450303), regarding the "UID > 21 bits" read the comment under the question and the [linked page](http://tinyurl.com/z8elmc6). – Freddy Jul 12 '20 at 23:03
  • 2
    What is the output of `id -u`? – Mikel Jul 12 '20 at 23:06
  • when i enter: -bash-4.1$ % alias pax='/usr/bin/pax -O "S@"' it says: -bash: fg: %: no such job but when I enter: -bash-4.1$ alias pax='/usr/bin/pax -O "S@"' it goes on to the next linke and no msg is displayed then when I enter: -bash-4.1$ ./configure it starts configuring the software and then the same pax error arises. can you please explain or any suggestions where i could learn about what all this means? alias? pax? archive? "$@"? /usr/bin/pax? -O? – user422335 Jul 12 '20 at 23:31
  • This definitely is a bug in the software that is spread under the name "automake". A test that calls `tar` with options that are definitely inapropriate to `tar` is broken. A test that is not prepared to deal with the idiosyncratic behavior of mirbsd pax should be fixed. A test that in 2020 tries to enforce an archive format from 1988 should be revised. People who expect to only see GNU software on a computer cannot think outside the box. BTW: this test may succeed on SUSE Linux since this distro installs `star` as `pax` and thus does now run into that problem. – schily Jul 13 '20 at 05:10

2 Answers2

2

The intent of this line is clearly that where the script calls the pax command, it behaves as though the script called it with the -O option. But there are several mistakes in this command. The correct command would be

alias pax='pax -O'

(Copy-paste, don't retype.)

Furthermore it won't help if you type it at your shell. It can only help if you put it in the configure script (and even there it may or may not help, but hopefully the developers were right that it would help). Insert it juts below the top line of the configure script, so that the script starts with the two lines

#!/bin/sh
alias pax='pax -O'

(The first line may be slightly different, e.g. #! /bin/sh or #!/usr/bin/env sh or #!/bin/ksh or variations.)

I don't know whether passing -O to pax will actually solve your problem. It tells pax to assume that the archive is a single volume, but that may result in data loss, because it won't help pax to parse the archive correctly.

The pax command is a utility to manipulate archives. Its archive format is (by default) one of the variants of the tar format. When pax writes an archive, if a file is owned by a user whose user id is greater than 2^21, it generates an extended header. The same applies to the owning group. Presumably the developer who suggested this workaround has analyzed that the configure script calls pax to generate an archive, then calls it again to read this archive, and when it reads it back, there is a bug related to extended headers.

You can check your user and group id with the command id at a shell prompt.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
  • thank you so much for the information, putting this line below seemed to not signal the pax warning with the LOWERCASE o alias pax='pax -o' ...with the uppercase O, like you put in your comment it gave the same pax warning. – user422335 Jul 12 '20 at 23:44
  • @user422335 A lowercase o here wouldn't make any sense: after `-o`, pax expects the a list of keyword options. I don't know what this does, because it depends on how pax is called, but it's unlikely to do anything useful. – Gilles 'SO- stop being evil' Jul 13 '20 at 00:04
  • This is a problem that results from a broken `configure` implementation and the idiosyncratic behavior of the mirbsd pax implementation. Your proposal does nor fix the underlying problem, it just hides it. The `ustar` archive format has been defined in 1986 and finally accepted in 1988, but UNIX decided to support UIDs > 65536 with SVr4 and this happened starting from 1988. – schily Jul 13 '20 at 05:28
  • @schily if this is really only an issue with my UID, would I be able to just change my UID easily? i dont 100% understand your comment but I will do some research on it. Do you suggest any solutions for this particular case? – user422335 Jul 13 '20 at 13:38
  • @user422335 Only the administrator can change UID. Such a large UID is somewhat uncommon, so you're probably on a system or network with a lot of users and the UID is out of your control. – Gilles 'SO- stop being evil' Jul 13 '20 at 13:54
  • @user422335 the problem is in an autoconf test that has been written by someone who misses the needed skills. This test likes to create create an `ustar` type archive but this archive type is so old that it does not support more than 21 bits in UIDs. The test on the other side has been written in a way that it triggers a problem in the local `pax` implementation on your system that creates an empty archive in your case. Another problem in your case is that your local `pax` does not behave correctly if it detects a logical EOF in the input archive. Instead of exiting, it asks for another medium – schily Jul 13 '20 at 15:14
-2

If this is a UID issue then using

sudo ./configure

should fix the problem since the UID of root is 0 and only 1 bit.

Justin Liu
  • 101
  • 2