패키지에 대해 한 세트의 RPM 저장소를 사용하는 RPM 기반 배포판(예: Fedora)이 설치되어 있으며 다른 RPM 저장소 세트를 사용하도록 변경하여 다른 배포판(예: CentOS)으로 효과적으로 변환하고 싶습니다. 시스템을 다시 설치하지 않고 이 작업을 수행해야 합니다.
내가 이렇게 하고 싶은 이유는 우리 조직에서 이 컴퓨터를 나에게 주었고 "여기에 다른 운영 체제를 설치하지 말라"는 지시를 받았기 때문입니다. 그러나 보안 업데이트를 받는 데 상당히 느린 것처럼 보이는 모호한 저장소 세트를 사용하고 있으며 저장소가 제대로 유지 관리되고 있는지 정말 신뢰할 수 없습니다. 나는 컴퓨터에 대한 루트 액세스 권한을 갖고 있으며 IT 부서에 따르면 이는 "재설치"로 간주되지 않습니다.
그러나 이 리포지토리의 패키지에는 공급업체 접미사가 붙은 버전 이름이 있습니다(예: Ubuntu의 패키지에는 version 이 있습니다 1:13.0.1-2ubuntu2
). 특히 일부 시스템 패키지에는 systemd
이러한 기능이 있습니다. AFAICT, 이는 시스템 자체 systemd
뿐만 아니라 의존하는 모든 것을 systemd
다시 설치해야 함을 의미하므로 시스템이 실행되는 동안 시스템의 많은 부분이 제거된 다음 다시 설치됩니다. 이는 설치를 중단시키는 매우 빠른 방법인 것 같습니다. .
내가 고려한 가능한 해결책 중 하나는 설치 종속성 트리의 리프에서 시작하여
- 새 저장소에서 해당 패키지를 다운로드합니다.
- 종속성 버전이 이전 저장소의 버전과 일치하도록 편집하세요.
- 기존 패키지 위에 이 패키지를 설치합니다.
- 이 패키지가 다른 패키지에 종속된 경우 편집되지 않은 버전으로 교체하십시오(이 패키지는 이제 새 이름을 가지며 편집된 패키지는 이전 이름에 따라 달라지므로).
- 종속성 트리의 각 깊이에 대해 이 작업을 순차적으로 수행합니다.
이 전략이 효과적인가요? 이러한 유형의 업그레이드를 수행하려면 어떤 다른 옵션이 필요합니까?
답변1
이 부분을
2ubuntu2
버전 번호라고 합니다. 이는 패키지 관리자가 동일한 버전을 가진 두 가지 패키지 변형을 비교하는 데 사용됩니다. 패키지 관리자는 이를 순전히 영숫자로 처리합니다. 다른 의미는 없습니다. 이 부분을ubuntu2
dist-tag라고 합니다. 패키지가 어떤 시스템에 적합한지 사람들이 이해하는 데 도움이 됩니다. 그러나 패키지 관리자는 이 값을 평가하지 않습니다. RHEL9에는 "el5" 패키지를 설치하고 RHEL5에는 "el9" 패키지를 설치할 수 있습니다. 종종 포장 요구 사항으로 인해 중단될 수 있습니다. 그러나 패키지에 다른 종속성이 없으면 그렇게 할 수 있습니다. 이 접근 방식에는 아무런 문제가 없습니다.RPM 패키지는 새 패키지를 설치한 다음 이전 패키지를 제거하여 업그레이드됩니다. 따라서 이렇게 하더라도
dnf upgrade
시스템은 항상 실행되어야 합니다. 거래 중에도.종속성이 너무 복잡해서 패키지를 하나씩 업그레이드하는 것은 거의 불가능합니다. 큰 일에서 더 나은 행운을 누리게 될 것입니다.
CentOS에서 파일을 가져와
/etc/yum.repos.d
컴퓨터에 넣고 작업을/etc/yum.repos.
수행dnf upgrade
하거나 수행할 수도 있습니다.dnf distro-sync
성공할 확률은 80%라고 봅니다. 그러나 나머지 20%는 끔찍하다. 더 나은 경우에는 트랜잭션 전에 종속성이 손상됩니다. 어떻게든 문제를 해결할 수도 있습니다. 최악의 경우 거래 중에 일부 오류가 발생하게 됩니다. 모든 것이 충돌하고 부팅할 수 없는 시스템이 발생하게 됩니다. 미리 추측하기는 어렵습니다. 문제는 아마도 당신이 이 일을 하는 사람이 세계에서 처음일 것이라는 점이다. 이 개척자들은 실수를 발견할 것입니다.
이 작업을 수행하기 위해 생산 기계를 사용하는 것은 매우 주저됩니다. 최소한 동일한 구성의 일부 가상 머신에서 먼저 이 업그레이드 경로를 시도해야 합니다.