Чудики-дистростроители

Dec 12, 2022 20:12


... Обычно я ставлю PostgreSQL из официальных репозиториев "pgdg" (PostgreSQL Global Development Group). Он там посвежее будет. Но в этот раз чё-то поленился, контур очередного заказчика анально огорожен, наисвежайшая версия не нужна, так что взял его прямо из дистрибутива Ubuntu 20.04. И внезапно наткнулся на фичу, с которой проковырялся довольно долго.

... Мантайнеры Debian / Ubuntu в своё время решили конкретно выпендриться и написали для запуска Postgres-а ещё один отдельный wrapper под названием "/usr/bin/pg_ctlcluster", да ещё и на Perl-е (!). Он там тянется ещё с невесть каких версий, почему-то его никто не хочет выкидывать. И systemd дёргает не бинарник Postgres-а, а именно что вот этот wrapper-скрипт.

Помимо прочих рукоблудий, этот wrapper также переопределяет через ключи командной строки место, куда Postgres должен складывать логи. Причём, мне пришлось конкретно покопаться в текстах этого скрипта, чтобы найти откуда же именно он берёт путь к файлу с логами. Нашёл:
# default log file (possibly used only for early startup messages)
my $log_symlink = $result{'configdir'} . "/log";
if (-l $log_symlink) {
($result{'logfile'}) = readlink ($log_symlink) =~ /(.*)/; # untaint
} else {
$result{'logfile'} = "/var/log/postgresql/postgresql-$v-$c.log";
}

То есть, если ты хочешь переложить логи Postgres-а в другую папочку и не сломать всё к х**м, то надо в "/etc/postgresql/12/main" создать символическую ссылку на файл с логами и назвать её "log" (где вместо "12" подставить свою версию, разумеется).

Вот спрашивается, нах*я они так сделали, а главное, зачем?

Норкоманы.

Так что лучше не ленитесь, и всё-таки ставьте Postgres из PGDG. В нём такой х**ни нет. Сэкономите себе время и нервы.

ubuntu, debian, грабли, postgresql, трудовыебудни

Previous post Next post
Up