web-dev-qa-db-ja.com

再インストール後にUFWを使用できないpython

pythonおよびufwを再インストールした後、次のエラーが発生します。

_user@machine:~$ Sudo ufw status
Traceback (most recent call last):
  File "/usr/sbin/ufw", line 25, in <module>
    import ufw.frontend
ModuleNotFoundError: No module named 'ufw'
_

私はufwを複数回再インストールしようとしましたが、機能しません。

pipについて気付いたのは、Sudoが_pip2_ではなく_pip3_を使用していることですが、pythonとして_python3_も使用しています。

_user@machine:~$ pip -V
pip 19.3.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)
user@machine:~$ Sudo pip -V
pip 19.3.1 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
user@machine:~$ Sudo -i
root@machine:~# pip -V
pip 19.3.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

user@machine:~$ python -V
Python 3.8.0
user@machine:~$ Sudo python -V
Python 3.8.0
user@machine:~$ Sudo -i
root@machine:~# python -V
Python 3.8.0
_

それでも問題が発生するかどうかはわかりません。

Aptの履歴:

_apt remove --purge python3-pip # This broke ufw probably because --purge
apt remove python3
apt install python3 
apt remove python3 # Noticed outdated version, uninstall again and built from source afterwards
apt install python3-pip # Was done after building and installing python3 from source
_

_Sudo pip3 list_:

_Package    Version
---------- ---------
certifi    2019.9.11
chardet    3.0.4
idna       2.8
pip        19.3.1
requests   2.22.0
setuptools 41.2.0
urllib3    1.25.7
_

python3 -c 'import sys; print(sys.version); print(sys.path)'

_3.8.0 (default, Dec  1 2019, 09:38:21)
[GCC 7.4.0]
['', '/usr/local/lib/python38.Zip', '/usr/local/lib/python3.8', '/usr/local/lib/                                                      python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages']
_

_ls /usr/lib/python3/dist-packages/ufw/_

_applications.py  backend_iptables.py  backend.py  common.py  frontend.py  __init__.py  parser.py  __pycache__  util.py
_
4
thesys

pip3をアンインストールしたときに、ufwpython3-pipから削除されたようです。

これを再インストールしてみてください:

Sudo pip3 install https://launchpad.net/ufw/0.36/0.36/+download/ufw-0.36.tar.gz
1
Olimjon

多くのパッケージがUbuntu上に構築されているため、Ubuntuからpythonを削除することは想定されていません。既にpythonをインストールしているため、以下のコマンドを実行してufwを再インストールしてください

Sudo apt-get purge --auto-remove ufw
Sudo apt-get install ufw
1
Tejas Lotlikar

python ufwが使用していたバージョンは削除され、インストールされたバージョンが以前とは異なるため、ufwがエラーを報告しています。

次のコマンドで、pythonバージョンufwが使用しているバージョンをトレースバックできます。

Sudo find /usr/lib/ -name "ufw"

たとえば、以下のような出力が表示されます(正確には、python ufwが使用しているバージョンによって異なります)。

/usr/lib/python3.6/site-packages/ufw

上記の例では、ufwはpython 3.6を使用しています。必要に応じて、特定のpythonバージョンを再インストールする必要があります。

1
Ketan Patel

Ubuntu 18.04では、すべての依存関係はパッケージマネージャーによって自動的に処理されます。依存関係を手動でインストールしないと仮定します。

UFWと互換性のないpythonパッケージを使用しているようです。 pythonプロジェクトを実行していない場合は、pythonを削除して、UFWが依存関係を使用して自動的に再インストールできるようにします。

他のパッケージが削除されるようなメッセージを受け取った場合、プロセスを停止します。

まだ問題。試してください:

Sudo apt install aptitude

Sudo aptitude install ufw

0
Aravind

これを注意深く読んでください

警告:Pythonのようなパッケージに対してこれを行うと、システムが使用できなくなる可能性があります。これを理解していない限り試みないでください。システムが壊れても私を責めないでください。

この状況で今できる最善のことは、データをバックアップすることです。外付けハードディスクなどがある場合、なんとかしてファイルをバックアップします。インストール後にUbuntuにプレインストールされているパッケージ、つまり「インストールしなかったパッケージ」をアンインストールしないでください。今後、パッケージをアンインストールして再インストールする場合は、パッケージを削除しないでください。以下を使用します。

Sudo apt install --reinstall <package-name>

 以前は小さなバグのためにOpenSSLをUbuntuからアンインストールし、Ubuntuに必要な129個のパッケージをアンインストールしました。 Ubuntuを再インストールする必要がありました。したがって、パッケージをアンインストールまたは再インストールするときは注意してください。