[완료] gentoo - emerge busybox error
글쓴이: bus710 / 작성시간: 토, 2007/04/14 - 11:47오후
busybox (유용하고 자잘한 유틸을 모아놓은 통합 패키지....정도?)를 업데이트하다가
dyn-compile 이 어쩌고 저쩌고 하는 에러를 만났습니다.
구글링해 본 결과 make.conf 의 프로세서 선언을 i686 에서 i386 으로 해주면 된다는 글을 발견했습니다.
CHOST="i686-pc-linux-gnu" => CHOST="i386-pc-linux-gnu"
수정하고 시도하니 바로되더군요.
젠투에서의 버그이며... 이미 누군가가 버그 리포트를 한것 같아서 전 그냥 팁 삼아 적어 봅니다.
Forums:
태클은 아니고..
에, 태클을 걸려는 의도는 절대 아닙니다만..
dyn_compile ... 이라고 말씀하시면 컴파일간 에러라고 밖에 알 수가 없습니다 @_@
CHOST를 변경해서 해결된 문제라면 현재 구성된 빌드 툴체인을 의심해봐야 할 사안이라고 생각됩니다.
(다르게 이야기하자면 gcc-config -l, binutils-config -l 을 했을 때 현재 잔존/선택된 툴 체인이 CHOST로 된 prefix 부분이 둘 다 같아야한다는 말입니다)
죄송하지만, 그 참조하신 페이지의 링크를 부탁드려도 될까요?
----
안드로메다는 이미 개념만으로도 빅뱅직전.
http://www.mail-archive.com/
http://www.mail-archive.com/gentoo-user@lists.gentoo.org/msg53353.html
입니다.
그렇다면 아마, 제 젠투 미니멀 씨디가 i386용인데, make.conf는 i686으로 되어 있어서 그렇다고 생각할 수 있겠군요... 일단은 busybox만 i386으로 해 놓고 나머지는 i686으로 업데이트해서 잘 쓰고 있으니 다행일까요^^;
*이런 태클이라면 얼마든지 감사 드립니다. 30점도 받고 모르는 것도 배우고.
akudoku.net
life is only one time
var/tmp/portage/sys-apps/bu
말씀하신 링크에서 처럼 발생하는 문제가 원인이면..
경험상 미니멀CD 보다는 stage3을 선택했을때 사용자가 설정한 CHOST와 stage3에 들어있는 gcc+binutils와의 차이로 인해 문제가 발생하는 경우가 많았습니다. ar이라면 binutils 일테니, binutils만 다시 빌드해줘도 될법하군요 ;)
그런데, busybox만 그런걸 보면 뭔가 이상하긴 이상하네요; 언급해주신 멜링에서도 binutils를 다시 빌드해서 문제를 해결했다.. 라는 부분이 있긴 합니다만. 역시 젠투의 세계는 ~(_~_)~
저 같은 경우에는..
여하간 "x86" stage3의 타르볼을 풀고 이것저것 해주었을 때(/etc/make.profile 링크의 재설정, make.conf 작성하고 emerge --sync 날려서 포티지 동기화하는것 포함..)
작성한 CHOST="i686-pc-linux-gnu" 값이 이런 형태임에 반해
# ls /usr/i<TAB 완성> 을 했을 때 i386-pc-linux-gnu 또는 뭐 .. 여하간 현재의 CHOST와 차이가 있다..면, emerge world를 하기전에 (업데이트가 필요하면 glibc먼저, 이미 최신이면 상관없습니다)-gcc-binutils 를 우선적으로 빌드합니다.
물론, 슬롯이 달라서 새로 빌드를 하더라도 이전 버전이 없어지지 않는 경우도 있으니..
gcc 빌드 이후에는 "gcc-config -l" 로 현재 지정된 gcc가 자신이 지정했던 CHOST값과 원하는 버전으로 된 프로파일인지 확인하고,
(다르다면 "gcc-config [자신의CHOST]-[gcc버전]" 형태로 된 프로파일명을 입력해서 맞추고..)
binutils를 컴파일한 후에 역시 "binutils-config -l" 로 맞춰준다음
그런 다음 stage에 기본으로 들어가있던 binutils / gcc가 없어지지 않았으면 emerge -C 로 날려버립니다.
젠투에서 CHOST 값에 직접적인 영향을 받는 패키지가 gcc/binutils/perl 정도를 꼽을 수 있기 때문에, CHOST가 부득이하게 변경되면(라곤해도 최초설치때가 전부일텝니다만) 다른것을 업데이트 하기전에 이들을 최우선적으로 리빌드하는 습관을 가졌습니다.
논외의 이야기지만, sys-libs/db 같이 각 버전별 슬롯이 많이 잡혀있어 이버전 저버전 그버전 깔려있는 경우에도 최상위버전 빼놓고는 나머지는 -C 로 날려주고 revdep-rebuild 한방 쌔워서 최상위버전에 맞춰주는 형식으로, 패키지를 정리정돈(?) 하기도 합니다.
가끔씩 revdep-rebuild가 미친관계로 db 옛날버전을 깔려고 시도하면 취소해주고,
"equery depends db"로 의존성있는 애들을 찾아준 다음에 하나씩 리빌드 하기도 합니다.
(너무 삽스러운가요-_-;)
----
안드로메다는 이미 개념만으로도 빅뱅직전.
.
중요한 노하우로군요.
저도 다음엔 꼭 적용해 봐야겠네요^^
akudoku.net
life is only one time
감사합니다.
sys-libs/db 가 update 되지 않아 이후 update 가 다 미루어진 상태였는데 님의 글을 보고 binutils-config 를 확인한 결과 최신이 아니더군요. 최신걸로 수정하니 되고 있음돠!!
정말 감사합니다.
댓글 달기