Использование MySQL в Asterisk 1.8

В Астериске 1.8 поддержка MySQL идет из коробки в отличии от предыдущих версий в которых необходимо доустанавливать asterisk-addons
Первым делом устанавливает сам Астер, если его еще нет 🙂

sudo -s
emerge -av asterisk
 
>>Calculating dependencies... done!
>>[ebuild     N ] net-misc/asterisk-1.8.4.1  USE="ais calendar caps curl dahdi doc gtalk h323 http iconv jabber jingle mysql newt postgres samples snmp span speex srtp ssl syslog usb vorbis -alsa -bluetooth -debug -freetds -ldap -lua -odbc -osplookup -oss -portaudio -radius -sqlite -sqlite3 -static"

Читать далее Использование MySQL в Asterisk 1.8

Ошибка в libpcap если в системе есть Bonding

В случае если ядро собрано с поддержкой bonding (CONFIG_BONDING=y or M) то утилиты которые используют библиотеку libpcap могут ругаться такой ошибкой:

pcap_findalldevs: SIOCGIFFLAGS: bonding_masters: No such device

решается данная проблема довольно просто: нужно пропатчить libpcap либо установить версию равную или выше libpcap-1.1.1-r1

 emerge -av /usr/portage/net-libs/libpcap/libpcap-1.1.1-r1.ebuild

Как вывести список всех установленных в системе пакетов с указанием флагов с которыми они были собраны?

Подборка всяких извращенных методов применительно в Gentoo 🙂

emerge -vpe world
find /var/db/pkg/* -mindepth 2 -maxdepth 2 | cut -d "/" -f 5-6 | sort -u | while read p; do printf "%s {" "${p}"; cat "/var/db/pkg/${p}/USE" | sed "s/$/}/"; done
cd /var/db/pkg/; grep "" -r */*/IUSE
qlist -IUv                #qlist входит в app-portage/portage-utils
for im in `find /var/db/pkg/ | grep /USE`; do appname=`dirname $im`; echo -n "`basename $appname` :: " && cat $im; done
eix -I                     #eix - это app-portage/eix

Проект Gentoo-doc

Копи-паст с сайта, который занимается созданием (систематизацией) книги по Генту:

gentoo doc2
gentoo doc2

Проект Gentoo-doc, более известный как сборник статей о Gentoo Linux, был создан в июле 2007 года как попытка организации огромного количества существующей информации по Gentoo Linux. Инициатором был один человек (JohnBat26), но вскоре его начинания поддержало еще несколько замечательных людей, и теперь вот уже год спустя проект стал уже достаточно зрелым, а самое главное восстребованным среди пользователей Gentoo Linux и не только.

За год своего существования мы прошли уже пять итераций (версий) книги. С каждым разом она становилась все более похожей на книгу, достойную той операционной системы, которую она проповедует. За год своего существования книга была скачана уже более 10000 раз. Это очень радует и вдохновляет нас на дальнейшую работу по её совершенствованию.

Мы приглашаем всех желающих принять посильное участие в проекте. Желаем всем удачи на пути изучения, а главное – применения Gentoo Linux в повседневной работе.

Офф. сайт http://gentoo.theserverside.ru/
ну и на случай если с сайтом, что-то случится, то копию книги можно скачать отсюда : Gentoo documentation 2.0 M2 pdf
Так же можно загрузить с Google-docs

Gentoo Xen 4

Повесть о том как я Xen4 мучал… или он меня…..
Что мы имеем:

uname -a
Linux Gentoo 2.6.34-xen-r4 #3 SMP Sat Jan 1 19:30:46 EET 2011 x86_64 AMD Phenom(tm) II X4 925 Processor AuthenticAMD GNU/Linux

И почти мертвый винт на 500Г

  5 Reallocated_Sector_Ct   0x0033   090   090   140    Pre-fail  Always   FAILING_NOW 873

Перед установкой пакетов необходимо снять с них архитектурное маскирование (~x64):

