buildconf 하면 spec을 생성하는데 이것이 도대체 멀 의미하는지 모르겠다;
configure 해서 세팅 저장한 그대로 spec을 만들어 준다고 굳게 믿고;;
소스 묶고 spec 문서 이동시키고 한번 시도.
rpmbuild -bb httpd.spec
오류: Failed build dependencies:
apr-devel is needed by sh-httpd-2.0.54-1
apr-util-devel is needed by sh-httpd-2.0.54-1
/usr/bin/apr-config is needed by sh-httpd-2.0.54-1
/usr/bin/apu-config is needed by sh-httpd-2.0.54-1
.. 대략 한번에 되면 니가 rpmbuild가 아니다;
머야. 저런게 있었어? apr.. 많이 들어본거 같은데 대체 걸리지 않는다. apache rpm의 줄임말인거냐;
일단 CentOS 3.4 씨디에는 없는걸 확인. RPM search에서 찾아서 설치. 그런데..;
rpm -Uvh apr-util-0.9.4-17.i386.rpm
경고: apr-util-0.9.4-17.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
오류: Failed dependencies:
libapr-0.so.0 is needed by apr-util-0.9.4-17
libdb-4.2.so is needed by apr-util-0.9.4-17
liblber-2.2.so.7 is needed by apr-util-0.9.4-17
libldap-2.2.so.7 is needed by apr-util-0.9.4-17
Suggested resolutions:
httpd-2.0.46-44.ent.centos.2.i386.rpm
..... 내참; 저거 깔면 되는거야?
rpm -Uvh httpd-2.0.46-44.ent.centos.2.i386.rpm
경고: httpd-2.0.46-44.ent.centos.2.i386.rpm: V3 DSA signature: NOKEY, key ID 025e513b
준비 중... ########################################### [100%]
1:httpd ########################################### [100%]
설치.
rpm -Uvh apr-util-0.9.4-17.i386.rpm
경고: apr-util-0.9.4-17.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
오류: Failed dependencies:
libapr-0.so.0 is needed by apr-util-0.9.4-17
libdb-4.2.so is needed by apr-util-0.9.4-17
liblber-2.2.so.7 is needed by apr-util-0.9.4-17
libldap-2.2.so.7 is needed by apr-util-0.9.4-17
Suggested resolutions:
httpd-2.0.46-44.ent.centos.2.i386.rpm
똑같잖아! 대체 Suggested resolution은 왜 뜨는거냐; 다시 RPM search..;;
Search results for libapr-0.so.0 :
CentOS ftp.centos.org/3.5/os/x86_64/RedHat/RPMS/httpd-2.0.46-46.ent.centos.1.x86_64.rpm
CentOS ftp.centos.org/3.5/os/i386/RedHat/RPMS/httpd-2.0.46-46.ent.centos.1.i386.rpm
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/apr-0.9.4-24.3.x86_64.rpm
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/apr-0.9.4-24.3.i386.rpm
CentOS ftp.centos.org/4.1/os/i386/CentOS/RPMS/apr-0.9.4-24.3.i386.rpm
..
httpd에도 있구만! 일단 apr을 설치;;
경고: apr-0.9.4-24.3.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
준비 중... ########################################### [100%]
1:apr ########################################### [100%]
됐다. 됐어. 다음 util과 util-devel을 설치.
rpm -Uvh apr-util-0.9.4-17.i386.rpm
경고: apr-util-0.9.4-17.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
오류: Failed dependencies:
libdb-4.2.so is needed by apr-util-0.9.4-17
liblber-2.2.so.7 is needed by apr-util-0.9.4-17
libldap-2.2.so.7 is needed by apr-util-0.9.4-17
한줄 줄었다. 만세!;; 다시 검색;;;;
Search results for libdb-4.2.so :
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/db4-4.2.52-7.1.x86_64.rpm
CentOS ftp.centos.org/4.1/os/i386/CentOS/RPMS/db4-4.2.52-7.1.i386.rpm
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/db4-4.2.52-7.1.i386.rpm
Search results for liblber-2.2.so.7 :
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/openldap-2.2.13-2.x86_64.rpm
CentOS ftp.centos.org/4.1/os/x86_64/CentOS/RPMS/openldap-2.2.13-2.i386.rpm
CentOS ftp.centos.org/4.1/os/i386/CentOS/RPMS/openldap-2.2.13-2.i386.rpm
libldap-2.2.so.7 요것도 ldap에 같이 있겠지; 자 설치.
아하하하;;
rpm -Uvh db4-4.2.52-7.1.i386.rpm
경고: db4-4.2.52-7.1.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821
오류: Failed dependencies:
libstdc++.so.6(GLIBCXX_3.4) is needed by db4-4.2.52-7.1
libdb-4.1.so is needed by (installed) python-2.2.3-6
libdb-4.1.so is needed by (installed) pam-0.75-62
libdb-4.1.so is needed by (installed) cyrus-sasl-2.1.15-10
libdb-4.1.so is needed by (installed) perl-5.8.0-88.9
libdb-4.1.so is needed by (installed) sendmail-8.12.11-4.RHEL3.1
libdb-4.1.so is needed by (installed) db4-utils-4.1.25-8
libdb-4.1.so is needed by (installed) oprofile-0.5.4-22
db4 = 4.1.25-8 is needed by (installed) db4-devel-4.1.25-8
db4 = 4.1.25-8 is needed by (installed) db4-utils-4.1.25-8
이렇게 많이 필요하다니; 그런데 libstdc++이 없다는건 이상하잖아?
rpm -qa | grep c++
libstdc++-ssa-devel-3.5ssa-0.20030801.48
libstdc++-3.2.3-49
libstdc++-ssa-3.5ssa-0.20030801.48
gcc-c++-3.2.3-49
gcc-c++-ssa-3.5ssa-0.20030801.48
오호라. 대략 깔린건 3.2.3이구 3.4 이상이 필요하다는거네? ... ... ... 안해;
rpm -qa | grep db4
db4-4.1.25-8
db4-devel-4.1.25-8
gpg-pubkey-db42a60e-37ea5438
db4-utils-4.1.25-8
참고로 db4도 깔려있었다;; 그럼 apr을 좀 더 낮은 버젼을 깔면? .. 없.다.;
RPM Search에서 CentOS로 검색되는 가장 낮은 버젼의 apr을 깔았던 것이였으니 흐흠;
일단 깔린 apr을 제거하고 Redhat 9.0에서 검색. 안나옴;
Redhat 8.0? 안나옴;
Redhat 7.0? 안나옴;;
화딱지나서 모두 선택 검색. 느므느므 많이 나옴;;;;
왜 이런거야! 대략 열심히 살펴보니 Redhat이나 CentOS 코어에서 릴리즈된 가장 낮은 apr 버젼이 0.9.14-17;
확 때려치워버릴까보다!
대략 찾아보니..
참고 사이트 : http://mail-archives.apache.org/mod_mbox/httpd-cvs/200412.mbox/<20041218095313.30717.qmail@minotaur.apache.org>
언넘이 패치한 내용이네; 누구야!
대충 여기까진 전혀 진행상황과 상관 없는 스토리.;
중요한건 RPM Search에서 CentOS쪽으로 검색된 apr-0.9.14-17는 설치가 안된다는 소리.
다른걸 깔아봐야하나; 일단 www.apache.org에서 apr로 검색. 이상한걸 발견;;
Set the environment variable APR_WORK to the full path of the apr source code
directory. Typically \httpd\srclib\apr but the APR project can be outside of the
httpd directory structure. Set APR_WORK=D:\apr-1.xx ...
.. httpd 소스 안에 apr이 있다는 말이냐!
당장 확인.
cd srclib/
ls
Makefile Makefile.in apr/ apr-util/ pcre/
.. 이걸 먼저 패키징 해서 인스톨하라구? 말을 하지 그랬어;
cd apr
./buildconf
cd ..
cd apr-util
./buildconf
cd ..
cp apr-util/apr /usr/src/redhat/SPECS/
cp apr-util/apr-util.spec /usr/src/redhat/SPECS/
cp -R apr apr-0.9.6
cp -R apr-util/ apr-util-0.9.6
tar czvf apr-0.9.6.tar.gz apr-0.9.6
tar czvf apr-util-0.9.6.tar.gz apr-util-0.9.6
mv *.tar.gz /usr/src/redhat/SOURCES/
cd /usr/src/redhat/SPECS
rpmbuild -bb apr.spec
여기까지 대략 성공.
apr-0.9.6-1.i386.rpm
apr-devel-0.9.6-1.i386.rpm
apr-debuginfo-0.9.6-1.i386.rpm
요렇게 3개가 만들어졌음.
rpm -Uvh ../RPMS/i386/apr-0.9.6-1.i386.rpm
rpm -Uvh ../RPMS/i386/apr-devel-0.9.6-1.i386.rpm
역시 대략 성공. 이거 너무 매끄럽잖아?
rpmbuild -bb apr-util.spec
ls ../RPMS/i386/apr-util-*
../RPMS/i386/apr-util-0.9.6-1.i386.rpm
../RPMS/i386/apr-util-debuginfo-0.9.6-1.i386.rpm
../RPMS/i386/apr-util-devel-0.9.6-1.i386.rpm
rpm -Uvh ../RPMS/i386/apr-util-0.9.6-1.i386.rpm
rpm -Uvh ../RPMS/i386/apr-util-devel-0.9.6-1.i386.rpm
또다시 대략 성공.
이제 httpd만 남은건가!
rpmbuild -bb httpd.spec
libtool: link: cannot find the library `modules/http/mod_http.la'
make[1]: *** [httpd] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/sh-httpd-2.0.54/prefork'
make: *** [all-recursive] Error 1
오류: /var/tmp/rpm-tmp.43576의 잘못된 종료 상황 (%build)
RPM 제작 오류:
/var/tmp/rpm-tmp.43576의 잘못된 종료 상황 (%build)
실패; 머 그래도 build까지는 갔으니 중간은 왔네.. 하고 위로를 해보려고 해도;; 쩝.
configure를 좀 수정해도 안됨. 대략 봤더니..
cd /usr/src/redhat/BUILD/sh-httpd-2.0.54/prefork/modules/http
ls
Makefile modules.mk
흠?
cd /usr/src/redhat/BUILD/sh-httpd-2.0.54/modules/http
ls
Makefile http_core.o http_request.lo mod_mime.dsp modules.mk
Makefile.in http_protocol.c http_request.o mod_mime.exp
config2.m4 http_protocol.lo mod_core.h mod_mime.la
http_core.c http_protocol.o mod_http.la mod_mime.lo
http_core.lo http_request.c mod_mime.c mod_mime.o
.. 어디간거냐; 최소한 소스는 있어야되잖아!
일단은 뻘짓거리 시작. BUILD 아래 디렉토리 컴파일. 성공. 별로 의미없음;
대충 make나 configure해서 나온 파일들이 pushd 한 디렉토리 아래 생성되는거 같은데..
(spec 문서 안에 mkdir $(mpm); pushd $(mpm) 이라는 명령이 있음)
대략 그래서 몇개 파일만 생성되어 있는거고..
그렇다면? 일단 make clean 해서 패키지를 다시 묶음. 다시 rpmbuild!
하지만 이번에는;
libtool: link: cannot find the library `server/mpm/worker/libworker.la'
make[1]: *** [httpd] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/sh-httpd-2.0.54/worker'
make: *** [all-recursive] Error 1
오류: /var/tmp/rpm-tmp.61045의 잘못된 종료 상황 (%build)
RPM 제작 오류:
/var/tmp/rpm-tmp.61045의 잘못된 종료 상황 (%build)
비슷하잖아; 일단 prefork는 패스했고, 저 오류를 수정해야 할 것인지 사용하지 않을 worker까지 수정해야 할 것인지.
어느쪽이 빠를까! 일단 수상한게; server/mpm/worker/ 요 디렉토리는 clean 이 안된거 같음;; 머냐;;;
다시 저 디렉토리까지 친히 올라가셔서 clean. 다시 패키지 묶고. 고고!
결과적으로 이 단계에서 시간이 많이 걸렸다. 대략 .spec 파일 내에 configure 항목들을 수정해주면서 생긴 오류.
그리고 상기 저 오류. 저건 server/mpm/worker/ 디렉토리 상에서 clean을 해줘야 하는데 server/mpm/ 에서 clean을 해줬다;
대략 삽질의 연속;;
일단은 성공.
자 .spec 파일 내의 configure 항목을 수정해주려면, 대략 오류를 두세번 수정할 각오를 하자!;
'작업로그(SE) > Linux (배포본)' 카테고리의 다른 글
Hacking Linux Kickstart 작업일지 #3 (2005년 7월 20일) (0) | 2007.06.28 |
---|---|
Hacking Linux Kickstart 작업일지 #2 (2005년 7월 18일) (0) | 2007.06.28 |
Kernel RPM 만들기 #3 (by make rpm) (2005년 7월 14일) (0) | 2007.06.28 |
Kernel RPM 만들기 #2 (by 'rpm' cmd) (2005년 7월 14일) (0) | 2007.06.28 |
Kernel RPM 만들기 #1 (by 'rpm' cmd) (2005년 7월 13일) (0) | 2007.06.28 |