LoginSignup
5
2

More than 3 years have passed since last update.

libnsl.so.1が無い場合

Last updated at Posted at 2019-12-05

参考

--enable-obsolete-nsl

スクリーンショット_2019-12-06_10-45-27.png

distro libc
CentOS 6 2.12
CentOS 7 2.17
Amazon Linux 2.17
Ubuntu 13.04 2.17
Debian 8 2.19
Ubuntu 14.04 2.19
Ubuntu 16.04 2.23
Debian 9 2.24
distro libc
Amazon Linux 2 2.26
Ubuntu 18.04 2.27
CentOS 8 2.28
Debian 10 2.28
Ubuntu 19.10 2.30

なぜ libnsl.so.1 が無いのか

  • ビルド時に古い glibc を使用しているため。
  • CentOS8からlibnslで配布されるようになった。
    • CentOS7まではglibcに含まれていた。
    • CentOS7でビルドしたものは問題がなかった。

解決方法

昔作ったバイナリを使うしかない場合

CentOS8の場合
# libnsl 2.25が入る
yum install -y libnsl

リビルドできる場合

  • libnsl-devel は存在しない。
    • glibc-devel を --enable-obsolete-nslつけてビルドすれば行けるかと思ったが、ビルドが通らなかった・・・
yum install -y dnf-utils
yumdownloader --source glibc
yum install -y --enablerepo=PowerTools glibc-static libstdc++-static texinfo
yum install -y audit-libs-devel gd-devel libcap-devel python3 python3-devel
rpm -ivh glibc*.src.rpm
cd /root/rpmbuild/SPECS/
sed -i.bak -e 's/--prefix=%{_prefix}/--prefix=%{_prefix} --enable-obsolete-nsl/' glibc.spec
rpmbuild -bb glibc.spec
  • PowerTools リポジトリのlibnsl2-develも良いのかも?(自分の場合は解決につながらなかった。)
yum install --enablerepo=PowerTools libnsl2-devel
  • libnsl.so.2 にリンクされるようになる。

/lib64/libnsl.so.1

そのため、CentOS8でコンパイルした古いアプリケーションが(名前解決出来ずに)微動だにしない問題を経験した。

なお libnsl.so.1 は CentOS8だと libnsl パッケージで配布されている。

その他

をビルドすると libnsl.so.1 ではなく libnsl.so.2 が出来上がるので解決には至らなかった。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2