forked from ClickHouse/homebrew-clickhouse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
clickhouse@23.12.rb
101 lines (86 loc) · 3.47 KB
/
clickhouse@23.12.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
class ClickhouseAT2312 < Formula
desc "Free analytics DBMS for big data with SQL interface"
homepage "https://clickhouse.com"
license "Apache-2.0"
url "https://github.com/ClickHouse/ClickHouse/releases/download/v23.12.4.15-stable/clickhouse-macos-aarch64",
verified: "github.com/ClickHouse/ClickHouse/"
sha256 "4770192072bce7afdbc49f33e90e04154b360de94d0307fdff432996b5474bcb"
livecheck do
url :url
regex(/^v?(\d+(?:\.\d+)+[._-](lts|stable))$/i)
end
def install
system "chmod", "+x", "./clickhouse-macos-aarch64"
system(
"./clickhouse-macos-aarch64",
"install",
"--prefix",
HOMEBREW_PREFIX,
"--binary-path",
prefix/"bin",
"--user",
"",
"--group",
""
)
# Relax the permissions when packaging.
Dir.glob([
etc/"clickhouse-server/**/*",
var/"run/clickhouse-server/**/*",
var/"log/clickhouse-server/**/*",
]) do |file|
chmod 0664, file
chmod "a+x", file if File.directory?(file)
end
end
def post_install
# WORKAROUND: .../log/ dir is not bottled, looks like.
mkdir_p var/"log/clickhouse-server"
# Fix the permissions when deploying.
Dir.glob([
etc/"clickhouse-server/**/*",
var/"run/clickhouse-server/**/*",
var/"log/clickhouse-server/**/*",
]) do |file|
chmod 0640, file
chmod "ug+x", file if File.directory?(file)
end
# Make sure the data directories are initialized.
system opt_bin/"clickhouse", "start", "--prefix", HOMEBREW_PREFIX, "--binary-path", opt_bin, "--user", ""
system opt_bin/"clickhouse", "stop", "--prefix", HOMEBREW_PREFIX
end
def caveats
<<~EOS
If you intend to run ClickHouse server:
- Familiarize yourself with the usage recommendations:
https://clickhouse.com/docs/en/operations/tips/
- Increase the maximum number of open files limit in the system:
macOS: https://clickhouse.com/docs/en/development/build-osx/#caveats
Linux: man limits.conf
- Set the 'net_admin', 'ipc_lock', and 'sys_nice' capabilities on #{opt_bin}/clickhouse binary. If the capabilities are not set the taskstats accounting will be disabled. You can enable taskstats accounting by setting those capabilities manually later.
Linux: sudo setcap 'cap_net_admin,cap_ipc_lock,cap_sys_nice+ep' #{opt_bin}/clickhouse
- By default, the pre-configured 'default' user has an empty password. Consider setting a real password for it:
https://clickhouse.com/docs/en/operations/settings/settings-users/
- By default, ClickHouse server is configured to listen for local connections only. Adjust 'listen_host' configuration parameter to allow wider range of addresses for incoming connections:
https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-listen_host
EOS
end
service do
run [
opt_bin/"clickhouse", "server",
"--config-file", etc/"clickhouse-server/config.xml",
"--pid-file", var/"run/clickhouse-server/clickhouse-server.pid"
]
keep_alive true
run_type :immediate
process_type :standard
root_dir var
working_dir var
log_path var/"log/clickhouse-server/stdout.log"
error_log_path var/"log/clickhouse-server/stderr.log"
end
test do
assert_match "Denis Glazachev",
shell_output("#{bin}/clickhouse local --query 'SELECT * FROM system.contributors FORMAT TabSeparated'")
end
end