Дополнительно к заметке.
п.6. В версии Ubuntu 10.04 Package libopencore-amrnb-dev и libopencore-amrwb-dev
Если хотим добавить libgsm :
sudo apt-get install libgsm1-dev libgsm-tools
Информация о пакетах (Ubuntu libgsm package):
libgsm-tools: User binaries for a GSM speech compressor
libgsm1: Shared libraries for GSM speech compressor
libgsm1-dbg: Shared libraries for GSM speech compressor (debug symbols)
libgsm1-dev: Development libraries for a GSM speech compressor
UPD 30.09.2010: В Ubuntu 10.04 ("Lucid Lynx") если необходимо установить libxvid.
Необходимо вместо libxvidcore4-dev указывать в комманде libxvidcore-dev т.е.
sudo apt-get install libxvidcore-dev
Шукати в цьому блозі
субота, 18 вересня 2010 р.
понеділок, 31 травня 2010 р.
xubuntu 10.04 + VNC Server
Задача установить VNC сервер с графической средой XFCE.
Устанавливаем сервер:
apt-get install tightvncserver xtightvncviewer
Создаем файл (пользователь emutant разрешение экрана 800х600):
sudo nano /etc/init.d/vncserver
С содержимым:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: S
# Default-Stop: 0 6### END INIT INFO
PATH="$PATH:/usr/X11R6/bin/"
# The Username:Group that will run VNC
export USER="emutant"
#${RUNAS}
# The display that VNC will use
DISPLAY="1"
# Color depth (between 8 and 32)
DEPTH="16"
# The Desktop geometry to use.
GEOMETRY="800x600"
#GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
# The name that the VNC Desktop will have.
NAME="emutant-vnc-server"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}";;
restart)
$0 stop
$0 start
;;
esac
exit 0
делаем исполняемым
sudo chmod +x /etc/init.d/vncserver
-rwxr-xr-x 1 root root 994 2010-05-31 11:49 vncserver
Создаем каталог:mkdir /home/emutant/.vnc
а также файл запуска XFCE4: nano /home/emutant/.vnc/vnc-xfce4
с содержимым:
#!/bin/sh
xfce-mcs-manager &
xfwm4 &
xfdesktop &
xfce4-panel &
Делаем исполняемым: chmod +x /home/emutant/.vnc/vnc-xfce4
Создаем xstartup script: nano /home/emutant/.vnc/xstartup
с содержимым:
#!/bin/sh
exec dbus-launch ~/.vnc/vnc-xfce4
Делаем исполняемым: chmod +x /home/emutant/.vnc/xstartup
Запускаем: /etc/init.d/vncserver start
Отвечаем на вопросы - назначаем пароли для доступа.
В результате в каталоге /home/emutant/.vnc появляются еще 3 файла: *.pid, *.log, passwd
В качестве клиента используем TightVNC или RealVNC
При соединении указываем ip:1.


Устанавливаем сервер:
apt-get install tightvncserver xtightvncviewer
Создаем файл (пользователь emutant разрешение экрана 800х600):
sudo nano /etc/init.d/vncserver
С содержимым:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: networking
# Default-Start: S
# Default-Stop: 0 6### END INIT INFO
PATH="$PATH:/usr/X11R6/bin/"
# The Username:Group that will run VNC
export USER="emutant"
#${RUNAS}
# The display that VNC will use
DISPLAY="1"
# Color depth (between 8 and 32)
DEPTH="16"
# The Desktop geometry to use.
#GEOMETRY="1024x768"
#GEOMETRY="1280x1024"
# The name that the VNC Desktop will have.
NAME="emutant-vnc-server"
OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
. /lib/lsb/init-functions
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}";;
restart)
$0 stop
$0 start
;;
esac
exit 0
делаем исполняемым
sudo chmod +x /etc/init.d/vncserver
-rwxr-xr-x 1 root root 994 2010-05-31 11:49 vncserver
Создаем каталог:mkdir /home/emutant/.vnc
а также файл запуска XFCE4: nano /home/emutant/.vnc/vnc-xfce4
с содержимым:
#!/bin/sh
xfce-mcs-manager &
xfwm4 &
xfdesktop &
xfce4-panel &
Делаем исполняемым: chmod +x /home/emutant/.vnc/vnc-xfce4
Создаем xstartup script: nano /home/emutant/.vnc/xstartup
с содержимым:
#!/bin/sh
exec dbus-launch ~/.vnc/vnc-xfce4
Делаем исполняемым: chmod +x /home/emutant/.vnc/xstartup
Запускаем: /etc/init.d/vncserver start
Отвечаем на вопросы - назначаем пароли для доступа.
В результате в каталоге /home/emutant/.vnc появляются еще 3 файла: *.pid, *.log, passwd
В качестве клиента используем TightVNC или RealVNC
При соединении указываем ip:1.


