>> Edit article
이름
제목
패스워드
저두 허접이라..딱 부러지게 말씀드릴수는 없지만 제가 아는 한도 내에서 말씀드리도록 하지요.. : 안녕하세요 rpm에 대해서 공부좀 하다가 : : 몇가지 의문이 나서 이렇게 질문을 합니다. : : rpm에 관해서 여러가지 참고 문헌을 다 뒤적이다가 : : 몇가지 의문이 생깁니다. : : 다름이 아닌 : : 제가 rpm패키지를 만들어서 그것을 다시 한번 깔아 봤는데 : : 궁금한것은 다름이 아닌 : : spec파일을 만들때 : : 옵션을 이런식으로 주었습니다. : : %build : ./configure : make : %install : make install : 여기 까지는 제가 만든 rpm을 깔았을 경우 : 설치 하는데 문제가 없었습니다. : 이런식으로 주시면 문제가 생깁니다. 가장 기본적인 rpm은 어떤 프로그램을설치할때와 동일한 디렉토리 형식을 가져오는 것인데 저런 식으로 하면 실제 프로그램이 설치되는 디렉토리에 설치가 됩니다. 예를 들어서 어떤 프로그램을 설치할 경우에 ./configure ; make; make install 를 준다면.. prefix가 /usr/local/로 잡히는게 보통입니다. 저 내용도 그런식으로 들어갈 것이며 rpm의 경우에는 DESTDIR를 줘야합니다. 예를 들자면.. make install하실때 make DESTDIR=$RPM_BUILD_ROOT install 과 같이 줘야 합니다. : 그런데 : : 여기서 궁금한점이 있습니다. : : 다름이 아닌 : : 일단 타르볼을 rpm이란것은 풀어서 : : 그것을 설치 하는 모든정보가 한꺼번에 다 들어 있는것이란 의미로 생각을 : : 하고 있습니다. : : spec파일에서 : : 이런 경로를 지정했습니다. : : %file : %defattr(-,root,root) : /usr/local/bin/indent : 예제 타르볼은 indent로 했습니다. : : %doc /usr/local/info/ident.info : %doc %attr(0444,root,root)/usr/local/man/man1/indent.1 : %doc COPYING AUTHORS README NEWS : : 여기 가장 궁금한것이 있습니다. : : 이렇게 : ./configure : 하고 : : make install : 하면 잘 설치가 됩니다. : : 하지만 /usr/src/redhat/BUILD : : 에 일단 indent 의 타르볼이 전부다 풀렸습니다. : : 그 다음 설치를 했는데 : : 제가 궁금한것은 : : % clean : 이란것을 주어서 : : 제가 깔아놓은 것을 : : 다 삭제하고 설치할수 있다는 것이 있다고 합니다. : : 제가 만든 spec은 파일의 최종 위치가 빌드 루트로 잡혀있어서 : : usr/src/redhat/BUILD : 에 타르볼을 풀었다는 것입니까 ? 우선.. 글쓰신 분께서는 rpm의 directory에 대해서 조금 알고 계셔야할것 같군요 먼저...redhat밑에 있는것에 대해서 말씀드리자면.. SOURCES : 프로그램의 source파일과 patch파일이들어갑니다. BUILD: 이 디렉토리에는 어떤 파일을 풀고 patch를 가하며 make까지 할대 이용합니다. 즉, 다시 말씀드리면 이 build라는 diretory에는 글쓰신 분께서 어떤 프로그램을 make하는 단계까지 이용하는 것입니다. SPEC:일반적으로 spec파일을 넣어야하지만 spec파일은 어디에 있어도 상관 없습니다. RPMS : rpm파일이 들어가는 장소입니다. 그럼..설치느 어디다가 하냐..... 설정해준 곳에 합니다 :) 즉, spec에서 지정한 BuildRoot에서 설치를 하고, 설치한 장소의 rpm파일들을 찾아서 입력합니다. :) 일반적인 BuildRoot는 /var/tmp밑에 programname-build-root로 들어갑니다. 즉, 저기가 /가 되는거지요.. (좀..말 주변이 없어서 ..힘들게 말씀드리는듯.. :( ) : : 그럼 : : %clean 을 사용해서 : : rm -rf$RMP_BUILD_ROOT : : 이런식으로 spec파일에 넣어준다면 : : /usr/src/redhat/BUILD : 에 : : 타르볼을 풀었다가도 다 설치가 된다면 : : 그 풀렸던 타르볼을 다 지워준다는 것입니까 ? 아닙니다.. rpm -rf $RPM_BUILD_ROOT는 rpm이 설치한 directory를 지운다는 얘기입니다. 즉, BUILD에 있는 내용을 지우는게 아니라 make install했던 /var/tmp/programname-..-root를 지운다는 얘기입니다. : : 혹시 맞는다면 : : 제가 아직 spec 에 : : %clean 을 기술하지 않았으므로 : : BUILD에 풀렸던 타르볼 디렉토리를 지우면 : 제가 설치한 프로그램은 작동이 되지 않습니까 ? 그렇지않습니다. BUILD에 풀어서 make했던 부분은 단순히 make했던 부분입니다. : : 제 생각으론 압축을 풀어놓고 나서 : : 설치가 된다면 컴파일을 한다는 경우는 : : 그것을 사용 가능하게 만든것이므로 : : RPM에서 처음 풀었던 BUILD에 남아있는 : : 디렉토리는 제거 해도 되지 않을까 궁금합니다. 물론 rpm이 생성되었다면 필요치 않습니다 : : 다시 요점을 간추려 볼께요 : : rpm 을 사용한다는것은 : : 타르볼을 일단 어떤경로에 풀어서 그것을 컴파일 한다는것이라고 : : 생각합니다. 그 경로가 BUILD입니다. : : 그 경우 설치가 다 되고 난뒤에 설치는 spec에서 지정해준 BuildRoot디렉토리입니다. : : 그 설치시 필요한 모든 파일( 즉 다시 말해서 : : 타르볼을 푼 모든 파일은 ) 한개의 디렉토리에 : : 들어있을텐데 그것을 설치가 끝난뒤에도 그대로 놔두어야 하는것인지 ? 없어도 됩니다. :) : : 아님 그 설치한뒤에 그 디렉토리를 삭제 해도 되는지 궁금합니다. : : 윈도우 같은 경우는 설치를 한경우에 폴더를 잡아서 : : 설치를 하고 그 뒤에 그 설치 폴더를 그대로 놓아두고 프로그램을 : : 사용하지만 : : 그것과 같은 의미인지 무척 궁금합니다. : : 그럼 답변좀 부탁드리겠습니다. 간단히 말씀드리자면...rpm은 BUILD에 풀어서 spec에서지정한 BuildRoot에 설치를 한 후 (저 BuildRoot가 가상적인 최상위 디렉토리가 되는거지요.. 즉 저 directory하에 있는 usr/local/bin/indent가 rpm을 설치하게 되면 /usr/local/bin/indent가 되는 거지요..chroot에 대해서 좀 아시면 됩니다.) 이용하게 됩니다. : : 죄송합니다. : : 한가지만 더 여쭤 보겠습니다. : : 다름이 아닌 일단 빌드란것을 하기 위해서 : : 소스를 전부다 풀었다는 의미인데 : : 그것의 소스를 풀었던 디렉토리 에서 컴파일성공한뒤 : : 설치가 되고 난다면 : : 그 소스를 풀었던 디렉토리 즉 다시 말해 usr/src/redhat/BUILD : 에 풀린 소스의 디렉토리는 제거 해도 되지 않는지가 제가 궁금해 하는 : : 부분입니다. 없어도 됩니다.. rpm이 가지고 있는 것은 binary이지 source가 아니거든요.. : : 저 같은 경우는 자꾸 두서 없이 질문을 해서 죄송합니다만 : : spec에 %clean 헤더를 넣지 않아서 : : 그 소스가 풀린 디렉토리가 설치가 완전히 되고 난뒤도 남아있는것 : : 같은 생각이 되는데 : : 제가 생각한것이 올바른 생각인지 ? %clean에 좀 조작을 하면 지울수도 있지만 나중에 문제(컴파일 오류..등) 생길것을 대비해서 남겨놓고 rpm이 올바로 만들어진후...지우셔도 됩니다. 만약에 %clean에서 그 compile한 소스도 지우시고 싶다면 %clean rm -rf $RPM_BUILD_DIR이라 하시면 됩니다 일반적으로는 rm -rf $RPM_BUILD_ROOT 를 줍니다(/var/tmp/..-root를 지우는 거지요..) : : 아님 그 소스를 풀었던 디렉토리도 그대로 남겨두어야 하는지 궁금합니다. : : 만약 설치가 완전히 되었다면 그 디렉토리를 제거 해도 괜찮은건지를 : : 알고 싶습니다. : : 그리고 한가지만 더 여쭤보겠습니다. : : 정말 죄송합니다. : : indent란 프로그램이 c 언어에서 사용된다는것 같은데 : : 제가 예제로 사용은 하지만 어떤 프로그램인지 궁금합니다. : : 혹시 아시다면 리플 조금 달아주세요 죄송합니다. : : 답변좀 부탁드리겠습니다. 이 프로그램은 c 코드에서 탭간격이든가 공백 같은것을 잘 정렬해주는 프로그램입니다... man를 참고하세요.. 에궁... 워낙 허접이라... 잘 전달이 되었는지 궁금하군요.... 혹시 질문생기시면 더 말씀해주세요.. :) : : -- : 공부하는 학생입니다. -- 나는야~~ CVS 광~~
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved