пятница, 2 декабря 2016 г.

ubuntu/mint: IOError: [Errno 2] No such file or directory: '/usr/share/libvirt/cpu_map.xml'

IOError: [Errno 2] No such file or directory: '/usr/share/libvirt/cpu_map.xml'
при попытке подключиться virt-manager к другому хосту.
$ dpkg --search /usr/share/libvirt/cpu_map.xml
libvirt-bin: /usr/share/libvirt/cpu_map.xml

Ставить libvirt-bin

вторник, 29 ноября 2016 г.

CentOS 7: включаем core dump

Обычно достаточно модифицировать service файл, добавив
[Service]
LimitCORE=infinity

или глобально, в /etc/systemd/system.conf
DefaultLimitCORE=infinity

Иногда требуется выставить
kernel.core_uses_pid = 1
fs.suid_dumpable = 2

Обычно этого достаточно.

пятница, 25 ноября 2016 г.

CentOS 7 и сокет-файлы

Суть в том, что раньше многие писали сокет файлы в /tmp, а сейчас например при запуске сервиса uwsgi + nginx с сокетом в /tmp при попытке обратиться можно поймать
(2: No such file or directory) while connecting to upstream
и долго ломать голову, что же не так.

Это systemd security feature, корни примерно тут
[Service]
PrivateTmp=true
И если подумать, это правильно. Учимся использовать /run (в центос 7 оно же /var/run в виде симлинка на ../run)

Не путаем с permission denied, что обычно из-за прав на сокет файл или каталог где он лежит. ИЛИ - из-за selinux, проверить getenforce, который входит в пакет libselinux-utils. Если Enforced - переводим в permissive и проверяем снова
setenforce permissive

Не забываем потом перенастроить selinux или отключить его.
http://stackoverflow.com/questions/26334526/nginx-cant-access-a-uwsgi-unix-socket-on-centos-7

вторник, 15 ноября 2016 г.

rpmbuild: отключаем проверку зависимостей

Иногда собираем проект, где внутри свои либы... А при установке эти либы хочет увидеть на стандартных местах.
Отключить можно так:
1) AutoReqProv: no в спек или в ~/.rpmmacros
2) %define %__find_requires         %{nil}
или %define __find_requires         /bin/true


По аналогии можно отключить авто provides:
%__find_provides   /bin/true
или Autoprov: 0

линки:
http://rpm5.org/docs/max-rpm.html#s2-rpm-depend-autoreqprov
http://rpm.org/max-rpm-snapshot/s1-rpm-depend-auto-depend.html

понедельник, 17 октября 2016 г.

zabbix и Linux template: нормальный учёт памяти

Штатно  в linux шаблоне есть триггер Lack of available memory on server {HOST.NAME} на параметр {Template OS Linux:vm.memory.size[available].last(0)}. Проблема в том, что в таком виде триггер бесполезен чуть менее чем совсем, и особенно с учётом штатного десятка мегабайт. Тем более, у разных серверов будет разное количество памяти и разные границы. Да, можно зайти в настройки хоста и поправить триггер, но это совсем через одно место.
К счастью, есть параметр, показывающий свободную память... в процентах. Куда логичнее абсолютного значения, не правда ли? И отличие всего в 1 букву: оно pavailable
Так что идём в Items, клонируем старый айтем, правим ему ключик и имя, повторяем в Triggers. Можно повторить для другого уровня с другой важностью, например 10 и 20 - average и warning.
Ну и почитать про этот параметр
https://www.zabbix.com/documentation/2.4/ru/manual/appendix/items/vm.memory.size_params

пятница, 7 октября 2016 г.

ipset как аналог address lists микротика

Одно из частых применений address lists - "временные" записи, в том числе для неудачных попыток подключения и временных банов. Или наоборот, "полезных" машин, для port knocking.
Для этого у ipset есть опция timeout. А дальше как обычно, ALLOW|DROP

И пример доки
https://habrahabr.ru/post/108691/

вторник, 9 августа 2016 г.

python: Собираем свой пакет из pip версии