bash script - find and kill pid
Иногда, необходимо "убить" запущенный скрипт (в моем случае Perl-script scriptname.pl) не зная его pid, решение на bash приведено ниже:
#!/bin/bash
PID=`ps -ef | awk '/scriptname.pl/{ print $2 }'|sed -n 1p`
echo $PID
kill $PID
UPDATE: 30.06.2010г.
Один камрад по имени Максим, жутко раскритиковал мой метод за нерациональность и привел свой пример, код ниже:
#!/bin/bash
PID=`ps ux | awk '/scriptname.pl/ && !/awk/ {print $2}'`
echo $PID
kill $PID
#!/bin/bash
PID=`ps -ef | awk '/scriptname.pl/{ print $2 }'|sed -n 1p`
echo $PID
kill $PID
UPDATE: 30.06.2010г.
Один камрад по имени Максим, жутко раскритиковал мой метод за нерациональность и привел свой пример, код ниже:
#!/bin/bash
PID=`ps ux | awk '/scriptname.pl/ && !/awk/ {print $2}'`
echo $PID
kill $PID
понеділок, 18 січня 2010 р.
Perl. LWP + proxy + авторизация
Возникла необходимость грабить и парсить одну страничку, находясь в локальной сети с MS Windows Server Active Directory и через прокси (в моем случе - это MS ISA-Server).
Дано:
пользоваетль - user000
домен - trand
пароль - passWooRDa
адрес прокси - 10.35.10.100
порт прокси - 8080
Код:
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
my $proxy = 'http://10.35.10.100:8080/';
my $url = "http://www.bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx";
my $username = 'trand\user000';
my $password = 'passWooRDa';
my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/6.0");
$ua->proxy('http',$proxy);
my $req = new HTTP::Request GET => $url;
$req->proxy_authorization_basic($username, $password);
my $res = $ua->request($req);
my $content='';
if ($res->is_success)
{
$content= $res->content;
print $content
}
Источник
Дано:
пользоваетль - user000
домен - trand
пароль - passWooRDa
адрес прокси - 10.35.10.100
порт прокси - 8080
Код:
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
my $proxy = 'http://10.35.10.100:8080/';
my $url = "http://www.bank.gov.ua/Fin_ryn/OF_KURS/Currency/FindByDate.aspx";
my $username = 'trand\user000';
my $password = 'passWooRDa';
my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/6.0");
$ua->proxy('http',$proxy);
my $req = new HTTP::Request GET => $url;
$req->proxy_authorization_basic($username, $password);
my $res = $ua->request($req);
my $content='';
if ($res->is_success)
{
$content= $res->content;
print $content
}
Источник
середа, 11 листопада 2009 р.
mySQL + UTF8 проблема с поиском данных с кириллицей при использовании фунций ( lower/upper )
Исходные данные: Ubuntu server 9.04 + MySQL 5.1.x, была какая-то база MBASE с таблицей abase, в которую вносились данные в кодировке utf8, все запросы происходили посредством самописных Perl скриптов.
Так сложилось, что появилась необходимость использовать регистронезависимый поиск.
Самым простым способом реализации регистронезависимого поиска, является преобразование строки поиска и значения поля(ей) таблиц к верхнему(upper) или нижнему(lower) регистру.
Пример банального SELECT-а ввыглядит бля таблици abase так:
select * form abase where locate(lower('ЯбЛо'),lower(message0))>0;
т.е. строка поиска "ЯбЛо" и значение в поле message0 таблицы abase преобразовывается
к нижнему регистру и ищется вхождение.
К сожалению поиск не работал. Однако, не работал для кирилических символов, т.е. регистрозависимый в стиле:
select * form abase where messages0 LIKE 'Ябло%';
отрабатывал, но как только использовалось преобразование регистров, переставал работать.
Залогинившись mysql -uroot -ppass побросал запросы напрямую - увидел, что после использования функций преобразования регитров символов, отдает какю-то ересь из квадратиков.
Погуглив, нашел подсказку в указании кодировки по-умолчание в файле конфигурации MySQL:
[mysqld]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8
[client]
default-character-set = utf8
Вписав эти инструкции и перегрузив сервер MySQL сервер, получил еще ведро ошибок в стиле:
'Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)'
Вобщем, плохо все, нашел совет перекодировать:
alter table `abase` convert to character set utf8
collate utf8_swedish_ci;
Однако, то ли я не разобрался, то ли еще почему-то, но не получилось.
На самом деле, нужно просто правильно создавать базы вначале с указанием правильных кодировок:
CREATE DATABASE vizor CHARACTER SET utf8 COLLATE utf8_general_ci;
Тогда и проблем не будет.
Пошел, скорей неправильным путем, создавая правильно новую базу и экспортируя таблици из старой через mysqldump.
Так сложилось, что появилась необходимость использовать регистронезависимый поиск.
Самым простым способом реализации регистронезависимого поиска, является преобразование строки поиска и значения поля(ей) таблиц к верхнему(upper) или нижнему(lower) регистру.
Пример банального SELECT-а ввыглядит бля таблици abase так:
select * form abase where locate(lower('ЯбЛо'),lower(message0))>0;
т.е. строка поиска "ЯбЛо" и значение в поле message0 таблицы abase преобразовывается
к нижнему регистру и ищется вхождение.
К сожалению поиск не работал. Однако, не работал для кирилических символов, т.е. регистрозависимый в стиле:
select * form abase where messages0 LIKE 'Ябло%';
отрабатывал, но как только использовалось преобразование регистров, переставал работать.
Залогинившись mysql -uroot -ppass побросал запросы напрямую - увидел, что после использования функций преобразования регитров символов, отдает какю-то ересь из квадратиков.
Погуглив, нашел подсказку в указании кодировки по-умолчание в файле конфигурации MySQL:
[mysqld]
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci
init-connect="SET NAMES utf8"
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8
[client]
default-character-set = utf8
Вписав эти инструкции и перегрузив сервер MySQL сервер, получил еще ведро ошибок в стиле:
'Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE)'
Вобщем, плохо все, нашел совет перекодировать:
alter table `abase` convert to character set utf8
collate utf8_swedish_ci;
Однако, то ли я не разобрался, то ли еще почему-то, но не получилось.
На самом деле, нужно просто правильно создавать базы вначале с указанием правильных кодировок:
CREATE DATABASE vizor CHARACTER SET utf8 COLLATE utf8_general_ci;
Тогда и проблем не будет.
Пошел, скорей неправильным путем, создавая правильно новую базу и экспортируя таблици из старой через mysqldump.
пʼятниця, 30 жовтня 2009 р.
Быстрая установка и настройка lighttpd на Ubuntu server 9.04 + SSL
Возникла необходимость поднять легкий(на слабом компьютере) веб-сервер с поддержкой SSL.
Был выбран lighttpd с установкой на имеющиюся платформу на базе ОС Ubuntu Server Edition 9.04 (Jaunty Jackalope).
Установка веб-сервера:
sudo apt-get install lighttpd
Для поддержки SSL:
sudo apt-get install openssl
Создаем каталоги, назначение которых буде указанно позже при конфигурации веб-сервера:
sudo mkdir -p /var/www/Abase/
sudo mkdir -p /var/www/Abase/cgi-bin/
sudo mkdir -p /var/www/Abase/cgi-bin/.access
sudo mkdir -p /etc/lighttpd/certs
sudo mkdir -p /var/www/log.Abase
sudo chown www-data:www-data /var/www/log.Abase
sudo chmod 755 /var/www/log.Abase
Редактируем файл конфигурации:
cd /etc/lighttpd
vim lighttpd.conf
lighttpd.conf
Подключаемые модули:
Указываем корень сервера и лог-файлов:
Указываем файлы, которые будут подставляться, в качестве индексных файлов:
Описываем правила для CGI скриптов (в моем случае-это скрипты написанные на Perl):
Описываем авторизацию при доступе к серверу, в даном случае от корня и всем разрешенным пользователям:
Назначаем порт, на котором будет работать сервер, если эта инструкция за комментирована, то по-умолчанию порт 80.
SSL инструкции:
UID от которых будет работать lighttpd:
Lighttpd по-умолчанию разрешает листать все каталоги от корня и показывать все вложенные файлы. Поэтому введем некоторые ограничения на каталоги /cgi-bin/.access/ и /cgi-bin/, а именно запретим листание и показ файлов начинаемых с точки:
Сохраняем настройки и выходим из редактора, остальные инструкции можно оставить по-умолчанию, или же изучив документацию править под свои задачи.
Конечно это примитивная и первичная настройка веб-сервера, не настроено "руление" ошибок, может что еще, но данной конфигурации достаточно для старта.
Небольшое отступление от параноика, я всегда думаю, о том что-то упустил в настройках по безопасности, потому в каталоге /var/www/Abase/cgi-bin/ разместил индексный файл с редиректом на корень, вот его листинг:
cat /var/www/Abase/cgi-bin/default.cgi
Создание сертификатов.
Конечно, если Вы работаете в большой солидной компании, но лучше прикупить сертификатов, но в частном случае можно сгенерировать и свои:
cd /etc/lighttpd/certs
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes
chmod 400 lighttpd.pem
Этот сертификат действительный 365 дней. Конечно все браузеры будут предупреждать о том что сертификат не доверительный, но пользователь может добавлять его в исключения.
Создаем файл, где будут хранится списки разрешенных пользователей и их пароли:
^D
Добавили три пользователя username1, username2, username3 с паролями username1password, username2password, username3password.
sudo chown root:www-data /var/www/Abase/cgi-bin/.access
sudo chmod 750 /var/www/Abase/cgi-bin/.access
sudo chown root:www-data /var/www/Abase/cgi-bin/.access/.lpassword
sudo chmod 640 /var/www/Abase/cgi-bin/.access/.lpassword
Теперь редактировать файл пользователей Вы сможете только указав прямую ссылку на файл:
Перезапускаем наш веб-сервер:
/etc/init.d/lighttpd restart
Проверяем в браузере.
источник 1
источник 2
Был выбран lighttpd с установкой на имеющиюся платформу на базе ОС Ubuntu Server Edition 9.04 (Jaunty Jackalope).
Установка веб-сервера:
sudo apt-get install lighttpd
Для поддержки SSL:
sudo apt-get install openssl
Создаем каталоги, назначение которых буде указанно позже при конфигурации веб-сервера:
sudo mkdir -p /var/www/Abase/
sudo mkdir -p /var/www/Abase/cgi-bin/
sudo mkdir -p /var/www/Abase/cgi-bin/.access
sudo mkdir -p /etc/lighttpd/certs
sudo mkdir -p /var/www/log.Abase
sudo chown www-data:www-data /var/www/log.Abase
sudo chmod 755 /var/www/log.Abase
Редактируем файл конфигурации:
cd /etc/lighttpd
vim lighttpd.conf
lighttpd.conf
Подключаемые модули:
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_compress",
"mod_cgi",
"mod_auth",
)
Указываем корень сервера и лог-файлов:
server.document-root = "/var/www/Abase/"
server.errorlog = "/var/log/lighttpd/error.log"
accesslog.filename = "/var/log/lighttpd/access.log"
Указываем файлы, которые будут подставляться, в качестве индексных файлов:
index-file.names = ( "index.cgi", "index.html",
"index.htm", "default.cgi",
"index.shtml" )
Описываем правила для CGI скриптов (в моем случае-это скрипты написанные на Perl):
static-file.exclude-extensions = ( ".cgi",".pl" )
cgi.assign = ( ".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl" )
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = (".cgi" => "/usr/bin/perl",
".pl" => "/usr/bin/perl" )
}
Описываем авторизацию при доступе к серверу, в даном случае от корня и всем разрешенным пользователям:
auth.debug = 2
auth.backend = "plain"
auth.backend.plain.userfile ="/var/www/Abase/cgi-bin/.access/.lpassword"
auth.require = ( "/" => (
"method" => "basic",
"realm" => "Password protected area",
"require" => "valid-user"
)
)
Назначаем порт, на котором будет работать сервер, если эта инструкция за комментирована, то по-умолчанию порт 80.
server.port = 8080
SSL инструкции:
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/certs/lighttpd.pem"
server.document-root = "/var/www/Abase/"
server.errorlog = "/var/www/log.Abase/Abase.error.log"
accesslog.filename = "/var/www/log.Abase/Abase.access.log"
}
UID от которых будет работать lighttpd:
server.username = "www-data"
server.groupname = "www-data"
Lighttpd по-умолчанию разрешает листать все каталоги от корня и показывать все вложенные файлы. Поэтому введем некоторые ограничения на каталоги /cgi-bin/.access/ и /cgi-bin/, а именно запретим листание и показ файлов начинаемых с точки:
$HTTP["url"] =~ "^/cgi-bin/.access/($|/)" {
dir-listing.activate = "disable",
dir-listing.hide-dotfiles = "enable"
}
$HTTP["url"] =~ "^/cgi-bin/($|/)" {
dir-listing.activate = "disable",
dir-listing.hide-dotfiles = "enable"
}
Сохраняем настройки и выходим из редактора, остальные инструкции можно оставить по-умолчанию, или же изучив документацию править под свои задачи.
Конечно это примитивная и первичная настройка веб-сервера, не настроено "руление" ошибок, может что еще, но данной конфигурации достаточно для старта.
Небольшое отступление от параноика, я всегда думаю, о том что-то упустил в настройках по безопасности, потому в каталоге /var/www/Abase/cgi-bin/ разместил индексный файл с редиректом на корень, вот его листинг:
cat /var/www/Abase/cgi-bin/default.cgi
#!/usr/local/bin/perl
use CGI;
my $query = CGI->new();
print $query->redirect('/')
Создание сертификатов.
Конечно, если Вы работаете в большой солидной компании, но лучше прикупить сертификатов, но в частном случае можно сгенерировать и свои:
cd /etc/lighttpd/certs
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes
chmod 400 lighttpd.pem
Этот сертификат действительный 365 дней. Конечно все браузеры будут предупреждать о том что сертификат не доверительный, но пользователь может добавлять его в исключения.
Создаем файл, где будут хранится списки разрешенных пользователей и их пароли:
cat > .lpassword
username1:username1password
username2:username2password
username3:username3password
^D
Добавили три пользователя username1, username2, username3 с паролями username1password, username2password, username3password.
sudo chown root:www-data /var/www/Abase/cgi-bin/.access
sudo chmod 750 /var/www/Abase/cgi-bin/.access
sudo chown root:www-data /var/www/Abase/cgi-bin/.access/.lpassword
sudo chmod 640 /var/www/Abase/cgi-bin/.access/.lpassword
Теперь редактировать файл пользователей Вы сможете только указав прямую ссылку на файл:
sudo vim /var/www/Abase/cgi-bin/.access/.lpassword
Перезапускаем наш веб-сервер:
/etc/init.d/lighttpd restart
Проверяем в браузере.
источник 1
источник 2
четвер, 29 жовтня 2009 р.
Установка Perl модуля DBD::mysql. Ошибка Can't exec "mysql_config".
Ubuntu linux 9.04 server ed.
Имея установленный mysql-client при установке, с помощью cpan, модуля DBD::mysql, процесс завершался ошибой:
Решение - установка дополнительного пакета libmysql++-dev который содержит C++ API для запросов к Mysql (и других SQL баз):
sudo apt-get install libmysql++-dev
Имея установленный mysql-client при установке, с помощью cpan, модуля DBD::mysql, процесс завершался ошибой:
Can't find mysql_config. Use --mysql_config option to specify where mysql_config is located
Can't exec "mysql_config": No such file or directory at Makefile.PL line 464.
Can't find mysql_config. Use --mysql_config option to specify where mysql_config is located
Can't exec "mysql_config": No such file or directory at Makefile.PL line 464.
Can't find mysql_config. Use --mysql_config option to specify where mysql_config is located
Failed to determine directory of mysql.h. Use
perl Makefile.PL --cflags=-I dir
to set this directory. For details see the INSTALL.html file,
section "C Compiler flags" or type
perl Makefile.PL --help
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site]
Warning (usually harmless): 'YAML' not installed, will not store persistent state
CAPTTOFU/DBD-mysql-4.013.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
Could not read '/root/.cpan/build/DBD-mysql-4.013-2UEonO/META.yml'. Falling back to other methods to determine prerequisites
Failed during this command:
CAPTTOFU/DBD-mysql-4.013.tar.gz : writemakefile NO '/usr/bin/perl Makefile.PL INSTALLDIRS=site' returned status 512
Решение - установка дополнительного пакета libmysql++-dev который содержит C++ API для запросов к Mysql (и других SQL баз):
sudo apt-get install libmysql++-dev
Підписатися на:
Дописи (Atom)