- ViewBag
- simpe ftp
- 타임피커
- php 캐쉬제거
- TempData
- asp.net dropdownlist
- 하드 윈도우 복사
- 하드 마이그레이션
- asp.net core swagger
- ViewData
- 말줄임표시
- asp.net Select
- Mac Oracle
- SSD 복사
- 404에러페이지
- javascript 바코드 생성
- django 엑셀불러오기
- javascript redirection
- XSS방어
- 맥 오라클설치
- 바코드 생성하기
- 원격ftp
- jquery 바코드생성
- XSS PHP
- ASP.Net Core 404
- asp ftp
- swagger 500 error
- 강제이동
- JavaScript
- asp.net core Select
웹개발자의 기지개
[Ubuntu] 보안 업데이트 실패가 날때 - sudo apt update (error) 본문
sudo apt update 실행시
Traceback (most recent call last):
File "/usr/lib/cnf-update-db", line 8, in <module>
from CommandNotFound.db.creator import DbCreator
File "/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py", line 12, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
패키지 목록을 읽는 중입니다... 완료
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/lib/command-not-found/ -a -e /usr/lib/cnf-update-db; then /usr/lib/cnf-update-db > /dev/null; fi'
E: Sub-process returned an error code
Ubuntu 는 20.04 (focal) 버전으로 시스템 파이썬이 3.8 로 빌드가 되어 있어서, focal의 python3-apt(= apt_pkg)는 cnf-update-db 실행 시 apt_pkg를 못 찾아 에러가 났다.
다음의 단계대로 진행하면 정상적으로 보안 업데이트 진행이 가능하다.
1) 훅 끄고 업데이트 시도한다.
sudo apt -o APT::Update::Post-Invoke-Success::= update
2) Python 3.8 설치/재설치 (focal 표준)
sudo apt install --reinstall python3.8 python3.8-minimal libpython3.8-stdlib
3) 기본 python3를 3.8로 되돌리기
지금 /usr/bin/python3 -> /etc/alternatives/python3 구성이므로 update-alternatives 로 맞춘다.
# (A) 대안 항목 등록 (혹시 3.8이 등록 안되어 있다면)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 20
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 10
# (B) 3.8로 선택
sudo update-alternatives --config python3
# 프롬프트가 뜨면 /usr/bin/python3.8 항목 번호를 선택 (수동선택)
다 끝나고, 다른 버전의 설치되어 있는 파이썬 버전을 선택하면 된다. ( update-alternatives )
4) python3-apt 및 command-not-found 재설치
sudo apt install --reinstall python3-apt command-not-found python3-minimal
5) 동작 확인하고 업데이트 다시 진행한다. ("OK" 가 출력되는 정상)
python3 --version
python3 -c "import apt_pkg, sys; print('OK:', sys.version.split()[0])"
sudo apt update
그리고, sudo apt upgrade 실행한다.
Ubuntu 22.04(Jammy)의 “시스템 파이썬”은 python 3.10 이다. 필자의 python3 는 3.11.Orc1 으로 되어 있다.
1) 임시로 훅 비활성화하고 업데이트
sudo apt -o APT::Update::Post-Invoke-Success::= update
2) 기본 python3를 3.10으로 되돌리기
(a) python3.10이 이미 있을 때
ls -l /usr/bin/python3 /usr/bin/python3.10
sudo update-alternatives --list python3 # 후보 확인
sudo update-alternatives --set python3 /usr/bin/python3.10
sudo update-alternatives --config python3
(b) python 3.10 이 없을때 (미설치나 지워졌을때)
sudo apt update
sudo apt install python3.10-minimal
sudo ln -sf /usr/bin/python3.10 /usr/bin/python3
확인하기
python3 -V # Python 3.10.x 이어야 정상
3) 관련 패키지 재설치(깨끗이 맞춰주기)
sudo apt install --reinstall python3-apt command-not-found
(필요시)
sudo dpkg-reconfigure command-not-found
4) 최종 점검
sudo apt update
sudo apt upgrade
'리눅스서버 > Ubuntu' 카테고리의 다른 글
| [Ubuntu] 한글 입력 환경 설정하기 (0) | 2025.12.03 |
|---|---|
| [Ubuntu] 설치하고 초기 설정 정리 (0) | 2025.09.19 |
| [Ubuntu] 보안 업데이트하기2 (0) | 2024.12.28 |
| [Ubuntu] 보안 업데이트하기1 (0) | 2024.12.12 |
| [Ubuntu] Nginx 해외 IP 차단하기 (0) | 2024.11.24 |
