ClickCease Linux 배포판의 바이너리 호환성

콘텐츠 표

인기 뉴스레터 구독하기

4,500명 이상의 Linux 및 오픈소스 전문가와 함께하세요!

한 달에 두 번. 스팸이 없습니다.

바이너리 호환성이란 무엇이며 Linux 배포판에서 바이너리 호환성이란 어떤 의미인가요?

로한 티말시나

2023년 5월 2일 TuxCare 전문가 팀

바이너리 호환성은 종종 간과되는 필수적인 기술 개념이지만 프로그램을 다양한 플랫폼에 배포하는 데 중요한 역할을 합니다. Linux 개발자에게 바이너리 호환성은 사용 가능한 Linux 배포판이 다양하기 때문에 중요한 과제입니다.

이 글에서는 바이너리 호환성이 무엇인지 자세히 살펴보고 다양한 맥락에서 바이너리 호환성을 살펴봅니다. 또한 Linux 배포판에서 바이너리 호환성이 구체적으로 무엇을 의미하는지에 대해서도 논의할 것입니다.

 

바이너리 호환성이란 무엇인가요?

우선 개발에서 "바이너리"라는 용어는 컴파일된 실행 코드를 의미합니다. 기본적으로 개발자는 C 또는 C++와 같은 고급 프로그래밍 언어로 코드를 작성한 다음 컴파일러를 통해 소스 코드를 실행하여 기계가 읽을 수 있는 실행 코드를 생성합니다. 결과 파일을 바이너리라고 합니다.

바이너리는 특정 컴퓨팅 환경에 맞게 컴파일되므로, 예를 들어 Linux OS용으로 컴파일된 바이너리는 Windows OS에서 실행할 수 없습니다. 사소한 환경 차이는 바이너리 호환성을 방해하지 않을 수 있지만, 큰 차이는 실행 실패로 이어질 수 있습니다.

두 가지 다른 컴퓨팅 환경은 다음과 같습니다. 바이너리 호환 한 환경에서 바이너리로 컴파일된 소스 코드가 다른 환경에서도 완벽하게 실행되는 경우입니다. 즉, 개발자가 다른 환경에서 코드를 성공적으로 실행하기 위해 코드를 다시 컴파일할 필요가 없습니다.

 

바이너리 호환성이 중요한 이유는 무엇인가요?

바이너리 호환성의 중요성은 두 가지 관점에서 살펴볼 수 있습니다. 단일의 특정 목적을 위해 소프트웨어를 개발하는 경우 환경 변화에 대응하기 위해 대규모 코드베이스를 다시 컴파일할 필요가 없습니다.

다른 관점에서 보면, 특정 운영 체제에서 테스트된 상용 소프트웨어를 사용하고 있을 수 있으며, 이 소프트웨어는 해당 운영 체제의 변형(예: 다른 Linux 배포판)에서 작동하거나 작동하지 않을 수 있습니다. 코드를 다시 컴파일할 수 없으며, 사용 중인 환경이 공급업체가 프로그램을 테스트하는 데 사용한 환경과 다를 수 있습니다.

 

재 컴파일 문제

재컴파일은 경우에 따라 실행 가능한 솔루션이지만, 여러 환경에 맞춰야 하는 복잡한 애플리케이션을 처리할 때는 실용적이지 않을 수 있습니다. 이러한 시나리오에서 반복적인 재컴파일은 시간이 많이 걸리고 까다로울 수 있으며, 전문 기술이 필요한 경우가 많습니다.

다른 환경에서 바이너리 호환성이 부족한 경우 몇 가지 문제가 발생할 수 있습니다. 이러한 문제에는 다른 위치에 있는 파일이나 약간 다른 라이브러리가 포함될 수 있습니다. 따라서 새 환경에서 새 바이너리가 올바르게 작동하도록 하려면 상당한 시간과 노력, 전문 지식이 필요합니다.

특히 기본 아키텍처나 플랫폼이 변경된 경우 재컴파일을 하면 원래 버전에는 없던 새로운 버그나 오류가 발생할 수도 있습니다. 또한 재컴파일은 특히 자체 개발한 맞춤형 소프트웨어 솔루션을 사용하는 조직의 경우 비용이 많이 들 수 있습니다.

 

바이너리 호환성으로 재컴파일할 필요가 없습니다.

대체 환경이 바이너리 호환이 가능하다는 것을 알면 자체 개발했든 공급업체에서 제공했든 컴파일된 실행 파일이 대상 환경에서 원활하게 작동할 것이라는 확신을 가질 수 있습니다. 바이너리 호환성은 종속 코드를 수정하지 않고도 소프트웨어 업데이트를 가능하게 함으로써 재컴파일의 필요성을 줄여줍니다. 따라서 귀중한 시간과 리소스를 절약하고 소프트웨어 업데이트 프로세스를 간소화할 수 있습니다.

그러나 다양한 상황에서 바이너리 호환성에 대한 의구심이 생길 수 있습니다. 예를 들어, 새로운 버전의 운영 체제가 출시되면 기존 애플리케이션이 계속 원활하게 작동할지 여부에 대한 의문이 제기되어 해당 OS가 바이너리 호환이 가능한지 여부에 대한 의문이 생길 수 있습니다.

