rpm 패키지작성하려구 하는데요.. 궁금한것이 있어 또 질문올립

우선 지난번에 답글해주신 분께 감사드리며.. 아직 걸음마를
하고 있는 초보라 모르는게 넘 많아서요..
질문 내용은 스펙은 아래와 같습니다.. 그래서 rpm바이너리와 소스가
만들어 졌는데요.. 우선 컴파일 되어져 있는 파일들을 옮겨 다른
시스템에 심어 넣으면 되는데 다른 시스템에 rpm 바이너리를
옮기구요. 이걸 rpm으로 설치했더니 이게 어디에 copy되는지 알수
없더군요.. 그냥 디렉토리를 ftp로 옮기면 되겠지만.. rpm 패키지
함 제작하려니 많이 힘드네요.. 어떤것이 빠졌기에 안되는 걸까요..
rpm이 만들어지면 다른 레드헷리눅스에 rpm 설치하면 /var/www/work
디렉토리안에 실행 파일들을 넣어 주고 싶은데요.. 한번 더 부탁
드립니다. 바쁘신데 읽어 주셔서 감사합니다.
Summary An X Window System image editing or paint program.
Name hanhaeexplore
Version 1.1.1
Release 1
Copyright MIT
Group Applications/Multimedia
Source0 %{name}-%{version}.tar.gz
BuildRoot %{_tmppath}/%{name}
%description
HanHaeExplore
Install the HanHaeExplore package
%prep
%setup -q -n %{name}
%build
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
cp -rf /usr/src/redhat/BUILD/%{name} $RPM_BUILD_ROOT
%post
/sbin/ldconfig
%postun
/sbin/ldconfig
%clean
rm -rf $RPM_BUILD_ROOT
%files
%changelog
Re: rpm 패키지작성하려구 하는데요.. 궁금한것이 있어 또 질문
음...적수네 동네에 있는게네여.. )
- 적수네에서 대충 답했는데
- 질문 요지가 좀 틀리네여..(제가 잘못 이해??)
우선..간단히 가정을 좀 하구여..
저는 test-0.0.1.tar.bz2라는 file 이 있습니다.
test-0.0.1.tar.bz2 라는 file을 풀면
test---/firstfile
/secondfile
/thirdfile
/pics/firstimage.png
/pics/firstimage2.png
와 같은 형태로 풀립니다. 물론 firstfile, secondfiile, thirdfile은 binary 파일이구여.
이것들을 /var/www/work/에 넣구 싶습니다. ㅇ
어케할까여?
우선 간단한 spec는 다음 과 같습니다.
----------------------------------------------------
#
# 이것은 연습이예용.. )
#
Summary this is test file
# lang가 ko일때..
Summary(ko) 이건 연습이랑께여..
Nametest
Version 0.0.1
Release 1
Source test-0.0.1.tar.bz2
CopyrightGPL
Group system environment/www/executions
URL http//www.idont.know
#
# 이건 /usr/lib/rpm/macros에서 읽습니다. 일반적으로 /var/tmp
BuildRoot %{_tmppath}/%{name}
#만약 %define를 하시면 훨씬 도 편합니다.
#
# %define prefix /var/www/work
#
# 이렇게 하면 %{prefix}라고만 해도 /var/www/work로 인식합니다.
# 예를 들어
# mkdir -p $RPM_BUILD_ROOT/%{prefix} 라고 하는 거나
# mkdir -p $RPM_BUILD_ROOT/var/www/work이나 동일하다는 거져..
#
# 하지만 과도한 define는 자제하시는 편이.. )
%description
djlkdjlfkdjf
%description(ko)
어쩌구 저쩌구
%prep
%setup -n %{name}
%build
#
#compile할게 없쩌여..
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/var/www/work
#
# 실행 파일 install
for files in firstfile secondfile thirdfile
do
install -m 755 $files $RPM_BUILD_ROOT/var/www/work
#또는 cp -f $files $RPM_BUILD_ROOT/var/www/work
done
#
# pics map install
#
for files in pics/*
do
if [ ! -d $RPM_BUILD_ROOT/var/www/work/pics ] ; then
mkdir -p $RPM_BUILD_ROOT/var/www/work/pics
fi
install -m 644 $files $RPM_BUILD_ROOT/var/www/work/pics
#
# 또는 cp -f $files $RPM_BUILD_ROOT/var/www/work/pics
done
##설치 끝~~
%clean
rm -f $RPM_BUILD_ROOT
%post
#이는 apache관련된거니까..
# 이걸 설치한 후에 apache를 다시 시작해주면 좋겠당..
service httpd restart > /dev/null
%postun
#흠.. 이 package를 제거한 후에 다시..
service httpd restart >/dev/null
%files
%deattr( -, root,root)
/var/www/work/*
##
## 또는
# /var/www/work/firstfile
# /var/www/work/secondfile
# /var/www/work/third/file
# /var/www/work/pics/*.png
%changlog
-
대충 이렇습니다. 그럼 도움이 되셨낄
--세벌식.. 잼있땅..헤~~
Re^2: rpm 패키지작성하려구 하는데요.. 궁금한것이 있어 또 질
답변 감사합니다. 꾸벅.. ^^
그런데요.. rpm 설치할때 rpm -ivh ...rpm 하는데요
install에 선언안하고 따로 인스톨 디렉토리를 입력 받을수 있는 방법은
없을까요?? 왜냐면요 사용자의 httpd.conf 파일에 DocumenetRoot
디렉토리를 받아 와서 그곳에 설치해야하는데 만일 사용자가 입력하거나
아님 spec 파일에서 직접 그 시스템에 DocumentRoot를 직접 가져다 쓰는
환경 변수가 있는지 궁금하네요.. 제가 질문하는게 좀 어설퍼서 --;
암튼 읽어줘서 감사합니다..
Re^3: rpm 패키지작성하려구 하는데요.. 궁금한것이 있어 또 질
사용자의 Docu..root에 따라 모두 변경하고자
하신다면 relocation을 이용하실수도 있는데..
저 같으면 scripts를 이용하겠습니다...
예를 들어 %build section에.
#
# for finding Documentationroot dir
#
TESTDIR=$(grep DocumentRoot /etc/httpd/conf/httpd.conf)
DEST_DIR=${TEST##*"}
DEST_DIR=${DEST_DIR%%"*}
#DEST_DIR=/var/www/html 와 값이 됩니다.
#
# 아니면 awk를 쓰셔도 되구여..
# DEST_DIR=$(echo $TESTDIR| awk -f'["]' 'print $2')
#
# 흠..awk는 좀 쓴지되서리.. 맞는지 몰겠네여
#
#
# installing..
mkdir -p $RPM_BUILD_ROOT/$DEST_DIR
cp -rf * $RPM_BUILD_ROOT/$DEST_DIR/
%clean
..
..
그럼 도움이 되셨길..
댓글 달기