FreeBSD 11.2-RELEASE-p14 빌드 서버를 헤드리스 가상 머신으로 실행하기 위해 가상 머신을 사용하고 있습니다. ssh -Y를 통해 터미널 세션에 들어갔습니다.
Mercurial 버전 5.1.1을 사용하고 있습니다.
hg 작업을 수행할 때 종종 다음 형식의 오류 메시지가 나타납니다.
중단됨: 권한 거부됨: '/stg/cgrandits/rel-unicorn/Release/unicorn/chroot/tsc/sources/devel/.hg/wcache/.manifestfulltextcache-14uv9W~'
저장소는 chroot 환경에 있습니다. 이것이 요인이 될 수 있습니까?
나중에 파일을 확인해 보니 파일이 전혀 존재하지 않습니다.
작업은 실제로 항상 성공했지만 이 동작으로 인해 버전 제어를 중심으로 구축한 일부 스크립트와 자동화가 중단되었습니다.
이 문제의 원인과 해결 방법을 아는 사람이 있습니까?
답변1
문제는 .hg/wcache 폴더가 루트 소유라는 것입니다.
그래서 돌이켜 보면 다음과 같은 것이 다소 분명해 보입니다.
오류 메시지에 "권한 거부됨"이 언급되면 해당 폴더의 권한을 확인하십시오. 이 경우 루트가 소유합니다. 내가 해결할 수 있어
[.hg]$ sudo chown cgrandits wcache
여기서 cgrandits는 내 사용자 ID입니다. 분명히 이 수정 사항을 수행하려면 sudo 기능이 필요하지만, 처음에 이 상태에 이르게 한 빌드 자동화 스크립트를 실행하려면 sudo 기능이 필요합니다.
chroot 환경을 설정하고 따라서 루트로 실행해야 하는 빌드 자동화 스크립트(완전히 이해하지 못한다는 것을 인정합니다)를 사용하고 있었기 때문에 이 문제가 발생했습니다. 때때로 이러한 빌드 자동화 스크립트는 Mercurial 명령을 실행합니다. 루트로 빌드 자동화 스크립트를 실행할 때 wcache 폴더가 존재하지 않으면 wcache 폴더가 생성되며,하지만 소유자는 루트입니다.. 그러나 wcache 폴더가 이미 존재하는 경우 hg 작업에서는 이를 사용합니다.있는 그대로. 따라서 이 문제가 발생하는지 여부는 명령줄에 직접 제공되는 hg 명령의 기록 순서와 특정 빌드 자동화 스크립트의 실행에 따라 달라집니다.