binutils를 rpm으로 설치시 rpmdb에러가 나는데...

익명 사용자의 이미지

[root@localhost rpm]# rpm -Uvh binutils-2.11.90.0.8-9.i386.rpm
Preparing... ###########################################
[100%]
package binutils-2.11.93.0.2-11 (which is newer than binutils-2.11.90.0.8-9) is
already installed
error db3 error(-30998) from db->close DB_INCOMPLETE Cache flush was
unable to complete
rpmdb Unreferenced page 959
rpmdb Unreferenced page 994
rpmdb Unreferenced page 995
rpmdb Unreferenced page 996
rpmdb Unreferenced page 997
rpmdb Unreferenced page 998
error db3 error(-30985) from db->verify DB_VERIFY_BAD Database verification
failed
[root@localhost rpm]#

rpm Pakage database 에 관한 에러같은데... 이런 에러가 날경우 해결방법이 어떤것
이 있나요?
gcc를 업그레이드 하려다가 의존성 문제가 발생해서 이걸 해결하려고 맨처음
binutils를 설치하려는데 이런 에러가 났습니다. 그리고
rpm -qa | grep binutils를 입력하면 아무 반응이 없네요...
다운되지는 않는것 같구요.Ctrl + c를 누르면 다시 원상태로 돌아갑니다.프롬프트상태
로요...

익명 사용자의 이미지

에디.사랑.넷 http//eady.sarang.net 의 최원영님의 글을 퍼온겁니다.허
락없이 퍼와서 죄송하구여. 이해해 주시리라 믿습니다.
RPM으로 페키지를 설치하고 지우고 하다보면 간혹 RPM DB가 망가지는 경우
가 있습니다..

대부분의 경우 rpm --rebuilddb 로 복구가 가능합니다..

그렇지만 정말 심각하게 망가졌을때

error rpmdb damaged header instance #357 retrieved, skipping.

등과 같은 에러를 만날때..

아래의 방법대로 복구할 수 있습니다.

아래 내용은 google에서 찾은것을 대충 번역한것입니다. )

사실, 손상된 RPMDB 해더에서 문제가 발생하는 페키지를 삭제하는 작업입
니다... 물론 삭제된 페키지는 다시 깔아야 겠죠~ )

0) 기존의 RPMDB를 백업해 둡니다.
cd /var/lib
tar czvf /tmp/rpmdb.tar.gz rpm

1) db_verify로 rpmdb 무결성을 체크합니다.
명령은 아래와 같고
db_verify /var/lib/rpm/Packages
만약 실패한다면, 아래처럼 수정해 봅니다.
cd /var/lib/rpm
mv Packages Packages-ORIG
db_dump Packages-ORIG | db_load Packages

2) 모든 페키지 해더를 읽어 봅니다.
명령은 아래와 같고
rpm -qa
만약 무리없이 잘 된다면 5) 단계로 넘어가서 rpm --rebuilddb 를 해보십
시오.

만약 세그먼트폴트 에러가 나면 3) 단계로 갑니다.
만약 진행도중 멈춰버린다면
rm -f /var/lib/rpm/__db*
을 하고 다시 시도해 봅니다.

3) 해더에서 세그먼트폴트를 만났을때..
우선, 해더 인스턴스에서 세그먼트폴트가 난 부분을 찾아야 합니다.
다음과 같이하면 rpmdb 해더를 더 자세히 볼 수 있습니다.
echo "%_dbi_config_Packages %{_dbi_htconfig} lockdbfd debug"
>> /etc/rpm/macros

rpm -qa 를 해봅니다. 세그먼트폴트가 나는부분까지 지켜봅니다.

다음과 같은 화면을 만날것입니다.

...
Get Packages key (0x8216580,4) data (0x4014f008,155244) "#612"
47000000
rc
0kernel-enterprise-2.4.9-26beta.17
Get Packages key ((nil),0) data ((nil),0) "" deadbeef rc -30990

두번째 "Get Packages" 라인. 즉 #612 인스턴스 아래부분이 당신이
찾던 bad header일 것입니다. 아마도 당신은 해당 페키지를 다시
설치하고 싶을것입니다.

4) bad header를 지워비리자!.

여기서 한가지 툴이 필요한데 rpmdb는 vi로 열어서 수정할 수 있는것이 아
니기 때문이다.
프로그램은
ftp//people.redhat.com/jbj/t38454.c
이곳에서 구할 수 있다.

다운받아서 소스파일중에 아래와 같은 부분을 수정한다.

삭제할 bad header #번호를 ,로 나열하면 된다.

...
int badrecs[] = {
--> EDIT --> 562, 566, 559, 561, 563, 560, 564,
-1
};
...

다음과 같이 컴파일 하고
cc -o t38454 t38454.c -ldb-3.2

실행한다.
t38454

다시 2) 단계로 간다.
만약 같은 문제가 반복된다면
2) 단계로 가기전에 rpm --rebuilddb 를 먼저 실행해 본다.

5) 지금까지 저지른 일을 정리하자~
a) rpm --rebuilddb
b) rm -f /etc/rpm/macros
c) rm -rf /var/lib/rpmrebuild*
d) Reinstall the deleted package.


관련링크로.. http//www.ale.org/archive/ale/ale-2002-03/msg00063.html

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.