RPM 패키지에서 파일을 수동으로 강제로 다시 로드하는 방법은 무엇입니까?

RPM 패키지에서 파일을 수동으로 강제로 다시 로드하는 방법은 무엇입니까?

Fedora 배포 업그레이드(27->28)를 수행한 후 dnf패키지 버전 간의 충돌을 수동으로 해결해 보았습니다(이전 OS 버전의 기능을 유지하는 데 필요함. 부팅 시 GRUB2 메뉴에서 유효한 OS 버전 선택).

dnf보안 검사는 제가 한때 rpm -e xxx --force했던 것처럼 충돌하는 패키지의 삭제를 방지합니다. 실수로 glibc를 제거했는데 내 PC에 즉시 문제가 발생했습니다.

다음과 같은 이유로 컴퓨터를 처음부터 다시 구축하고 싶지 않습니다.

  1. 몇 년 전에 설치한 앱이 모두 기억나지 않습니다(dnf 시스템 업그레이드를 통해 자동으로 업그레이드되었습니다).
  2. 내 네트워크 환경과 내 컴퓨터의 서버에 대한 사용자 정의 설정을 복원하려면 /etc에서 많은 구성 작업이 필요합니다.

복구 디스크를 사용하여 부팅하고 하드 드라이브를 확인할 수 있었습니다. 모든 것이 비교적 "깨끗해" 보입니다. glibc 패키지의 파일이 완전히 누락되었습니다.

누락된 루트를 시작하려고 했기 때문에 이전 루트를 완료할 수 없습니다 chroot(실행하기 위해 ).rpm -i glibcchroot/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/.

관련 정보