[질문] glibc를 버젼업을 한 뒤로 rpm이 먹통입니다.

redhat2k의 이미지

redhat8 에 커널버젼을 2.6.0 으로 커널컴파일로 올린후에

glibc 를 버젼업할 필요가 생겨 페도라에서 다운 받은 rpm패키지로
업그레이드 했는데...그 이후 rpm 명령을 사용하면

[root@xx rpm]# rpm -Uvh --nodeps *.rpm
cannot handle file 'libc.so.6' with TLS data

이러한 에러 메시지가 생깁니다.

여기저기 검색을 해보니...원래 순서가 rpm -> glibc 순으로 해야된다고
하는군요...즉, rpm을 먼저 업그레이드한 후에 glibc를 해야한다는 의견이 있더군요....

하지만 이미 엎질러진 물이니 이것을 해결하기 위해 어찌해야 할지 고수님들의 의견을 듣고 싶습니다.

참고사이트:

1. http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=83737
2. http://www.involution.com/tls.php

특히 2번의 경우는 해결책이 나온듯하나 역시 안되더군요...

속 시원하게 rpm을 싹지우고 다시 rpm을 재설치하는법이나...
아님 더 좋은 방법을 알고 싶습니다. :cry: :cry:

kslee80의 이미지

rpm 은 rpm 패키지로 배포하기도 하지만,
컴파일된 바이너리로도 있습니다.
이중에 static 컴파일된 녀석도 있으니,
그 녀석으로 새로운 rpm 패키지로 rpm 을 업데이트 하면 되지요.

뱀발. 업그레이드 하기 가장 위험한 패키지중에 하나가 glibc죠..-.-;;
테스트용으로 막 굴리는 시스템 아니면 glibc 는 업그레이드 안한답니다;

redhat2k의 이미지

답변 감사합니다.
제 시스템이 아래와 같은데...

-------------------------------------------
[root@xxxx]# rpm -qa | grep rpm
rpm-python-4.1-1.06
redhat-rpm-config-8.0-1
librpm404-4.0.4-8x.27
rpm-build-4.1-1.06
rpm404-python-4.0.4-8x.27
rpm-4.1-1.06
rpm-devel-4.1-1.06
[root@xxxx]# rpm -qa | grep glibc
glibc-common-2.3.2-11.9
glibc-profile-2.3.2-11.9
glibc-kernheaders-2.4-8.10
glibc-devel-2.3.2-11.9
glibc-2.3.2-11.9
-----------------------------------------------

ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/rpm-4.1.i386.tar.gz
ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.1.x/rpm-4.1.tar.gz

4.2.*에는 없고 4.1.*에만 tar.gz가 있더군요.

4.1.* 는 새로 업그레이드한 glibc 2.3.2 에서 문제가 없을까요?
rpm -qa 로 확인해보면 지금 있는것이 4.1.* 인데요...

김정균의 이미지

glibc 는 공유 라이브러리 입니다. 즉, 다른 바이너리들이 작동을 할 때 glibc 라이브러리를 호출하여 사용을 하게 됩니다.

그런데, 이 공유 라이브러리에는 soname 이라는 것이 있어, 이 버전이 틀릴 경우에는 사용을 하지 못하게 됩니다.

님의 케이스가 이 경우라고 볼 수 있죠.

일단 방법은, 부팅 설치 CD 를 넣고 rescue 모드로 부팅한 후에, chroot 명령으로 glibc 를 배포본에 있는 것으로 --force 명령을 주어 설치하는 수 밖에 없을 겁니다.

참고로 glibc 는 왠만하면, 배포본에서 제공하는 업데이트만 사용해야 합니다. 만약 꼭 버전을 올려야 할 일이 있다면, 해당 버전을 제공하는 배포본을 설치 하셔야 한다는 얘기입니다.

리눅스 버전이 올라간다는 것은 glibc 버전이 올라가는 것과 동일선상이라고 할 수도 있을 정도로 glibc 는 의존도가 높은 패키지 입니다.

redhat2k wrote:
redhat8 에 커널버젼을 2.6.0 으로 커널컴파일로 올린후에

glibc 를 버젼업할 필요가 생겨 페도라에서 다운 받은 rpm패키지로
업그레이드 했는데...그 이후 rpm 명령을 사용하면

[root@xx rpm]# rpm -Uvh --nodeps *.rpm
cannot handle file 'libc.so.6' with TLS data

이러한 에러 메시지가 생깁니다.

여기저기 검색을 해보니...원래 순서가 rpm -> glibc 순으로 해야된다고
하는군요...즉, rpm을 먼저 업그레이드한 후에 glibc를 해야한다는 의견이 있더군요....

하지만 이미 엎질러진 물이니 이것을 해결하기 위해 어찌해야 할지 고수님들의 의견을 듣고 싶습니다.

참고사이트:

1. http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=83737
2. http://www.involution.com/tls.php

특히 2번의 경우는 해결책이 나온듯하나 역시 안되더군요...

속 시원하게 rpm을 싹지우고 다시 rpm을 재설치하는법이나...
아님 더 좋은 방법을 알고 싶습니다. :cry: :cry:

redhat2k의 이미지

답변 감사합니다.

근데 설치CD부팅해서 linux rescue로 들어오니
마운트를 시도하길래 Continue하고 프롬프트에서
chroot하니 다음과 같은 에러가 납니다.

~/bin/sh-2.05#chroot /mnt/sysimage
/bin/sh: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

아니 이게 무슨일이랍니까?

포기하고 다시 정상부팅후에 libc.so.6을 찾아보니
--------------------------------------------------
[root@xxxx]# find / -name libc.so.6
/var/ftp/lib/libc.so.6
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6

[root@xxxx]# find / -name libc-2.3.2.so
/var/ftp/lib/libc-2.3.2.so
/lib/i686/libc-2.3.2.so
/lib/libc-2.3.2.so
/lib/tls/libc-2.3.2.so
--------------------------------------------------
이 문제를 어찌해결해야 할지 모르겠습니다.
제발 도와주세요....

혹시 참고가 되실까해서 아래에 몇가지 정보를 첨부합니다.

--------------------------------------------------
simple.c 라는 간단한 C파일을 컴파일 및 실행해보았습니다.

main()
{
return(0);
}

컴파일

gcc -o simple simple.c

그런다음...

[root@xxxx]# ldd -v simple
libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Version information:
./simple:
libc.so.6 (GLIBC_2.0) => /lib/tls/libc.so.6
/lib/tls/libc.so.6:
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2
ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2

동적으로 링크되어 실행이 됩니다....그외 자세한건 모르겠습니다.

[root@xxxx]# ldd rpm
not a dynamic executable
[root@xxxx]# objdump -R rpm

rpm: file format elf32-i386

objdump: rpm: not a dynamic object
objdump: rpm: Invalid operation

정적으로 링크된 실행파일인가 봅니다. 자세한건 역시 모르겠습니다.
--------------------------------------------------

mushim의 이미지

기존 파티션들이 /mnt/sysimage 아래에 마운트 되어 있다고 하면,

다음과 같이 하시면 됩니다.

rpm --root=/mnt/sysimage --nodeps --force -Uvh glibc-xxx.rpm

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.