음.. 제가 보기에는 우선
/usr/lib/rpm/ 밑에 있는 macros를 한번 봐 보시기 바랍니다.
우선 간단히 답을 하자면 rpm은
먼저 /usr/src/*/BUILD에서 compile를 하며,
이 BUILD에서 install를 하게 되면
/var/tmp/program_name-version-root/ 밑으로 들어갑니다.
그런후 저 directory를 최상위 root로 인식한 후 directory와
file를 묶습니다.
그럼 저 $BUILD_ROOT_DIR은 spec에서 지정한
BuildRoot에서 정한 곳이 됩니다.
님께서 적으신 spec를 보구 하나 하나 말씀해 드리져..
: Summary: An linux Window System program.
>>rpm의 간단한 설명입니다.
: Name: hanhaeexplore
>>rpm 파일의 이름입니다.
>> 이 이름은 기본적으로 rpm package의 이름이 됩니다.
: Version:1.1.1
>>rpm 의 버전을 말합니다.
: Release:1
>>rpm 파있의 release를 말합니다.
여기까지 있는 name, version, release는
패키지의 이름-버전-release 가 됩니다.ㅈ
: Copyright: HANHAE
: Group: Applications/System
: Source0: %{name}-%{version}.tar.gz
>> /usr/lib/rpm/macros에 언급되어
>>있는 source 디렉토리에서 찾을 소스 file입니다.
>>여기의 %name-%version은 위에서 적은 내용을 따릅니다.
: BuildRoot:%{_tmppath}/%{name}
>> /usr/lib/rpm/acros에 언급되어 있는 %{_tmppath}를 읽어들여
>> rpm 설치시 임시적으로 binary를 설치할 dirctory입니다.
>>물론 이 directory는 package가 완료되면
>>%clean 매크로에서 알아서 지워줍니다.
:
: %description
: HanHaeExplore
:
: Install the HanHaeExplore package
>>>rpm package의 좀더 세부적인 설명..
:
>>>
>>> 여기까지가 rpm -qi packae했을때 나오는 여러 정보들을
>>> 가지고 있습니다. :)
: %prep
: %setup -q -n %{name}
>>소스 파일을 푸는데 푸는 directory이름을 name로만 되어 있군여.
>>그리고 -q 옵선은 압축을 푸는데 보여주지 마라.. 라는 의미입니다.
: %build
>>음..compile과정이 없군여..
>>(꼭 kdlp에 있는 질문과 비슷한 느낌.. :))
: %install
: rm -rf $RPM_BUILD_ROOT
>> 혹시 모르니까 기존의 설치한 임시 binary_target 디렉토리를
>>삭제합니다.
>>실제로 지우는 directory는 /var/tmp/이름 입니다.
: mkdir -p $RPM_BUILD_ROOT
: cp -rf /usr/src/redhat/BUILD/%{name} $RPM_BUILD_ROOT
>>임시로 설치할 directory를 생성한 후 /var/tmp/name/디렉토리에
>> 복사를 하네여..
>>흠.. 이건..
>> mdir -p $RPM_BUILD_ROOT/%{name}
>> cp -rf * %RPM_BUILD_ROOT/%{name}
>> 이렇게 해도 됩니다.
:
: %post
: /sbin/ldconfig
>>이 rpm package를 설치한 후 행해야할 동작
>>대부분여기에 scripts가 많이 들어갑니다.
>>예를 들어 이 package가 system에서 ㅣ이용할 library를
>>가지고 있다면..
>>이렇게도 작성 될수 있습니다.
%post
thislibrary=$(grep thislib_dir /etc/ld.so.conf)
if [ ! $(testlibrary) ] ; then
echo "/usr/lib/this_library_path" >>/etc/ld.so.conf
fi
/sbin/ldconfig
이렇게 하시면 /etc/ld.so.conf에 이 library path가 들어가서
따로 LD_LIBRARY_PATH 를 설정하시지 않아도 ㅇ됩니다.
: %postun
: /sbin/ldconfig
>>이 package를 지운 후에 해야할 사항..
이 외에도 %pre, %preun이 더 있습니다.
%pre는 이 패키지를 설치하기전에 행해야할 사항
%preun은 이 패키지른 지우기 전에 행해야할 사항 입니다.
:
: %clean
: rm -rf $RPM_BUILD_ROOT
>>오~ /var/tmp/%{name} 디렉토리를 지우는군여..
>>만약 rm -rf$RPM_BUILD_ROOT를 하시지 않으면
>>/var/tmp/%{name}가 남아 있습니다.
: %files
>>드뎌 file list :)
:
:
: %changelog
>> 내가 변경한 사항..:)
흠.. 생각나는 대로 바로 적어서..말이 좀 안 될수 있는데..
대충 이해하시면서...... 읽어주세여..
:)
마지막으로 중요한 사항..
/usr/lib/rpm/macros를 봐 보세여...:)
그럼.. 도움이 되셨길..
:
: 뭐 대충 이런건데요..프로그램은 웹에서 돌아가는 리
:
: 눅스 서버관리 툴인데요.. rpm -ba ...spec 하면
:
: 소스 rpm과 바이너리 rpm이 만들어 지거든요..
:
: 그리고 이 스펙에서는 컴파일 과정은 없습니다.
:
: 이미 컴파일 되어진 바이너리 파일을 압축해서
:
: rpm을 만드는거니까요.. 그런데 rpm 설치시 어디에
:
: 파일이 copy되는지 그런걸 알수가 없습니다.
:
: 제가 잘 몰라서 spec에 지정을 안해준걸수도 있는데
:
: 지정해주려면 어떻게 해야할까요? 바쁘신데 읽어주
:
: 셔서 감사합니다..