./configure
소프트웨어의 실행 파일을 실행하려고 하는데 (PuTTY를 사용하여 원격 Linux 시스템을 통해 이 작업을 수행하고 있습니다) 어느 시점에서 다음과 같이 표시됩니다.
ATTENTION! pax archive volume change required.
Ready for archive volume: 1
Input archive name or "." to quit pax.
Archive name >
그래서 소프트웨어 제조업체에 이 경고를 보냈더니 내 UID가 21자리보다 커서 pax 오류가 발생했다고 합니다. 실행하기 전에 이것을 시도해 볼 것을 권장합니다 ./configure
.
alias pax='/usr/bin/pax -O "S@'"
이것을 시도하면 무언가를 입력하라는 메시지가 표시되지만 무엇을 입력해야 할지 모르겠습니다.
온라인에서 찾아봤는데 이 문제에 대한 해결책을 찾을 수 없습니다. 팍스가 무슨 뜻인지 설명해주실 수 있나요? 일종의 아카이브인데 실제로는 내 파일 탐색기에 있는 폴더인가요 아니면 다른 폴더인가요?
또한 개발자가 나에게 보낸 "내 UID > 21자리"는 무엇을 의미하나요?
이 인원에 대해 뭔가를 입력해야 합니까? 아니면 로그아웃하면 어떻게 됩니까? 소프트웨어가 컴파일되지 않는 것 같습니다.
모든 제안/팁을 주시면 감사하겠습니다! 저는 실제로 소프트웨어 엔지니어링 경험이 없지만 배우고 있습니다!
답변1
이 줄의 의도는 분명히 스크립트가 command 를 호출하는 경우 pax
스크립트가 options 를 사용하여 호출한 것처럼 동작한다는 것입니다 -O
. 하지만 이 명령에는 몇 가지 오류가 있습니다. 올바른 명령은
alias pax='pax -O'
(복사해서 붙여넣으세요. 다시 입력하지 마세요.)
또한 쉘에 입력해도 도움이 되지 않습니다. 스크립트 에 넣는 경우에만 도움이 될 것입니다 configure
. (심지어 도움이 될 수도 있고 안 될 수도 있지만 개발자의 말이 옳고 도움이 되기를 바랍니다.) configure
스크립트가 다음 두 줄로 시작되도록 스크립트의 맨 위 줄 아래에 이를 삽입하세요.
#!/bin/sh
alias pax='pax -O'
(첫번째 줄은 #! /bin/sh
or #!/usr/bin/env sh
or #!/bin/ksh
or 변경 등 조금씩 다를 수 있습니다.)
-O
pax로 전달하면 실제로 문제가 해결되는지 모르겠습니다 . 이는 아카이브가 단일 볼륨이라고 가정하도록 pax에 지시하지만 이는 pax가 아카이브를 올바르게 구문 분석하는 데 도움이 되지 않으므로 데이터 손실이 발생할 수 있습니다.
이 pax
명령은 아카이브를 조작하는 유틸리티입니다. 아카이브 형식은 (기본적으로) tar 형식의 변형 중 하나입니다. pax가 아카이브에 쓸 때 파일이 2^21보다 큰 사용자 ID를 가진 사용자가 소유한 경우 확장 헤더가 생성됩니다. 소속된 그룹도 마찬가지다. 아마도 이 솔루션을 고안한 개발자는 스크립트 configure
가 pax를 호출하여 아카이브를 생성한 다음 이 아카이브를 읽기 위해 다시 호출하고 다시 읽을 때 확장 헤더와 관련된 오류가 있다고 분석했을 것입니다.
id
쉘 프롬프트에서 명령을 사용하여 사용자 및 그룹 ID를 확인할 수 있습니다.
답변2
이것이 UID 문제인 경우 다음을 사용하십시오.
sudo ./configure
루트의 UID는 0이고 숫자가 1개뿐이므로 문제가 해결됩니다.