OS

piuparts

lartist 2023. 7. 24. 17:43

Package Installation, UPgrading, And Removal Testing Suite

패키지 설치, 업그레이드, 삭제 테스트 툴

 

root 권한 필요

debootstrap으로 디폴트는 sid chroot 생성

미지정 시 /etc/apt/sources.list의 첫 미러 선택

 

# 일반 사용법

piuparts foo.deb

# dist 설정 가능
piuparts foo.deb -d testing

# dist 여러 개 설정 시 순서대로 업그레이드 실행
piuparts foo.deb -d stable -d testing -d unstable

# 미러 설정 가능
piuparts foo.deb -m http://...

 

 

# 테스트 종류

. 설치-삭제 테스트 (-no-upgrade-test)

install > remove > purge

 

. 설치-업그레이드-삭제 테스트

레포에서 install > 인풋 파일 install > remove > purge

 

 

# config 파일이 남겨졌을 때 테스트 (-install-remove-install)

. 설치-삭제 테스트

install > remove > install > purge

 

. 설치-업그레이드-삭제 테스트

레포 install > remove > 인풋 파일 install > purge

 

. dist 업그레이드 테스트

레포 install > remove > distupgrade > install

 

 

# pbuilder

pbuilder를 통해 매 실행 시 chroot 환경 구축 대신 tarball을 초기 chroot로 설정 가능. 

# pbuilder 환경 구축
pbuilder --create

# pbuilder 환경 업데이트
pbuilder --update

# pbuilder 환경을 사용한 piuparts 실행
piuparts foo.deb -p

-p: /var/cache/pbuilder/base.tgz 사용
-b(--basetgz): tarball 파일 직접 지정
-s(--save): 실행 후 chroot tarball 저장

 

pbuilder는 cdebootstrap을 지원하지만 piuparts는 경고 메시지 출력 가능

debootstrap 사용 또는 'warn-on-debsums-errors' 옵션같은거 사용할 것

 

 

# 커스텀 스크립트 추가

piuparts 내부에서 실행할 커스텀 쉘 스크립트 추가 가능

'scriptsdir=/baz.sh' (여러 번 가능)

/etc/piuparts/scripts* 참고

알파벳 순서로 실행

python, perl 스크립트 등 실행 원하는 경우 chroot 환경에 해당 런타임 설치 필요

 

. 환경 내부 변수

  . PIUPARTS_OBJECTS: 현재 대상 패키지 또는 .changes 파일

  . PIUPARTS_TEST: 테스트 종류. install / upgrade / distupgrade

  . PIUPARTS_PHASE: install / upgrade / distupgrade

  . PIUPARTS_DISTRIBUTION, _NEXT, _PREV

 

. 스크립트 prefix

  . post_chroot_unpack: chroot update 전

  . post_setup_*: chroot setup 후, 메타데이터 저장 전

  . pre_test_*: 각 테스트 전. 메타데이터 저장 후

  . is_testable_*: 설치 전. 스크립트가 실패하면 설치 취소됨.

    piuparts로 테스트가 어려운 패키지(usrmerge), 외부 리소스 다운로드 패키지, 버그있는 패키지에 사용

  . pre_install_*: 설치 전. PIUPARTS_TEST 및 PIUPARTS_PHASE 활용해서 어느 설치 전인지 구분 가능

  . post_install_*, pre_remove_*, post_remove_*, post_purge_*

  . post_test_*: 각 테스트의 마지막. 검증용 chroot의 메타데이터 비교 전

  . pre_distupgrade_*, post_distupgrade_*

 

 

# master-slave 구조의 분산 테스팅

piuparts 테스트가 여러 번 수행되므로 부하를 줄이기 위해 master-slave 구조로 여러 slave 장치 사용 가능

ssh를 통해 연결되며 결과물만을 전송