주희아빠의 헝그리 라이딩

리눅스 메이저 버전에 따른 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 을 베이스로 하며 이 자체로도 충분히 유명 했는데 ubuntu 에 와서는 국내외 개인 사용자들이 가장 많이 애용하는 버전이 아닐까 싶습니다. 데스크탑용과 서버용으로 골고루 인기가 많습니다.

그외 Mint 리눅스로도 발전하였으며 각종 경량버전 등으로 확장되어 사용되고 있습니다.

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

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

$ sudo apt update && sudo apt upgrade -y


2. Redhat

기업용으로 많이 사용하는 Redhat 입니다. 관련 패미리 버전으로 Fedora ,CentOS, Oracle Linux 최근의 Rocky 가 있습니다. 패키지 배포로는 RPM 패키지를 기반으로 하며 이는 YUM 와 DNF 등으로 개선되었습니다.

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


3. Slackware

그외 과거에 유명했던 Slackware 는 유럽에서 인기 있다는 SUSE, 미니멀하고 민첩한 Arch 로 이어 지나 국내에서는 인기가 별로 없는 편입니다. 

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

 

복잡한 족보는 이쪽을 참고하시면 됩니다.. https://en.wikipedia.org/wiki/List_of_Linux_distributions

 

*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 라이브러리 구성 시스템들과는 분명 밀접한 관계가 있을 것으로 추측 합니다.

개인적으로 glibc 의 메인 버전을 업그레이드 했다가 성공한적은 없습니다. 그래서 보통은 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 제공 시스템 패키지들이 의존도 문제로 설치가 안될 수 있어 사전에 확인이 필수입니다.

 

* 마무리

최근에는 Container 환경으로 많이들 이사를 가서 os 에 대한 선택 중요도가 많이 줄어든 편입니다.

Redhat 10 이 나올때까지 내가 여기에서 일하고 있을까? 싶지만.. 항상 걱정은 현실로 다가오더라는...

 

 

반응형