>> Read Reply from No. 54584 article  
RE: [질문] kde짱님 리플좀 부탁드립니다.

등록 2002-08-08 15:34:00     조회 6
이름 KDE 짱    

		다시 안녕하세요.. :)
 흠.. 여기에 일일히 적기엔..그리고 글쓰신 분의 말씀이 너무 길어서..
다 읽기 힘들군요..헤~~ 그리고.. 너무.. 죄송할 필요는 없느데...^^;;;;
  어찌됐든... 천천히 다시 적도록 하지요...:)
(허접이지만... ^_^)
 우선...님께서 보셔야할 파일이 한가지 있습니다..
 /usr/lib/rpm/macro를 좀 보시면 원하시는 해결책을 어느정도
아실 수 있을 겁니다.
 우선.. 간단한 예제를 보여드리도록 하지요..(강좌 적는 기분으로..흠흠.) :)
 예 중간 중간에 ## 표시로 주석을 달도록 하겠습니다.
 ## 먼저 가정할거..
# examples라는 파일을 /usr에 설치를 해서
# bin파일등과 library가 /usr/bin/examples에 설치가 되고
# libexamples.so.0 과 libexamples.so가 /usr/lib에 설치가 되고
# share파일들과 man은 /usr/share/에 들어간다고 하지요..
#
# 대부분의 program이 설치되는 것은 prefix를 주면
# lib나 다른것들이 모두 prefix밑에 위치합니다..아시라 생각하고..
#  파일 목록이 저것들이라..가정합니다... :)
 -------------------------------------------------
#define section
%define name examples
%define version 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1
 ## 위의 define내용을 굳이 적을 필요가 없습니다만...
## version과 같이 너무 길어서 번번히 적기 귀찮으시면
## define section에 적어도 됩니다.
 Name:   %{name}
Version:%{version}
Source : %{name}-%{version}.tar.bz2
BuildRoot:/tmp/var/%{name}-root
 ##헤더 나머지 생략
%prep
%setup
 %build
 #
# 여기서 부터 보도록 하지요.. 솔직히 rpm의 일련의 행동은
# 스크립트 파일과 같은 형식으로 동작합니다.
# 단지 그 위치가 어디이지. 어떤 파일들을 가지고 놀 것인지에 대한
# 내용이 좀 틀려질 뿐이죠..
# 자.. 위에서 보면..%prep는 단지 준비 동작이고. :) %setup은
# 프로그램을 compile하기 위한 준비 동작입니다. 즉, configure나
# make를 하기전에 자동으로 patch를 하거나 간단한 동작을 시행하는
# 것이지요..
# setup에서는 SOURCES에 있는 파일을 /usr/src/redhat
# (간단히 redhat이라 할께요)/BUILD에 풀게 됩니다.
# 즉, redhat/BUILD/examples-0.0.0.0.0....으로 풀지요..
# 만약 tar xcfv filename해서 파일명-version으로 나오지 않는다면
# setup에  -n 옵션을 줘야합니다.
# 어쨌든 SOURCES에 있는 tar볼을 BUILD에 풀도록 합니다.
#
# 그런 후 build section에는 일반적으로 rpm이 아닌 다른 program을
# source 컴파일할대와 동일합니다. 즉 prefix를 어디로 설정할 것인지..
# 어떻게 설치할 것인지 등등을.. 결정하게 됩니다.
#일반적으로 다음과 같이 합니다.
./configure --prefix=%{_prefix}
#
# _prefix는 /usr를 가르키는 것으로 /usr/lib/rpm/macros에 설정되어
# 있습니다.
#
#
# 여기까지 하면 rpm은 redhat/BUILD/example-0.0.0.0.0.0.0.0.0..밑에
# 들어가서 configure --prefix=/usr 를 실행합니다.
# 자 이제 configure를 끝냈으니 make 를 해야겠죠??
make
#
# 물론 build섹셕에서는  redhat/BUILD/example-0.0.0.0.0.0.0.0.0에서
# 모든 행동을 취하며 현재 directory 가 redhat/BUILD/example-0.0.0.0.0.0.0 입니다.
# 그래서 그 상위 즉, redhat/BUILD/로 가고 싶으면 단순히 cd ..이라고만
# 해도 됩니다. :) --(지금 후회하는중..왜 버전을 저리 길게 했을까..흑흑)
 #
