>> Delete Reply from No. 54570 article
No. RE: [ 질문] rpm에 관한 질문을 합니다. --엄청 길어서
중간 중간에 주석을 달았습니다...-

등록 2002-08-08 12:04:00 By localhost     조회 4
이름 KDE 짱    

		저두 허접이라..딱 부러지게 말씀드릴수는 없지만
제가 아는 한도 내에서 말씀드리도록 하지요..
 : 안녕하세요  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