비지박스 압축 해제 도구가 심볼릭 링크를 덮어쓸 수 있나요?

비지박스 압축 해제 도구가 심볼릭 링크를 덮어쓸 수 있나요?

임베디드 장치에서 Busybox 1.32.0 패키지 도구를 사용하고 있습니다. Ubuntu 기반 x64 플랫폼에서 심볼릭 링크를 추출하려고 하면 거기에 패키지된 unzip 도구가 오류 메시지 없이 대상 디렉터리를 추출할 수 있습니다. 그러나 Busybox의 경우 이 작업을 시도하고 동일한 링크가 저장된 심볼릭 링크가 이미 있으면 다음 오류가 발생합니다.

unzip: '/usr/local/bin/sample.so.1' exists but is not a regular file

물론 실제로는 심볼릭 링크이므로 일반 파일이 아닙니다. 하지만 내가 하고 싶은 것은:

  • 이 파일을 무시하고 압축 해제 프로세스를 계속합니다.
  • 이 파일을 zip에 저장된 심볼릭 링크 파일로 바꿉니다.

이것을 달성할 수 있는 방법이 있나요?

답변1

아니요, 그럴 수 없습니다.

먼저 삭제해야 합니다.

이것이 실제 상황이다소스 코드:

                /* Does target file already exist? */
                {
                        int mode = get_lstat_mode(dst_fn);
                        if (mode == -1) {
                                /* ENOENT: does not exist */
                                goto do_open_and_extract;
                        }
                        if (overwrite == O_NEVER) {
                                goto skip_cmpsize;
                        }
                        if (!S_ISREG(mode)) {
 fishy:
                                bb_error_msg_and_die("'%s' exists but is not a %
s",
                                        printable_string(dst_fn),
                                        "regular file"
                                );
                        }
                        if (overwrite == O_ALWAYS) {
                                goto do_open_and_extract;
                        }

보시다시피 이 오류를 우회할 수 있는 방법은 없습니다.

관련 정보