출처 : http://hbesthee.tistory.com/584
freebsd-update로 간단하고 손쉽게 패치들을 적용할 수 있게 되었습니다.
커널을 업그레이들 하려면, 다음과 같은 순서로 작업을 합니다.
- 모든 패키지가 최신으로 업그레이드 되어 있고, 잘 설치되는지 확인 : portupgrade -af
- 커널의 메이저 및 마이너 업그레이드를 위하여 패치 파일 다운로드 : freebsd-update -r 7.2-RELEASE upgrade
- 패치 적용 : freebsd-update install
- 재부팅 한 이후에 다시 남은 패치 적용 : freebsd-update install
- 패키지에 문제가 있으면, 패키지 재 설치
# portupgrade -f ruby # rm /var/db/pkg/pkgdb.db # portupgrade -f ruby18-bdb # rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db # portupgrade -af |
저의 경우 다음과 같은 오류가 발생하였었습니다.
stone# freebsd-update fetch Looking up update.FreeBSD.org mirrors... 2 mirrors found. Fetching public key from update4.FreeBSD.org... failed. Fetching public key from update5.FreeBSD.org... failed. No mirrors remaining, giving up. |
원인을 분석하기 위해서 7.2 Release 버전에 대한 공개키를 받는 것에 문제가 없는지 확인합니다.
stone# fetch -vvv http://update1.FreeBSD.org/7.2-RELEASE/i386/pub.ssl scheme: [http] user: [] password: [] host: [update1.FreeBSD.org] port: [0] document: [/7.2-RELEASE/i386/pub.ssl] ---> update1.FreeBSD.org:80 looking up update1.FreeBSD.org connecting to update1.FreeBSD.org:80 requesting http://update1.FreeBSD.org/7.2-RELEASE/i386/pub.ssl >>> GET /7.2-RELEASE/i386/pub.ssl HTTP/1.1 >>> Host: update1.FreeBSD.org >>> User-Agent: fetch libfetch/2.0 >>> Connection: close >>> <<< HTTP/1.1 200 OK <<< Date: Tue, 02 Jun 2009 13:20:01 GMT <<< Server: Apache/1.3.41 (Unix) <<< Cache-Control: max-age=60 <<< Expires: Tue, 02 Jun 2009 13:21:01 GMT <<< Last-Modified: Sat, 02 May 2009 18:02:40 GMT last modified: [2009-05-02 18:02:40] <<< ETag: "702e56-320-49fc8ac0" <<< Accept-Ranges: bytes <<< Content-Length: 800 content length: [800] <<< Connection: close <<< Content-Type: text/plain <<< offset 0, length -1, size -1, clength 800 remote size / mtime: 800 / 1241287360 pub.ssl 100% of 800 B 2158 kBps
freebsd-update의 디버깅을 아래와 같이 진행합니다. stone# freebsd-update -v debug -s update.FreeBSD.org upgrade -r 7.2-RELEASE Looking up update.FreeBSD.org mirrors... 2 mirrors found. Fetching public key from update5.FreeBSD.org... fetch: http://update5.FreeBSD.org/7.0-STABLE/i386/pub.ssl: Not Found failed. Fetching public key from update4.FreeBSD.org... fetch: http://update4.FreeBSD.org/7.0-STABLE/i386/pub.ssl: Not Found failed. No mirrors remaining, giving up. |
위 디버깅 정보를 보면, 공개키가 들어 있는 파일을 가져오는곳에서 문제가 발생하는 것을 알 수 있습니다.
현재 커널의 정보를 확인해 보았더니, 아래와 같았습니다.
stone# uname -a FreeBSD stone.bflysoft.kr 7.0-STABLE FreeBSD 7.0-STABLE #1: Thu Mar 20 08:52:44 UTC 2008 i386 |
서버의 릴리즈 정보에 해당하는 공개키가 없어서 문제가 발생하는 것이므로, 아래와 같이 임시적으로 서버의 버전 정보를 수정합니다.
stone# setenv UNAME_r 7.0-RELEASE stone# uname -a FreeBSD stone.bflysoft.kr 7.0-RELEASE FreeBSD 7.0-STABLE #1: Thu Mar 20 08:52:44 UTC 2008 i386 |
위와 같이 릴리즈 정보가 변경되었음을 확인한 이후에 다시 freebsd-update를 시도하여 그제서야 마이너 업그레이드가 제대로 진행이 되었습니다.
업그레이드가 진행중에 다음과 같은 메시지가 표시되면서 각종 텍스트 파일의 수정이 필요합니다.
stone# freebsd-update -r 7.2-RELEASE upgrade Looking up update.FreeBSD.org mirrors... 2 mirrors found. Fetching metadata signature for 7.0-RELEASE from update4.FreeBSD.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... done.
The following components of FreeBSD seem to be installed: kernel/generic src/base src/bin src/cddl src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/dict world/doc world/games world/info world/manpages world/proflibs
The following components of FreeBSD do not seem to be installed: src/compat world/catpages
Does this look reasonable (y/n)? y
Fetching metadata signature for 7.2-RELEASE from update4.FreeBSD.org... done. Fetching metadata index... done. Fetching 1 metadata patches. done. Applying metadata patches... done. Fetching 1 metadata files... done. Inspecting system... done. Fetching files from 7.0-RELEASE for merging... done. Preparing to download files... done. Attempting to automatically merge changes in files... done.
The following file could not be merged automatically: /etc/defaults/periodic.conf Press Enter to edit this file in vi and resolve the conflicts manually... |
버전 정보에 따라 절절히 모든 파일을 수정해 줍니다.
그리고 난 후에 install 합니다.
stone# freebsd-update install Installing updates... Kernel updates have been installed. Please reboot and run "/usr/sbin/freebsd-update install" again to finish installing updates. |
재부팅 이후에, 다시 한번 freebsd-update install하면 업그레이드가 마무리 됩니다.