だから私は大学で書いたプログラムをDebianで運営しています。これを行うと、次のエラーが発生します。
error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
検索結果が異なるため、次のパッケージをインストールしてみました。
apt-get install libmariadbclient-dev-compat
apt-get install default-libmysqlclient-dev
apt-get install mysql-common
検索:
find . -name 'libmysqlclient*'
locate libmysqlclient.so
何の出力も得られませんでした。
私はyumを使って仮定された修正を見つけましたが、Debianを使用しているので、これは私にとって解決策ではありません。 Oracle MySQL 5.7で.20を見つけました(https://community.centminmod.com/threads/libmysqlclient-so-missing.9052/)
この問題を解決する方法を知っている人はいますか?よろしくお願いします。
答え1
明らかに、このプログラムはwww.mysql.comからダウンロードしたMySQLバージョン用にコンパイルされました。 libmysqlclient.so.20 は Debian では使用できません。
以下から.debファイルをダウンロードできます。https://dev.mysql.com/downloads/file/?id=477124www.mysql.com aptリポジトリにアクセスするようにDebian(ベース)システムを設定します。その後、適切なデータを更新できます。
# apt-get update
正しいライブラリをインストールしてください。
# apt-get install libmysqlclient20
インストールされている場合、DebianバージョンのMySQLが削除される可能性があることに注意してください。だからあなたが欲しいものが何であるかをよく考えてください。
もう1つの方法は、aptリポジトリを参照してlibmysqlclient20 .debを手動でダウンロードすることです。たとえば、次のようになります。
# dpkg-deb --extract libmysqlclient20_5.7.23-1debian9_amd64.deb /tmp/libmysqlclient20
その後、libmysqlclient.so.20を共有ライブラリが検索されている場所(/usr/local/lib/など)にコピーすると機能します。
答え2
Ubuntu 20.04で他の人がこの問題を経験している場合は、APTソースを含む古いリポジトリを追加するだけですlibmysqlclient20
(例:ギリアシルバー答え。
sudo tee /etc/apt/sources.list.d/xenial.list > /dev/null <<EOF
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
deb http://dk.archive.ubuntu.com/ubuntu/ xenial-updates universe
EOF
sudo apt-get update
sudo apt-get install -y libmysqlclient20
答え3
echo "deb http://ftp.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list.d/unstable.list
apt-get update
apt-get install libmysqlclient20
答え4
wurtelの正しいソリューション(安全でなく、汚れており、本番に適していないソリューション)を除いて、ハッキング方法は、プログラムが探しているファイルに十分近いバージョンでシンボリックリンクを作成することです。
ln -s /usr/lib/libmysqulclient.so.23 /usr/local/lib/libmysqlclient.so.20
うまくいかないかもしれません。ほとんどの場合、ソースファイルが少し最新の場合は問題ありません。もちろんこれは安全ではなく、テスト用にすぎないことをもう一度強調します。