参考
-
GNU C Library 2.26 released [LWN.net]
- glibc-2.26から含まれなくなったっぽい。
- glibc: install the obsolete libnsl - Patchwork
- glibc アップデート方法 まとめ - Qiita
--enable-obsolete-nsl
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
つけてビルドすれば行けるかと思ったが、ビルドが通らなかった・・・
- glibc-devel を
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
が出来上がるので解決には至らなかった。