마찬가지로 조직에서 선호하는 OS가 단종 단계에 도달했다고 가정해 보겠습니다, CentOS 8. 이 경우, 대체 바이너리 호환 가능한 대체 바이너리 호환 OS 를 사용할 수 있어야 재컴파일이나 애플리케이션 전환이 필요하지 않습니다. 따라서 조직의 OS 전략을 검토할 때 바이너리 호환성을 고려하는 것이 필수적입니다.

 

Linux에서의 바이너리 호환성 이야기

Linux는 무료로 제공되는 오픈 소스 운영 체제로, 배포판 또는 "배포판"으로 알려진 여러 가지 버전 또는 배포판으로 존재합니다. 각 Linux 배포판은 특정 용도로 사용되는 경우가 많습니다. 예를 들어, Tails는 보안 및 개인 정보 보호에 중점을 두고 있습니다. 칼리 Linux 는 침투 테스트를 위해 명시적으로 설계되었습니다.

각 배포판에는 고유한 기능 및 구성이 포함되어 있으므로 개발자에게 호환성 문제가 발생할 수 있습니다. 한 배포판용으로 설계된 소프트웨어가 다른 배포판에서 원활하게 실행되려면 추가 수정이나 구성이 필요할 수 있습니다.

Linux 배포판마다 환경이 크게 달라서 한 배포판에서 실행되는 패키지가 다른 배포판에서 작동하지 않을 수 있습니다. 잘 알려진 Linux 배포판인 Ubuntu에서 애플리케이션을 만들었다고 가정해 보겠습니다. 하지만 Red Hat이나 Fedora와 같은 다른 배포판에서 애플리케이션을 실행하려는 경우 시스템 라이브러리 또는 기타 종속성 부족으로 인해 어려움을 겪을 수 있습니다. 

운영 체제의 차이점 ABI (애플리케이션 바이너리 인터페이스)의 차이도 호환성 문제의 빈번한 원인입니다. ABI는 시스템의 다양한 구성 요소가 상호 작용하는 방식을 지정하며, ABI를 변경하면 다른 버전의 운영 체제에서 컴파일된 소프트웨어를 실행하려고 할 때 호환성 문제가 발생할 수 있습니다. 이러한 비호환성은 소프트웨어 개발자에게 심각한 장애물이 될 수 있으며, 다양한 배포판에서 애플리케이션을 운영할 수 있는 능력을 제한할 수 있습니다.

하지만 다음과 같은 경우에는 그렇지 않습니다. Linux 바이너리 호환성. 하나의 Linux 버전에서 빌드된 애플리케이션이 다른 버전에서도 작동할 수 있도록 보장하여 소프트웨어의 접근성을 확장하고 더 많은 사용자에게 도달 범위를 넓힐 수 있습니다. 이 요소는 다양한 Linux 배포판에서 애플리케이션의 이식성 및 접근성에 영향을 미칠 수 있으므로 매우 중요합니다. 이 문제를 극복하기 위해 개발자는 다음 사항을 고려해야 합니다. Linux 바이너리 호환성.

일부 Linux 배포판은 바이너리 호환성을 보장하며 수수료 할인 또는 무료와 같은 다른 혜택도 제공합니다. 예를 들면 다음과 같습니다, FreeBSD는 유닉스와 유사한 무료 오픈 소스 운영 체제로, Linux와의 바이너리 호환성을 옵션으로 제공하여 사용자가 수정되지 않은 Linux 바이너리를 설치 및 실행할 수 있도록 합니다.

 

LINUX 바이너리 호환성의 두 가지 측면

Linux 배포판의 바이너리 호환성은 두 가지 주요 방향에서 중요하다는 점에 유의하는 것이 중요합니다. 첫 번째 방향은 서로 다른 두 배포판 간의 바이너리 호환성과 관련이 있습니다. 예를 들어 Ubuntu는 본질적으로 데비안에서 파생되었지만 Ubuntu에 적용된 변경 사항으로 인해 데비안용으로 제작된 패키지가 반드시 Ubuntu에서 작동하지 않을 수 있습니다.

이와는 대조적으로 CentOS와 Oracle Linux는 모두 RHEL과 호환되는 애플리케이션 바이너리입니다. 즉, 애플리케이션이 RHEL용으로 개발되고 인증된 경우 CentOS 및 Oracle Linux에서도 작동할 준비가 된 것입니다.

하지만 두 Linux 배포판이 바이너리 호환성이 부족하더라도 Linux 배포판은 Linux Kernel 및 기타 여러 구성 요소를 공유하므로 특정 패키지는 두 배포판 모두에서 작동할 수 있습니다.

고려해야 할 또 다른 요소는 한 배포 버전에서 다음 배포 버전으로의 바이너리 호환성입니다. 일반적으로 일반적인 Linux 배포판의 버전 9는 버전 8과 바이너리 호환성을 유지할 것으로 예상됩니다. 그러나 어느 시점에서 배포판에 향상된 기능을 통합하기 위해 바이너리 호환성이 손상될 수 있습니다.

