주희아빠의 헝그리 라이딩

리눅스 메이저 버전에 따른 glibc 버전 비교 - Redhat, CentOS, Rocky, Amazon Linux 본문

나름 IT 이야기

리눅스 메이저 버전에 따른 glibc 버전 비교 - Redhat, CentOS, Rocky, Amazon Linux

도림천 버섯돌이 2023. 3. 25. 15:05

2023.3.

얼마전 Cent OS 가 지원 종료를 선언하였습니다.

개인들의 경우는 Ubuntu 를 많이 사용하겠지만 어느정도 규모가 있는 회사나 IDC 장비 등을 사용하는 곳이라면, 상용이며 정식 지원이 되는 Redhat 을 많이 이용하며 이와 함께 Redhat 과 완전히 동일한 소스로 동작하는 CentOS 를 부가적으로 함께 이용합니다.

기존 CentOS 를 사용하던 곳에서는 뭔가 대체 방법을 찾아야 했으며 이를 대신하는 리눅스로 Rocky Linux 가 나타나게 되었습니다.

이번 기회에 리눅스의 메인 버전에 따라 어떠한 차이점이 있는지 정리해 봅니다.

 

* 리눅스 간단 족보

리눅스의 메인 족보로 다음 3가지 패밀리가 있습니다.

1. Ubuntu

국내외 일반 사용자들이 가장 많이 사용하는 Ubuntu 입니다.

Debian 은 상당히 보수적으로 업그레이드 되기 때문에 매우 안정적인 운영을 요하거나 시스템 업그레이드를 귀찮아 하는 관리자에게 어울리는 배포판입니다. 한글로된 자료가 별로 없어서인지 근본 OS 임에도 국내에서는 많이 이용되지 않고 있습니다.

라즈베리파이에서 많이 사용하는 Rasbian 도 Debian 을 기반으로 합니다. 

Ubuntu 도 Debian 을 베이스로 하며 패키지 관리가 용이하고 버전업이 빠른편이라서 데스크탑용과 서버용으로 골고루 인기가 많습니다.

그외 Mint 리눅스로도 발전하였으며 각종 경량버전 등으로 확장되어 사용되고 있습니다. 제 넷북에도 경량 OS 버전인 Lubuntu 를 사용중에 있습니다.

 

키지 관리명령어로 apt 를 주로 사용하며 부가적으로 dpkg 커맨드도 사용합니다.

국내에서 특히 인기가 있는 이유로는 수도권 아파트를 업그레이드하기 위함이라는 근거없는 헛소문이..

$ sudo apt update && sudo apt upgrade -y


2. RedHat

기업용으로 많이 사용하는 Redhat 입니다.

관련 패미리 버전으로 Preview 격인 Fedora 버전, Redhat 의 클론 소스인 CentOS, Oracle DB 설치를 위해 사용하는 Oracle Linux 그리고 최근에 CentOS 를 대신하기 위한 Rocky 가 있으며 AWS 에서 사용하는 amazon linux 도 한 식구로 들어갑니다.

패키지 배포로는 RPM 패키지를 기반으로 하며 이는 YUM 와 DNF 등으로 개선되었습니다.

yum, rpm 명령이 되면 redhat 계열입니다.


3. Slackware, Arch..

리눅스 초창기의 근본 Slackware 라든가, 유럽에서 인기 있다는 SUSE, 미니멀하고 민첩한 Arch, Manjaro 등 여러가지 배포판들이 있지만 국내에서는 인기가 별로 없는 편입니다. 

slackpkg 나 sbopkg 명령이 있으면 slackware 라네요.^^

Arch 랑 Manjaro 는 pacman 이라는데 사실 안써봐서..

 

** 복잡한 족보는 이곳을 참고하십시오. 마치 원소기호표처럼 정리한 그림도 있는데 리눅스 배포판이 이렇게나 많다니 정말 놀랍습니다. 아쉽게도 2016년 이후 자료는 포함되지 않은 듯 합니다.
https://distrowatch.com/dwres.php?resource=family-tree

** 나무위키에 좀 더 직관적으로 정리되어 있군요. 
https://namu.wiki/w/Linux/%EB%B0%B0%ED%8F%AC%ED%8C%90

 

*SystemD 와 Init.D 비교

고전적인 유닉스의 족보를 논의할 때 가장 먼저 나오는 내용이 시스템의 시작 프로세스가 init 인가 systemd 인가를 비교하는 것입니다.

간단히 $ ps -ef 커맨드로 봤을 때 최초 1 번 프로세스가 init 인지 systemd 인지를 보면 됩니다. 시스템 기동/ 재시동 명령어 수행시 더이상 init 레벨과 service 를 사용하지 않고 systemctl 을 사용합니다.

init.d 는 redhat 6/ centos 6 이후로는 사용되지 않기 때문에 이후 언급되는 모든 리눅스들은 systemd 라고 생각하면 됩니다. 

이제는 리눅스의 성격을 비교하는 방법으로는 더이상은 등장하지 않을 듯 합니다.

 

* 리눅스 메인 버전의 차이

사용중인 리눅스의 메인 버전의 업그레이드를 몇차례 겪으니 궁금해 지긴 합니다. '리눅스 버전이 올라가면 대체 뭐가 바뀌는 것이지?' 다른 Update 는 잘만 하더만, 버전도 그냥 업그레이드하고 쓸 수는 없나?

