chroot에 복사된 운영 체제에서 오류 생성

chroot에 복사된 운영 체제에서 오류 생성

저는 좀 흥미로운 상황에 처해 있습니다.

학교의 물리적 네트워크 컴퓨터에 대한 루트 액세스 권한을 얻기 위해 결국 fakeroot 및 fakechroot를 사용하여 chroot 환경을 만들었습니다. 내가 읽은 모든 내용에는 debootstrap(하위 디렉터리에 데비안을 설치하는 도구)에 루트 권한이 필요하다는 내용이 나와 있으므로, 나열된 방법을 사용했습니다.여기cp- 이를 위해서는 터미널 명령과 해당 종속성을 이 환경에 복사해야 합니다 .

나는 이 깔끔한 트릭을 여러 번 사용하여 거의 전체 운영 체제(데비안 + 여러 물리적 도구)를 하위 디렉터리, 즉 운영 체제인 것처럼 가장한 하위 디렉터리에 복사했습니다. 스도/신.

놀랍게도 많은 일이 작동합니다. 처음에는 그렇게 하지 않았지만 커피가 벌레를 죽였습니다.

불행히도 나는 약간 붙어 있습니다. Python(apt-get 등)을 사용할 때마다 다음을 얻습니다.

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]

이 문제에 대한 대부분의 수정 사항에는 실제로 PYTHONHOME 및 PYTHONPATH 변수 설정이 포함되지만 이로 인해 아무것도 수정되지는 않습니다. 또 다른 일반적인 해결책은 소스에서 Python을 빌드하는 것입니다. 저는 그것을 시도했지만 무엇이든 빌드하려고 하면 다음 메시지가 나타납니다.

configure: error: C compiler cannot create executables

이 오류에 대한 추가 config.log 파일을 찾을 수 있습니다.여기.

어떤 도움이라도 대단히 감사하겠습니다. 또한, 이 문제를 완전히 피하거나 루트 없이 debootstrap을 작동시키려는 제안이 있다면 그것도 좋을 것입니다.


업데이트 1:일을 조금 단순화하려고 시도 중입니다. 간단한 c 파일을 컴파일하려고 시도했는데 또 다른 일반적인 오류가 발생했습니다.

gcc: error trying to exec 'cc1': execvp: No such file or directory

whereis그것을 찾으려고 노력했지만 내 환경에는 cc1이 존재하지 않는 것으로 나타났습니다! 이제 계속 싸워야 하는데...

업데이트 2: gcc에서 cc1()로의 소프트 링크를 생성하여 ln -s /usr/bin/gcc /usr/bin/cc1화산에 가벼운 붕대를 감았습니다. 이제 예제 파일을 gcc할 때 '-quiet', '-imultiarch x86_64-linux-gnu'및 를 포함한 인식할 수 없는 명령줄 옵션이 있습니다 '-auxbase'.

업데이트 3: 컴파일러가 작동하게 해주세요! 다른 컴파일러(예: gcc-4.4, gcc-4.7, gcc-ar)를 사용해 위의 모든 문제를 해결했습니다. 마지막 게임에서는 다른 오류가 발생했습니다. 필요한 플러그인을 찾을 수 없었습니다. 이로 인해 모든 C 라이브러리가 기본 운영 체제에서 복사되는 것은 아니라는 사실을 깨닫게 되었습니다. 나는 이것을 해결하고 내 문제(많은 문제 중 하나)를 해결했습니다.

나의 새로운 문제는 GMP, MPFR 및 MPC가 (명백하게) 부족하다는 것입니다. 이는 gcc를 다시 빌드하는 데 필요합니다.

업데이트 4: 세 개의 라이브러리가 모두 컴파일됩니다. gcc 빌드 프로세스의 다음 문제는 crt1.o, crti.o, crtn.o, -lgcc, -lgcc_s 및 -lc를 찾을 수 없다는 것입니다. --enable-multilib구성 스크립트에 플래그를 설정하여 이 문제를 해결했습니다.

관련 정보