rpm을 통해 설치되는 Java 제품을 개발 중입니다. 사용자가 편집할 수 있는 구성 파일 세트가 있습니다. 이러한 구성 파일은 다음 형식의 Java 속성 파일입니다.
com.acme.pkg1.setting=something customized 1
com.acme.pkg2.setting=something original 2
이러한 파일은 SPEC 파일에 %config(noreplace)로 표시되어 있으므로 업그레이드 후 옆에 .rpmnew 파일을 가질 수 있습니다.
com.acme.pkg1.setting=something original 1
com.acme.pkg2.setting=something original 2
com.acme.pkg3.setting=something original 3
원본 파일에 새 키만 추가하는 방식으로 이러한 파일을 병합하는 방법이 있습니까?
내 의견은 다음과 같습니다.
- 필터 키
- 키 정렬
- comm(1)을 사용합니다. 예: comm -23 file.rpmnew.keys file.keys > new.keys
- file.rpmnew에서 new.keys와 일치하는 키=값 추출
- 원본 파일에 결과 추가
rpm 업데이트 후 스크립트를 통해 이를 어떻게 달성할 수 있습니까?
표준 Linux 유틸리티(comm, diff, sed, awk, grep...)를 사용하는 것이 더 낫습니까?
답변1
설정 없이 원시 원시 및 원시 목표 값을 구성합니다.
sed "s/=.*//g" file_original.ini > file_original.raw sed "s/=.*//g" file_target.ini > file_target.raw
제 생각에는 대상이 원래 대상보다 더 많은 옵션을 갖게 될 것이라고 생각합니다. 차이를 만드세요:
grep -vf original.raw target.raw > newvals.dat
새로운 가치를 추가하세요:
cp -p file_original.ini file_original.ini.rpmsave grep -f newvals.dat file_target.ini >>file_original.ini
이것이 기본 아이디어입니다. 많은 오류 처리, 깨끗한 임시 파일 생성 및 정리가 필요합니다.