dil: (Default)
Friday, March 15th, 2019 09:31 am

На работе меня попросили установить свежую версию astyle на несколько виртуальных машин.
Они все с CentOS, но готового пакета для них не нашёл, поэтому скачал исходники и попробовал скомпилировать вручную. На одной машине, где был CentOS 7, этот astyle вполне нормально скомпилировался и поставился.
А на остальных, где были разные версии CentOS 5 и 6, и уже были установлены старые версии astyle, свежая версия не скомпилировалось. Какие-то идиотские ошибки вылезали – типа, неправильный код во многих заголовочных файлах..

Ну, решил, что, может, имеет смысл скопировать уже готовый astyle с той CentOS7. Скопировал, но он не запускался. ldd показал неподходящие библиотеки. В частности, /lib64/libc.so.6 . Посмотрел, оказалось, что это не сама библиотека, а просто ссылка на libc-2.12.so . А на той машине, где astyle работал, это была ссылка на libc-2.17.so .

Решил приделать этот libc-2.17.so. Скопировал и эту библиотеку, но при попытке переделать ссылку на неё, наступил на основательные грабли:
удалил libc.so.6, чтобы приделать его ссылкой на новую библиотеку, но тут ln перестал работать.. А также и ls, и куча других программ тоже. Оказалось, что им всем нужен тот /lib64/libc.so.6 .

Да как же можно приделать обратно ссылку, если ж сам ln не работает??
Хорошо, что я не отключился от той машины, а то ведь туда и ssh перестал работать, потому что для sshd тоже нужен этот же libc.so.6 .

Погуглил, оказалось, что вот так можно запустить ln:

LD_PRELOAD=/lib64/libc-2.12.so ln -s libc-2.12.so libc.so.6

Это действительно сработало, так вот и удалось обойти эти грабельки..

Оригинал этой записи в личном блоге.

dil: (Default)
Tuesday, July 3rd, 2018 10:19 am

Вчера на работе создал очередную виртуальную машинку на CentOS для веб-сайта. Но апач почему-то не запускался..
В /var/log/httpd/error_log писал, что не может открыть лог-файл в другой директории, которая была указана в его конфигурации.
Посмотрел – директория на месте, файлы там создавать вполне можно. И хотя у апача User и Group apache, но запускается-то он от рута, и логи создаёт им же. Вот хотя бы у того же /var/log/httpd/error_log – root:root. На всякий случай попробовал поменять владельца той директории на apache:apache, но ничего не изменилось.

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, June 22nd, 2018 12:55 pm

опять встретил загадочные грабельки..

С большинства серверов всё нормально копировалось, а с трёх почему-то
failed: Permission denied (13) ..
Хотя на всех серверах доступ к /var/log/ сконфигурирован одинаково:
[varlog]
uid = root
gid = root
path = /var/log
hosts allow = IP-адрес клиентского хоста

но вот почему-то Permission denied..

Попробовал rsync --list-only server-name::varlog/ , так увиделась ещё более странная фигня: некоторые файлы и директории видны, а большинство таки нет. Хотя практически у всех них пользователь и группа root:root, но по-любому root должен видеть всё, ан нет:

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Tuesday, November 7th, 2017 04:04 pm

Вчера поставил на очередную машинку с CentOS zabbix’овского клиента, добавил ту машинку на сервер, всё настроил, бОльшая часть данных на сервер успешно приходила, а вот про MySQL почему-то нет..

Показывало такую ошибку:
"Received value [ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)] is not suitable for value type [Numeric (float)]"

Попробовал на самой машинке – всё работает:

# zabbix_agentd -t mysql.status[Bytes_sent]
mysql.status[Bytes_sent]                      [t|59709]
# zabbix_agentd -t mysql.slave[Seconds_Behind_Master]
mysql.slave[Seconds_Behind_Master]            [t|166]

А когда то же самое запрашивается с сервера, то фиг:

# zabbix_get -s 10.18.19.100 -k 'mysql.status[Bytes_sent]'
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)