# 이제 make까지 했으니까...install을 해야겠지요..
# 여기서 님께서 골치 아픈내용인것 같은데..
# 잠시 위로 올라가서 우리가 rpm header에 어떤것을 설정했나 보세요.
# 그렇습니다. 바로 BuildRoot입니다. 이녀석을 설정했지요??
# 저것을 설정하게 된다면 rpm은 파일 목록을 찾을때 저 directory에
# 있는 것만 찾게 됩니다. :)
 %install
#
# compile를 끝냈으니 install을 해야지요?
# install이 섹션까지는 현재 directory가 redhat/BUILD/example-0.0.0.0....
#이라는거..기억하시고 있지요?
#
make DESTDIR=$RPM_BUILD_ROOT install
#
# 그렇습니다..바로 저녀석..RPM_BUILD_ROOT..rpm은 저 directory를
# 가상 / 로 잡고 설치를 하게 됩니다. 물론..다른 프로그램들(예로 KDE)
# 도 ./configure --prefix=/opt ; make ; make DESTDIR=/usr/local install
# 이라 한다면 설치할때 /usr/local/opt/bin 뭐 이렇게 설치를 합니다
#
# 기본적으로 설치시 이용하고자 하는 file들은 다 저 $RPM_BUILD_ROOT에
# 있어야 합니다.
#
%clean
rm -rf $RPM_BUILD_ROOT
#
#
# 이 녀석을 보시면 RPM_BUILD_ROOT를 삭제하라고 했습니다..
# 음..RPM_BUILD_ROOT라...어떤 녀석이냐면 앞에서 우리가 설정했던
# 바로 그 부분입니다. /var/tmp/examples-0.0.0.0.0.0.0.0.0. 이 녀석이지요..
 음..뭐 나머진 대충 아시는 것 같고...간단히 다시 rpm이 돌아다니는
경로를 추적하자면..
 우선 spec파일이 있는 곳에서 출발을 합니다.
그런 후 SOURCES에 spec파일에서 지정한 file, patch등이 있는지
확인을합니다. 물론 없으면. 종료하지요..
우선 있다고 하면 rpm은 source파일을 먼저 redhat/BUILD에 풀게 됩니다
만약 파일이 풀릴때 examples-0.0 이라는 디렉토리를 가지고 푼다면
rpm 은 redhat/BUILD/examples-0.0 이라는 디렉토리로 이동합니다.
그럼 현재 rpm이 인식하는 directory는 어딜까요? 물론 redhat/BUILD/examples-0.0입니다 :)
그런 후 ./configure --prefix=/usr 를 실행하고 make 까지 합니다.
 그럼 BUILD에 있는 directory는 어떤 녀석이냐면 source를 단순히 compile하는 부분이지
직접 우리가 rpm을 이용하기 위한 부분이 아닙니다.
 그런후 make install DESTDIR=$RPM_BUILD_ROOT 를 실행하게 되겠지요.. :)
 자 compile가 다 끝나고 설치까지 제대로 되어 있다면..
%clean에서 rpm은 $RPM_BUILD_ROOT를 지우게 됩니다. :)
($RPM_BUILD_ROOT는 redhat/BUILD가 아니라 BuildRoot에서 정의한 부분 즉,
앞의 예를 들자면 /var/tmp/exampels-0.0.0...입니다)
 다 끝났다고 rpm이 제대로 묶어 졌다면.. BUILD/에 있는거 지워도 되고
안지워도 상관은 없습니다만.. 하드 공간만 차지하는 녀석이 되겠지요..
 에궁... 생각나는 대로 막 적어어서 도움이 될지...
필요할것 같은 부분까지 모두 적어서..좀...횡설 수설 할것 같군요..
난 와 이카는지..쩝..
   : 아 kde님께서 남겨주신 리플을
