Работа с portage

Искал ответ на вопрос в доках gentoo и у calculate и не нашел ответа.

Нужно мне установить postgresql

eix posgresql говорит что это пакет dev-db/postgresql и что у него есть доступные версии:

(14) 14.24, (15) 15.11, (16) 16.15, (17) 17.11, (18) 18.6

И я не могу поставить мне нужную, к примеру я к заббиксу хочу прикрутить именно 17 версию.

Пишу emerge -a /dev-db/postgresql17 или postgresql-17 или postgresql17.11 или postgresql-17.11 но он говорит что такого не существует пакета. Устанавливается лишь самая новая 18 при emerge -a dev/-db/postgresql и всё.

На самом деле я бы и 18 поставил, но в ней нет конфигов, их нужно где-то рыть и вставлять в /etc/postgresql-18/ короче какой-то геморой. Думаю в 14й или 15й версии конфиги будут, ранее когдато ставил, чуть правил конфиг и запускал, а теперь какой-то трэш. Чтоб поставить zabbix нужно изучить аховый объем документации по postgresql в 2000 страниц и после приступать к установке забикса. Раньше всё было гораздо проще, а теперь куда не сунься когфигов с комментами мало, либо они с мин количеством параметров без комментариев. Поди разберись что куда. Статья из вики у Calculate устарела, там 9 версия рассматривается и многие команды уже не работают. Актуальность документации - ключевая тема для популярности, жать что никто из “отечественных” этого не делает. Возьми альт, редос, росу и прочих, на момент старта импортозамещения наваяли документации под шумок и после забросили её ведение.

Пока что вопрос решил через ручную установку из исходников скачанных на оф сайте postgresql. Теперь нужно дать знать portage о том что я установил программу.

Тут дело в том, как Gentoo/Calculate управляет версиями через слоты (slots) и стабильность.

  1. Как поставить именно 17-ю версию:
    В Gentoo-подобных системах пакет один (dev-db/postgresql), но он имеет разные слоты. Посмотри вывод eix dev-db/postgresql — там в скобках указаны цифры (14), (15) и т.д. Это и есть слоты.
    Чтобы поставить 17-ю, попробуй команду:
    emerge -av "=dev-db/postgresql-17.11"
    (Обрати внимание на знак равенства и точную версию, или просто =dev-db/postgresql:17).

  2. Если система ругается, что версия “замаскирована” (masked):
    Это значит, что разработчики считают её ещё недостаточно протестированной для массового использования (ключ ~amd64). Чтобы разрешить установку, нужно добавить строчку в файл /etc/portage/package.accept_keywords:
    =dev-db/postgresql-17.11 ~amd64
    После этого emerge увидит эту версию как доступную.

  3. Если он всё равно тянет 18-ю:
    Значит, 18-я версия помечена как стабильная (amd64), а 17-я — как тестовая, либо 18-я просто новее. Чтобы зафиксировать 17-ю и не дать системе обновиться до 18-й, можно замаскировать 18-ю. Создай или отредактируй файл /etc/portage/package.mask и добавь туда:
    >dev-db/postgresql-17.99
    Это скажет Portage: “Всё, что выше 17-й серии, мне не показывай”.

  4. Про конфиги:
    Ты прав, в новых версиях Postgres минималистичные конфиги. Но “правильный” путь в Gentoo/Calculate — после установки выполнить инициализацию базы данных командой (путь может отличаться, проверяй через qlist -c dev-db/postgresql | grep init):
    Обычно это что-то вроде:
    /usr/bin/postgresql-setup --initdb
    Или для конкретной версии:
    /usr/lib64/postgresql-17/bin/initdb -D /var/lib/postgresql/17/data
    Конфиги (postgresql.conf, pg_hba.conf) генерируются именно при инициализации дата-каталога, а не просто при распаковке пакета. Если ты ставил из исходников вручную, тебе теперь нужно сделать “eject” для portage, чтобы он не пытался перетереть твои файлы, либо (что лучше) удалить ручную установку и поставить через portage с правильными флагами, чтобы система сама создала структуру каталогов.

1 Like