Показаны сообщения с ярлыком CentOS. Показать все сообщения
Показаны сообщения с ярлыком CentOS. Показать все сообщения

воскресенье, 31 декабря 2023 г.

centos+vfat?

 Иногда вдруг может понадобиться в центоси fat32, он же vfat

yum whatprovides mkfs.vfat

yum install dosfstools

Нюанс: раздел может потребоваться переключить из linux для корректной работы:

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): b

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.

Changed type of partition 'Linux' to 'W95 FAT32'

сохраняем (w), форматируем и используем..

четверг, 20 августа 2020 г.

rpmbuild: условия в Requires

 Starting with rpm-4.13, RPM is able to process boolean expressions in all dependencies (Requires, Recommends, Suggests, Supplements, Enhances, Conflicts). Boolean Expressions are always enclosed with parenthesis. They are build out of “normal” dependencies: either name only or name, comparison and version description.

https://rpm.org/user_doc/boolean_dependencies.html

То есть теперь можно написать такие вещи как

Requires: (pkgA or (pkgB and pkgC))

Supplements: (foo and (lang-support-cz or lang-support-all))

и так далее. НО - это всё есть только в centos8, в 7 и ниже версии старые, в 7 например 4.11.

вторник, 23 июля 2019 г.

CentOS 7: ставим MongoDB произвольной версии

Для начала, надо определить какая версия нам нужна, список можно взять тут
http://repo.mongodb.org/yum/redhat/7/mongodb-org/
На данный момент там доступны версии от 3.0 до 4.1

среда, 1 мая 2019 г.

Nagios+grafana

За основу можно взять статью
https://support.nagios.com/kb/article.php?id=802
Но - только взять за основу, поскольку эта статья УЖАСНА. По форме и содержанию. Главный элемент в этой доке это nagflux, который связывает метрики нагиоса и БД influxdb. Также описывается histou

Есть ряд нюансов, например если ставим в центос6 то epel там постоянно обрезают, нужно искать пакеты по архивам.
Вообще, дока крайне странная, чего стоит использование путей /usr/local/..., вместо cat >> file << EOF делается пачка echo '', неполные и нерабочие конфиги...
Также можно посмотреть эту доку
https://exchange.nagios.org/directory/Documentation/Nagios-with-InfluxDB%2C-nagflux-and-Grafana/details

вторник, 26 февраля 2019 г.

CentOS: чем собирать пакеты

1) классика, rpmbuild
1.5) собираем srpm и потом дособираем пакеты через mock
2) fpm. Осторожно, ruby! Умеет собирать не только под центос, но руби убивает его на корню.
3) tito
4) rpkg

Чем плох rpmbuild - он не умеет выкачивать сам пакеты (есть spectool, но он качает только готовые файлы), интеграции с гитом не умеет. Умеет в частности tito, или можно взять за пример такое.

пятница, 8 февраля 2019 г.

Расширенная статистика nginx

Есть такой пакет, nginx-module-vts, даёт много полезной информации. Есть ссылка на офсайте в разделе NGINX 3rd Party Modules.
Но последний коммит был 30 июня 2018 и с тех пор автор не отвечает.

Есть другой модуль, nginx-lua-prometheus. Под debian есть инструкция через установку libnginx-mod-http-lua, но centos тут в пролёте, так что собираем первый.

вторник, 29 января 2019 г.

Ansible: EPEL in CentOS 7

Если нужно поставить epel в центос 7 то это делается разными путями, например так
https://github.com/geerlingguy/ansible-role-repo-epel/blob/master/tasks/main.yml
(или просто подключаем эту роль, или так, вариантов много...)
можно зайти сюда и взять отсюда ключ например
https://dl.fedoraproject.org/pub/epel/

Но можно гораздо проще.
- name: Install EPEL repo
  yum:
    name: epel-release
    state: latest

Потому что всё нужное в 7 центоси уже есть и так. Бонусом - ставятся еще epel-testing и epel-src

суббота, 24 ноября 2018 г.

CentOS7: монтируем ufs разделы

После переезда с фряхи на центос бывает необходимость получить доступ к старым данным, варианты там - zfs и ufs. Рассмотрим случай под ufs
Под центос 6 в elrepo была сборка dkms-ufs, но под 7 версию её уже нет. Увы, SRPM от 6 тоже недоступно, нужно собрать самим.

воскресенье, 18 ноября 2018 г.

Работа с контроллерами на базе LSi

https://serverfault.com/questions/589070/how-to-monitor-the-hard-disk-status-behind-dell-perc-h710-raid-controller-with-c

Во фре есть очень удобная утилита mfiutil, увы но тут её нет.

Вариант первый, для мазохистов (или у кого уже были скрипты): MegaCLI. Аццкая хрень, придуманная то ли индусами, то ли инопланетянами. В общем, это дерьмо работает, хоть и не обойтись без помощи гугла.

http://blog.ispsystem.info/2017/04/megacli-centos-7.html

И чуть о вариантах запуска
получить информацию о контроллере
megacli -AdpAllInfo -aAll

Информация по дискам
megacli  -PDList -aALL

