本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
DBアクセスに必要なパッケージを準備
apt update
apt install python3-pip
apt install python3-full
その後、このコマンドを実行しようとしたら
pip3 install psycopg2-binary pytz
こんなエラーが
pip3 install psycopg2-binary pytz
error: externally-managed-environment
× This environment is externally managed
mq> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
Debian 12 の Python 環境が「外部管理モード(PEP 668)」になっているため、システム全体にパッケージをインストールできない事を意味する。
全体にインストールする場合(非推奨)
pip install psycopg2-binary --break-system-packages
非推奨の理由 --break-system-packages は危険なオプション
システムツールを破損する可能性がある
Debian の多くのツール(apt, systemctl, network-manager, gnome, など)は Python スクリプトで動いています。pip でライブラリを上書きすると、依存関係の不整合が起きて、ツールが動かなくなる可能性があります。
パッケージ管理の混乱
apt と pip が同じライブラリを管理すると、どちらが正しいか分からなくなる状態になります。例:
apt install python3-psycopg2 → バージョン A
pip install psycopg2 → バージョン B(上書き)
この状態で apt upgrade や pip uninstall をすると、予期せぬ挙動が起きることがあります。
セキュリティアップデートの漏れ
Debian のセキュリティアップデートは apt 経由で提供されますが、pip でインストールしたライブラリは対象外です。結果として、脆弱性が放置される可能性があります。
トラブル時の復旧が困難
システム Python を壊すと、復旧にはかなりの手間がかかります。最悪の場合、OS の再インストールが必要になることもあります。
pip でインストールしちゃったものを削除する
pip uninstall psycopg2-binary --break-system-packages
rootユーザで実行しているので警告が出たけどとりあえず削除できた
Proceed (Y/n)?
Successfully uninstalled psycopg2-binary-2.9.10
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
タイムスタンプをレコードに記録するため、ptyzもいれたけど削除
pip uninstall pytz --break-system-packages
Found existing installation: pytz 2024.1
Uninstalling pytz-2024.1:
Would remove:
/usr/lib/python3/dist-packages/pytz
/usr/lib/python3/dist-packages/pytz-2024.1.egg-info
Proceed (Y/n)?
Successfully uninstalled pytz-2024.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
仮想環境を作成する(推奨)
apt install python3.11-venv
# 仮想環境作成
python3 -m venv ~/venv/edr
# 仮想環境の有効化
source ~/venv/edr/bin/activate
# 仮想環境内でインストール
pip install pytz psycopg2-binary
Collecting pytz
Downloading pytz-2025.2-py2.py3-none-any.whl (509 kB)
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq 509.2/509.2 kB 5.6 MB/s eta 0:00:00
Collecting psycopg2-binary
Downloading psycopg2_binary-2.9.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq 3.0/3.0 MB 11.9 MB/s eta 0:00:00
Installing collected packages: pytz, psycopg2-binary
Successfully installed psycopg2-binary-2.9.10 pytz-2025.2
実行方法
# /root/venv/edr/bin/python3 password_clack_detector_sql.py
[Mon Jul 21 12:01:05 2025] 監視を開始します: /var/log/auth.log
ユーザーごとの閾値: 5回 (300秒以内)
IPアドレスごとの閾値: 10回 (300秒以内)
このサーバーのローカルIPアドレス: 192.168.10.30
削除方法
仮想環境が有効になっていない事を確認し、
which python
仮想環境ディレクトリを削除する
rm -rf ~/venv/edr
代替手段 私はこちらの方法を採用
python3-pytz-deprecation-shim は、Python のタイムゾーンライブラリである pytz を安全に廃止するための「shim(橋渡し)」ライブラリです。
sudo apt install python3-pytz-deprecation-shim python3-psycopg2 python3-tz
APT でインストールされた python3-psycopg2 は、システムの Python パッケージとして管理されます。そのまま使う限り、pip による干渉はありません。
python3-psycopg2 を APT でインストールすること自体でシステムが壊れることは基本的にありません。APT は Debian や Ubuntu などの Linux ディストリビューションで公式にサポートされている方法であり、依存関係も適切に管理されます。
APT はシステムパッケージマネージャであり、OSの他の部分と整合性を保つように設計されています。
python3-psycopg2 は PostgreSQL 用の公式 Python バインディングであり、Debian/Ubuntu の公式リポジトリに含まれています。
インストール時に必要なライブラリ(例:libpq-dev)も一緒に管理されるため、依存関係の破損は起こりにくいです。
apt 管理でインストールできれば、通常のアップデートサイクルで最新のライブラリが更新されていくのでapt管理が楽だと思う。
pgadmin4の設定
設定メモ
postgresql 初期設定
pg_hba.conf
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 trust
postgresql.confi
listen_addresses = '*' # what IP address(es) to listen on;
パスワードはdummy で設定

postgresユーザのパスワードを設定

pg_hba.conf
# IPv4 local connections:
#host all all 127.0.0.1/32 scram-sha-256
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 scram-sha-256
reload
# /etc/init.d/postgresql reload
Reloading postgresql configuration (via systemctl): postgresql.service.

