GNU/Linux >> Belajar Linux >  >> Debian

Mengaktifkan File Systemd Secara Kondisional Melalui Kemasan Debian?

Saya telah membuat paket deb yang menginstal layanan.

Pada perangkat tertanam kami, saya ingin paket ini mengaktifkan layanan secara otomatis. Di tempat kerja pengembang kami, saya ingin para pengembang systemctl start foo secara manual (ini adalah layanan yang berat, sehingga hanya menghabiskan sumber daya jika dijalankan sepanjang waktu di lingkungan desktop).

Bagaimana saya bisa meminta pengguna untuk keputusan mereka selama apt-get melangkah? Apakah itu solusi terbaik?

Catatan, saya telah membuat paket menggunakan dh_make dan debhelper dan mengaktifkannya dengan:

%:
    dh [email protected] --with=systemd

override_dh_systemd_enable:
    dh_systemd_enable --name=foo foo.service

Jawaban yang Diterima:

Anda dapat menggunakan preset systemd untuk memengaruhi apakah layanan systemd akan diaktifkan atau dinonaktifkan secara default pada waktu penginstalan.

Preset Debian default untuk mengaktifkan semua layanan saat mereka diinstal, jadi Anda hanya perlu mengirimkan preset ke workstation pengembangan (perilaku default cocok dengan apa yang Anda inginkan terjadi dalam produksi), dengan mengirimkan file seperti /etc/systemd/system-preset/80-foo.preset berisi baris yang mengatakan

disable foo.service

Jika Anda mengelola stasiun kerja pengembang Anda menggunakan sistem seperti Wayang, Koki, Ansible, dll., Anda dapat menggunakannya untuk mengirimkan konfigurasi prasetel sistem seperti itu, yang akan memudahkan Anda untuk menerapkan kebijakan hanya untuk stasiun kerja pengembang dan bukan produksi mesin.

Paket .deb Anda harus menggunakan systemctl preset perintah untuk mengaktifkan layanan, karena perintah itu akan mengikuti konfigurasi prasetel.

Seperti yang ditunjukkan oleh @JdeBP dan @sourcejedi, makro Debian di deb-helper (seperti dh_systemd_enable ) sudah melakukannya, mereka memanggil deb-systemd-helper yang akan menggunakan systemctl preset secara default (dengan sedikit peringatan bahwa jika Anda menghapus (tetapi tidak membersihkan) paket, dan kemudian menginstalnya kembali, itu tidak akan mengaktifkan layanan, bahkan jika Anda menghapus file prasetel.) Lihat komentar ini di deb-systemd-helper enable operasi:

    # We use 'systemctl preset' on the initial installation only.
    # On upgrade, we manually add the missing symlinks only if the
    # service already has some links installed. Using 'systemctl
    # preset' allows administrators and downstreams to alter the
    # enable policy using systemd-native tools.

Untuk informasi lebih lanjut tentang fitur preset systemd, lihat halaman manual preset systemd dan perintah systemctl preset yang mengimplementasikannya.

Terkait:Debian – DNS tidak diatur dengan benar di Debian Linux?
Debian
  1. Menulis File Layanan Systemd Dasar?

  2. Debian – Layanan Aktif Tapi (keluar)?

  3. Debian – Tidak Yakin Apa yang Memulai File Unit Systemd Ini?

  1. Debian – Cara Tepat Menggunakan Onfailure Di Systemd?

  2. Keamanan Debian /etc Izin?

  3. Debian – Systemd:Layanan Tidak Memiliki Pengaturan Execstart=Dan Execstop=. Penolakan?

  1. Bagaimana Cara Mengubah Pengguna Untuk Banyak File Layanan Systemd?

  2. Cara Menginstal Suricata di Debian 11

  3. Bagaimana menghentikan layanan systemd