echo "app-emulation/xen
app-emulation/xen-tools
sys-kernel/xen-sources" >> /etc/portage/package.keywords

До начала сборки нужно выполнить следующие шаги:

1. Добавить в /etc/make.conf опции компилятора:

      CFLAGS="-march=native -O2 -pipe -fomit-frame-pointer -mfpmath=sse -funroll-loops -mno-tls-direct-seg-refs"
      CXXFLAGS="${CFLAGS}"

2. Там же (в /etc/make.conf), можно включить опции сборки бинарных пакетов (готовые пакеты emerge разместит в /usr/portage/packages), они пригодятся для ускоренного развертывания domU:

      FEATURES="buildpkg"

3. Пересобрать текущее окружение с новой опцией компилятора, которая нужна корректной работы системного окружения с гипервизором xen (заодно построятся бинарные пакеты окружения):

      emerge -evat world

Предварительный этап окончен, можно запускать сборку/установку пакетов xen, xen-tools и исходников адаптированного для Xen ядра — xen-sources:

emerge -av xen-sources xen xen-tools

Читать далее Gentoo Xen 4

VirtualBox на сервере Gentoo без графической оболочки

Небольшой мануал для установки VirtualBox на сервер в котором нет Х-ов
Установку будем производить на Gentoo, клиентской машиной будет Debian

Ставим ВиртуалБокс

ACCEPT_KEYWORDS="~amd64" USE="headless -chm -hal -opengl -qt4 rdesktop-vrdp vboxwebsrv" emerge -av /usr/portage/app-emulation/virtualbox-bin/virtualbox-bin-3.2.12.ebuild

Создаем виртуальную машину (тоесть ее описание в конфигах)

VBoxManage createvm --name "Debian" --register --basefolder /data/Virtual/

Если нужно смотрим типы ОС

VBoxManage list ostypes

Настройки виртуалки

VBoxManage modifyvm 'Debian' --memory 256 --acpi on --boot1 dvd -nic1 nat --ostype Debian

Где мы указали, что сеть у нас за НАТом, грузится будем с cd\dvd, ну и урезали память до 256Мб

Создаем винт на 30Гб фиксированого размера.

VBoxManage createhd --filename "/data/Virtual/Debian.vdi" --size 30000 --variant Fixed --register

…пока он создается можно попить кофе
Добавляем сата контроллер (опционально)

VBoxManage storagectl 'Debian' --add sata --controller IntelAHCI --name "SATA Controller"

Качаем установочный образ ОС

wget http://cdimage.debian.org/debian-cd/5.0.7/i386/iso-cd/debian-507-i386-netinst.iso

Добавляем ISO в VirtualBox (чтоб он знал о ее существовании)

VBoxManage openmedium dvd debian-507-i386-netinst.iso

Добавляем IDE контроллер

VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4

И на второй порт цепляем ISO

VBoxManage storageattach 'Debian' --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /data/install/debian/debian-507-i386-netinst.iso

Включаем наш винт на первый порт

VBoxManage storageattach 'Debian' --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /data/Virtual/Debian.vdi

Смотрим настройки

VBoxManage showvminfo Debian

Запускаемся с включенным RDP

VBoxManage startvm Debian --type vrdp

Можно еще запуститься с логином, чтоб у кого-то руки не чесались 🙂

VBoxManage setproperty vrdpauthlibrary "VRDPAuthSimple"
VBoxManage modifyvm "Debian" --vrdpauthtype external
VBoxManage setextradata "Debian" "VRDPAuthSimple/users/john" "secret

Waiting for the VM to power on…

VM has been successfully started.

проверяем подключение к консоли

netstat -anp | grep 33
 
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      32227/VBoxHeadless

Можно и инфу позырить

VBoxManage showvminfo Debian

Ну и подключаемся к терминалу любым терминальным клиентом …. все работает

Не пускает анонима на сервер Proftpd

Поставил Proftpd, сконфигурил…. а он взял и начал ругаться на недоступность папки для анонимного пользователя

