yum을 이용한 package upgrade 에 대한 질문 입니다.
현재 Fedora 7을 사용하고 있는데요 ,,
이중에서 libxml2 package만을 Fedora 9용 version으로 upgrade하려고
합니다.
그래서 ..
[root@myCom Fedora9_RPMS]# yum --nogpgcheck --installroot /home/jchoi/nxg_19/appliance19 update ./libxml2-2.6.32-1.fc9.i386.rpm
와 같이 하면요...
--> Finished Dependency Resolution
Error: Missing Dependency: libxml2 = 2.6.31 is needed by package libxml2-python
와 같은 message가 나오면서 안되고요 ..
그래서 다시
[root@myCom Fedora9_RPMS]# yum --nogpgcheck --installroot /home/jchoi/nxg_19/appliance19 update ./libxml2-python-2.6.32-1.fc9.i386.rpm
이렇게 해보면,,
--> Finished Dependency Resolution
Error: Missing Dependency: libxml2 = 2.6.32-1.fc9 is needed by package libxml2-python
또 이런 Message가 나오네요..
Yum을 이용하면 depenency때문에 고생하지 않을 거라고 생각했는데,,
Yum을 사용하더라도 이런 문제가 계속 나올 수 있는건지,,아님 제가 뭔가를
잘못사용한건지 궁금해서 글을 올립니다.
답변 미리감사드립니다.. ^^
fedora 9의 libxml2는
fedora 9의 libxml2는 fedora 9내의 다른 패키지를 필요로 하고.... 다른 패키지는 또다른 fedora 9내의 패키지를 필요로 하고...
그러다 보면 모든 패키지를 fedora 9의 패키지로 로 업그레이드해야 합니다.
yum을 이용하면 depenency때문에 고생하지 않습니다만.... 그건 같은 배포판 버전 내에서의 얘기라고 봐야겠죠.
fedora 9로 업그레이드하거나...
그렇게 하지 못할 상황이라면 libxml2의 소스 rpm을 받아서 적절히 수정한 후 설치하시죠.
--
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.
[root@myCom Fedora9_RPMS]#
기존의 libxml2 패키지를 완전삭제하고 새로운 libxml2 패키지를 설치하되,
/home/jchoi/nxg_19/appliance19 에 파일들을 설치하라... 는 뜻이죠.
rpm 이 시킨대로 조낸 열심히 하다보니,
기존의 libxml2 패키지인 libxml2-2.6.31 은
시스템에 설치되어 있는 libxml2-python 이라는 패키지가 의존성을 걸어놓고 있기 때문에
삭제를 못하는 상황이 됐습니다.
(보통... 어지간하면 버전번호는 범위 형식으로 의존성을 걸어놓는데,
저렇게 2.6.31 이라고 콱 박아놓은 것을 보면 특별한 이유가 있겠죠.)
의존성이 걸려있는 것들을 업데이트하려면,
의존성이 걸린 모든 패키지들을 일단 다 받아놓고,
libxml2*.rpm 처럼 wild card 를 사용해서 패키지 이름을 지정하는 방식으로 명령을 호출하면 됩니다.
지가 알아서 순서대로 삭제하고 설치하는 transaction 을 수행합니다.
아무튼, libxml2 에 의존성이 걸린 놈들과 그 놈들에 다시 의존성이 걸린 놈들을 재귀적으로 쉽게 살펴보려면,
맨 나중에 yes/no 를 물어볼텐데, 절대적으로 no 를 선택하셔야 합니다.
OTL
답변 감사드립니다..
위의 분의 말씀해주신 내용을 듣고,,Fedora 9을 다시 설치해 보자 싶었습니다.
[root@myCom ~]# yum --nogpgcheck --installroot /home/jchoi/nxg_19/appliance9/ install /home/jchoi/Fedora9_RPMS/rootfiles-8.1-1.1.1.noarch.rpm
Loading "installonlyn" plugin
Cannot open logfile /home/jchoi/nxg_19/appliance9//var/log/yum.log
Setting up Install Process
Parsing package install arguments
Examining /home/jchoi/Fedora9_RPMS/rootfiles-8.1-1.1.1.noarch.rpm: rootfiles - 8.1-1.1.1.noarch
Marking /home/jchoi/Fedora9_RPMS/rootfiles-8.1-1.1.1.noarch.rpm to be installed
Error: Cannot open/read repomd.xml file for repository: fedora
[root@Jason ~]# yum --nogpgcheck --installroot /home/jchoi/nxg_19/appliance9/ upgrade /home/jchoi/Fedora9_RPMS/rootfiles-8.1-1.1.1.noarch.rpm
Loading "installonlyn" plugin
Cannot open logfile /home/jchoi/nxg_19/appliance9//var/log/yum.log
Setting up Upgrade Process
Error: Cannot open/read repomd.xml file for repository: fedora
그랬더니 아래와 같은 문제가 다시 생겼네요 ㅜㅜ
또 질문을 드려봅니다. ~
(큰 코 한번
(큰 코 한번 다쳐보셔야 man 페이지라도 읽어보실 생각이 드시려나.)
--installroot 라는 옵션이 뭔지 알고 쓰시는건가요 ?
yum 의 --installroot 나 rpm 의 --root 나 쓰이는 곳은 단 한가지 경우입니다.
chroot 를 이용해서 / 를 바꿔서 써야하는데 chroot 한 이후에 yum/rpm 을 실행시키기 곤란한 경우.
맨처음 배포본 설치 때가 대표적인 경우입니다.
원하시는 것은 rpm 의 --prefix 나 --relocate 인 것 같은데,
뭣이건간에 기존의 패키지에 속한 파일들은 제거된다는 점을 아직도 이해못하셨는지 ?
/usr/lib/ 등등에 있던 라이브러리들이 삭제되고,
/home/jchoi/머시기/ 에 설치됩니다.
미리 /etc/ld.so.conf 를 수정해서 라이브러리 경로문제를 해결한다쳐도,
패키지에 속한 파일이 라이브러리 뿐입니까 ?
게다가 API 호환성이 없어서 삑사리가 난다면 시스템을 다시 원래대로 복구할 수 없을 가능성도 있습니다.
의존성 파일만 복사해서 테스트해보고 싶으신거라면
rpm2cpio 가 차라리 더 적절합니다. 문서를 보시거나 검색 부탁드립니다.
덧.
시스템 날려버려도 상관없다면,
rpm 의 --nodeps --force --replacefiles 등을 활용해서 뒤집어엎어버리시던가요.
OTL
맞아요,,지금 배포본 같은 걸 만드는 중이거든요..
그럼 installroot를 써야하지 않나요?
또 질문이 생겼어요..
지금 제 System에는 rpm-4.4.2.2-2.fc7 이 설치되어 있고
이걸 rpm-4.4.2-46.fc7.i386.rpm으로 upgrade하려고 다음과 같이
했는데요,,결과가 "Nothing to do"네요 왜 그런걸까요? ㅜㅜ
[root@Jason Fedora]# yum --nogpgcheck upgrade rpm-4.4.2-46.fc7.i386.rpm
Loading "installonlyn" plugin
Setting up Install Process
Parsing package install arguments
Examining rpm-4.4.2-46.fc7.i386.rpm: rpm - 4.4.2-46.fc7.i386
rpm-4.4.2-46.fc7.i386.rpm: does not update installed package.
Nothing to do
yum을 이용해서 upgrade 할때..
제가 local disk에 두 개의 RPM이 있어요..
libxml2-2.6.31-1.fc7.i386.rpm 과
libxml2-python-2.6.31-1.fc7.i386.rpm 인데요..
이걸 사용해서 installroot에 정의된 directory에 설치된 기존 rpm을 upgrade
할 계획이거든요.
그래서..
command를 아래와 같이 주었습니다.
[root@myCom jchoi]# yum --nogpgcheck --installroot /home/jchoi/myproduct upgrade ./libxml2-2.6.31-1.fc7.i386.rpm
그랬더니,,,
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Updating:
libxml2 i386 2.6.31-1.fc7 ./libxml2-2.6.31-1.fc7.i386.rpm 1.5 M
Updating for dependencies:
libxml2-python i386 2.6.31-1.fc7 updates 706 k
Transaction Summary
=============================================================================
Install 0 Package(s)
Update 2 Package(s)
Remove 0 Package(s)
Total download size: 2.2 M
Is this ok [y/N]:
와 같은 응답이 나오네요..
이걸 보면,,
libxml2-2.6.31-1.fc7.i386.rpm은 local에서 가져다 쓰는데..
libxml2-python-2.6.31-1.fc7.i386.rpm 은 updates라는 Repository에서
가져오는 것 같아서요 ..
이럴때 두 file을 모두 local에 있는 것을 사용하게 하려면 어떻게
하는 것이 좋을까요?
조언 부탁드립니다.
댓글 달기