[아치리눅스] 패키지 업그레이드는 어떻게 진행될까

김강산·2023년 5월 13일
0

아치리눅스의 큰 특징 중 하나라면, 패키지가 롤링 릴리스된다는 점입니다. 즉, 새로운 버전의 패키지가 출시되는 족족 미러(서버)에 업로드되는 것입니다. 그렇기 때문에, 시스템 관리자(유저)에게는 수동으로 패키지를 빈번히 업그레이드할 의무가 요구됩니다.

패키지 업그레이드에는 다음 커맨드가 사용됩니다.

# pacman -Syu

위의 커맨드는 다음 두 커맨드(각각 서버와의 동기화, 패키지 업그레이드)를 순차적으로 입력한 것과 동등합니다.

# pacman -Sy
# pacman -Su

각각의 커맨드들이 시스템에 어떤 영향을 주는지 섹션 2와 3에서 알아봅시다.

1. 데이터베이스

"로컬 데이터베이스"와 "리포지토리 데이터베이스"라는 용어는 설명의 편의를 위해 임의로 붙인 명칭임을 밝힙니다.

1.1 로컬 데이터베이스

"/var/lib/pacman/local/" 디렉토리 아래에는 시스템에 설치되어있는 패키지에 대응하는 서브디렉토리들이 존재합니다. pacman 커맨드를 통해 표시되는 설치된 패키지 일람과 비교해봅시다(버전표기에 미묘한 차이가 있어, sed로 조정하였읍니다).

단 하나의 파일을 제외하면 모든것이 일치합니다.

이 서브디렉토리 안에는 desc라는 파일이 존재하여 해당 패키지의 버전정보를 내포합니다. 아래 그림은 vim에 해당하는 서브디렉토리의 desc로부터 버전정보를 명시적으로 확인하는 예시입니다.

1.2 리포지토리 데이터베이스

미러에 존재하는 모든 패키지의 버전 정보는 "/var/lib/pacman/sync/" 디렉토리에서 찾아볼 수 있읍니다. gzip 형식으로 압축되어 있으며, 이를 해동하면 1.1절에서 확인한 것과 비슷한 서브디렉토리가 전개됩니다. 물론, 이 서브디렉토리 밑에도 desc가 버전정보를 내포하고 있읍니다.

2. 동기화

다음 커맨드의 영향을 알아봅시다.

# pacman -Sy


리포지토리 데이터베이스의 타임스탬프가 갱신되었읍니다. 또한, 파일의 사이즈도 달라진 것을 알 수 있읍니다. 미러로부터 최신의 데이터베이스가 다운로드된 것입니다.

3. 업그레이드

이번에는 업그레이드입니다.

# pacman -Su


"2. 동기화" 에서 갱신된 리포지토리 데이터베이스의 내용, 특히 버전정보를 토대로, 시스템상의 패키지가 업그레이드 되어, 그 결과가 로컬 데이터베이스에 반영되었읍니다.

4. 결론

아치리눅스에서의 패키지 업그레이드는 다음과 같은 수순으로 진행된다고 유추할 수 있읍니다.

  1. 미러로부터 리포지토리 데이터베이스를 다운로드 (서버와의 동기화)
  2. 로컬 데이터베이스를 리포지토리 데이터베이스와 비교
  3. 상대적으로 낮은 버전의 패키지를 찾아내어 업그레이드
profile
주로 리눅스 관련된 글을 포스팅합니다.

0개의 댓글