そのようなファイルまたはディレクトリ/etc/init.d/functionsはありません


21

アプリケーションのグループを起動/再起動/停止するための起動スクリプトを作成しました。/etc/init.d/functionsスクリプトでlibを使用しました。私のシステムではうまく機能していますが、クライアントでは機能していません。彼はエラーを受け取っています:

そのようなファイルまたはディレクトリ/etc/init.d/functionsはありません

現在、クライアントが使用しているLinuxディストリビューションがわかりません。あるinit.d/functionsファイルが別のLinuxディストリビューションごとに異なりますか?もしそうなら、どうすればそれを見つけることができますか?


このエラーは、Windowsの行末によっても発生する可能性があることに注意してください。
エマーソンロシャ

回答:


24

実行しているディストリビューションに固有です。DebianとUbuntuには/lib/lsb/init-functions; SuSEには/etc/rc.status; それらのどれも他のものと互換性がありません。 実際、一部のディストリビューションはまったく使用しないか/etc/init.d、互換性のない方法で使用します(SlackwareとArchは頭の中で思い浮かびますが、他にもあります)。


Redhat 5.5のファイルとファイルの場所を確認できますか?
tecman

また、それらのファイル名とパスを見つけるにはどうすればよいですか?それを行う方法はありますか、ドキュメントからしか見つけることができませんか?
tecman

私はそれらの両方を利用できるので、見てみました。Red Hatをインストールしていません。しかし、上で太字で言ったことの重要性を見逃しているかもしれ/etc/init.d/functions ません:あなたの関数は他のディストリビューションには存在ません。すべてのディストリビューションにはの独自のルールが/etc/init.dあり、その関数ライブラリ(ある場合)はそれらのルールを中心にしています。たとえば、SuSEのrc_status -s。にあるはずのLSB「標準」関数がいくつかあり/lib/lsb/init-functionsますが、クライアントはそれを提供するために更新されたディストリビューションを実行していない可能性があります。
ギーコサウルス

15

CentOSの7ドッカーイメージ私は単にパッケージをインストールする必要がありましたinitscripts。このスクリプトは、インストールするためには:

yum install -y initscripts

このコミットを見てくれたこの問題のdocker-libraryおかげ


これにより、DockerコンテナでFedora 24のJenkinsを使用する問題が修正されました。(もちろん、dnf代わりに使用されますyum)。ありがとう!
geerlingguy

これは、MarkLogic 9をCentos7ドッカーコンテナにインストールする場合にも機能します。インストールドキュメントにはlib.so.6とlsb-core-amd64の必要性のみが記載されていますが、CentOS 7のフルインストールでのインストールについて話しているので、initscriptsパッケージが必要であることを見落としていると思います。
alc6379

12

それは絶対にディストリビューションに依存しています。適切に一致するinitスクリプトを作成するには、実際にディストリビューションを見つける必要があります。

LSB(Linux Standard Base)仕様にも従うことができ、問題のディストリビューションもそうであったことを期待できます。現在の仕様では、標準のinitスクリプト関数を次のように使用できることが規定されています/lib/lsb/init-functionsこちらのドキュメントを参照)。Fedoraおよびその他のRed Hat関連のディストリビューションredhat-lsbでは、パッケージによって提供されますが、これはオプションです

だから、あなたは本当にあなたがターゲットにしているものを把握する必要があります。ごめんなさい。


1

最近の回答を追加する

別の回答で述べたように、Linux Standard Base(LSB)仕様は、ここにinit.dリストされているLSB定義のinit関数を使用して、プラットフォームに依存しない起動スクリプトを記述する方法を提供します

全てのLSB準拠したディストリビューション(すべての大きなもの)ファイルを提供/lib/lsb/init-functionsするメタパッケージで(記載されている関数を定義しています)lsb-core-noarchディストリビューションのパッケージマネージャを使用してインストールすることができます$PKGMAN $INSTOPT lsb-core-noarchyumdnfapt、...)。

このような初期化スクリプトの例はこれです。

しかし、どのように与えられたsystemd今ではほとんどのディストリビューションのための事実上のシステムとサービスマネージャで、それは書く方が良いでしょうsystemd service unit書き出すのではなくをinitscript



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.