yum 의 명령어들은 search, info, list 처럼 정보를 조회하고 패키지와 시스템이 변경되지 않는 명령어와 install, remove, reinstall, update 같이 패키지와 시스템이 변경되는 명령으로 구분할 수 있다.

후자처럼 패키지가 변경되는 명령을 실행한 것을 데이타베이스처럼 트랜잭션이라고 부르며 개별 트랜잭션마다 식별하기 위한 유일한 숫자가 부여된다.

 RHEL/CentOS 6.0 에 탑재된 yum 3.2 이상 버전부터는 이렇게 패키지가 변경된 트랜잭션 이력을 확인하고 예전 트랜잭션으로 롤백을 할 수 있는 기능이 포함되었으므로 더욱 편리하게 패키지와 시스템을 관리할 수 있다.

 

전 절에서 별도로 yum 저장소를 제공하지 않는 패키지라도 rpm 으로 설치하지 말고 yum localinstall 을 사용하라고 권장한 이유는 yum 으로 설치해야 트랜잭션 관리 기능을 사용할 수 있기 때문이다. 

 

그러면 이번 절에서는 yum 의 가장 강력한 패키지 관리 기능중 하나인 트랜잭션 이력 확인과 롤백 기능에 대해서 알아 보자.

트랜잭션과 관련된 모든 작업은 history 명령을 기반으로 하고 있으며 하위 명령을 통해 수행할 작업을 지정할 수 있다.

하위 명령은 info, list ,packages-list, summary, addon-info, redo, undo, rollback, new 이며 명시하지 않으면 기본 하위 명령은 list 가 된다.

트랜잭션 목록 보기

"yum history list" 명령으로 yum 의 전체 트랜잭션 이력을 볼 수 있다. 이력은 가장 최근의 작업이 먼저 표시되며 트랜잭션 ID와 수행자, 수행시간, 수행한 작업등이 표시된다. 

총 14번의 트랜잭션이 있었고 1번은 리눅스 설치로 인해 630 개의 패키지가 설치되었다. 2번은 설치후 yum update 명령어로로 전체 시스템을 업데이트한 결과이다. 124개의 패키지가 설치/갱신되었고 3번은1의 패키지가 설치되었음을 알수 있다.

 

이력에 표시되는 모든 Action 항목은 다음 표에 있으며 여러 개의 Action 이 있었을 경우 I,U 같이 축약어로 표시된다.

Altered 필드는 변경된 패키지의 숫자와 변경 내역에 대한 기호가 표시되며 각 기호의 의미는 다음과 같다.

 

자세한 정보 보기

"history info ID" 명령어로 자세한 작업 이력을 확인할 수 있으며 ID 는 트랜잭션 이력에서 ID 필드에 표시되는 숫자를 입력하면 된다.  독자들도 사용하고 있는 리눅스 시스템의 트랜잭션 목록에서 상세 작업 이력을 확인해 보자. 다음은 필자의 리눅스에서 "yum history info 4" 명령으로 4번 트랜잭션의 이력을 확인한 결과이다.

실행 시간, 소요 시간, 실행 결과와 작업에 사용된 rpm, yum 과 yum 플러그인 버전를 확인할 수 있으며 Command Line 항목을 통해 수행한 명령어를 확인할 수 있다. "install httpd -y" 를 실행했으며 httpd 가 의존하는 패키지 4개가 의존성 처리를 위해 설치(Dep-Install)되었으므로 httpd 를 포함하여 총 5개의 패키지가 설치되었음을 알 수 있다.

트랜잭션 되돌하기

"history undo ID" 명령어로 특정 트랜잭션을 되돌릴 수 있다. 되돌리기 작업은 수행한 트랜잭션을 이전 상태로 되돌리는 것이므로 트랜잭션이 패키지 설치라면 해당 트랜잭션에서 설치된 패키지는 삭제되고 트랜잭션이 패키지 삭제라면 삭제한 패키지는 설치된다. 되돌리기도 새로운 트랜잭션이므로 성공적으로 종료되었을 경우 별도의 트랜잭션 ID 를 갖게 되므로 전체 트랜잭션 ID 는 1 이 증가된다. 독자들도 수행한 트랜잭션중에 하나를 골라서 되돌리기 작업을 수행해 보자. 다음은 "yum history undo 4" 로 httpd 를 설치한 트랜잭션을 되돌리는 예제이다.

httpd 설치를 되돌리는 작업이므로 httpd를 삭제하게 되며 httpd가 의존하여 같이 설치된(Dep-Install) 4개의 패키지도 삭제되며 이에 따라 http와 4개의 패키지에 의존하는 모든 패키지들도 같이 삭제된다. 

y 를 입력하면 삭제 작업이 진행되며 정상적으로 완료가 되었다면 다시 "yum history list" 명령을 내려보면 트랜잭션 ID가 하나 증가한 것을 확인할 수 있다.

최초에 확인한 트랜잭션 목록이 14번까지 였으므로 되돌리기 작업은 새로운 트랜잭션인 15번으로 수행됐으며 12개의 패키지가 삭제된 것을 알 수 있다.

되살리기

"yum history redo ID" 명령어로 특정 트랜잭션을 되살릴 수 있다. 위에서 4번 트랜잭션으로 5개가 설치되고 15번 되돌리기 트랜잭션으로 삭제되었다. 이제 4번 트랜잭션에서 설치한 패키지를 재설치하려면 "yum history redo 4" 명령어로 4번 트랜잭션을 되살릴 수 있다. 이 작업은 15번 트랜잭션을 되돌리는 "yum history undo 15" 번과 비슷한 결과를 가져오게 된다.

 

마치며

yum 은 RHEL 기반의 리눅스 배포판에서 패키지를 관리하기 위한 프로그램으로 리눅스 관리자라면 자유롭게 다룰수 있어야 하는 중요한 프로그램으로 뒷 부분에서 설치할 각종 인프라 서버와 서드 파티 제품을 설치하기 위해서도 필요한 프로그램이니 잘 익혀 둘 필요가 있다.

rpm 은 yum 을 사용하면 직접 사용할 일이 거의 없는 프로그램이지만 yum 내부에서는 rpm 을 사용하므로 시스템 관리자라면 책에서 다룬 rpm 의 개요와 중요 명령어와 대략적인 사용법을 알아두면 리눅스 시스템 관리에 많은 도움이 되리라 믿는다.