あめも

初心者インフラエンジニアの仕事や日常の事をそれとなく書いていくブログです

共有ライブラリを探す時にyum whatprovidesが便利

ライブラリを探す際に、yum whatprovidesが便利だった話です。


nodejsを実行した際、共有ライブラリが足りない旨のメッセージが表示されたとします。

[sora@hoge app]$ node main.js
(node:5316) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome!
/home/sora/test/node_modules/puppeteer/.local-chromium/linux-624487/chrome-linux/chrome: error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory


TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md

    at onClose (/home/sora/test/node_modules/puppeteer/lib/Launcher.js:360:14)
    at Interface.helper.addEventListener (/home/sora/test/node_modules/puppeteer/lib/Launcher.js:349:50)
    at Interface.emit (events.js:194:15)
    at Interface.close (readline.js:379:8)
    at Socket.onend (readline.js:157:10)
    at Socket.emit (events.js:194:15)
    at endReadableNT (_stream_readable.js:1103:12)
    at process._tickCallback (internal/process/next_tick.js:63:19)
(node:5316) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:5316) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

メッセージの中に、libXss.so.1 が無いと出ています。

libXss.so.1: cannot open shared object file: No such file or directory

このライブラリは何をインストールすればいいのだろう…とググったりすると思いますが、そこで役に立ったコマンドがyum whatprovidesでした。

コマンド形式は以下になります。

$ yum whatprovides SOME_STRING

whatprovidesって何だろうと思いGoogle先生で翻訳してみたところ、what provides = 提供するものでした。

manコマンドの説明は以下になります。

provides or whatprovides

Is used to find out which package provides some feature or file.
Just use a specific name or a file-glob-syntax wildcards to list the packages available or installed that provide that feature or file.

提供または提供するもの

どのパッケージが何らかの機能やファイルを提供しているかを調べるために使用されます。
特定の名前またはfile-glob-syntaxのワイルドカードを使用して、その機能またはファイルを提供する利用可能またはインストール済みのパッケージを一覧表示します。


yum providesでも同じ事が可能みたいです。

今回インストールしたいライブラリはlibXss.soなので、ワイルドカードを組み合わせて検索します。

[sora@hoge ~]$ yum provides */libXss.so
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fileplanet.com
 * epel: mirrors.cat.pdx.edu
 * extras: mirrors.sonic.net
 * updates: mirror.fileplanet.com
libXScrnSaver-devel-1.2.2-6.1.el7.i686 : X.Org X11 libXScrnSaver development package
リポジトリー        : base
一致          :
ファイル名    : /usr/lib/libXss.so



libXScrnSaver-devel-1.2.2-6.1.el7.x86_64 : X.Org X11 libXScrnSaver development package
リポジトリー        : base
一致          :
ファイル名    : /usr/lib64/libXss.so

libXScrnSaver-develをインストールすれば良いことが分かりました。
yumコマンドでインストールします。

[root@hoge ~]# yum install libXScrnSaver-devel

無事にライブラリがインストールされました。

[root@hoge ~]# ls -ltr /usr/lib64/libXss.so
lrwxrwxrwx. 1 root root 15 Feb 26 20:17 /usr/lib64/libXss.so -> libXss.so.1.0.0

これから先、ライブラリが足りないエラーが出た時にどんどん活用して行きたいです。