Коллеги порекомендовали посмотреть в /var/log/audit/audit.log, и оказалось, что mysql, запускаемый из-под заббикса, почему-то не может ни прочитать .my.cnf, который я для него создал, ни вообще подключиться к mysql’ному серверу через местный socket..

type=AVC msg=audit(1509982155.365:26576): avc:  denied  { read } for  pid=6599 comm="mysql" name="my.cnf" dev="dm-0" ino=166 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:object_r:mysqld_etc_t:s0 tclass=file
type=AVC msg=audit(1509982155.366:26577): avc:  denied  { read } for  pid=6599 comm="mysql" name=".my.cnf" dev="dm-7" ino=3148594 scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=file
type=AVC msg=audit(1509982155.368:26578): avc:  denied  { connectto } for  pid=6599 comm="mysql" path="/storage-mysql/mysql/mysql.sock" scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:system_r:mysqld_t:s0 tclass=unix_stream_socket

Оказалось, что это selinux не разрешает. Выключил его нафиг, и всё заработало.
Но коллеги сказали, что не положено selinux выключать, так что пришлось его обратно включить, опять перестало работать.

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Wednesday, June 28th, 2017 03:17 pm

В одном регионе есть некий серверочек. Нужно поднять аналогичный в другом регионе и связать с первым. Казалось бы, задачка элементарная.
Создал машинку для второго (виртуальную, хотя это не принципиально), поставил туда CentOS 7, как на первой, весь нужный софт, всё сконфигурировал, запустил, вроде работает.
Стал проверять, можно ли к нему прицепиться с первого сервера — а, блин… telnet: connect to address x.x.x.x: No route to host.
ip route get x.x.x.x показывает маршрут через default gateway, вполне логично.
Попробовал с обратной стороны — со второго к первому — успешно соединяется. Попингал обе машинки друг с друга — с обеих сторон работает. Значит, маршрутизация точно в обе стороны правильная, а чего ж маршрут-то не находится??

Видать, где-то по дороге не пускают. Проверил файрволы в обоих регионах, никаких запретов в сторону новой машинки, да и всей тамошней подсетки, вовсе нету. Да и сам-то я на неё по ssh сразу зашёл без всяких дополнительных правил, значит точно никаких запретов нету. На всякий случай добавил явное правило, чтоб туда пускали на нужный порт этого сервера, а ничего не поменялось, всё такое же No route to host.

Ну раз на внешних файрволах нету, может на самих машинках? Хотя эти машинки для сугубо внутреннего использования, так что не принято на них локальные файрволы приделывать.

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Wednesday, November 30th, 2016 12:05 pm

Попросили меня сапгрейдить машинку, где живёт крупная база под MySQL, со старенькой 32-битовой CentOS, до 64-битовой. Ну, поставил новую VM, установил туда 64-битовую систему, поставил mysql-server, запустил, всё работает. Потом скопировал конфиг со старой машинки, и тут, как всегда, загадочные грабли:
161130 11:11:54 [ERROR] Can't start server: Bind on TCP/IP port: Permission denied
161130 11:11:54 [ERROR] Do you already have another mysqld server running on port: 3307 ?
161130 11:11:54 [ERROR] Aborting

Проверил netstat’ом – нету никого на 3307. Запустил ещё раз — та же фигня, не работает.

Посмотрел на старую машинку, там mysqld действительно на порту 3307. А поменять на 3306 нельзя, слишком много клиентов придётся переконфигурировать.

Попробовал закомментировать опцию port в конфиге, mysqld нормально запустился на дефолтовом 3306. Вписал port 3306 явно, тоже работает. А если поменять на какой-нибудь другой — 3307, 3308, 4096 — фигвам, не работает, хотя эти порты никакими другими программами не используются.

Ну, кто сразу угадал, что это за хрень, и как её исправить?
Отгадка под катом

Read the rest of this entry » )

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, April 22nd, 2016 03:25 pm

