O/S : CenotOS 7.x
기본 yum으로 설치된 httpd 버전은 현재 해당 버전의 취약점이 있어
최신 버전으로 설치를 진행하려고 하는데 rpm 파일은 최신 버전인 2.4.53 버전이 존재하지 않는다
rpmbuild 를 이용하여 최신 버전으로 설치하는 방법을 알아보자
1. 현재 서버의 httpd 버전
1 2 |
[root@localhost ~]# httpd -v Server version: Apache/2.4.6 (Unix) |
2. apache 소스파일 다운로드
1 |
[root@localhost ~]# wget https://dlcdn.apache.org/httpd/httpd-2.4.53.tar.bz2 --no-check-certificate |
3.rpmbuild -ts 명령어를 이용하여 src 파일을 생성
1 2 |
[root@localhost ~]# rpmbuild -ts httpd-2.4.53.tar.bz2 작성: /root/rpmbuild/SRPMS/httpd-2.4.53-1.src.rpm |
4. rpmbuild -tb 명령어로 컴파일을 시도하고 의존성을 같이 체크를 진행한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost ~]# rpmbuild -ts httpd-2.4.53.tar.bz2 작성: /root/rpmbuild/SRPMS/httpd-2.4.53-1.src.rpm [root@localhost ~]# rpmbuild -tb httpd-2.4.53.tar.bz2 오류: Failed build dependencies: zlib-devel is needed by httpd-2.4.53-1.x86_64 libselinux-devel is needed by httpd-2.4.53-1.x86_64 libuuid-devel is needed by httpd-2.4.53-1.x86_64 apr-devel >= 1.4.0 is needed by httpd-2.4.53-1.x86_64 apr-util-devel >= 1.4.0 is needed by httpd-2.4.53-1.x86_64 pcre-devel >= 5.0 is needed by httpd-2.4.53-1.x86_64 openldap-devel is needed by httpd-2.4.53-1.x86_64 lua-devel is needed by httpd-2.4.53-1.x86_64 libxml2-devel is needed by httpd-2.4.53-1.x86_64 openssl-devel is needed by httpd-2.4.53-1.x86_64 |
5. 의존성에 해당 패키지가 필요하다고 오류 내역을 확인할수 있다 yum-builddep 명령어로 해당 패키지를 설치해야 하는데 해당 명령어는 yum-utils 패키지를 설치 후 진행
1 |
[root@localhost ~]# yum -y install yum-utils |
httpd-2.4.53에 필요한 라이브러리 설치 진행
1 |
[root@localhost ~]# yum-builddep /root/rpmbuild/SRPMS/httpd-2.4.53-1.src.rpm |
6.다시 rpmbuild -bs 명령어로 설치 진행 (의존성도 같이 체크)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
root@localhost ~]# rpmbuild -ts httpd-2.4.53.tar.bz2 Processing files: httpd-2.4.53-1.x86_64 오류: 파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so 실행 중(%doc): /bin/sh -e /var/tmp/rpm-tmp.MSVnO6 + umask 022 + cd /root/rpmbuild/BUILD + cd httpd-2.4.53 + DOCDIR=/root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + export DOCDIR + /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + cp -pr ABOUT_APACHE /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + cp -pr README /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + cp -pr CHANGES /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + cp -pr LICENSE /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + cp -pr NOTICE /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/share/doc/httpd-2.4.53 + exit 0 RPM 제작 오류: 파일을 찾을 수 없음: /root/rpmbuild/BUILDROOT/httpd-2.4.53-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so |
파일을 찾을 수 없음 해당 부분은 httpd 필요한 apr , apr-util 버전이 현 서버의 버전이 너무 낮기 때문에 발생함
7. apr, apr-util 다운로드 진행
1 2 3 |
[root@localhost ~]# wget https://archive.apache.org/dist/apr/apr-1.7.0.tar.bz2 [root@localhost ~]# wget https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.bz2 |
8. 동일하게 rpmbuild 작업을 진행
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost ~]# rpmbuild -ts apr-1.7.0.tar.bz2 [root@localhost ~]# rpmbuild -tb apr-1.7.0.tar.bz2 [root@localhost ~]# rpmbuild -ts apr-util-1.6.1.tar.bz2 [root@localhost ~]# rpmbuild -tb apr-util-1.6.1.tar.bz2 오류: Failed build dependencies: db4-devel is needed by apr-util-1.6.1-1.x86_64 postgresql-devel is needed by apr-util-1.6.1-1.x86_64 mysql-devel is needed by apr-util-1.6.1-1.x86_64 sqlite-devel >= 3.0.0 is needed by apr-util-1.6.1-1.x86_64 unixODBC-devel is needed by apr-util-1.6.1-1.x86_64 nss-devel is needed by apr-util-1.6.1-1.x86_64 |
9. apr-util 설치지 패키지 의존성 에러가 발생된다면 동일하게 yum-builddep 명령어로 의존성패키지 설치 진행
1 |
[root@localhost ~]# yum-builddep /root/rpmbuild/SRPMS/apr-util-1.6.1-1.src.rpm |
10. 다시 apr-util 설치 진행
1 |
[root@localhost ~]# rpmbuild -tb apr-util-1.6.1.tar.bz2 |
11. 다 완료가 되었으면 rpm 파일이 해당 경로에 생성된것을 확인 할 수 있다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[root@localhost ~]# ls -l /root/rpmbuild/RPMS/x86_64/ -rw-r--r-- 1 root root 110240 5월 17 10:32 apr-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 477476 5월 17 10:32 apr-debuginfo-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 881188 5월 17 10:32 apr-devel-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 87880 5월 17 10:36 apr-util-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 8296 5월 17 10:36 apr-util-dbm-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 498360 5월 17 10:36 apr-util-debuginfo-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 507976 5월 17 10:36 apr-util-devel-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 10072 5월 17 10:36 apr-util-ldap-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 15748 5월 17 10:36 apr-util-mysql-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 13784 5월 17 10:36 apr-util-nss-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 22384 5월 17 10:36 apr-util-odbc-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 12020 5월 17 10:36 apr-util-openssl-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 16068 5월 17 10:36 apr-util-pgsql-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 12928 5월 17 10:36 apr-util-sqlite-1.6.1-1.x86_64.rpm |
12. apr , apr-util rpm 설치 진행 / yum localinstall 명령어로 설치 진행
1 |
[root@localhost ~]# yum localinstall /root/rpmbuild/RPMS/x86_64/apr-*.rpm |
13. 위에서 httpd rpm 생성시 에러가 발생되었는데 apr 설치했으므로 다시 진행
1 |
[root@localhost ~]# rpmbuild -tb httpd-2.4.53.tar.bz2 |
14. 설치가 다 완료되었으면 rpm 파일 생성된것을 확인
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@localhost ~]# ls -l /root/rpmbuild/RPMS/x86_64/ -rw-r--r-- 1 root root 110240 5월 17 10:32 apr-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 477476 5월 17 10:32 apr-debuginfo-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 881188 5월 17 10:32 apr-devel-1.7.0-1.x86_64.rpm -rw-r--r-- 1 root root 87880 5월 17 10:36 apr-util-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 8296 5월 17 10:36 apr-util-dbm-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 498360 5월 17 10:36 apr-util-debuginfo-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 507976 5월 17 10:36 apr-util-devel-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 10072 5월 17 10:36 apr-util-ldap-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 15748 5월 17 10:36 apr-util-mysql-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 13784 5월 17 10:36 apr-util-nss-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 22384 5월 17 10:36 apr-util-odbc-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 12020 5월 17 10:36 apr-util-openssl-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 16068 5월 17 10:36 apr-util-pgsql-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 12928 5월 17 10:36 apr-util-sqlite-1.6.1-1.x86_64.rpm -rw-r--r-- 1 root root 1422064 5월 17 10:40 httpd-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 3943728 5월 17 10:40 httpd-debuginfo-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 210108 5월 17 10:40 httpd-devel-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 4402060 5월 17 10:40 httpd-manual-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 80156 5월 17 10:40 httpd-tools-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 48296 5월 17 10:40 mod_authnz_ldap-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 48536 5월 17 10:40 mod_lua-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 25196 5월 17 10:40 mod_proxy_html-2.4.53-1.x86_64.rpm -rw-r--r-- 1 root root 99036 5월 17 10:40 mod_ssl-2.4.53-1.x86_64.rpm |
15. 동일하게 yum localinstall 명령어로 설치 진행
1 |
[root@localhost ~]# yum localinstall /root/rpmbuild/RPMS/x86_64/httpd-*.rpm mod_* |
16. httpd 버전 확인
1 2 3 |
[root@localhost ~]# httpd -v Server version: Apache/2.4.53 (Unix) Server built: May 17 2022 10:38:57 |
17. 웹서버 재시작
1 |
[root@localhost ~]# systemctl restart httpd |