젠투 포티지. "revdep-rebuild" 명령은 정확히 무엇을 수행합니까?

젠투 포티지. "revdep-rebuild" 명령은 정확히 무엇을 수행합니까?

revdep-rebuildGentoo Linux를 업그레이드한 후에 이것을 실행해야 한다는 것을 알고 있습니다. 나는 또한 revdep-rebuild공유 라이브러리 충돌을 감지하고 어떻게든 해결하는 방법을 이해합니다 . 하지만 더 알고 싶습니다.

revdep-rebuild(가설적으로) 작업을 수동으로 수행하기 로 결정한 경우 어떻게 해야 합니까? 테스트를 위해 모든 바이너리를 어떻게 선택합니까? 특정 바이너리가 괜찮은지 어떻게 확인할 수 있나요? 바이너리에 문제가 있는 경우 문제를 해결하기 위해 다시 나타날 패키지를 어떻게 알 수 있나요?

답변1

  1. 먼저 모든 실행 파일을 찾을 수 있습니다.
  2. ldd그런 다음 종속성을 찾는 데 사용합니다 *.so.
  3. 나중에 공유 객체가 존재하지 않으면 이를 사용하여 포함 여부를 qfile감지합니다 .ebuild
  4. 마지막으로 감지된 모든 손상된 패키지가 다시 나타납니다.

답변2

추론 섹션을 읽어보세요.CentOS 7에서 Awesome Window Manager 사용하기. 분포가 바이너리인지 아닌지는 중요하지 않습니다. 이는 모든 배포판에서 동일한 동작이 발생할 수 있기 때문입니다.

링크된 게시물의 항목 4~6이 revdep-rebuld수정 사항입니다. 항목 4의 멋진 이름은 "역의존성"입니다. 내가 찾을 수 있는 유일한 정의는 이것에 있습니다.의존성 지옥(Dependence Hell)에 대한 Wikipedia 항목. 충돌 및 순환 종속성을 참조하세요.

revdep-rebuld/lib역방향 종속성 재구성의 약자로, 디렉터리의 개체를 검색 .so한 다음 비교하는 방식으로 작동합니다.에스헤어졌다산소.aUSE 플래그가 사용 되면 static-libs정적 라이브러리 파일 버전을 가리킵니다. 그런 다음 이 두 가지를 " ldd 일치하지 않는 경우 패키지를 다시 빌드하도록 표시" 의 출력과 비교한 다음 다시 빌드합니다.


항상 2단계부터 시작하는 것을 제외하면 이 모든 것이 webKnjaz의 답변에 있습니다. revdep-rebuild즉, 항상 모든 패키지가 손상되었다고 가정하므로 스캔하기 전에 모든 라이브러리가 손상되었다고 가정합니다.

또한 이 컬렉션 revdep-rebuild이 새 버전의 컬렉션에 통합되었다는 사실도 알아야 합니다 .sys-apps/portage@preserved-rebuild

관련 정보