이전에 python3을 특별히 사용된 명령 없이 /usr/bin/python(지금은 잘못된 일이었다는 것을 깨달았습니다)에 연결하여 업데이트를 시도했기 때문에 Python으로 뭔가가 손상되었을 수 있다고 생각합니다.
더 이상 시스템에서 apt-get 업데이트나 apt-get 명령을 얻을 수 없습니다.
이것은 apt-get 업데이트의 결과입니다.
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 https://packages.microsoft.com/repos/azure-cli bionic InRelease
Hit:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
Hit:6 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu bionic InRelease
Hit:7 https://apt.releases.hashicorp.com bionic InRelease
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 11, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
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
Pythonpath를 수정할 수도 있습니다.
~$ sudo apt --fix-broken install python
Reading package lists... Done
Building dependency tree
Reading state information... Done
python is already the newest version (2.7.15~rc1-1).
0 upgraded, 0 newly installed, 0 to remove and 182 not upgraded.
이제 내 Python 링크는 다음과 같습니다.
~$ ls -al /usr/bin/python
lrwxrwxrwx 1 root root 18 Apr 1 10:30 /usr/bin/python -> /usr/bin/python2.7
그리고 python3은 더 이상 /usr/bin/python에 연결되지 않습니다.
~$ ls -al /usr/bin/python3
lrwxrwxrwx 1 root root 18 Mar 1 21:22 /usr/bin/python3 -> /usr/bin/python3.8
여기서는 업데이트 대안을 사용하여 약간의 진전이 이루어졌습니다.
update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.8
sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.8 2 auto mode
* 1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.8 2 manual mode
python3.8에 유지하든 python2.7로 전환하든(update-alternatives --config python 사용) apt-get에서 동일한 출력을 얻습니다.
이 문제를 해결하는 방법에 대한 이론이 있는 사람이 있습니까? Python 대안을 2.7로 설정했음에도 불구하고 여전히 Python3을 가리킵니다. update-conf-db에 문제가 있는 것 같습니다.
답변1
발생하는 오류는 apt
직접적으로 발생하는 것이 아니라 특히 command-not-found
시스템에 존재하지 않는 명령을 실행하려고 할 때 설치할 패키지를 알려주는 도우미 프로그램 업데이트로 인해 발생합니다. apt update
자체적으로 성공적으로 완료되었습니다.
오류를 방지하려면 후크를 비활성화하세요.
sudo mv /etc/apt/apt.conf.d/50command-not-found{,.disabled}
apt update
그러면 오류 없이 실행할 수 있습니다 . 다른 후크가 실패하면 위와 동일한 기술을 사용하여 비활성화할 수 있습니다(참조Debian Buster arm64 apt가 오류 메시지를 반환하지만 패키지 설치는 계속 작동합니다.).
update-cnf-db
Python 3 스크립트이므로 Python 3 설정도 손상될 수 있습니다. 귀하의 경우 이 문제를 해결하는 방법을 결정하려면 추가 정보가 필요합니다. /usr/bin/python3
Ubuntu의 Python 3 버전을 지정해야 합니다.
작동 되면 update-cnf-db
위 명령을 반대로 실행하여 후크를 다시 활성화할 수 있습니다.
sudo mv /etc/apt/apt.conf.d/50command-not-found{.disabled,}
답변2
우분투 18.04에서도 같은 오류가 발생합니다.
실행 후 다음 오류가 발생합니다 sudo apt update
.
Hit:4 http://archive.ubuntu.com/ubuntu bionic-backports InRelease
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 11, in <module>
import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Reading package lists... Done
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
운영체제 환경은
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
난 노력 했어:
cd /usr/lib/python3/dist-packages
ls -la /usr/lib/python3/dist-packages
sudo cp apt_pkg.cpython-36m-x86_64-linux-gnu.so apt_pkg.so
모든 것이 잘되었습니다.