LSB

Linux Standard Base(LSB)는 Linux 배포판 사이에서 애플리케이션의 바이너리 호환성을 높이려는 규격이다. 실행 파일 형식, 라이브러리 인터페이스, 명령과 파일 시스템 배치 등을 다룬다. POSIX가 정의하는 소스 수준 인터페이스와 관련이 있지만 같은 규격은 아니다.

규격의 범위와 실제 실행 환경

공식 아카이브의 LSB 5.0은 2015년 6월 3일에 발표됐다. 오래된 배포 문서에서 LSB 지원을 언급하더라도 현재 사용하는 배포판이 필요한 규격과 라이브러리를 제공하는지는 별도로 확인해야 한다. 서로 다른 CPU 아키텍처의 실행 파일까지 호환시켜 주는 규격도 아니다.

lsb_release가 설치되어 있거나 정상 실행된다는 사실만으로 시스템 전체의 LSB 호환성을 입증할 수는 없다. 배포판 정보를 알아보려는 목적이라면 다음처럼 확인한다.

cat /etc/os-release
uname -m
uname -r

첫 번째는 배포판 식별 정보, 두 번째는 하드웨어 아키텍처, 세 번째는 실행 중인 커널 릴리스다. 서로 다른 정보이므로 하나만 기록하면 실행 환경을 충분히 설명하기 어렵다.

실행 파일이 안 돌아갈 때

검사 대상이 ./app이라면 file ./app으로 형식과 아키텍처를 확인한다. ELF 도구가 설치된 환경에서는 readelf -l ./app으로 요구하는 인터프리터를, readelf -d ./app으로 동적 의존성 정보를 볼 수 있다.

필요한 로더나 libc가 없으면 파일이 실제로 존재해도 실행이 실패할 수 있다. 이때는 LSB라는 이름보다 실제 로더 경로, libc 종류·버전, 필요한 공유 라이브러리를 대조하는 편이 문제를 좁히는 데 도움이 된다. 신뢰하지 않는 바이너리를 조사하려고 직접 실행하지 않는다.

자료: LSB 5.0 규격 아카이브, os-release