9.4. 트랜잭션 내역 작업
yum history 명령을 사용하면 사용자가 yum 트랜잭션의 타임라인, 날짜 및 시간, 이러한 트랜잭션이 성공 또는 중단되었는지 여부, 트랜잭션 간에 RPM 데이터베이스가 변경되었는지 여부를 확인할 수 있습니다. 또한 이 명령을 사용하여 특정 트랜잭션을 취소하거나 다시 실행할 수 있습니다. 모든 기록 데이터는 /var/lib/yum/history/ 디렉터리 의 기록 DB에 저장됩니다.
9.4.1. 트랜잭션 나열 링크 복사링크가 클립보드에 복사되었습니다!
20개의 최근 트랜잭션 목록을 root 로 표시하려면 추가 인수 없이 yum history 를 실행하거나 쉘 프롬프트에서 다음을 입력합니다.
yum history list
모든 트랜잭션을 표시하려면 all 키워드를 추가합니다.
yum history list all
지정된 범위의 트랜잭션만 표시하려면 다음 양식에서 명령을 사용합니다.
yum history list start_id..end_id
특정 패키지 또는 패키지와 관련된 트랜잭션만 나열할 수도 있습니다. 이렇게 하려면 패키지 이름 또는 glob 표현식과 함께 명령을 사용합니다.
yum history list glob_expression…
예 9.19. 가장 오래된 5개의 트랜잭션 나열
yum history list 의 출력에서 가장 최근 트랜잭션은 목록 상단에 표시됩니다. 기록 데이터 베이스에 저장된 5개의 가장 오래된 트랜잭션에 대한 정보를 표시하려면 다음을 입력합니다.
~]# yum history list 1..5
Loaded plugins: langpacks, product-id, subscription-manager
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
5 | User <user> | 2013-07-29 15:33 | Install | 1
4 | User <user> | 2013-07-21 15:10 | Install | 1
3 | User <user> | 2013-07-16 15:27 | I, U | 73
2 | System <unset> | 2013-07-16 15:19 | Update | 1
1 | System <unset> | 2013-07-16 14:38 | Install | 1106
history list
모든 형태의 yum history list 명령은 다음 열로 구성된 각 행이 있는 테이블 형식 출력을 생성합니다.
-
특정트랜잭션을 식별하는 정수 값입니다.An integer value that identifies a particular transaction. -
login
사용자- 트랜잭션을 시작하는 데 로그인 세션이 사용된 사용자의 이름입니다. 이 정보는 일반적으로전체 이름 <username>형식으로 제공됩니다. 사용자가 발행하지 않은 트랜잭션(예: 자동 시스템 업데이트)의 경우시스템 <unset>이 대신 사용됩니다. -
날짜 및 시간- 트랜잭션이 실행된 날짜 및 시간입니다. -
작업 - 표 9.1. “Action(s) 필드의 가능한 값” 에설명된 대로 트랜잭션 중에 수행된 작업 목록입니다. -
변경된사항 - 트랜잭션의 영향을 받는 패키지 수, 표 9.2. “대체 필드의 가능한 값” 에 설명된 대로 추가 정보가 올 수 있습니다.
| 동작 | 약어 | 설명 |
|---|---|---|
|
|
| 하나 이상의 패키지가 이전 버전으로 다운그레이드되었습니다. |
|
|
| 하나 이상의 패키지가 제거되었습니다. |
|
|
| 새 패키지가 하나 이상 설치되어 있어야 합니다. |
|
|
| 하나 이상의 패키지가 더 이상 사용되지 않음으로 표시되었습니다. |
|
|
| 하나 이상의 패키지가 다시 설치되어 있어야 합니다. |
|
|
| 하나 이상의 패키지가 최신 버전으로 업데이트되었습니다. |
| symbol | 설명 |
|---|---|
|
|
트랜잭션이 완료되기 전에 |
|
|
트랜잭션이 완료되면 |
|
| 트랜잭션이 완료되지 못했습니다. |
|
| 트랜잭션이 성공적으로 완료되었지만 yum은 0이 아닌 종료 코드를 반환했습니다. |
|
| 트랜잭션이 성공적으로 완료되었지만 오류 또는 경고가 표시되었습니다. |
|
|
트랜잭션이 성공적으로 완료되었지만 |
|
|
트랜잭션이 성공적으로 완료되었지만 |
현재 사용된 rpmdb 또는 yumdb 데이터베이스와 설치된 패키지의 rpmdb 또는 yumdb 데이터베이스 내용을 동기화하려면 다음을 입력합니다.
yum history sync
현재 사용된 기록 데이터베이스에 대한 몇 가지 전체 통계를 표시하려면 다음 명령을 사용합니다.
yum history stats
예 9.20. yum 기록 통계의 출력 예
~]# yum history stats
Loaded plugins: langpacks, product-id, subscription-manager
File : //var/lib/yum/history/history-2012-08-15.sqlite
Size : 2,766,848
Transactions: 41
Begin time : Wed Aug 15 16:18:25 2012
End time : Wed Feb 27 14:52:30 2013
Counts :
NEVRAC : 2,204
NEVRA : 2,204
NA : 1,759
NEVR : 2,204
rpm DB : 2,204
yum DB : 2,204
history stats
또한 yum을 사용하면 모든 과거의 트랜잭션에 대한 요약을 표시할 수 있습니다. 이렇게 하려면 root 로 다음 형태로 명령을 실행합니다.
yum history summary
지정된 범위의 트랜잭션만 표시하려면 다음을 입력합니다.
yum history summary start_id..end_id
yum history list 명령과 마찬가지로 패키지 이름 또는 glob 표현식을 제공하여 특정 패키지 또는 패키지와 관련된 트랜잭션 요약을 표시할 수도 있습니다.
yum history summary glob_expression…
예 9.21. 최신 5개의 트랜잭션 요약
~]# yum history summary 1..5
Loaded plugins: langpacks, product-id, subscription-manager
Login user | Time | Action(s) | Altered
-------------------------------------------------------------------------------
Jaromir ... <jhradilek> | Last day | Install | 1
Jaromir ... <jhradilek> | Last week | Install | 1
Jaromir ... <jhradilek> | Last 2 weeks | I, U | 73
System <unset> | Last 2 weeks | I, U | 1107
history summary
모든 형태의 yum history summary 명령은 yum history list 의 출력과 유사한 단순화된 테이블 출력을 생성합니다.
위에 표시된 대로 yum history list 및 yum history summary 은 모두 트랜잭션을 지향하지만 지정된 패키지 또는 패키지와 관련된 트랜잭션만 표시할 수 있지만 패키지 버전과 같은 중요한 세부 사항은 표시되지 않습니다. 패키지 관점에서 트랜잭션을 나열하려면 root 로 다음 명령을 실행합니다.
yum history package-list glob_expression…
예 9.22. 패키지 기록 추적
예를 들어 subscription-manager 및 관련 패키지의 기록을 추적하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# yum history package-list subscription-manager\*
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
ID | Action(s) | Package
-------------------------------------------------------------------------------
2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE
2 | Update | 1.15.9-15.el7.x86_64 EE
2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE
2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE
2 | Update | 1.15.9-15.el7.x86_64 EE
2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE
1 | Install | subscription-manager-1.13.22-1.el7.x86_64
1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64
1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64
history package-list
이 예에서는 초기 시스템 설치 중에 3개의 패키지( subscription-manager , subscription-manager -firstboot , subscription-manager-firstboot, subscription-manager-gui )가 설치되었습니다. 세 번째 트랜잭션에서는 이러한 패키지가 1.10.11 버전에서 1.10.17 버전으로 업데이트되었습니다.
9.4.2. 트랜잭션 검사 링크 복사링크가 클립보드에 복사되었습니다!
단일 트랜잭션 요약을 root 로 표시하려면 다음 형식으로 yum history summary 명령을 사용합니다.
yum history summary id
여기서 id 는 트랜잭션의 ID입니다.
특정 트랜잭션 또는 트랜잭션을 보다 자세히 검사하려면 root 로 다음 명령을 실행하십시오.
yum history info id…
id 인수는 선택 사항이며 생략하면 yum은 마지막 트랜잭션을 자동으로 사용합니다. 둘 이상의 트랜잭션을 지정할 때 범위를 사용할 수도 있습니다.
yum history info start_id..end_id
예 9.23. yum history info의 출력 예
다음은 두 개의 트랜잭션에 대한 샘플 출력이며 각각 하나의 새 패키지를 설치합니다.
~]# yum history info 4..5
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Transaction ID : 4..5
Begin time : Mon Dec 7 16:51:07 2015
Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9
End time : 17:18:49 2015 (27 minutes)
End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5
User : Maxim Svistunov <msvistun>
Return-Code : Success
Command Line : install tigervnc-server.x86_64
Command Line : reinstall tigervnc-server
Transaction performed with:
Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms
Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms
Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpms
Packages Altered:
Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms
history info
트랜잭션 시 사용된 구성 옵션 또는 리포지토리 및 특정 패키지가 설치된 이유와 같은 추가 정보를 볼 수도 있습니다. 특정 트랜잭션에 사용할 수 있는 추가 정보를 확인하려면 루트로 쉘 프롬프트에 다음을 입력합니다.
yum history addon-info id
yum history info 와 유사하게 id 가 제공되지 않으면 yum은 latest 트랜잭션을 자동으로 사용합니다. 최신 트랜잭션을 참조하는 또 다른 방법은 마지막 키워드를 사용하는 것입니다.
yum history addon-info last
예 9.24. yum history addon-info의 출력 예
기록의 네 번째 트랜잭션의 경우 yum history addon-info 명령은 다음 출력을 제공합니다.
~]# yum history addon-info 4
Loaded plugins: langpacks, product-id, subscription-manager
Transaction ID: 4
Available additional history information:
config-main
config-repos
saved_tx
history addon-info
yum history addon-info 명령의 출력에서 다음 세 가지 유형의 정보를 사용할 수 있습니다.
-
config-main- 트랜잭션 중에 사용 중인 글로벌 yum 옵션. 글로벌 옵션을 변경하는 방법에 대한 자세한 내용은 9.5.1절. “[main] 옵션 설정” 을 참조하십시오. -
config-repos- 개별 yum 리포지토리에 대한 옵션 개별 리포지토리의 옵션을 변경하는 방법에 대한 자세한 내용은 9.5.2절. “[repository] 옵션 설정” 을 참조하십시오. -
saved_tx- 다른 시스템에서 트랜잭션을 반복하기 위해yum load-hiera 명령에서 사용할 수 있는 데이터입니다(아래 참조).
선택한 유형의 추가 정보를 표시하려면 root 로 다음 명령을 실행합니다.
yum history addon-info id information
9.4.3. 트랜잭션 복원 및 종료 링크 복사링크가 클립보드에 복사되었습니다!
트랜잭션 내역을 검토하는 것 외에도 yum history 명령은 선택한 트랜잭션을 되돌리거나 반복할 수 있는 수단을 제공합니다. 트랜잭션을 되돌리려면 쉘 프롬프트에서 root 로 다음을 입력합니다.
yum history undo id
특정 트랜잭션을 root 로 반복하려면 다음 명령을 실행합니다.
yum history redo id
두 명령 모두 마지막 키워드를 수락하여 최신 트랜잭션을 취소하거나 반복합니다.
yum history undo 및 yum history 명령을 둘 다 트랜잭션 중에 수행된 단계를 되돌리거나 반복합니다. 트랜잭션이 새 패키지를 설치한 경우 yum history undo 명령에서 해당 패키지를 제거하고 트랜잭션이 패키지를 제거한 경우 명령이 다시 설치합니다. 또한 이 명령은 이러한 이전 패키지를 계속 사용할 수 있는 경우 업데이트된 모든 패키지를 이전 버전으로 다운그레이드하려고 합니다.
동일한 시스템을 여러 개 관리할 때 yum을 사용하면 해당 시스템에서 트랜잭션을 수행하여 트랜잭션 세부 사항을 파일에 저장하고 테스트 기간 후에 나머지 시스템에서 동일한 트랜잭션을 반복할 수 있습니다. 트랜잭션 세부 정보를 파일에 저장하려면 쉘 프롬프트에서 root 로 다음을 입력합니다.
yum -q history addon-info id saved_tx > file_name
이 파일을 대상 시스템에 복사하면 root 로 다음 명령을 사용하여 트랜잭션을 반복할 수 있습니다.
yum load-transaction file_name
누락된 패키지 또는 rpmdb 버전 을 무시하도록 로드 비트랜젝션 을 구성할 수 있습니다. 이러한 구성 옵션에 대한 자세한 내용은 yum.conf(5) 매뉴얼 페이지를 참조하십시오.
9.4.4. 새 트랜잭션 내역 시작 링크 복사링크가 클립보드에 복사되었습니다!
yum은 트랜잭션 기록을 단일 SQLite 데이터베이스 파일에 저장합니다. 새 트랜잭션 기록을 시작하려면 root 로 다음 명령을 실행합니다.
yum history new
그러면 /var/lib/yum/history/ 디렉토리에 비어 있는 새 데이터베이스 파일이 생성됩니다. 이전 트랜잭션 기록은 유지되지만 최신 데이터베이스 파일이 디렉터리에 있는 동안에는 액세스할 수 없습니다.