Debian을 Jessie에서 Stretsh로 업그레이드한 후 소스에서 이전에 빌드한 도구를 다시 컴파일/다시 빌드해야 하는지 궁금합니다.
내 주요 도구는 다음과 같습니다
- Omnet++ 네트워크 시뮬레이터(Eclipse 기반)
- 스모 교통 시뮬레이터
- Python으로 작성된 다양한 프로그램
- R의 이전 버전(2-11)
내 도구가 모두 망가져서 다시 빌드해야 한다고 생각했는데, 그 중 일부(Omnet++, Sumo)를 사용해 보니 제대로 작동하는 것 같았지만 얼마나 일관성이 있는지는 잘 모르겠습니다.
그렇다면 작동한다면 일관되지 않은 방식으로 작동할 가능성이 있습니까?
답변1
이는 도구가 사용하는 라이브러리, Stretch에 새 버전이 있는지 여부, 이러한 새 버전의 ABI가 이전 버전과 호환되는지 여부에 따라 다릅니다. 이는 또한 프로그램 내의 특정 기능에만 문제가 있을 수 있음을 의미합니다.
나는 당신의 도구에 대해 모르지만 일반적으로 안전한 접근 방식은 모든 것을 다시 컴파일하는 것입니다.
답변2
작동 여부는 이러한 도구가 무엇에 의존하는지(그리고 새 운영 체제에서 의존하는 것을 찾을 수 있는지 여부)에 따라 달라집니다.
하지만 여전히 Debian 기반 운영 체제를 사용하고 있으므로 아무런 문제 없이 계속 작동할 것입니다.
답변3
사용자 정의 컴파일된 프로그램이 업그레이드된 운영 체제에서 시작되면 이는 필요한 동적 라이브러리를 찾았으며 그 점에서 제대로 작동한다는 의미입니다. (다른 비호환성으로 인해 여전히 실패할 수 있지만 다시 컴파일하면 도움이 되지 않습니다.) 그러나 새 OS의 일부가 아닌 오래된 패키지에서 동적 라이브러리를 찾을 수 있지만 새 OS 자동 삭제 중에는 검색되지 않습니다. 업그레이드. 따라서 나중에 이러한 오래된 패키지를 제거하면(패키지 관리 프런트엔드는 일반적으로 어떤 방식으로든 해당 패키지를 강조 표시함) 사용자 정의 컴파일러가 충돌합니다. (그러나 사용자 정의 패키지를 통해 설치하고 현재는 사용되지 않는 라이브러리 패키지에 의존하는 경우 패키지 관리자가 경고를 표시합니다.) 이 도구를 사용하여 동적 라이브러리 종속성을 검색한 다음 상태 찾기를 사용하여 ldd
해당 패키지를 찾을 수 있습니다. dpkg -S
통과합니다 apt-cache policy
.
오래된 패키지를 장기간 사용하면 보안 업데이트를 받지 못하기 때문에 보안 위험이 발생합니다. 적절한 LTS 저장소를 활성화하면 일반적으로 일정 기간 동안 도움이 됩니다. 특히 Xerces는 이 분야에서 코드 품질에 대해 그다지 좋은 평판을 얻지 못했습니다.