Вариант второй, omreport и подобное
http://linux.dell.com/repo/hardware/omsa.html

Вариант третий, говорят сами инженеры lsi поняли какое говно они сделали и добавили поддержку storcli

В случае c Dell есть нюанс, просто добавить группу дисков через iDRAC невозможно без перезагрузки, при том что megacli это умеет, как и сам контроллер. Но что ещё хуже, порой даже ребут не поможет, добавляем группу дисков, ребутаемся, а задача так и висит в Queue Job. И ещё добавим трагедии, гуглинг показывает что иногда для очистки queue job не помогает даже выключение по питанию, сбросу конфгигурации контроллера итд. Так что желательно поставить ещё perccli
https://www.dell.com/support/home/us/en/04/drivers/driversdetails?driverid=f48c2

среда, 7 февраля 2018 г.

CentOS 7: собираем libtgvoip

За основу хорошо заходят 2 пакета:
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-1.0.3-1.fc27.x86_64.html
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-devel-1.0.3-1.fc27.x86_64.html
Также нужны mock и gyp с поддержкой cmake

mock -r epel-7-x86_64 rebuild libtgvoip-1.0.3-1.fc27.src.rpm
(тут будет момент с gyp - нужно будет также встроить свежий gyp, так что вместо epel будет своя репа c gyp, куда в том числе нужно добавить данные репы centos-sclo-rh для devtoolset)
Но всё-равно не соберётся. Вторым шагом будет или выпиливание webrtc блока (оно на c++17), или установка gcc 5. Версия 4.9 его не устроит. Ставим devtoolset-4-gcc
Но всё-равно не соберётся, потому что mock тянет штатную версию 4.8.

А также, будет ошибка
usr/include/c++/5.3.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
Только тут момент: ошибка изменится на
error: ‘typeof’ was not declared in this scope

фикс: typeof отсутствует(?) в с++11, надо писать -std=gnu++11
или (возможно?) поможет такая штука
#define typeof(x) __typeof__(x)

Теперь в спеке нужны изменения
pushd out/Release
+    sed -i'' -e "14i add_definitions(-std=gnu++11)" CMakeLists.txt
    %cmake .


понедельник, 29 января 2018 г.

CentOS и cmake: this file requires compiler and library support for the iso c++ 2011 standard

Даже после установки devtoolset-7 софт может не собираться, выдавая
this file requires compiler and library support for the iso c++ 2011 standard
Была найдена такая штука:

# http://stackoverflow.com/questions/10851247/how-to-activate-c-11-in-cmake
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    add_definitions(-std=c++11)
elseif(COMPILER_SUPPORTS_CXX0X)
    add_definitions(-std=c++0x)
else()
    message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

Вставляем в CMakeLists.txt поближе к началу, собираем.

Хотя мелькал и такой вариант
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

ручной вариант
$ cmake -DCMAKE_CXX_FLAGS=-std=c++11 ..

CentOS 7 и gcc разных версий

Штатный gcc - 4.8, что уже весьма старо, а тот же гугл обожает говнокодить на свежем с++17. Впрочем, можно поставить и более свежие версии. под центос 6, тут действуем по аналогии.

yum -y install centos-release-scl
yum search devtoolset
Будет огромный список, который делится на части по версиям. В частности, devtoolset-3 это gcc 4.9, -4 это 5.3 итд.
На самом деле, ставить целиком devtoolset-x не нужно, обычно достаточно только
devtoolset-3-gcc
devtoolset-3-gcc-с++

Дальше переключаем версию, несколько вариантов
1) scl enable devtoolset-3 bash
2) /opt/rh/devtoolset-3/enable
3) update-alternatives --install /usr/bin/gcc-4.9 gcc-4.9 /opt/rh/devtoolset-3/root/usr/bin/gcc 10
update-alternatives --install /usr/bin/g++-4.9 g++-4.9 /opt/rh/devtoolset-3/root/usr/bin/g++ 10
(тут уже сначала надо смотреть, что куда ставится, зато потом переключать можно глобально)

А посмотреть, какая версия в каком тулсете, можно так:
$ yum info devtoolset-4-gcc |grep Version
Version     : 5.3.1

вторник, 23 января 2018 г.

CentOS 7 и gyp: ImportError: No module named cmake

GYP (generate your projects) is a build automation tool. GYP is created by Google to generate native IDE project files (such as Visual Studio Code and Xcode) for building the Chromium web browser and is licensed as open source software using the BSD software license.

The functionality of GYP is similar to the CMake build tool. GYP processes a file that contains a JSON dictionary[1] in order to generate one or more target project make files. The single source .GYP file is generic while the target files are specific to each targeted build tool.

Потребовалось для некоторых задач использовать gyp (wiki, 2) с опцией --format=cmake, но молвит нам компилятор ImportError: No module named cmake
Также не помогла установка python-pip && pip install cmake. Копать надо в сторону самого gyp:
$ ls -la /usr/lib/python2.7/site-packages/gyp/generator/cmake*
ls: cannot access /usr/lib/python2.7/site-packages/gyp/generator/cmake*: No such file or directory

То есть просто нет данного функционала в самом gyp. Но заглянув например сюда - мы этот модуль видим.