Зачастую в пакетах лежит нужная библиотека, но отставшая от нужной версии года так на 3-4. Или вообще доступная только в pip.
Самый простой вариант это использовать библиотеку из pip. К сожалению, у pip нет "собранных" версий, поэтому на хосте тогда нужен компилятор, что многим неприемлемо для "боевых" сред. И в целом это разумно.
Хороший выход - используем ноду для сборки и собираем там virtualenv с нужными пакетами. А потом итог оборачиваем в пакет (пишем спеку). Также это может быть докер, но опять же - туда нужен компилятор... И опять возвращаемся к virtualenv. Впрочем, для простых либ и единообразной среды достаточно скопировать нужные файлы в SOURCES и раскидать их по местам установщиком пакета, более сложные либы лучше пакетировать раздельно. Если уже есть такая же старая либа --  всё просто, качаем .src.rpm, правим .spec под новую версию, подкладываем архив с новыми исходниками, собираем.
А может быть, что за основу взять нечего... Тогда можно взять например python-pika, скопировать его spec и начать правки.
Нужно скачать архив нужной версии, для примера сделаем пакет для couchbase. Работаем от обычного пользователя, который будет заниматься сборкой

четверг, 14 июля 2016 г.

debian 8, apache, php: почта ходит только от рута

Довелось настраивать debian 8 + apache 2.4 (ITK) + php, штатный почтовик exim (и сразу - не забываем сказать dpkg-reconfigure exim4-config и выставить режим internet site), а дальше - есть скрипт-мейлер, от рута из консоли mail() возвращает true, а ровно оно же но через сайт отдаёт false. При этом в paniclog появляется строка
 unable to set gid=1000 or uid=0 (euid=0): forcing real = effective
По данной строке уже гуглится проблема и решение:
<IfModule mpm_itk_module>
LimitUIDRange 0 6000
LimitGIDRange 0 6000
</IfModule>

ну или так
echo "LimitGIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
echo "LimitUIDRange 0 2000" >> /etc/apache2/mods-available/mpm_prefork.conf
service apache2 restart
(только с гидом не работает, надо uid+gid)

Кто-то набыдлокодил и выпустил это в мир, только непонятно кто именно.

Плюс кому-то также в exim надо вписать 
disable_ipv6 = true

И опционально в /etc/php5/apache/php.ini найти sendmail_path и выставить
sendmail_path = "/usr/sbin/exim4 -ti"

И немного доков

пятница, 17 июня 2016 г.

couchbase: сброс пароля пользователя Administrator

Можно через cli
./couchbase-cli cluster-init -c localhost:8091 --user=Administrator --password=123 --cluster-init-username=Administrator --cluster-init-password=god

Но есть другой штатный способ, проще
/opt/couchbase/bin/cbreset_password 127.0.0.1:8091

И внимание на вопрос:
Do you really want to do it? (yes/no)
Тут надо отвечать не y, а полностью yes, иначе просто молча выйдет. А должно быть так:

Do you really want to do it? (yes/no)yes
Resetting administrative password...
Password for user Administrator was successfully replaced.

четверг, 16 июня 2016 г.

среда, 11 мая 2016 г.

rpmbuild: *** ERROR: No build ID note found in ...

Лечение:
1) добавить в сборку node-id
--buil-id
Если не помогло:
2) отключить сборку debuginfo
a) %global _missing_build_ids_terminate_build 0
б) %global debug_package %{nil}
в) попробовать удалить "проблемные" файлы

пятница, 6 мая 2016 г.

Собираем google V8 под centos 6

Почти все действия проводим от простого пользователя, незачем зря портить систему. И желательно на отдельном билд-сервере.

V8 is Google's open source high-performance JavaScript engine, written in C++ ... V8 can run standalone, or can be embedded into any C++ application.

centos 6: готовим lsb_release

Штатно нет команды lsb_release. Часть информации можно получить через
cat /etc/*-release
но некоторое ПО хочет именно эту команду.

yum provides */lsb_release
и как вариант
yum install redhat-lsb-core