제프 존슨은 이어야합니다.을 수행하지 않아야합니다. 그러나 확실히 할 수 있습니다.
나는 이것을 배포판의 RPM에서 수행했다. 그러나 이것은 모든 시스템에 대해 의 리모트 핸드가 포함 된 반 구조화 된 환경이었다. 원격으로 손에 액세스 할 수있는 경우 "제거, 설치"경로를 따르고 해당 스크립트를 스크립팅하십시오.
정말 이런 일을해야한다고 생각되면 포인터입니다. 나는 그것이 "일"이었기 때문에 내가 한 일을 정확하게 보여주지 않을 것이고, 내 것을 공유하지 않기 때문입니다. 개념은 내 것이다 :-)
먼저/var/lib/rpm/Packages 파일 (cp /var/lib/rpm/Packages /var/tmp/Packages.bkp
)을 백업하십시오. 그것 좀 넣어 줘. 솔루션에서 작업하는 동안 다른 사용자가 시스템을 변경하면 백업을 업데이트하십시오. RPM 수를 정기적으로 확인하고 각 변경 또는 단계 후에 일요일마다 어떤 방법으로 테스트합니다.
db_unload 및 db_load 명령을 사용해야합니다. 속도면에서 "s2p"를 사용하여 쉘 sed 패턴을 perl로 변환해야합니다. 그런 다음 원래 이상 하다며 복사하여 Packages.new을 테스트하기 위해 시도 할 수
db_unload /var/tmp/Packages.bkp |perl -i -e "s2p converted string" |db_load /var/tmp/Packages.new
: 다음과 같은 파이프를 구축 할 수 있습니다. 수동으로 변경 한 후에는 항상 rpm --rebuilddb를 실행하십시오. 오류가 표시되면 백업을 복원하고 db를 다시 빌드하십시오.
RPM에 넣으려면 Lua로 변환하고 pretrans 또는 posttrans scriptlet (%pretrans -p <lua>
)에 넣으십시오. 선택은 달성하려는 순서에 따라 다릅니다. Lua 인터프리터는 rpm에 내장되어 있으므로 RPM이 어떻게 든 호출 되더라도 새로운 시스템 설치 중에 OK로 실행됩니다. 루아 롱 문자열에 "파이프"를 싸서 시스템이 이미 존재하는 경우에만 실행되도록했습니다. 그렇지 않으면 아무것도하지 않습니다. "그 일은 결코 일어나지 않을 것"이라고 생각한다면 "Never say never never"를 확인하십시오.
현재 상황을 완전히 망쳐 놓으면 RPM 기반을 완전히 강화하고 시스템 관리를 강화할 수 있습니다. 그렇게하고 백업이나 탈출구가 없다면 자신의 행동에 책임이 있음을 배우는 것이 어려울 것입니다.당신이 경고 당했다고 말하는 것만으로!