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..;;
경고: 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
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 이상이 필요하다는거네? ... ... ... 안해;
참고로 db4도 깔려있었다;; 그럼 apr을 좀 더 낮은 버젼을 깔면? .. 없.다.; RPM Search에서 CentOS로 검색되는 가장 낮은 버젼의 apr을 깔았던 것이였으니 흐흠; 일단 깔린 apr을 제거하고 Redhat 9.0에서 검색. 안나옴; Redhat 8.0? 안나옴; Redhat 7.0? 안나옴;; 화딱지나서 모두 선택 검색. 느므느므 많이 나옴;;;; 왜 이런거야! 대략 열심히 살펴보니 Redhat이나 CentOS 코어에서 릴리즈된 가장 낮은 apr 버젼이 0.9.14-17; 확 때려치워버릴까보다!
언넘이 패치한 내용이네; 누구야! 대충 여기까진 전혀 진행상황과 상관 없는 스토리.; 중요한건 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
.. 어디간거냐; 최소한 소스는 있어야되잖아! 일단은 뻘짓거리 시작. 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 항목을 수정해주려면, 대략 오류를 두세번 수정할 각오를 하자!;