SNU-ARC / 2024_spring_sysprog_Lab2

6 stars 3 forks source link

gentree.sh 실행방법 문의드립니다 #27

Open jykim811 opened 5 months ago

jykim811 commented 5 months ago

스샷 위와 같은 방법으로 실행시켰을때 failed to create file이 계속 뜨는데 어떻게 해결할 수 있을지 질문드립니다

Jong25 commented 5 months ago

작업하는 디렉토리에 w 권한이 없어서 파일들을 만들지 못하는 것 같습니다. 해결 방법으로는 other에게 write 권한을 주거나, 소유권을 sysprog으로 변경하는 것이 있습니다. chmod와 chown의 man page를 확인해보시기 바랍니다. 추가로, 해당 디렉토리가 공유 폴더에 있다면 공유 폴더 바깥으로 옮겨 작업하기를 권장드립니다.


It seems to have problems with write permission on the working directory. You can either give write permission to others, or change ownership to sysprog. Please check the man page of chmod and chown. Plus, if your directory is in the shared folder, we recommend moving it outside of it.

jykim811 commented 5 months ago

스샷3

말씀해주신대로 공유폴더 바깥으로 옮겨서 작업을 하니 chmod 명령어가 잘 실행되었습니다. 그러나 계속 gentree를 하는데에서는 위와 같이 fail이 뜹니다. 현재 2024_spring_sysprog_Lab2 디렉토리에서 실행하는 중이며 이 디렉토리는 스크린샷과 같이 777로 permission이 있습니다. 또한 혹시 몰라서 그 안에 tools 디렉토리와 gentree.sh의 permission도 다 777로 설정해두었으나 위와 같이 fail이 뜹니다. 혹시 어느 단위에서 permission을 수정해주어야 적절할까요?

Jong25 commented 5 months ago

우선 해당 directory에서 mkdir가 정상적으로 작동하는지 확인해보시기 바랍니다. 권한의 문제라면 sudo 계정으로 전환(sudo su)하여 실행한 뒤 생성된 directory의 소유권과 권한을 다시 변경하는 방법이 있습니다.

jykim811 commented 5 months ago

mkdir은 정상적으로 작동합니다

Jong25 commented 5 months ago

현재 학생분의 환경을 정확히 알기 어려운 상황인 것 같습니다. 혹시 내일 랩시간에 참석이 가능하시면 같이 확인할 수 있도록 하겠습니다.

jykim811 commented 5 months ago

넵 내일 여쭈어 보겠습니다

ZzeongB commented 5 months ago

안녕하세요, 저도 같은 문제를 겪었었는데요, demo/ 혹은 test3/ 디렉토리가 이미 만들어진 상태에서 다시 돌리려고 하면 같은 문제가 발생하더라고요.

rm -rf demo/rm -rf test3/로 해당 디렉토리를 삭제한 후 다시 gentree.sh를 실행하면 잘 생성되는 것을 확인했습니다!

yunjayh commented 5 months ago

TL;DR

랩시간에 확인해본 결과 Windows system과 Linux system에서의 개행문자 차이에서 일어난 이슈였습니다.


발생 상황

Windows에서 notepad 등으로 파일을 열어봤을 때 발생하는 것으로 추정됩니다.

해당 상황인지 확인 요령

만약 linux repo에서 git status 커맨드 입력 후 본인이 수정하지 않은 파일들 (gentree.sh, demo.tree 등)이 modified 상태에 있다면 의심해보실 수 있습니다. git diff tools/gentree.sh 등의 커맨드로 실제 어떤 부분이 원본 코드와 다른지 확인해 보실 수 있고, 단순히 각 코드라인 마지막에 ^M 과 같이 개행문자가 다르게 들어가 있다면 이와 같은 상황일 것입니다.

해결 방법

git checkout <commit_hash> tools/gentree.sh 의 커맨드로 기존 linux 시스템에 맞는 코드로 원복할 수 있습니다. (<commit_hash>에는 아래 사진에서 81c0ed2으로 보이는 부분의 hash를 때에 따라 입력하시면 됩니다.)

image