리눅스 버전간의 가장 큰 차이점은 glibc 에 있습니다. 리눅스라는 것이 태생적으로 C 로 만들어졌기 때문에 OS 바닥에 깔린 C 라이브러리 구성 시스템들과는 분명 밀접한 관계가 있을 것으로 추측 합니다.

개인적으로 Redhat 에서는 glibc 의 메인 버전을 업그레이드 했다가 성공한적은 없습니다. 그래서 보통은 OS 업그레이드시에는 깔끔하게 기존 OS 삭제후 재설치를 진행하게 됩니다.

 

리눅스 버전을 판단할 때는 glibc 의 버전과 몇가지 힌트들을 보고 정의합니다.

이제는 perl 은 거의 사용되지 않고 python 의 경우  2.x 에서 3.x 로 올라오긴 했지만 이는 충분히 업그레이드 가능합니다.

커널 버전에 대해서는 특정 하드웨어에 관련되지 않는다면 오히려 더 덜 민감한 듯 합니다. 

aws 에서 많이 사용되는 amazon linux 역시 CentOS 의 친구입니다. glibc 버전이 비슷하며 내부적으로 설치되는 시스템 패키지들도 centos 를 닮아 있습니다. 정확히는 amazon linux 가 Fedora 를 기반으로 하고 있기 때문입니다.

* glibc 버전 확인 방법

-- glibc 버전 확인. 아래 명령어중 편한 것 사용.
$ getconf -a |grep glibc
GNU_LIBC_VERSION                   glibc 2.35

$ getconf GNU_LIBC_VERSION
glibc 2.35

$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35

-- 커널 버전 확인
$ uname -a

-- OS 버전 확인. redhat or ubuntu
$ cat /etc/redhat-release
$ cat /etc/os-release

 

* 각 메이저 버전별 glibc 와 glib2 버전 비교

- Redhat 6 군

  Redhat 6.4 CentOS 6.4  
glibc  2.12 2.12.1-1.107  
glib   2.22.5-7  
커널    2.6.32-358  

 

- Redhat 7 군

  Redhat 7.9 CentOS 7.9 amazon linux1
glibc  2.17-317 2.17-325 2.17-55.145
glib2 2.56 2.56.1-9 2.54.2-2
커널  3.10.0-1160 3.10.0-1160.59.1 3.14.48-33.39

 

- Redhat 8 군

  Redhat 8.8 CentOS 8.5 Rocky 8 amazon linux2
glibc 2.28-225 2.28-164 2.28-225 2.26-32
glib2 2.56.4-161 2.56.4-156 2.56 2.54.2-2
커널 4.18.0-477.10.1 4.18.0-348 4.18.0-477.10.1 4.14.133-113.105

 

- Redhat 9 군

  Redhat 9.2 Rocky 9 amazon linux 2023
glibc  2.34-60 2.34-60 2.34-52
glib2 2.68.4-6 2.68 2.74.7-688
커널  5.14.0-284.11.1 5.14.0-284.11.1 6.1.38-59.109

 

* 버전별 호환성

Redhat 7 = CentOS 7 과는 binary 레벨에서 호환됩니다. 즉, 돌고 있는 프로그램 그대로 떠다가 옮기면 잘 돌아갑니다.

동일하게 Redhat 8 = CentOS 8 = Rocky 8 끼리 Redhat 9 = Rocky 9 끼리 호환이 됩니다. 주의! 다른 버전끼리는 호환되지 않습니다.

사실 설치 진행화면을 보면 redhat 이나 centos 나 rocky 리눅스나 모두 동일하며 로고만 바뀌어 있는 것처럼 보입니다.

 

* Ubuntu 추가

사실 ubuntu 는 apt 로 패키지 & 종속성 관리가 더 편해서 그런지 glibc 관련 문제는 거의 겪어 보지 못했습니다. 게다가 심한 경우 20.04 LTS 에서 22.04 LTS 로 메이저 버전업을 시켜버리기도 하니....신기한 넘.

그럼에도 아쉬울까봐 ubuntu 도 버전을 찾아서 정리해 봅니다.

  18.04.6 LTS 20.04.6 LTS 22.04.4 LTS 24.04  LTS
glibc 2.27 2.31 2.35 2.39
커널 5.4.0-150 5.15.0-91 6.5.0-15 6.8.0-31

 

* 버전 업시 주의 사항

최근에는 어플리케이션중 C 소스로 운영되는 곳들이 별로 없을 것이라서 큰 문제는 없을 겁니다. 특히 python 이나 java 라면 os 의 버전과는 연관성이 많이 줄어듭니다.

java 의 경우 간혹  c 로 작성된 JNI 모듈을 가지고 있다면 새로 컴파일을 해야할 수도 있습니다. 

그외 오래된 3rd party 제공 시스템 패키지들이 의존도 문제로 설치가 안될 수 있어 사전에 확인이 필수입니다.

 

* 마무리

최근에는 Docker 같은 Container 환경으로 많이들 이사를 가서 OS 에 대한 선택 중요도가 많이 줄어들어 Alpine 같은 필요 최소로 구성된 Linux 배포판을 많이 이용합니다.

Redhat 10 이 나올때까지 제가 이 직장에서 일하고 있을까요? 

 

반응형