Debian/Ubuntu - インストール時のサービスの起動とアクティベーションの防止

Debian/Ubuntu - インストール時のサービスの起動とアクティベーションの防止

私はDebianまたはUbuntuをサーバーとして設定するのが好きで、設定する前に多くのアプリケーションをインストールする必要があります。必要に応じて、後で使用できるようにアプリをインストールすることもあります。

これらのアプリケーションを自動的に有効にして実行することは望ましくありません。これにより、特に設定が変更されず、他のアプリケーションと競合する場合に問題が発生する可能性があります。

たとえば、次のソフトウェアをインストールしましたapt install nginx apache2 lighttpd

再起動すると、Nginxはポート80でリッスンしていたため、誤って設定され安全でないため無効にする必要がありました。

ここに画像の説明を入力してください。

無効にして再起動しましたが、誰がポートを占有しているのかがわかります。

ここに画像の説明を入力してください。

無効にすると、lighttpdApache2が置き換えられます。

これは言うまでもなく、私がインストールしたアプリケーションと戦うような気がします。停止する方法はありますか?インストール時にサービスを有効にして起動する動作を無効にする方法はありますか?

編集する

自動起動を防ぐソリューションが見つかりました。

echo exit 101 > /usr/sbin/policy-rc.d
chmod +x /usr/sbin/policy-rc.d

自動アクティベーションを防ぐソリューションが見つかりました。

https://unix.stackexchange.com/a/723679/547917

apt --no-enable --no-startしかし、これは面白いことです。一種のスイッチを使用するよりも単純なものはありません。

答え1

systemdプリセットを設定して、新しくインストールされたサービス(少なくともsystemdユニットを使用して構成されたほとんどのサービス)をデフォルトで無効にすることができます。

sudo mkdir -p /etc/systemd/system-preset
echo 'disable *' | sudo tee /etc/systemd/system-preset/99-default-disable.preset

バラよりman systemd.presetもっと学ぶ。

答え2

独自のパッケージを作成し、サービスが自動的に起動したくない場合は、プリセットファイルをインストールできます。複数の場所があります。フォルダは既にデフォルトのシステムファイルとともに存在するため、パッケージの次の場所を選択しました。

/etc/systemd/system-preset/

拡張子で50-始まり、パッケージ名にちなんでファイル名を指定しました。.preset

50-<package-name>.preset

ファイルに次の行を追加しました。

disable <service-name>.service

一般的<service-name>には同じです<package-name>が、必ずしもそうではありません。

これで、debian/<package-name>.installファイルにもう1行があります。

/usr/share/<package-name>/50-<package-name>.preset /etc/systemd/system-preset/

直接インストールできないため、私のCMakeLists.txtファイルの1つのディレクトリ.presetにファイルをインストールしました。/usr/share/<package-name>//etc/...

project(service-config)

INSTALL(
    FILES
        50-<package-name>.preset

    DESTINATION
        share/<package-name>
)

これで、サービスの状態が次のように表示されます。

...; vendor preset: disabled)

つまり、無効なサービスから始めてください。私の場合、サービスが機能するためにキーをインストールする必要があるので、デフォルトでは無効にしたいと思います。

関連情報