아치리눅스의 큰 특징 중 하나라면, 패키지가 롤링 릴리스된다는 점입니다. 즉, 새로운 버전의 패키지가 출시되는 족족 미러(서버)에 업로드되는 것입니다. 그렇기 때문에, 시스템 관리자(유저)에게는 수동으로 패키지를 빈번히 업그레이드할 의무가 요구됩니다.
패키지 업그레이드에는 다음 커맨드가 사용됩니다.
# pacman -Syu
위의 커맨드는 다음 두 커맨드(각각 서버와의 동기화, 패키지 업그레이드)를 순차적으로 입력한 것과 동등합니다.
# pacman -Sy
# pacman -Su
각각의 커맨드들이 시스템에 어떤 영향을 주는지 섹션 2와 3에서 알아봅시다.
"로컬 데이터베이스"와 "리포지토리 데이터베이스"라는 용어는 설명의 편의를 위해 임의로 붙인 명칭임을 밝힙니다.
"/var/lib/pacman/local/" 디렉토리 아래에는 시스템에 설치되어있는 패키지에 대응하는 서브디렉토리들이 존재합니다. pacman 커맨드를 통해 표시되는 설치된 패키지 일람과 비교해봅시다(버전표기에 미묘한 차이가 있어, sed로 조정하였읍니다).
단 하나의 파일을 제외하면 모든것이 일치합니다.
이 서브디렉토리 안에는 desc라는 파일이 존재하여 해당 패키지의 버전정보를 내포합니다. 아래 그림은 vim에 해당하는 서브디렉토리의 desc로부터 버전정보를 명시적으로 확인하는 예시입니다.
미러에 존재하는 모든 패키지의 버전 정보는 "/var/lib/pacman/sync/" 디렉토리에서 찾아볼 수 있읍니다. gzip 형식으로 압축되어 있으며, 이를 해동하면 1.1절에서 확인한 것과 비슷한 서브디렉토리가 전개됩니다. 물론, 이 서브디렉토리 밑에도 desc가 버전정보를 내포하고 있읍니다.
다음 커맨드의 영향을 알아봅시다.
# pacman -Sy
리포지토리 데이터베이스의 타임스탬프가 갱신되었읍니다. 또한, 파일의 사이즈도 달라진 것을 알 수 있읍니다. 미러로부터 최신의 데이터베이스가 다운로드된 것입니다.
이번에는 업그레이드입니다.
# pacman -Su
"2. 동기화" 에서 갱신된 리포지토리 데이터베이스의 내용, 특히 버전정보를 토대로, 시스템상의 패키지가 업그레이드 되어, 그 결과가 로컬 데이터베이스에 반영되었읍니다.
아치리눅스에서의 패키지 업그레이드는 다음과 같은 수순으로 진행된다고 유추할 수 있읍니다.