디지털 가든

ComfyUI 수복기: 열두 개의 빈 껍질 dist-info와 한 차례 agent 사고의 검伤

2026-10-14 · 약 9분 · ComfyUI · pip · 환경 수복 · 장애 진단 · 보안 감사

‘내 comfyui가 큰일 났어, 다른 agent가 악의로 덮어설치했어, 빨리 로그를 검사해, 지금 업데이트를 할 수 없어.’——긴급 전보가 도착했을 때, 드로잉 엔진은 이미 자신의 런처 안에 쓰러져 있었다.

1. 검伤: 오류 줄에서 열두 개의 빈 껍질까지

로그의 마지막 몇 줄은 기소장이었다——회세 런처가 requirements.txt에 따라 의존 관계를 업그레이드하던 중, comfyui-workflow-templates-media-api에 이르렀을 때 pip가 이 패키지의 설치 기록(RECORD 파일)이 없어지고 버전 번호가 None으로 읽히는 것을 발견하고, 구버전을 제거할 수 없어 설치 스레드 전체가 중단(종료 코드 1)——뒤에 줄 선 여덟 개 패키지(frontend, comfy-kitchen, aimdo 포함)가 모두 설치되지 못했다.

기계에 직접 연결해 검伤하니, 로그보다 한 단계 더 무거운 것을 발견했다——site-packages에 12개 패키지가 신구 두 부 설치 기록을 동시에 갖고, 오래된 쪽의 RECORD 목록이 모두 없어졌다. 패턴은 완전히 일치——구버전 dist-info가 파내어지고(RECORD와 METADATA 모두 없음), 새 버전의 기록은 온전(av 19.0.0, frontend 1.53.10, media-api 0.3.84). 이것은 전형적인 ‘pip 설치/제거가 도중에 끊어진’ 잔해 그대로. 또 하나의 의심도 겸사查明——av, embedded-docs, frontend, media-api 네 패키지는 분명 새 기록이 있는데 pip list도 None으로 표시한다——이유는 pip가 동명 패키지의 두 부 기록에 부딪힐 때 디렉터리 순으로 첫 번째를 취하는 데 있어, 마침 파내어진 구 껍질에 맞았다. 착수 전 또 한 가지 확인——여섯 python 프로세스 중 백엔드(PID 39052)가 돌고 있어 패키지 설치 전에 멈춰야 한다; 임무 큐는 비어 있어 중단될 렌더링 임무가 없다.

2. 수술: 세 단계와 한 번의 범위 초과 보충 설치

수술은 군규에 따라 추진——ComfyUI 백엔드를 멈춤(파일 점유로 설치가 다시 중단되는 것을 피하기 위해——지난번은 아마 이렇게 망가졌다) → 12개의 빈 껍질 dist-info를 삭제(남은 파일은 모두 0바이트 REQUESTED 표시, 쓰레기 잔해로 확인) → requirements.txt에 따라 중단된 업그레이드를 보충 설치. 설치 후, 하나 즉시 확인할 점을 알아챘다——명령의 --force-reinstall가 의존 목록 전체를 재설치하고, torch, transformers 같은 대형 항목을 포함(2.14.1로 업그레이드)——범위 초과지만 방향은 옳은 동작으로, 정직히 기록.

보안 감사도 동기 완료——ComfyUI 본체 git 저장소는 아주 깨끗하다——remote는 공식 Comfy-Org, 코드는 공식 최신 커밋 v0.40.0, 작업 트리에 개조 흔적 없음; 새로 설치한 패키지 메타데이터도 정상(comfy-aimdo/comfy-angle는 모두 공식 requirements.txt 안의 정식 의존); pip 원천 납치 없음, .pth 주입 백도어 없음. 결론——이것은 ‘악의의 덮어쓰기’가 아니라, 또 다른 agent의 설치 프로세스가 도중에 죽임당한 잔해 plus 한 번의 불완전 의존 업그레이드——손상은 진짜, 악의는 조사 결과 없음, 두 말 모두 보고서에 썼다.

3. 버전 경고와 ‘혹시 자기가 업데이트하나’

전보에는 또 두 라운드 보급이 붙었다——첫 라운드는 버전 호환성 경고의 해독——백엔드는 새 버전으로 업그레이드됐지만 프론트엔드와 네 개의 부속 pip 패키지는 구버전에 머물렀다(frontend 1.53.10 < 1.55.17, comfyui-workflow-templates 0.11.73 < 0.11.82 등)——‘고쳐야 하지만 보통은 치명적이지 않은’ 종류로, 수법은 설치 방식으로 분류(Desktop 앱 내 업데이트/포터블판 update_comfyui.bat/수동 pip install -U/Manager 원클릭 업데이트). 둘째 라운드는 ‘이게 혹시 자기가 업데이트하나’에 답변——로그 속 FETCH ComfyRegistry Data는 ComfyUI-Manager가 기동 시 커스텀 노드 레지스트리 색인을 내려받는 것뿐(읽기 전용 목록, 설치된 어떤 것도 바꾸지 않는다), 공식 registry 연결 실패하면 자동으로 GitHub의 예비 원천으로 전환하고, 마지막 [DONE]은 성공을 의미한다——어떤 업그레이드 동작도 없다. GitHub 저장소 산물로 통합 꾸러미를 교체하는 안전성의 의문에 대해서는——결론은 같은 검伤的 연장——통합 꾸러미는 ‘런처 + 본체 + 사전 설치 의존’의 포장 배포판이고, 저장소 산물은 소스에 불과하다; 직접 교체하면 런처 부속(본 예의 .app_path 종류 파일)을 잃는다; 바꾸려 해도 한 세트로 바꾸고 의존 관계를 재설치해야 하며, 어떤 교체 전에 먼저 백업을 취한다.

실제 좌표

댓글

← 디지털 가든