Add script to create deb package
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -9,3 +9,6 @@ result-*
|
|||||||
|
|
||||||
# Nix VM
|
# Nix VM
|
||||||
*.qcow2
|
*.qcow2
|
||||||
|
|
||||||
|
# Packaging
|
||||||
|
/assets/completions/
|
||||||
|
|||||||
44
Cargo.toml
44
Cargo.toml
@@ -68,3 +68,47 @@ anyhow = "1.0.100"
|
|||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
regex = "1.12.2"
|
regex = "1.12.2"
|
||||||
|
|
||||||
|
[package.metadata.deb]
|
||||||
|
name = "mysqladm-rs"
|
||||||
|
priority = "optional"
|
||||||
|
section = "databases"
|
||||||
|
depends = "$auto"
|
||||||
|
license-file = ["LICENSE", "0"]
|
||||||
|
maintainer = "Programvareverkstedet <projects@pvv.ntnu.no>"
|
||||||
|
copyright = "Copyright (c) 2025, Programvareverkstedet"
|
||||||
|
assets = [
|
||||||
|
[
|
||||||
|
"target/release/mysqladm",
|
||||||
|
"usr/bin/",
|
||||||
|
"755",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"example-config.toml",
|
||||||
|
"etc/mysqladm/config.toml",
|
||||||
|
"600",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"assets/completions/_*",
|
||||||
|
"usr/share/zsh/site-functions/completions/",
|
||||||
|
"644",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"assets/completions/*.bash",
|
||||||
|
"usr/share/bash-completion/completions/",
|
||||||
|
"644",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"assets/completions/*.fish",
|
||||||
|
"usr/share/fish/vendor_completions.d/",
|
||||||
|
"644",
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"assets/systemd/*",
|
||||||
|
"etc/systemd/system/",
|
||||||
|
"644",
|
||||||
|
],
|
||||||
|
]
|
||||||
|
systemd-units = [
|
||||||
|
{ unit-name = "mysqladm", unit-scripts = "assets/systemd", enable = true },
|
||||||
|
]
|
||||||
|
|||||||
54
assets/systemd/mysqladm.service
Normal file
54
assets/systemd/mysqladm.service
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=MySQL administration tool for non-admin users
|
||||||
|
Requires=mysqladm.socket
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=notify
|
||||||
|
ExecStart=/usr/bin/mysqladm-rs server --systemd socket-activate
|
||||||
|
|
||||||
|
WatchdogSec=15
|
||||||
|
|
||||||
|
User=mysqladm
|
||||||
|
Group=mysqladm
|
||||||
|
DynamicUser=yes
|
||||||
|
|
||||||
|
ConfigurationDirectory=mysqladm
|
||||||
|
RuntimeDirectory=mysqladm
|
||||||
|
|
||||||
|
# This is required to read unix user/group details.
|
||||||
|
PrivateUsers=false
|
||||||
|
|
||||||
|
# Needed to communicate with MySQL.
|
||||||
|
PrivateNetwork=false
|
||||||
|
PrivateIPC=false
|
||||||
|
|
||||||
|
AmbientCapabilities=
|
||||||
|
CapabilityBoundingSet=
|
||||||
|
DeviceAllow=
|
||||||
|
DevicePolicy=closed
|
||||||
|
LockPersonality=true
|
||||||
|
MemoryDenyWriteExecute=true
|
||||||
|
NoNewPrivileges=true
|
||||||
|
PrivateDevices=true
|
||||||
|
PrivateMounts=true
|
||||||
|
PrivateTmp=yes
|
||||||
|
ProcSubset=pid
|
||||||
|
ProtectClock=true
|
||||||
|
ProtectControlGroups=strict
|
||||||
|
ProtectHome=true
|
||||||
|
ProtectHostname=true
|
||||||
|
ProtectKernelLogs=true
|
||||||
|
ProtectKernelModules=true
|
||||||
|
ProtectKernelTunables=true
|
||||||
|
ProtectProc=invisible
|
||||||
|
ProtectSystem=strict
|
||||||
|
RemoveIPC=true
|
||||||
|
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
|
||||||
|
RestrictNamespaces=true
|
||||||
|
RestrictRealtime=true
|
||||||
|
RestrictSUIDSGID=true
|
||||||
|
SocketBindDeny=any
|
||||||
|
SystemCallArchitectures=native
|
||||||
|
SystemCallFilter=@system-service
|
||||||
|
SystemCallFilter=~@privileged @resources
|
||||||
|
UMask=0777
|
||||||
8
assets/systemd/mysqladm.socket
Normal file
8
assets/systemd/mysqladm.socket
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=MySQL administration tool for non-admin users
|
||||||
|
WantedBy=sockets.target
|
||||||
|
|
||||||
|
[Socket]
|
||||||
|
ListenStream=/run/mysqladm/mysqladm.sock
|
||||||
|
Accept=no
|
||||||
|
PassCredentials=true
|
||||||
19
create-deb.sh
Executable file
19
create-deb.sh
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
cargo build --release
|
||||||
|
|
||||||
|
mkdir -p assets/completions
|
||||||
|
|
||||||
|
./target/release/mysqladm generate-completions --shell bash > assets/completions/mysqladm.bash
|
||||||
|
./target/release/mysqladm generate-completions --shell zsh > assets/completions/_mysqladm
|
||||||
|
./target/release/mysqladm generate-completions --shell fish > assets/completions/mysqladm.fish
|
||||||
|
|
||||||
|
./target/release/mysqladm generate-completions --shell bash --command mysql-dbadm > assets/completions/mysql-dbadm.bash
|
||||||
|
./target/release/mysqladm generate-completions --shell zsh --command mysql-dbadm > assets/completions/_mysql-dbadm
|
||||||
|
./target/release/mysqladm generate-completions --shell fish --command mysql-dbadm > assets/completions/mysql-dbadm.fish
|
||||||
|
|
||||||
|
./target/release/mysqladm generate-completions --shell bash --command mysql-useradm > assets/completions/mysql-useradm.bash
|
||||||
|
./target/release/mysqladm generate-completions --shell zsh --command mysql-useradm > assets/completions/_mysql-useradm
|
||||||
|
./target/release/mysqladm generate-completions --shell fish --command mysql-useradm > assets/completions/mysql-useradm.fish
|
||||||
|
|
||||||
|
cargo deb
|
||||||
Reference in New Issue
Block a user