dpkg-shlibdeps는 버전 정보를 제공하지 않습니다.

dpkg-shlibdeps는 버전 정보를 제공하지 않습니다.

ROS 패키지 ros-noetic-moveit-core에 의존하는 패키지를 만들고 있습니다. 더 구체적으로 말하면 에 대한 링크가 포함되어 있습니다 libmoveit_robot_model.so.

libmoveit_robot_model.soia에 대한 심볼릭 링크 libmoveit_robot_model.so.1.1.7이므로 libmoveit_robot_model.so.1.1.7내 공유 라이브러리의 NEEDED 부분에서 끝납니다.

그러나 패키지하면 dpkg-shlibdeps는 ros-noetic-moveit-core버전 정보 없이 shlibs 종속성에만 추가됩니다.

언제 옮길까! 1.1.6에서 업데이트할 때와 같이 최신 버전으로 업데이트하면 라이브러리가 libmoveit_robot_model.so.1.1.7교체되고 libmoveit_robot_model.so.1.1.8(예를 들어) 내 패키지가 더 이상 링크되지 않으며 dpkg에 충돌이 표시되지 않습니다.

내 패키지가 종속성을 올바르게 전달하는지 어떻게 확인할 수 있나요? 두 가지 해결책이 있습니다.

  • 내 패키지가 여러 버전의 MoveIt!과 호환되도록 링크할 때 버전 접미사를 포함하지 않는 방법을 찾으세요. 하지만 이 솔루션이 마음에 들지 않습니다(특히 MoveIt!이 제공하지 않기 때문에).상징) 와 같은 주요 버전 접미사가 있는 파일 또는 이벤트에 대한 심볼릭 링크입니다 libmoveit_robot_model.so.1.
  • dpkg-shlibdeps가 사용된 MoveIt 버전을 찾을 수 있는 방법을 찾아보세요! 무브잇으로 내 가방이 업그레이드 됐어요!

MoveIt!의 포장기에 결함이 있는 경우 무엇을 할 수 있으며, 패키지가 수정될 때까지 기다리는 동안 어떻게 해야 합니까?

MoveIt!에 대한 추가 정보:

  • 나는 사용하고있다이 .deb 패키지.
  • 아니요.상징문서.
  • /var/lib/dpkg/info/ros-noetic-moveit-core.shlibs 파일에는 다음 내용이 포함되어 있습니다.
#...
libmoveit_robot_model 1.1.7 ros-noetic-moveit-core
#...

답변1

이는 실제로 패키징 문제(또는 라이브러리 정의 문제)입니다. 시작하기 전에 문제를 해결하기 위해 수행할 수 있는 작업은 다음과 같습니다. 패키지의 소스 코드 shlibs또는 .debian/shlibs.local/etc/dpkg/shlibs.override

libmoveit_robot_model 1.1.7 ros-noetic-moveit-core (>= 1.1.7), ros-noetic-moveit-core (<< 1.1.8)

패키지를 1.1.7 버전의 패키지와 바인딩합니다 ros-noetic-moveit-core.

그 부분 에서는 ros-noetic-moveit-core이름이 패키지의 이름을 반영하는 패키지에 라이브러리를 넣어야 합니다. 패키지의 모든 버전이 이전 버전과 호환되지 않는 경우 이름에 전체 버전이 포함되어야 합니다. 따라서 패키지 이름과 해당 메타데이터에서 반복되어야 합니다. 버전 1.1.8이 1.1.7의 대체품으로 간주된다면 soname은 1.1 또는 심지어 1에서 중지되어야 합니다. 데비안 정책의 관련 섹션은 데비안과 관련된 모범 사례를 설명합니다.공유 라이브러리에 관한 장.이 각주라이브러리에 적합한 패키지 이름을 계산하는 명령을 제공합니다.

관련 정보