Но, похоже, моего свойства наступать на невидимые другими людьми грабли никак не избежать :(

Ставил CentOS 6.6 (в vmware’ной виртуалке, но это не существенно). Сделал 3 раздела (boot, swap, всё остальное в / ). И тут, внезапно, получил пинок:

Спасибо, что хоть предупредили, только поздновато..

Удивился, вернулся обратно к разметке диска, но никаких опций чтоб выбрать MBR вместо GPT, не нашёл. Хотя там диск всего-то на 2 терабайта, MBR вполне прокатил бы, но похоже, этот CentOS больше любит GPT, только заранее про это не предупредил.

Доставил систему, и она, как и обещали, не загрузилась. Поменял в настройках BIOS на EFI, благо в vmware это одним кликом делается, но никакого эффекта. Но это-то понятно, EFI без явных настроек в своём разделе ничего грузить не будет.

Пришлось ставить всё заново под EFI. Инсталлятор ругнулся, что не видит EFIного раздела, предложил создать /boot/efi. Ну создал, всё поставилось без ошибок, успешно загрузилось, но.. внезапно сеть не работает. Сначала я подумал, что выбрал неподдерживаемый сетевой адаптер, но для проверки запустил ifup eth0, и сеть появилась. Перезагрузил — опять нету..

Пошёл копать, и нашёл, что в /etc/sysconfig/network-scripts/ifcfg-eth0 почему-то ONBOOT=no. Поменял на yes, заработало, как положено. Но с какого бодуна там этот no взялся на единственном сетевом интерфейсе, так и не понял..

Оригинал этой записи в личном блоге.

dil: (Default)
Friday, June 17th, 2011 05:16 pm

тот пусть попробует объяснить эту логику:

# ls -l /usr/lib/sendmail
lrwxrwxrwx 1 root root 30 Sep 15 2010 /usr/lib/sendmail -> /etc/alternatives/mta-sendmail
# ls -l /etc/alternatives/mta-sendmail
lrwxrwxrwx 1 root root 26 Sep 15 2010 /etc/alternatives/mta-sendmail -> /usr/lib/sendmail.sendmail
# ls -l /usr/lib/sendmail.sendmail
lrwxrwxrwx 1 root root 16 Sep 15 2010 /usr/lib/sendmail.sendmail -> ../sbin/sendmail
# ls -l /usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 Sep 15 2010 /usr/sbin/sendmail -> /etc/alternatives/mta
# ls -l /etc/alternatives/mta
lrwxrwxrwx 1 root root 27 Sep 15 2010 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail
# ls -l /usr/sbin/sendmail.sendmail
-rwxr-sr-x 1 root smmsp 775064 Mar 31 2010 /usr/sbin/sendmail.sendmail

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме

dil: (Default)
Thursday, April 7th, 2011 06:13 pm

Перенесли тут как-то перловый скриптик на другую  машину. А он возьми да и сломайся. И пошёл я смотреть, отчего это. Ругался он при попытке распарсить XML-файл (да-да, тем самым XML::XPath->new(), про который был предыдущий пост) но ругался довольно странно:

error in processing external entity reference at line 2, column 58, byte 80:
<?xml version="1.0"?>
<!DOCTYPE DataAlertService SYSTEM "DataAlertService.dtd">
=======================================================^

Потратив всего каких-то полдня, я понял, что ругается он вовсе не на указанное место, и даже не на сам этот XML. А на DTD. Потратив ещё полдня, я понял, что на этой машине XML-парсер тупо не понимает parameter entities в DTD.
Это макросы типа <!ENTITY % id 'id CDATA #REQUIRED'>, которые потом можно в том же DTD использовать: <!ATTLIST Official %id; ...

Вот на прежней древней солярке понимал, на моей десктопной убунте понимает, а на этой грёбанной CentOS (5.5, последний релиз, все дела) – не понимает. И после этого мне ещё будут рассказывать о прелестях этих ваших редхатов..

Оригинал этой записи. Комментировать можно тут или там.

Любые материалы из этого блога запрещается использовать на сайте livejournal.ru в любой форме и любом объёме