: 보고 난뒤 궁금증이
: 어느정도는 풀렸습니다.
:
: 음.. rpm을 만들기 위해서
:
: 일단 SORUCE라는
:
: 디렉토리에 소스
:
: 타르볼을 넣어두고
:
: 제 생각으론 source 란
: 디렉토리는 말 그대로 소스를
:
: 넣어두는 곳이라고 생각이 되는데 ?
:
: 의미가 맞는지 궁금합니다.
:
: 그리고 난뒤 spec 파일에서
:
: 기술하는것은 어느정도 이해가
:
:
: 가는데 제가 의도했던 질문은
:
: rpm이 성공적으로 만들어졌다면
:
: 그것을 만들기 위한
:
: 일종의 도구 디렉토리가
:
: build와  source 그리고
:
: spec인지 궁금합니다.
:
: 의미를 이해해 본 결과
:
: 아마도 최종 산물인
:
: rpm을 만들기 위해서
:
: 사용되는 디렉토리가
:
: source 그리고
: build spec이 있어야하고
:
: spec 파일을
:
: rpm -ba  로 rpm을 생성하는
: 데 아무런 오류가 나타나지
:
: 않는다면
:
: 예를 들어 제가
:
: 소스 디렉토리에
:
: indent 타르볼을
:
: 넣어서
:
: indent rpm을 생성했습니다.
:
: 그뒤 rpm을 설치한뒤
:
: make install
:
: 까지 오류 없이 성공적으로
:
: 생성했다면
:
: build 디렉토리에
:
: indent란 이름으로
:
: rpm을 생성시 사용되었던
:
: 디렉토리가 있는것은
:
: 삭제해도 되는지가 궁금합니다.
:
: 그리고 제가 이해를 못했는지도
:
: 모르겠지만
:
: buildRoot란것을
:
: /var/tmp밑에 있는
: programename -build -root
:
: 로 들어간다고
:
: 설명을 하셧는데
:
: 제가 잘못 이해를 했는지
:
: 저는 buildroot란 것을
:
: rpm 생성시
:
: build 란 디렉토리로
:
: 생각을 했습니다.
:
: 그래서  %clean을 해더를
: 주면
: rpm이 생성되고 난뒤
:
: 예를 들어
:
: 전 source에 indent
:
: 타르볼을 넣고
:
: indent rpm을 생성했는데
:
: 이것이 생성되고 난뒤
:
: 그 build디렉토리가 없어지는
:
: 것으로 생각을 했는데
:
: 제가 잘못 생각한듯 합니다.
:
: kde님께서 설명해주신것을
:
: 읽어본 결과
:
: build 디렉토리는 rpm생성하고
:
: 그리고 make  하는것 까지 사용
:
: 된다고 하셨는데
:
: %clean 해더를 준다는 의미는
:
: var/tmp/promgramname
: 에서 make install 했던
:
: 것을 지운다는 의미가 맞는지
:
: 궁금합니다.
:
: 그리고  make install
:
: 한뒤 build디렉토리의
:
: 내용은 지워도 되는지
:
: 궁금합니다.
:
: 자세하게 설명해주셨는데
:
: 이해가 나쁜지
:
: 자꾸만
:
: 이렇게 여쭤봐서
:
: 죄송합니다.
:
: 그럼 리플좀 부탁드리겠습니다.
:
: 정말 죄송합니다.
:
: kde님
:
: 부탁드릴께요
:
: ps) 열정이 앞서서
:
: howto 메뉴얼과
:
: 그리고 공부방 그리고
:
: tip 리플을 모두다
:
: 프린트 해서
:
: 한 100장 넘게 다 읽어봤는데
:
: 무식하게 몇일 혼자 하다가
:
: 이렇게 여쭤보는게 좋을듯해서
:
: 여쭤봤습니다.
:
: 죄송합니다.
:
: 어떻게든지 알고 싶은 생각에
:
: 시간을 빼았는게 아닌지
:
: 너무 죄송합니다.
:
: 그럼 부탁좀 드리겠습니다.
:
: --
: 공부하는 학생입니다. .--나는야~~ CVS  광~~
이름
암호


>> 관련글
54584 [질문] kde짱님 리플좀 부탁드립니다.  헤네시  2002.08.08  ....
  답장 RE: [질문] kde짱님 리플좀 부탁드립니다.  KDE 짱  2002.08.08  ....
Register [ localhost 목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 0.85 초 ] 작업시간: [ 0.27 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1791275462
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.