Ноя 08 18:55:03 localhost proftpd[29469] 127.0.0.1: ProFTPD 1.3.3c (maint) (built Пнд Ноя 8 2010 18:47:55 EET) standalone mode STARTUP
Ноя 08 18:55:12 localhost proftpd[29481] 127.0.0.1 (10.0.1.100[10.0.1.100]): FTP session opened.
Ноя 08 18:55:12 localhost proftpd[29481] 127.0.0.1 (10.0.1.100[10.0.1.100]): ftp: Directory ~/ is not accessible.
Ноя 08 18:55:14 localhost proftpd[29481] 127.0.0.1 (10.0.1.100[10.0.1.100]): FTP session closed.

На форуме Генты узрел, что если в системе включен acl для раздела, то не будет пускать… либо отрубить acl:

Опубликовано IsakovAN в 28 Декабрь, 2006 – 22:16.
Эх, взял напильник(strace) и начал е***ись…
Короче, весь баг был в чем? В файловой системе, в которой находился /home/ftp был выключен acl! И он из-за этого отказывался пускать ананимуса. Что за глупость?!

man mount:
Цитата:

acl / noacl
Support POSIX Access Control Lists (or not).

Т.е. в fstabе надо опцию acl вписать.

Либо просто пересобрать фтп-сервер без поддержки acl

USE="-acl" emerge -av proftpd

Проблема с нумерацией сетевых интерфейсов в Gentoo

В случае если менять сетевые интерфейсы на системе с генту ( как вариант замена сгоревшей), то следующая новая сетевая карта получит индекс на единицу больший.
Но иногда это не оправдано, когда в системе 3 сетевые карты, а вы заменили 2 из них… в итоге получаем : eth1,eth3,eth4 … не очень удобно и не практично.
Чтоб немного разрулить эту ситуацию можно пойти двумя путями:
1. очистить содержимое файла /etc/udev/rules.d/70-persistent-net.rules с которого udev берет информацию.
После перезагрузки вы получите нумерацию eth0, eth1,eth2
2. Отредактировать вручную этот файл на свое усмотрение:

cat /etc/udev/rules.d/70-persistent-net.rules 
# This file was automatically generated by the /lib64/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.
 
# PCI device 0x14e4:0x1648 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:81:34:2a:0b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
 
# PCI device 0x14e4:0x1648 (tg3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:81:34:2a:0a", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
 
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:07:e9:0b:28:e0", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
 
# PCI device 0x8086:0x100e (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:07:e9:0b:28:d5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 
# PCI device 0x8086:0x1229 (e100)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:81:34:2a:55", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth4"

Миграция Postgres с 8.4 на 9.0

Решились потренироваться делать репликацию Master-Slave, которая реализована в версии 9.0
Значит так-с…
1. Обновляем Portage

emerge --sync

2. Ставим новую БД

LINGUAS="ru" ACCEPT_KEYWORDS="~amd64" emerge -av  /usr/portage/dev-db/postgresql-server/postgresql-server-9.0.1.ebuild

3. Конфигурим

emerge --config =dev-db/postgresql-server-9.0.1

4. правим конфиг и запускаем на порту 6543, не выключая старый постгресс
5. производим миграцию БД

pg_dumpall -p 5432 | psql -d postgres -p 6543

6. стартуем новую БД на порту 5432 предварительно выключив старую

После чего устанавливаем Postgres на втором хосте, который будет использоваться как Slave

LINGUAS="ru" ACCEPT_KEYWORDS="~amd64" emerge -av  /usr/portage/dev-db/postgresql-server/postgresql-server-9.0.1.ebuild

Вносим изменения в Master, чтобы слэйв мог к нему подключится:

$ $EDITOR postgresql.conf
listen_addresses = '10.0.xx.yy'
 
$ $EDITOR pg_hba.conf
# The standby server must have superuser access privileges.
host  replication  postgres  10.0.xx.zz/22  trust

Читать далее Миграция Postgres с 8.4 на 9.0

Устанавливаем плагин Java в Gentoo

