Fedora 배포 업그레이드(27->28)를 수행한 후 dnf
패키지 버전 간의 충돌을 수동으로 해결해 보았습니다(이전 OS 버전의 기능을 유지하는 데 필요함. 부팅 시 GRUB2 메뉴에서 유효한 OS 버전 선택).
dnf
보안 검사는 제가 한때 rpm -e xxx --force
했던 것처럼 충돌하는 패키지의 삭제를 방지합니다. 실수로 glibc를 제거했는데 내 PC에 즉시 문제가 발생했습니다.
다음과 같은 이유로 컴퓨터를 처음부터 다시 구축하고 싶지 않습니다.
- 몇 년 전에 설치한 앱이 모두 기억나지 않습니다(dnf 시스템 업그레이드를 통해 자동으로 업그레이드되었습니다).
- 내 네트워크 환경과 내 컴퓨터의 서버에 대한 사용자 정의 설정을 복원하려면 /etc에서 많은 구성 작업이 필요합니다.
복구 디스크를 사용하여 부팅하고 하드 드라이브를 확인할 수 있었습니다. 모든 것이 비교적 "깨끗해" 보입니다. glibc 패키지의 파일이 완전히 누락되었습니다.
누락된 루트를 시작하려고 했기 때문에 이전 루트를 완료할 수 없습니다 chroot
(실행하기 위해 ).rpm -i glibc
chroot
/bin/bash
/mnt/hard_disk/
rpm에게 일반적인 작업을 수행하고 대신 파일을 설치하도록 지시하는 방법이 있습니까 /
?
그러면 저는 패키지 데이터베이스의 일관성과 무결성을 책임지게 됩니다.
답변1
chroot
다음 명령을 실행하면 작동할 수 있습니다.
chroot /mnt/hard_disk rpm -i glibc*.rpm
또한 옵션이 rpm
있으므로 --root
여기에 또 다른 옵션이 있습니다.
rpm -i --root /mnt/hard_disk glibc*.rpm
답변2
명령을 사용하지 않더라도 이를 수행할 수 있는 방법이 있습니다 rpm
. rpm2cpio
사용 가능한 바이너리가 있어야 하며 다음을 수행하면 됩니다.
# cd /mnt/hard_disk
# rpm2cpio <rpmfile> | cpio -idmv
언급한 대로 나중에 RPMDB 무결성 문제를 처리해야 하지만 이렇게 하면 파일이 제자리에 있게 됩니다. 간단한 Google 검색을 통해 관련 정보와 추가 세부정보가 포함된 많은 웹페이지를 찾을 수 있습니다. 그 중 하나는 다음과 같습니다.https://blog.packagecloud.io/eng/2015/10/13/inspect-extract-contents-rpm-packages/.