6.3. epoch, Scriptlets 및 Triggers
				이 섹션에서는 RMP 사양 파일의 고급 지시문을 나타내는 Epoch,Scriptlets 및 Triggers 에 대해 설명합니다.
			
				이러한 모든 지시문은 사양 파일뿐만 아니라 결과 RPM이 설치된 최종 시스템에도 영향을 미칩니다.
			
6.3.1. Epoch 지시문
					Epoch 지시문을 사용하면 버전 번호에 따라 가중치 종속 항목을 정의할 수 있습니다.
				
					이 지시문이 RPM 사양 파일에 나열되지 않으면 Epoch 지시문이 전혀 설정되지 않습니다. 이는 Epoch 가 0인 Epoch 를 설정하지 않는다는 일반적인 신념과는 대조적입니다. 그러나 dnf 유틸리티는 해독 목적으로 0의   와 동일한 설정되지 않은 Epoch를 처리합니다.
				Epoch 
					그러나 사양 파일에   를 나열하는 것은 대부분의 경우 패키지 버전을 비교할 때 예상되는 RPM 동작을 도입하기 때문에 일반적으로 생략됩니다.
				Epoch 
예 6.2. Epoch 사용
						Epoch를 사용하여  및 foobar 패키지를 설치하는 경우: 1Version: 1.0, 및 다른 사용자가 Version을 사용하여  하지만 foobar 를 패키징합니다. 2.0Epoch 지시문이 없으면 새 버전이 업데이트되지 않습니다. Epoch 버전이 RPM 패키지에 대한 버전 관리를 나타내는 기존 Name-Version-Release 마커보다 우선하기 때문입니다.
					
					따라서 Epoch 를 사용하는 것은 매우 드물다. 그러나 Epoch 는 일반적으로 업그레이드 순서 문제를 해결하는 데 사용됩니다. 이 문제는 인코딩에 따라 항상 안정적으로 비교할 수 없는 알파벳 문자를 포함하는 소프트웨어 버전 번호 체계 또는 버전의 업스트림 변경의 측면으로 나타날 수 있습니다.
				
6.3.2. scriptlets 지시문
scriptlets 는 패키지 설치 또는 삭제 전이나 후에 실행되는 일련의 RPM 지시문입니다.
빌드 시 또는 시작 스크립트에서 수행할 수 없는 작업에만 Scriptlets 를 사용합니다.
					공통 scriptlet 지시문 세트가 있습니다. 이는 spec file 섹션 헤더(예: %build 또는 %install )와 유사합니다. 이는 종종 표준 POSIX 쉘 스크립트로 작성되는 코드의 여러 줄 세그먼트에 의해 정의됩니다. 그러나 대상 시스템의 배포를 위해 RPM이 허용하는 다른 프로그래밍 언어로도 작성할 수 있습니다. RPM 문서에는 사용 가능한 언어의 전체 목록이 포함되어 있습니다.
				
					다음 표에는 실행 순서에 나열된 Scriptlet 지시문이 포함되어 있습니다. 스크립트가 포함된 패키지가 %pre 및 %post un 지시문 사이에 설치되고 %preun 과 %postun 지시문 사이에 제거됩니다.
				
| directive | 정의 | 
|---|---|
| 
									 | Scriptlet은 패키지를 설치하거나 제거하기 직전에 실행됩니다. | 
| 
									 | 대상 시스템에 패키지를 설치하기 직전에 실행되는 Scriptlet입니다. | 
| 
									 | 대상 시스템에 패키지를 설치한 후에만 실행되는 Scriptlet입니다. | 
| 
									 | 대상 시스템에서 패키지를 설치 제거하기 직전에 실행되는 Scriptlet입니다. | 
| 
									 | 대상 시스템에서 패키지를 제거한 후에 실행되는 Scriptlet입니다. | 
| 
									 | 트랜잭션 종료 시 실행되는 Scriptlet입니다. | 
6.3.3. scriptlet 실행 비활성화
					다음 절차에서는 rpm 명령을 --no_scriptlet_name_ 옵션과 함께 사용하여 스크립트 파일의 실행을 끄는 방법을 설명합니다.
				
절차
- 예를 들어 - %pretransscriptlet의 실행을 끄려면 다음을 실행합니다.- rpm --nopretrans - # rpm --nopretrans- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 다음 모든 항목과 동일한 - --noscripts옵션을 사용할 수도 있습니다.- 
									--nopre
- 
									--nopost
- 
									--nopreun
- 
									--nopostun
- 
									--nopretrans
- 
									--noposttrans
 
- 
									
6.3.4. scriptlets 매크로
Scriptlets 지시문도 RPM 매크로에서 작동합니다.
다음 예제에서는 systemd에 새 장치 파일에 대해 알림을 받는 systemd scriptlet 매크로를 사용하는 방법을 보여줍니다.
6.3.5. Triggers 지시문
Trigger 는 패키지 설치 및 제거 중에 상호 작용 방법을 제공하는 RPM 지시문입니다.
트리거 는 예기치 않은 시간에 실행될 수 있습니다(예: 포함된 패키지의 업데이트). 트리거 는 디버그하기 어렵기 때문에 예기치 않게 실행될 때 아무 것도 손상시키지 않도록 강력한 방식으로 구현해야 합니다. 이러한 이유로 Red Hat은 트리거 사용을 최소화할 것을 권장합니다.
단일 패키지 업그레이드에 대한 실행 순서와 각 기존 트리거에 대한 세부 정보는 다음과 같습니다.
					위의 항목은 /usr/share/doc/rpm-4.*/triggers 파일에서 찾을 수 있습니다.
				
6.3.6. 사양 파일에서 쉘이 아닌 스크립트 사용
					spec 파일의 -p 스크립트릿 옵션을 사용하면 기본 쉘 스크립트 인터프리터(-p /bin/sh) 대신 특정 인터프리터를 호출할 수 있습니다.
				
					다음 절차에서는 pello.py 프로그램 설치 후 메시지를 출력하는 스크립트를 생성하는 방법을 설명합니다.
				
절차
- 
							pello.spec파일을 엽니다.
- 다음 행을 찾으십시오. - install -m 0644 %{name}.py* %{buildroot}/usr/lib/%{name}/- install -m 0644 %{name}.py* %{buildroot}/usr/lib/%{name}/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 위 줄 아래에 다음을 삽입합니다. - %post -p /usr/bin/python3 print("This is {} code".format("python"))- %post -p /usr/bin/python3 print("This is {} code".format("python"))- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- RPM 빌드에 설명된 대로 패키지를 빌드합니다.
- 패키지를 설치합니다. - dnf install /home/<username>/rpmbuild/RPMS/noarch/pello-0.1.2-1.el9.noarch.rpm - # dnf install /home/<username>/rpmbuild/RPMS/noarch/pello-0.1.2-1.el9.noarch.rpm- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 설치 후 출력 메시지를 확인합니다. - Installing : pello-0.1.2-1.el9.noarch 1/1 Running scriptlet: pello-0.1.2-1.el9.noarch 1/1 This is python code - Installing : pello-0.1.2-1.el9.noarch 1/1 Running scriptlet: pello-0.1.2-1.el9.noarch 1/1 This is python code- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
						Python 3 스크립트를 사용하려면 spec 파일에 install -m 아래에 다음 행을 포함합니다.
					
%post -p /usr/bin/python3
%post -p /usr/bin/python3
						Lua 스크립트를 사용하려면 SPEC 파일에 install -m 아래에 다음 행을 추가하십시오.
					
%post -p <lua>
%post -p <lua>
						이렇게 하면 사양 파일에서 인터프리터를 지정할 수 있습니다.