개인공부&프로젝트

OSError: [Errno 28] No space left on device 해결

백악기작은펭귄 2024. 12. 5.
반응형

OSError: [Errno 28] No space left on device 해결

MMPose를 설치하던 중 다음과 같은 에러를 맞닥트렸다.

OSError: [Errno 28] No space left on device

 

구글링을 해보니, 이 에러는 패키지 설치 중 임시 파일을 저장할 충분한 공간이 없을 때 발생한다고 한다. Python의 패키지 관리자인 pip은 패키지를 설치할 때 종종 다운로드한 패키지 파일을 압축 해제하거나 컴파일할 때 사용되는 임시 파일을 생성하는데, 이를 저장하기 위한 공간이 부족한 경우에 이 에러가 발생한다.

 

기본적으로 pip은 이 임시 파일들을 /tmp 디렉토리에 저장하는데, /tmp 디렉토리는 제한된 저장 공간을 가질 수 있기 때문에, 이를 더 넉넉한 공간을 제공하는 /var/tmp로 변경하면 에러가 해결될 수 있다는 정보를 찾았다.

 

이러한 내용에 따라, 먼저 TMPDIR 환경 변수를 /var/tmp로 변경해 주었다. 변경 방법은 다음과 같다.

export TMPDIR='/var/tmp'

 

하지만 여전히 같은 에러가 발생했다. 단순히 TMPDIR만 바꾸는 것으로는 문제가 해결되지 않았고, 또 다른 원인을 찾아보아야 했다.

pip 캐시 문제 해결

추가적으로 구글링을 해본 결과, pip이 패키지를 설치할 때 다운로드한 파일을 캐시로 저장하는데, 이 캐시가 시간이 지남에 따라 점점 쌓여서 디스크 공간을 차지하게 될 수 있다는 사실을 알게 되었다.

 

pip의 캐시는 기본적으로 ~/.cache/pip 디렉토리에 저장되며, 이 캐시가 가득 차면 설치 과정에서 추가적인 임시 파일을 생성할 수 없게 되어 공간 부족 에러가 발생할 수 있다.

 

이 문제를 해결하기 위해, `pip cache purge` 명령어를 사용해 pip 캐시를 완전히 삭제해 보았다. 이 명령어는 pip이 사용하는 캐시 파일들을 삭제하고, 다음에 패키지를 설치할 때 캐시를 새로 생성하도록 강제하는 방법이다.

pip cache purge

 

이 명령어를 실행한 후, 다시 MMPose를 설치해 보았고, 이번에는 에러 없이 정상적으로 설치가 진행되었다.

 

결론

OSError: [Errno 28] No space left on device 에러pip이 사용하는 임시 파일과 캐시 파일이 저장될 공간이 부족할 때 발생할 수 있다.

 

이 문제는 TMPDIR 환경 변수를 /tmp에서 더 넉넉한 공간을 제공하는 /var/tmp로 변경하면 일부 경우 해결될 수 있다.


만약 이 방법으로 해결되지 않는다면, pip의 캐시가 원인일 수 있으므로 pip cache purge 명령어를 통해 캐시를 삭제하고 다시 설치를 시도해 보자.

반응형

댓글