애플리케이션 호환성을 확인하려면 공급업체 또는 커뮤니티에서 제공하는 릴리스 지침을 참조하는 것이 좋습니다. 이 지침은 애플리케이션 호환성 검토가 필요한지 또는 업그레이드할 버전이 바이너리 호환이 가능한지 여부에 대해 필요한 확신을 제공합니다. 후자의 경우 운영 체제를 업그레이드해도 애플리케이션의 정상적인 기능에 지장을 주지 않습니다.

 

사례: 센토스와 렐의 이야기

애플리케이션은 일반적으로 특정 Linux 배포판에서만 작동하도록 테스트되고 보장됩니다. 상용 소프트웨어 공급업체는 높은 가격이 책정되는 Red Hat Enterprise Linux(RHEL) 또는 Oracle Linux와 같은 엔터프라이즈급 Linux 배포판에 집중하는 경향이 있습니다. 개발자는 Linux 배포판에 상당한 금액을 지불할 의향이 있는 사람들이 자신의 소프트웨어에 대해서도 비용을 지불할 가능성이 높다고 가정하여 상용 배포판에서 소프트웨어를 테스트하고 인증할 수 있습니다.

그러나 일부 조직에서는 비용이나 종속성 등 여러 가지 이유로 엔터프라이즈 Linux 배포판을 채택하지 않을 수도 있습니다. 이러한 경우 CentOS와 같이 잘 알려진 예를 포함하여 바이너리 호환 Linux 배포판을 사용할 수 있습니다. 이러한 배포판은 엔터프라이즈급 Linux 배포판과 바이너리 호환성을 제공하여 사용자가 비용을 지불하지 않고도 이러한 배포판용으로 설계된 애플리케이션을 실행할 수 있도록 하는 것을 목표로 합니다.

RHEL과의 바이너리 호환성을 달성하기 위한 한 가지 옵션은 엔터프라이즈 중심의 모기업과 완전한 바이너리 호환성을 약속하는 Red Hat에서 출시한 무료 배포판인 CentOS입니다. 즉, 엔터프라이즈 애플리케이션이 RHEL용으로 개발되었다면 CentOS에서도 실행될 수 있습니다. 그러나 2020년 12월, Red Hat은 CentOS의 Stable 릴리스 제공을 중단하여 많은 사용자가 우려를 표했습니다. 이 문제를 해결하기 위해 TuxCare 는 CentOS의 Lifecycle을 최소 4년 더 연장하여 새로운 취약점에 대한 보안 패치를 제공했습니다.

 

바이너리 호환성은 도움이 되지만, 있다고 가정하지 마세요.

포함된 패키지의 변경 가능 범위에 제한이 있더라도 Linux 배포판의 바이너리 호환성을 유지하는 것은 그 자체로 가치 있는 목표입니다.

반면에 Linux 배포판은 일반적으로 바이너리 호환이 되지 않습니다. Linux 배포의 복잡성을 고려할 때 바이너리 호환성은 자체 코드를 빌드하든 공급업체에서 구입하든 관계없이 반드시 알고 있어야 하는 사항입니다.

그럼에도 불구하고 일부 배포판은 바이너리 호환이 가능하므로 기업용 배포판보다 비용을 절감하고자 하거나 다른 배포판으로 전환해야 하는 경우 선택의 폭이 넓습니다.

 

마무리

바이너리 호환성은 개발자가 수정 없이 다양한 플랫폼에서 작동할 수 있는 소프트웨어를 만들 수 있게 해주므로 소프트웨어 개발에 필수적입니다. 이 기능은 개발자에게 상당한 이점을 제공하여 더 많은 사용자층이 소프트웨어를 사용할 수 있도록 합니다. 그러나 다양한 아키텍처와 운영 체제를 다루는 Linux에서는 바이너리 호환성을 달성하는 것이 어려울 수 있습니다.

결과적으로 개발자는 각 Linux 배포판마다 애플리케이션의 별도 버전을 만들어야 합니다. 이 프로세스는 시간이 많이 걸리고 비효율적이며, 사용자가 애플리케이션을 실행할 특정 배포판을 선택해야 하므로 애플리케이션의 접근성이 제한됩니다.

요약
바이너리 호환성이란 무엇이며 Linux 배포판에서 바이너리 호환성이란 어떤 의미인가요?
기사 이름
바이너리 호환성이란 무엇이며 Linux 배포판에서 바이너리 호환성이란 어떤 의미인가요?
설명
바이너리 호환성과 그에 따른 문제를 포함하여 Linux 애플리케이션에 대한 바이너리 호환성의 중요성에 대해 알아보세요.
작성자
게시자 이름
TuxCare
게시자 로고

Kernel 재부팅, 시스템 다운타임 또는 예정된 유지 보수 기간 없이 취약성 패치를 자동화하고 싶으신가요?

TuxCare로 라이브 패치에 대해 알아보기

TuxCare 게스트 작가 되기

시작하기

메일

가입

4,500

Linux & 오픈 소스
전문가!


뉴스레터 구독하기