Для запуску Java коду на системі Gentoo ви повинні мати JRE (Java Runtime Environment) встановлений.
Перш ніж йти далі, слід зазначити, що це буде працювати тільки з 32-розрядної версії Firefox. Це тому, що бінарний пакет JRE тільки у 32-бітному виконанні отже, несумісний з 64-розрядною версією Firefox. Якщо ви працюєте в 64-бітнії системі переконайтесь, що ви встановили www-client/mozilla-firefox-bin пакет, щоб отримати 32-розрядний оглядач.

Є безліч JRE пакетів у портежей, але рекомендований пакет є dev-java/sun-jre-bin.Не слід плутати з JRE JDK (Java Development Kit), який буде додавати непотрібні Java інструменти для програмування .

Щоб отримати плагін для браузера, ви повинні включити USE прапор nsplugin для JRE. Ви можете додати прапори USE до глобальних, поставивши їх прямо в make.conf.

Якщо ви не хочете кожен раз встановлювати прапор, ви можете поставити прапор тільки на цей пакет в /etc/portage/package.use.

dev-java/sun-jre-bin nsplugin

Потім встановлюємо JRE

emerge -av dev-java/sun-jre-bin

Ключі ‘-V’ і ‘a’ дозволять Вам переглянути USE прапори, які включені, і підтвердити, що вони правильні, перш ніж дозволити продовжити роботу.

Якщо ви працюєте в системі amd64 то вам потрібно встановити app-emulation/emul-linux-x86-java пакет. Цей пакет містить основні 32-розрядні бібліотеки для запуску 32-розрядних двійкових файлів JRE в 64-розрядних систем.

Вам необхідно встановити прапор USE nsplugin
/etc/portage/package.use.

app-emulation/emul-linux-x86-java
emerge -av app-emulation/emul-linux-x86-java

Тепер у вас є все, щоб налаштувати систему на використання JRE з утилітою eselect.

Використовуйте це для x86 системи.

eselect java-nsplugin set sun-jre-bin-1.6

Використовуйте це для amd64 системи.

eselect java-nsplugin set 32bit emul-linux-x86-java-1.6

Після того, як всі ці кроки були завершені ви можете переконатися, що все правильно, запустивши:

eselect java-nsplugin list

Доступні плагіни 32-розрядної Java

  [1]   emul-linux-x86-java-1.6  current

Доступні плагіни 64-бітної Java браузера

Available 32-bit Java browser plugins
  [1]   emul-linux-x86-java-1.6  current
Available 64-bit Java browser plugins

Переконайтеся, що Firefox знайшов плагін, відкривши about:plugins Тепер ви повинні побачити плагін Java в списку.

Осваиваем Git

Никогда не пользовался системами контроля версий, так как мало что творю на языках программирования, а скрипты можно просто хранить в папочке.
Ну и вот решил попробовать хранить скрипты (и не только) в каком-то хранилище, но при этом упустить освоение SVN И CVS, а сразу приступить к Git’у , так как мы не исчем легких путей 🙂

Для начала создаем собственный репозиторий с проэктом, который будет находится не на локальной машине, а где-то в сети.
Пишу по мотивам статьи How to set up your own private Git server on Linux
Сервер и клиенты (в основном) работают под управлением Gentoo.
Итак приступим.
Для начала добавим свой публичный ключ на сервер

cd ~/.ssh
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub 'user'@'server':.ssh/authorized_keys

Теперь мы можем зайти по SSH на наш сервер и установить Git:

ssh <server>
ACCEPT_KEYWORDS="~amd64" USE="bash-completion cvs subversion" emerge -av git
</server>

Теперь добавим пользователя

useradd -d /home/git -m -s /bin/bash git

Теперь вам нужно добавить свой публичный ключ для пользователя Git

mkdir /home/git/.ssh
cp ~/.ssh/authorized_keys /home/git/.ssh/
chown -R git:git /home/git/.ssh
chmod 700 !$
chmod 600 /home/git/.ssh/*

Читать далее Осваиваем Git