Быстрое введение в mock

mock это утилита для сборки, наподобие rpmbuild, но в чистом окружении.

https://github.com/xvitaly/tgbuild/blob/master/doc/build_using_mock.md

https://blog.packagecloud.io/eng/2015/05/11/building-rpm-packages-with-mock/

Список реп (для ключа -r) можно посмотреть тут
/etc/mock/

В случае с centos ставим примерно так
Подготовка
yum install -y epel-release
yum install rpm-build rpmdevtools mock
usermod -a -G mock some_builder_user
mock -r epel-7-x86_64 init

Сборка своего пакета
rpmbuild -bs some_package.spec
mock -r epel-7-x86_64 some_package.src.rpm
и результат будет в /var/lib/mock/epel-7-x86_64/result

Чтобы сделать сборку со своей репой, в /etc/mock копируем нужный файл и добавляем внутрь свои репы, а потом в -r указываем наше новое название.

понедельник, 11 декабря 2017 г.

CentOS 7: переключаемся на оригинальный mysql

https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7

Вкратце:
wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
rpm -Uvh mysql57*

Если будет ошибка про MariaDB* - удаляем эти пакеты руками. Чтобы без завистимостей - делать это так
rpm -qa|grep <имя проблемного пакета>
rpm -e --nodeps <полное имя пакета из шага выше>

Если что, идти сюда:
https://dev.mysql.com/downloads/repo/yum/

Обращаю внимание, что если уже стоял MariaDB-server, его нужно сначала остановить, потом удалить. Если данные нужны - забэкапить. Потом
# service mysqld start

!!! Если сразу набрать mysql, будет ошибка что нужен пароль. Получить его можно так:
sudo grep 'temporary password' /var/log/mysqld.log
Делаем mysql_secure_installation
(где-то было, что с временным паролем можно зайти только 1 раз)

пятница, 8 декабря 2017 г.

fake (bios) raid + UEFI

При установке centos поверх bios (fake) raid есть 3 нюанса:
1) оно требует раздела /boot/efi типа fat32 (с небольшими изменениями)
2) формат диска обязательно должен быть GPT
2) после установки оно просто не запустится.

И ещё момент. После загрузки в консоль установщика и настроенных рейдах в биосе - будет по 2 устройства, сам рейд и imsm. Это  устройство и связывает биос рейд и системный. Плюс - при этом в формате метадаты самого раздела есть нюансы.
Чуть подробнее тут:
https://raid.wiki.kernel.org/index.php/RAID_setup#External_Metadata_.282011.29
Косяк в том, что он похоже несовместим с EFI.
Про форматы метадаты
https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

четверг, 16 ноября 2017 г.

rpmbuild и дополнительные опции

Есть такая интересная штука
http://rpm.org/user_doc/conditional_builds.html
используется так:
$ rpmbuild -ba newpackage.spec --with gnutls --without openssl
и дальше проверять так
%if %{with gnutls} BuildRequires: gnutls-devel %endif %if %{with openssl} BuildRequires: openssl-devel %endif

Также для работы в начале .spec файла можно вписать (как предустановленные значения)
%bcond_with gnutls

Но тут есть нюанс: то, что вписано в .spec, имеет противоположное значение! Объяснение есть например тут

среда, 8 ноября 2017 г.

bup - backup system based on git

Very efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images).

https://github.com/bup/bup

В центоси легче всего поставить так:
1) либы
yum install python python-devel
yum install fuse-python pyxattr pylibacl
yum install perl-Time-HiRes

2) скачать сам пакет
http://dl.fedoraproject.org/pub/fedora/linux/releases/26/Everything/x86_64/os/Packages/b/bup-0.29-2.fc26.x86_64.rpm

3) rpm -Uvh bup*

4) используем.
Initialize the default BUP_DIR (~/.bup):
 bup init

Make a local backup (-v or -vv will increase the verbosity):
 bup index /etc
 bup save -n local-etc /etc

Restore a local backup to ./dest:
 bup restore -C ./dest local-etc/latest/etc
 ls -l dest/etc

Для пропуска некоторых файлов у index есть опции
--exclude
--exclude-from

Чтобы указать рабочий каталог отличный от ~/.bup, можно сделать так
export BUP_DIR=/backup/bup/...

вторник, 14 марта 2017 г.

centos 7: заставляем работать почту

Есть сервер, с которого не уходит почта, ошибка выглядит так
send-mail: Cannot open mail:25

После активации rsyslog (service rsyslog start) в логе /var/log/maillog видим
sSMTP[30209]: Unable to locate mail
sSMTP[30209]: Cannot open mail:25

И видим виновника, это ssmtp. Какой-то стрёмный сервер, не умеющий быть полноценным MTA даже на отправку. 
Поставим postfix
yum -y install postfix
systemctl enable postfix
systemctl start postfix
Но для работы этого недостаточно. Смотрим, кто сейчас mta
alternatives --display mta
Видим снова ssmtp. Можно переключить мта на postfix, а можно просто yum -y erase ssmtp и всё начнёт ходить, переключать mta не нужно.
Ну и убедимся, что стоит mailx
yum install -y mailx