среда, 28 декабря 2011 г.

Основные команды для управления PostgreSQL

Все команды выполняются от имени postgres, поэтому логинимся в него:
$sudo su postgres

Как изменить root пароль в PostgreSQL?
$psql postgres postgres
Password: (oldpassword)

#ALTER USER postgres WITH PASSWORD ‘newpassword’;
#\q

$psql postgres postgres
Password: (tmppassword)

Изменение пароля для обычного пользователя происходит таким же образом. Пользователь root может поменять пароль любому пользователю.
#ALTER USER username WITH PASSWORD ‘password’;

Как посмотреть какая версия PostgreSQL запущена?
$psql test

Welcome to psql 9.0.1, the PostgreSQL interactive terminal.
Type:
\copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

test=#select version();
version
—————————————————————————————————-
PostgreSQL 9.0.1 on i686-pc-linux-gnu, compiled by GCC gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3, 32-bit
(1 row)
test=#\q

Как создать пользователя в PostgreSQL?

$createuser username
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

Как создать базу в PostgreSQL c владельцем username?
$createdb mydb -O username
CREATE DATABASE

Получаем список всех баз в Postgresql?
#\l
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
 template0 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
 utp       | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
(5 rows)

Как удалить базу в PostgreSQL?
#\l
List of databases
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
 template0 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
 utp       | postgres | UTF8     | ru_RU.UTF-8 | ru_RU.UTF-8 | 
(5 rows)

#DROP DATABASE test;
DROP DATABASE

Как найти самую большую таблицу в базе данных PostgreSQL?
#SELECT 
    relname AS "table_name", 
    relpages AS "size_in_pages" 
FROM 
    pg_class 
ORDER BY 
    relpages DESC 
LIMIT 
    1;

  TABLE_NAME    | size_in_pages 
----------------+---------------
 testtable1     |        299211

Результатом будет самая большая таблица (в примере testtable1) в страницах. Размер одной страницы равен 8KB (т.е. размер таблицы в примере — 2,3GB)

Как узнать размер всей базы данных PostgreSQL?
#SELECT pg_database_size( 'sampledb' );

в людском "виде":

#SELECT pg_size_pretty( pg_database_size( 'sampledb' ) );

Пользуемя встроенным хелпом к командам
Команда \? отобразит строку помощи для команда PSQL. \h CREATE покажет хелп для всех команд который начинаются с CREATE.
#\?
#\h CREATE
#\h CREATE INDEX

Как получить список всех таблиц в базе данный в Postgresql?
#\d
Для пустой базы вы получите сообщение “No relations found.”

Как узнать время выполнения запроса?
\timing — после выполения данной команды каждый последующий запрос будет показывать время выполнения.
#\timing
Timing is on.
#SELECT * from pg_catalog.pg_attribute ;
Time: 9.583 ms

Как посмотреть список доступных функций в PostgreSQL ?
Для того чтобы получить список доступных функций, скажите \df+
#\df+

Как отредактировать запрос к PostgreSQL в редакторе?
#\e

\e откроет редактор, в котором вы можете отредактировать запрос и сохранить его.

четверг, 15 декабря 2011 г.

Форвард пакетов "из мира в мир". Shorewall net2net

В одной из статей, я уже рассматривал настройку интернет шлюза с использованием shorewall (http://alah-my.blogspot.com/2010/08/blog-post.html)

Недавно столкнулся с необходимостью перенаправления пакетов с одного внешнего интернет-адреса на другой... Делается это так:

Есть сервер А с IP адресом: aa.аа.аа.аа
Есть сервер Б с IP адресом: bb.bb.bb.bb

Задача: все запросы из мира на аа.аа.аа.аа на порт 123 перенаправить на bb.bb.bb.bb на порт 321

1. Создаем правило в /etc/shorewall/rules:
$sudo mcedit /etc/shorewall/rules

DNAT       net         net:bb.bb.bb.bb:321       tcp     123        -        aa.aa.aa.aa

2. Добавляем правило маскарадинга в /etc/shorewall/masq
$sudo mcedit /etc/shorewall/masq

ppp0:bb.bb.bb.bb       -      aa.aa.aa.aa         tcp     321

3. Ну и не забываем проверить разрешения в /etc/shorewall/policy на форвард пакетов net2net:
$sudo mcedit /etc/shorewall/policy

#net     all      DROP        info

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

Установка SAMS2 2.0.0-rc1 на Ubuntu Server 10.04.3

«SQUID Account Management System(SAMS) – программное средство для администрирования доступа пользователей к прокси-серверу SQUID, сбора статистики и генерации отчетов о потреблении трафика.»

Сайт программы: http://sams.perm.ru/
Документация: http://sams.perm.ru/sams2/doc/RU/index.html

1. Устанавливаем зависимости

$sudo -i 
#apt-get install mysql-server mysql-client  apache2 php5 libapache2-mod-php5
php5-mysql build-essential autoconf  automake libtool g++ libpcre3 libpcre3-dev
php5-gd libmysqlclient15-dev  php-fpdf

2.  Устанавливаем программу


#cd /usr/srcwget http://sams.perm.ru/download/sams-2.0.0-rc1.tar.bz2

Распаковываем:
#tar xjvf sams-2.0.0-rc1.tar.bz2
#cd sams-2.0.0-rc1

Создаём скрипт автоматической конфигурации для компилирования:
#make -f Makefile.cvs

Запускаем скрипт автоматической конфигурации:
#./configure

Если выхлоп без ругани – компилим и ставим:
#make
#make install

После конфигурирования был выдан список файлов и директорий программы. На всякий случай продублирую его здесь:

Locations:
config file:           /usr/local/etc/sams2.conf
daemons:           /usr/local/bin
web interface:     /usr/local/share/sams2
documentation:   /usr/local/share/doc/sams2-2.0.0
httpd server:       /usr/sbin/apache2

Теперь меняем владельца некоторых файлов программ на пользователя, от имени которого работает веб-сервер. Если в Ubuntu вы используете apache, то это www-data:
#chown -R www-data:www-data /usr/local/share/sams2/
#chown -R www-data:www-data /usr/local/etc/sams2.conf

Для доступа к веб-интерфейсу SAMS2 , создадим символическую ссылку на него в директории с сайтом:
#ln -s /usr/local/share/sams2/ /var/www/sams2

Через браузер заходим в веб-интерфейс sams: http://ip-адрес-сервера/sams2. Видим сообщение о том, что не возможно подключиться к базе данных (database MySQL not connected). Для того, чтобы решить проблему, нажимаем на «Run setup program >>» и следуем указаниям мастера (в поле пользователь/пароль БД необходимо указть пользователя рут для MySQL). После завершения работы мастера - снова попадаем на первую страницу с той же ошибкой. Она появилась потому, что конфигурационный файл (/usr/local/etc/sams2.conf) не настроен. В нём нужно будет указать (поменять) такие параметры:
#mcedit /usr/local/etc/sams2.conf
DB_SERVER=localhost //сервер БД
DB_USER=root //владелец БД (пользователь MySQL)
DB_PASSWORD=yourrootpass //пароль пользователя

После заполнения обновляем страницу и видим веб-интерфейс sams2.
Логин/пароль по умолчанию admin/qwerty.

Далее необходимо последовательно пройтись по каждой странице настроек.
Для запуска демона выполняем команду…
#sams2daemon

Для автоматической загрузки при старте системы можно добавить строчку в /etc/rc.local:
/usr/local/bin/sams2daemon

четверг, 24 ноября 2011 г.

Связка 1С 8.2 Server + PostgreSQL 9.0.1 на Ubuntu Server 10.04 LTS + 1C 8.2 клиент под Wine на Ubuntu Desktop 10.04 LTS.

На сайте http://v8.1c.ru/overview/postgres_patches_notes.htm есть три патча: 1c_FULL_90-0.19.patch
postgresql-1c-9.0.1.patch
applock-1c-9.0.1.patch

Попытки пропатчить ими PostgreSQL не принесли результата. Поэтому для корректной установки PostgreSQL использовались уже исправленные исходники PostgreSQL 9.0.1 для 1С, любезно предоставленные Alsigned http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz (спасибо огромное ему за труд).

В данной статье описывается сборка и установка PostgreSQL-9.0.1 для работы с сервером 1С Предприятия 8.2 (платформа 8.2.14,540), используемая операционная система Ubuntu 10.04 x86.

1. Установка PostgreSQL 9.0.1

Устанавливаем необходимые для сборки пакеты:
#apt-get install libreadline-dev libicu-dev patch zlib1g-dev

Переходим в директорию /usr/local/src, скачиваем и распаковываем исходники:
# cd /usr/local/src
# wget http://www.alsigned.ru/?dl_name=postgres
ql-9.0.1-1C.tar.gz -O postgresql-9.0.1.tar.gz # tar xzvf postgresql-9.0.1.tar.gz
Переходим в каталог с исходниками, конфигурируем, собираем и устанавливаем:
# cd postgresql-9.0.1
# ./configure --disable-integer-datetimes --prefix=/usr
# make && make install

Переходим в каталог contrib, собираем и устанавливаем:
# cd contrib
# make && make install

2. Настройка PostgreSQL 9.0.1

Создаем пользователя и группу postgres:
# groupadd -r postgres
# useradd -g postgres -r -d /mnt/base/utp -s /bin/bash postgres

Создаем директорию для PostgreSQL
# mkdir /mnt/base/utp
# chown postgres:postgres /mnt/base/utp

Замечание! Кталог /mnt/base/utp - это так называемый "рабочий каталог", т.е. в нем будут храниться ВСЕ базы данных (в подкаталоге base , он будет автоматически создан при инициализации каталога баз данных)

Важно! Права на каталог /mnt/base/  - должны быть 777, а на /mnt/base/utp - должны быть 700



Генерируем локали en_US и ru_RU.UTF-8 необходимые для работы PostgreSQL с 1с:
# locale-gen en_US ru_RU.UTF-8

Инициализируем базу и установим пароль для postgres. На 32-битной машине может потребоваться сделать

# echo 134217728 >/proc/sys/kernel/shmmax
# echo 134217728 >/proc/sys/kernel/shmall

И чтобы руками их постоянно не менять,впишем их значения в sysctl.conf

# echo kernel.shmmax=134217728 >>/etc/sysctl.conf
# echo kernel.shmall=134217728 >>/etc/sysctl.conf

Инициализируем каталог баз данных:
# su postgres
$initdb -D /mnt/base/utp --locale=ru_RU.UTF-8

The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale ru_RU.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to "russian".
. . . . .
. . . . .
Success. You can now start the database server using:
postgres -D /mnt/base
or
pg_ctl -D /mnt/base/utp -l logfile start

Запускаем PostgreSQL:
#pg_ctl -D /mnt/base/utp start

Задаем пароль пользователя БД:
#psql -U postgres -c "alter user postgres with password 'наш_пароль';"
#exit

Делаем скрипт для запуска-остановки, для этого создаем файл /etc/init.d/postgresql следующего содержания:

#!/bin/sh
# Скрипт запуска/остановки PostgreSQL-9.0-1C
DATADIR=/mnt/base/utp
PGCTL=/usr/bin/pg_ctl
PGUSER=postgres
case $1 in
start)
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
stop)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
;;
restart)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
*)
echo start|stop|restart
return 1;
;;
esac

Даем разрешения на запуск и добавляем сервис в автозапуск:
#chmod u+x /etc/init.d/postgresql
#update-rc.d postgresql defaults

Теперь необязательное редактирование postgresql.conf . Значения , устанавливаемые в этом файле зависят от многих факторов и собственно служат для настройки оптимальной производительности.

#mcedit /mnt/base/utp/postgresql.conf

listen_addresses = ‘127.0.0.1′ - если соединения с базой будут только с локального хоста, то надежнее сделать именно так, чтобы порт 5432 слушался только на адресе 127.0.0.1 (в нашем случае оставляем по умолчанию '*' , т.к. соединения с базой будут не локально!!!).

fsync = off - значение on сильно снижает производительность, поскольку все транзакции непосредственно пишутся на жесткий диск без использования кэширования, но повышается надежность. Значение off есть смысл устанавливать, когда установлены надежные диски и надежный же UPS .

effective_cache_size = 4096MB - на сервере 8Гб ОЗУ, этот параметр надо выставить в половину ОЗУ, как рекомендует 1С для постгреса 8.2

work_mem = 16MB - насколько я понимаю, этот параметр зависит от среднего размера таблиц, в любом случае, для тонкой настройки надо тестировать на конкретном сервере с конкретной базой (оставляем по умолчанию).

Перезапускаем службу и проверяем, запустился ли PostgreSQL:

# service postgresql restart

Вы должны получить примерно следующее сообщение:
Stopping postgresql service: DONE
Starting postgresql service: DONE

Проверяем, слушается ли 5432 порт:
# netstat -atn|grep 5432

Если в ответ получился, вот такой выхлоп, то всё нормально:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

или
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN // если Вы в файле postgresql.conf указали слушать только локальные подключения.

На этом этапе установка PostgreSQL завершена. Приходим к установке сервера 1C 8.2.

3. Установка сервера 1cv82

Здесь не должно возникнуть сложностей с установкой. Скидуем deb-пакеты версии 8.2.14-540_i386 в каталог /usr/local/srv1c и устанавливаем.

Список пакетов:
1c-enterprise82-common-nls_8.2.14-540_i386.deb
1c-enterprise82-common_8.2.14-540_i386.deb
1c-enterprise82-crs-nls_8.2.14-540_i386.deb
1c-enterprise82-crs_8.2.14-540_i386.deb
1c-enterprise82-server-nls_8.2.14-540_i386.deb
1c-enterprise82-server_8.2.14-540_i386.deb
1c-enterprise82-ws-nls_8.2.14-540_i386.deb
1c-enterprise82-ws_8.2.14-540_i386.deb

По сути, нам нужны лишь 2 пакета 1c-enterprise82-server_8.2.14-540_i386.d
eb и 1c-enterprise82-common_8.2.14-540_i386.deb , т.к. пакеты «-nls» - это языковая поддержка. Нам она не нужна, русский язык есть в основной поставке. Пакет «-ws» - это веб-сервисы. Но они есть не просят, поэтому на перспективу я их оставил.

#cd /usr/local/svr1c
#dpkg -i 1c*.deb

Программа устанавливается по умолчанию в каталог /opt/1C/v8.2/i386/

Устанавливаем дополнительные пакеты, которые необходимы для нормальной работы сервера:
# apt-get install imagemagick ttf-mscorefonts-installer libgsf-1-114 texlive-base unixodbc

Далее переходим в каталог утилиты и запускаем config_server:
# cd /opt/1C/v8.2/i386/utils
#./config_server

Если утилита немного задумалась и не произошло никакого выхлопа в ответ, то это значит, что сервер 1С настроен правильно и больше ничего не нужно для нормального функционирования.

!!!!! На Ubuntu 12.04 появилась проблема со скриптом  ./config_server. При запуске он может не обнаруживать установленных дополнительных библиотек и сообщать "Please install following package: <имя пакета>" при установленном пакете. Либо, в некоторых случаях, при запуске тонкого клиента может происходить ошибка "Ошибка инициализации графической подсистемы".
Лечится так. Правим ./config_server:

# cd /opt/1C/v8.2/i386/utils
#mcedit ./config_server

В начало функции getLibPath добавить:
для 32bit
checkPath lib $ARCH && { echo /usr/lib; return; }

для 64bit
checkPath lib/x86_64-linux-gnu $ARCH && { echo /usr/lib/x86_64-linux-gnu; return; }


тело функции checkInstalledLibs заменить на:
для 32bit
SYSTEM_LIB_PATH="/usr/lib"
checkLib MagickWand Wand || checkLib Wand || askToInstall ImageMagick
checkLib gsf-1 || askToInstall libgsf

для 64bit
SYSTEM_LIB_PATH="/usr/lib/x86_64-linux-gnu"
checkLib MagickWand Wand || checkLib Wand || askToInstall ImageMagick
checkLib gsf-1 || askToInstall libgsf




Даем пользователям 1С сервера права на запись:
# chown -R usr1cv82:grp1cv82 /opt/1C

Добавляем сервер 1С в автозапуск:
# update-rc.d srv1cv82 defaults

В ответ Вы должны получить следующий выхлоп:

Adding system startup for /etc/init.d/srv1cv82 ...
/etc/rc0.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc1.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc6.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc2.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc3.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc4.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc5.d/K20srv1cv82 -> ../init.d/srv1cv82

Перезагружаем сервер. Проверяем запускаются ли при старте системы постгрес и сервер 1С:
#netstat -atn |grep 0.0.0.0:15

tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1561 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1562 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1564 0.0.0.0:* LISTEN

Если в ответ Вы видите такой список портов, то всё отлично (а если, нет портов 1541 или других, то не запустился процесс rphost и это не есть хорошо).

Так же можно для профилактики проверить, все ли процессы сервера запущены нормально:
#ps aux|grep 1c

От имени пользователя usr1cv82 должно быть запущено три процесса: ragent, rmngr и rphost. После имен процессов идут номера портов, на которых они работают:

usr1cv82 1217 0.0 0.1 111784 15432 ? Ssl Nov18 1:10 /opt/1C/v8.2/i386/ragent -daemon
usr1cv82 1220 0.4 0.3 262420 32660 ? Sl Nov18 25:54 /opt/1C/v8.2/i386/rmngr -port 1541 -range 1560:1591
usr1cv82  4034 6.5 4.5 651928 375684 ? Sl Nov20 184:46 /opt/1C/v8.2/i386/rphost  -range 1560:1591 -reghost titan -regport 1541 -pid  27e017b0-11f0-11e1-7f8e-3c4a92f1a084


Если процесса не три, а один (такое почему-то иногда бывает, но только при первоначальном запуске), то делаем:
# invoke-rc.d srv1cv82 stop

Удаляем каталог «.1cv82» в домашней директории пользователя usr1cv82. И перезапускаем сервер заново. Должно стать все нормально.

На этом этапе всё готово для создания БД из под оснастки Windows "Администрирование серверов предприятия"!!!!!!!!!!!!!!!!!!!


4. Установка клиента
Установка клиента - это довольно обширная тема, по этому она рассмотрена отдельной статьей 

5. Установка HASP и настройка лицензионного подключения к БД.
Дабы не замарачиваться, возьмем уже готовые и собранные пакеты HASP драйвера и демона на ETRESOFT`e. Копируем пакеты в директорию установки /usr/local/HASP и устанавливаем:
#cd /usr/local/HASP
#dpkg -i *.deb

тушим сервер:
#shutdown -h now

вставляем флешки-ключи и запускаем сервак...

Проверить работает ли HASP-ключ можно командами:
#service haspd status

должно быть что то похожее на:
Hardware protection keys support bundle. Etersoft (c) 2008-2010
HASPD package 3.2 with /dev/bus/usb support
Aladdin HASP 4/HL/SRM driver status:
kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled! Run service haspd build if needed.)
aksusbd is running
winehasp is running
hasplm is running
hasplmd is running
Daemon version: 1.14 (#7779) - key API (USB) version: 3.88 (parallel driver not available)
/proc/bus/usb workaround is enabled
Smartkey 3 USB/LPT driver status:
skeyd is stopped
SafeNet Sentinel status:
usbsentinel is stopped
SntlKeysSrvrlnx is stopped

Ну и еще одна проверка:
#netstat -ap | grep hasp

должны увидеть, что демон слушает 475 порт:
tcp        0      0 *:1947                  *:*                     LISTEN      1143/hasplmd   
udp       0      0 localhost:2790       *:*                                      1125/winehasp  
udp       0      0 *:1947                  *:*                                      1143/hasplmd   
udp      0      0 *:475                   *:*                                     1134/hasplm
udp       0      0 *:51937                *:*                                      1143/hasplmd   
unix  3      [ ]         STREAM     CONNECTED     6106     1134/hasplm        
unix  3      [ ]         STREAM     CONNECTED     5392     1143/hasplmd       
unix  3      [ ]         STREAM     CONNECTED     5390     1143/hasplmd       
unix  2      [ ]         DGRAM                              5150     1143/hasplmd       
unix  2      [ ]         DGRAM                              5137     1134/hasplm        
unix  2      [ ]         DGRAM                              5124     1125/winehasp     


6. Создаем скрипт автоматического BACKUP`a БД.

Этот скрипт нужен для автоматического бекапа БД и чистки от старых бекапов.

Собственно, приступим, создаем директорию бекапов и скрипт сответственно:
#mkdir /mnt/1c/Backup1C
#cd /mnt/1c/Backup1C/
#mcedit backup1c

и в ставляем в скрипт следующее содержание:
#!/bin/bash

# Скрипт запуска резервного копирования БД 1С (храним 5 последних копий)

BACKUPDIR=/mnt/1c/Backup1C/                 # Директория хранения бэкапов
DATENAME=`date +%d.%m.%Y-%H.%M` # Дата/Время в имени файла бэкапа
LOGFILE=/var/log/Backup1C.log                  # Хранилище лог-файлов
X=1                                                            # Счетчик файлов
FILEMASK="*.backup"                                # маска файлов
KEEP=4                                                      # сколько файлов (бэкапов) надо оставлять 
BASE=utp                                                   # база данных
 
cd $BACKUPDIR
echo Удаление старых резервных копий базы данных...

for i in `ls -t $BACKUPDIR/$FILEMASK`
do
if [ $X -le $KEEP ]
then
((X++))
continue
fi
rm $i
done

echo Начато резервное копирование базы данных... 
 
pg_dump -h localhost -U postgres -Fc -Z9 -c -f $DATENAME.utp.backup $BASE
echo "Резервное копирование БД УТП завершено: $DATENAME" > $LOGFILE

####LAST LINE. DO NOT REMOVE####

Смысл дествий скрипта такой:
Проверка количества старых бекапов, удаление всех старых бекапов (кроме 4х последних - параметр KEEP) и непосредственный бекап текущего состояния БД с логированием в /var/log/Backup1C.log

Теперь, для автоматического выполнения этого скрипта, добавим его в crontab:
#mcedit /etc/crontab

и добавляем туда строку:
00 3 * * * root /mnt/1c/Backup1C/backup1c

т.е. скрипт /mnt/1c/Backup1C/backup1c будет выполняться каждый день в 3:00


7. Восстановление БД из BACKUP`a.

Все действия выполняются от имени пользователя postgres. Логинимся в него:

$sudo su postgres

Далее порядок действий такой:

  • удаляем существующую БД
  • $dropdb <ИМЯ_БД>
     
  • создать новую БД с 0-шаблоном
  • $createdb -T template0 <ИМЯ_БД>
     
  • восстановить данные из backup`a во вновь созданную БД
  • $pg_restore -d <ИМЯ_БД> <ПУТЬ+ИМЯ_BACKUP`a>
     
  • через оснастку "Администрирование серверов предприятия" добавить БД в кластер 1С

вторник, 1 ноября 2011 г.

Запуск Lazarus 0.9.30 в Ubuntu 11.10

Обновил свою Ubuntu 10.04.3 до Ubuntu 11.10. Все было прекрасно, все понравилось в плане дизайна, но вот для работы столкнулся с проблемами...
Пришлось допиливать. В частности, начались проблемы с Lazarus 0.9.30. Пакет есть в стандартных репах... После обновления, в проектах (в запущенных бинарниках) при щелчке на DBGrid происходит блокировка всех остальных элементов на форме. Как будто фокус замораживается на гриде. Если запускать проект через Lazarus вываливается исключение:

Проект ххххх вызвал исключение EInterfaceCritical `OS_IS_PAGER (pager)` failed 

Выяснилось, что скорее всего виноваты "оверлейные" скроллбары.

Лечится путем отключения таковых:

$sudo su
#echo "export LIBOVERLAY_SCROLLBAR=0" > /etc/X11/Xsession.d/80overlayscrollbars

или удалением пакета совсем:

$sudo apt-get remove liboverlay-scrollbar* liboverlay-scrollbar-* 

P.S.
Если необходимо вернуть красивости скролбарам, делаем так:

$sudo rm -f /etc/X11/Xsession.d/80overlayscrollbarssudo rm -f /etc/X11/Xsession.d/80overlayscrollbars

ну а если завалили пакет - ставим:

$sudo apt-get install liboverlay-scrollbar

P.P.S.
Также, можно обойтись и без доп. ковыряний. Если нужно просто запустить программу (скажем так, для теста), то выполним в терминале:

$export LIBOVERLAY_SCROLLBAR=0 && <ваша программа>

четверг, 8 сентября 2011 г.

Миграция с FireBird 1.5 на FireBird 2.1


Данная статья - есть вольный перевод статьи misc/upgrade/metadata/metadata_charset.txt с собственными комментариями и дополнениями

В версиях Firebird до версии 2.1 были две проблемы связанные с наборами символов и извлечением метаданных:
  1. При создании/изменении объектов, никогда не транслитерировался (перекодировался) текст метаданных  (текст процедур/триггеров, описания (rdb$description), ограничений (constraints)/значений по-умолчанию, и т.д.), из клиентского набора символов в системный (UNICODE_FSS). То есть, исходный текст просто помещался в столбец с кодировкой UNICODE_FSS.
  2. При чтении текстовых BLOB`в, они не перекодировались из набора символов BLOB`а в клиентский набор символов
Даже в версии 2.1, проблема 1 может возникнуть если вы создаете или изменяете объекты с клиентской кодировкой NONE или UNICODE_FSS, но с текстом в кодировке не UNICODE_FSS.

Если вы создаете или создавали метаданные с не ASCII символами (любые национальные символы, например WIN1251 и т.д.), то вам нужно "отремонтировать" вашу базу данных чтобы метаданные корректно читались после обновления на 2.1.

Чтобы проделать эту операцию, база данных должна быть в формате ODS11.1 (backup, и затем restore в FB 2.1). Перед этим сделайте копию базы данных.

Также рекомендуется делать реконнект перед выполнением каждого действия, приведенного ниже.

Создаем процедуры перекодировки метаданных в базе данных:
$isql-fb database.fdb
SQL> input '/usr/lib/Firebird/2.1/misc/upgrade/metadata/metadata_charset_create.sql';
SQL> quit;

Проверьте базу данных:
$isql-fb database.fdb
SQL> select * from rdb$check_metadata;
SQL> quit;

Процедура rdb$check_metadata вернет список объектов, которые будут обработаны.
Если ошибок не происходит, то ваши метаданные в порядке, и можно переходить к разделу "Удаление процедур обновления метаданных".
Иначе, первый "плохой" объект является последним в списке перед возникновением ошибки.
Для исправления метаданных, вам нужно знать, в каком наборе символов были созданы эти метаданные. Скрипт обновления метаданных будет работать корректно только если все метаданные были созданы в одном и том же наборе символов.


Исправление метаданных:
$isql-fb database.fdb
SQL> input '/usr/lib/Firebird/2.1/misc/upgrade/metadata/metadata_charset_create.sql';
SQL> select * from rdb$fix_metadata('WIN1252'); -- replace WIN1252 by your DB charset
SQL> commit;
SQL> quit;

Процедура rdb$fix_metadata возвращает те же данные, что и rdb$check_metadata, но с исправлением текста метаданных.
Запускать эту процедуру можно только один раз!
Если это действие не помогло и при проверке базы данных возникают ошибки - необходимо проверить все метаданные (процедуры, триггеры и т.д.) на наличие в коде "плохих" символов (например, русскоязычные комментарии) и удалить их вручную.

После этого можно удалить процедуры обновления метаданных.


Удаление процедур обновления метаданных:

$isql-fb database.fdb
SQL> input '/usr/lib/Firebird/2.1/misc/upgrade/metadata/metadata_charset_drop.sql';
SQL> quit;

Жопиздан:)

вторник, 2 августа 2011 г.

1С 7.7 Нарушена структура индексов таблицы

Нарушена структура индексов таблицы CJ1196
Нарушена структура индексов таблицы CJ1238
Нарушена структура индексов таблицы CJ447
Нарушена структура индексов таблицы CJ757

Пришлось столкнуться с этой ошибкой. Честно говоря, я был поражен отсутствием подробной инструкции по решению данной проблемы в интернете. Эта ошибка возникает на платформе 7.7 при использовании компоненты "расчет" (или проще говоря, когда есть расчет зарплаты) при работе с Microsoft SQL Server 2000. Причем при входе в монопольном режиме ошибка исчезает, но при попытке входа нескольких пользователей появляется опять. Причиной появления такой ошибки является смена платформы 1С Предприятия на более новую версию (в моем случае это был 27 релиз платформы), а база данных на SQL сервере была загружена более старой версией. У меня она возникла при не значительном изменении конфигурации. А именно, в состав конфигурации был добавлен один дополнительный отчет, который никак не был связан с зарплатной частью. По данным найденным, в сети я понял, что проблема связана с несоответствием файла 1cv7.dds и фактической структурой данных на SQL Server-е. Обычно файл 1cv7.dds можно перегенерировать. Для этого его нужно переместить из папки базы данных 1с, сделать незначительные изменения в конфигурации и сохранить их. Один из вариантов это зайти в конфигуратор и добавить пробел в название конфигурации или еще один Конфигуратор-Конфигурация-Открыть конфигурацию-Развернуть ветку конфигурации "Виды расчетов"-Встать на любой вид расчета-Нажать на нем правую кнопку мышки-В выпавшем меню выбрать Упорядочить.-После этого в заголовке окна после слова Конфигурация должная появиться Звездочка "*". Затем нажимаем Ctrt+S или нажимаем на дискетку. Соглашаемся со всеми вопросами. Пробуем закрыть конфигуратор и запустить предприятие в "не монопольном" режиме. Если не помогло. Заходим еще раз конфигуратор. В меню администрирование выбираем выгрузить данные. Затем в заходим в Enterprise manager SQL сервера. Отключаем базу данных (Detach database). Создаем новую базу в SQL с тем же именем. Можно и в той же папке, но тогда нужно убрать файлы базы SQL. Но и в конце концов снова зайти в конфигуратор и загрузить данные. При этом стоит обновить все Платформы 1С предприятия до последней версии.

среда, 27 июля 2011 г.

Контроль переписки в Postfix или Big Brother watching you

Иногда, необходимо контролировать переписку определенных сотрудников или же всех сотрудников. Т.е. чтобы при отправке письма пользователем, его почта доставлялась как обычно адресату, а также дублировалось письмо в определенный ящик.

Для доставки копии ВСЕХ сообщений (входящих и исходящих) на указанный адрес (поддерживается с Postfix v.2.1) добавляем в /etc/postfix/main.cf добавляем вот такой вот параметр:

always_bcc = address

где address - мыло ящика, куда необходимо дублировать ВСЕ месаджи от ВСЕХ

Для контроля определенных сотрудников необходимо использовать таблицы соответствия отправителя/получателя с адресами доставки копий сообщений sender_bcc_maps = type:table и recipient_bcc_maps = type:table

Рассмотрим 2 варианта реализации - на основе файлов (индексированных карт hash) и базы данных MySQL.

Способ с использованием индексированных hash карт

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

Для копирования исходящих сообщений:

Создаем файл /etc/postfix/sender_bcc. Внутрь помещаем правило о том с чьего мала и куда слать копию:
user@mydomain.ru backup@mydomain.ru
user2@mydomain.ru backup@mydomain.ru

Добавляем в main.cf мапу на этот файл:
sender_bcc_maps = hash:/etc/postfix/sender_bcc

Индексируем:
#>postmap /etc/postfix/sender_bcc

Перезагружаем постфикс и любуемся копированием исходящей почты :).

По аналогии в /etc/postfix/recipient_bcc создаем правило для копирования входящей почты:
user@mydomain.ru backup@mydomain.ru
user2@mydomain.ru backup@mydomain.ru

И опять же добавляем в main.cf мапу на этот файл:
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc

Индексируем:
#>postmap /etc/postfix/recipient_bcc

ВАЖНО!!! Если в последствии в файлы /etc/postfix/recipient_bcc и /etc/postfix/sender_bcc вносятся изменения - необходимо перестраивать их хэш (периндексировать):

#>postmap /etc/postfix/recipient_bcc
#>postmap /etc/postfix/sender_bcc


Способ с использованием MySQL

Подразумевается, что уже используется MySQL совместно с Postfix для хранения учетных записей, транспорта и т.д.

Создаем таблицу bcc-ей в базе данных:

#>mysql -p mail

mysql>CREATE TABLE IF NOT EXISTS bcc (
id int(10) unsigned NOT NULL auto_increment,
sender varchar(128) NOT NULL default '',
recipient varchar(128) NOT NULL default '',
copy varchar(128) NOT NULL default '',
PRIMARY KEY (id)
)
ENGINE=InnoDB DEFAULT CHARSET=utf8;

В /etc/postfix/ создаем файлы sender_bcc.cf:

user = mail_admin
password = mailadminpass
dbname = mail
query = SELECT copy FROM bcc WHERE sender = '%s'
hosts = 127.0.0.1

и recipient_bcc.cf:

user = mail_admin
password = mailadminpass
dbname = mail
query = SELECT copy FROM bcc WHERE recipient = '%s'
hosts = 127.0.0.1

В /etc/postfix/main.cf добавляем:

sender_bcc_maps = mysql:/usr/local/etc/postfix/sender_bcc.cf
recipient_bcc_maps = mysql:/usr/local/etc/postfix/recipient_bcc.cf

Перезапускам Postfix для применения изменений. Изменения данных в таблице MySQL bcc применяются без перезапуска Postfix.

Избавляемся от дублирования сообщений bcc_maps

Чтобы не происходило дублирования почты при использовании bcc_maps в /etc/postfix/master.cf следует добавить строчку перед conten_filter. Т.е. должно быть где-то так:

smtp      inet  n       -       n       -       -       smtpd
-o content_filter=
-o receive_override_options=no_address_mappings

Замечание! Если на серваке крутится несколько виртуальных доменов, и надо "копировать" переписку только с одного домена, то в качестве sender или recipient необходимо указывать маску. Например, @mydomen1.com

Жопиздан:)

среда, 20 июля 2011 г.

Подключение принтеров HP в Ubuntu

Есть замечательная приблуда HPLIP (можно качнуть с оф. сайта HP). Вроде и подключаются через нее принтера, и вроде даже работать должны, но есть нюанс: HPLIP не умеет подключать расшаренные принтера. Поэтому предлагаю использовать foo2zjs.

Это замечательный Linux драйвер для принтеров, работающих по протоколу ZjStream. Его работой очень доволен...

ВАЖНО!!! НЕ надо ставить foo2zjs из стандартных репозиториев. Необходимо качать свежую сборку с оф сайта. Приступим-с:

Get:
$wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz

Unpack:
$tar zxf foo2zjs.tar.gz
$cd foo2zjs

Compile:
$make

Get extra files from the web, such as .ICM profiles for color correction, and firmware. Select the model number for your printer:
$./getweb cpwl # Get Minolta Color PageWorks/Pro L .ICM files
$./getweb 2200 # Get Minolta 2200 DL .ICM files
$./getweb 2300 # Get Minolta 2300 DL .ICM files
$./getweb 2430 # Get Minolta 2430 DL .ICM files

$./getweb 1000 # Get HP LaserJet 1000 firmware file
$./getweb 1005 # Get HP LaserJet 1005 firmware file
$./getweb 1018 # Get HP LaserJet 1018 firmware file
$./getweb 1020 # Get HP LaserJet 1020 firmware file

$./getweb 1025 # Get HP LaserJet Pro CP1025nw .ICM files

Install driver, foomatic XML files, and extra files:
$su OR $sudo make install
#make install

(Optional) Configure hotplug (USB; HP LJ 1000/1005/1018/1020):
#make install-hotplug OR $sudo make install-hotplug

(Optional) If you use CUPS, restart the spooler:
#make cups OR $sudo make cups

Все! Запускаем system-config-printer и подключаем принтера (как локальные, так и шаровые).
Жопиздан:)

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

Организация VPN сервера в Ubuntu

Устанавливаем VPN сервер:
$sudo apt-get install pptpd

Ок. Демон установился и запустился. По-умолчанию, демон слушает TCP-порт 1723 и использует протокол GRE (он же протокол 47) . Разрешаем на фаерволе входящие подключения на этот порт по этому протоколу (IPTABLES =/sbin/iptables, если кто забыл:)) ):

$IPTABLES -A INPUT -p gre -s 0/0 -j ACCEPT
$IPTABLES -A OUTPUT -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 --dport 1723 j ACCEPT
или через shorewall, /etc/shorewall/rules добавляем:
ACCEPT           net    fw    tcp 1723
GRE(ACCEPT)   net    fw



Далее ковыряем конфиг /etc/pptpd.conf, чтобы получилось вот такое:


option /etc/ppp/pptpd-options
#noipparam
logwtmp
bcrelay eth0
localip 10.177.36.3
remoteip 10.177.36.10-15
options - путь, где лежит конфиг опций; ВАЖНО!!! должно быть закаментировано! noipparam - если опция активна, то клиенту не будет передаваться его IP; logwtmp - позволяет передавать PPTP-серверу лог аутентификации пользователей через стандартную функцию logwtmp (нужна для отладки); bcrelay - разрешить передачу VPN-клиентам широковещательных пакетов с внутреннего интерфейса eth0; localip - ip нашего VPN сервера; remoteip - диапазон ip, выдаваемых клиентам.

Теперь ковырнем конфиг опций /etc/ppp/pptpd-options:

name pptpd
auth
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
logfile /var/log/pptpd.log
lock
nobsdcomp 
name - имя сервера (должно совпадать с параметром server в /etc/ppp/chap-secrets см. описание ниже); auth - требовать от клиента обязательной аутентификации; refuse-pap,refuse-chap,refuse-mschap - не принимать подключения от клиентов использующих ненадежные протоколы проверки пароля (pap, chap, ms chap v1); require-mschap-v2 - требовать от клиентов наиболее (на сегодняшний день) надежный протокол проверки пароля; require-mppe-128 - использовать механизм шифрования с 128-битным ключем; proxyarp - директива серверу работать с локальной сетью не используя маскарадинг (используется если клиентам выдаются ip-адреса из локальной подсети); nodefaultroute - не менять клиентам маршрут по-умолчанию (что б при установки соединения не отваливались интернеты) ВАЖНО!!!!! Не смотря на nodefaultroute, под Windows при установке VPN все равно маршрут по-умолчанию становиться на VPN, чтобы этого не происходило идем в свойства VPN соединения → Сеть → Протокол TCP/IP → Свойства → Дополнительно, там снимаем галку "Использовать основной шлюз в удаленной сети". logfile - куда писать логи; nobsdcomp - явное указание серверу, что компьютер работает под осью отличной от BSD (OpenBSD, FreeBSD).


Добавляем пользователей в /etc/ppp/chap-secrets:

# client        server                     secret                  IP addresses
test               pptpd                      testpass
test1             pptpd                      test1pass           10.177.36.10

Таким образом мы создали пользователя "test" с паролем "testpass" и пользователя "test1" с паролем "test1pass" c явным указанием ему получать ip-адрес "10.177.36.10".

Перезапускаем демона:

$sudo /etc/init.d/pptpd restart

Все! VPN-сервер готов к работе.

Если VPN-сервер работает за NAT-том, то еще необходимо организовать к нему проброс. На VPN-сервере разрешаем форвард пакетов:

$sudo mcedit /proc/sys/net/ipv4/ip_forward
и туда пишем:
net.ipv4.ip_forward=1

потом выполняем:
$sudo sysctl -p

Ну и, собственно проброс... На шлюзе в /etc/shorewall/rules добавляем:

DNAT   net    loc:10.177.36.3    tcp 1723
DNAT   net    loc:10.177.36.3    47

На этом настройка завершена...

А если все подключается, но ничего не работает, то вполне возможно нужно изменить размер MTU, таким образом, чтобы он был меньше MTU соединения с провайдером. Например, вы подключаетесь к провайдеру с MTU=1400 (см. в настройках роутера), тогда для своего VPN сервера нужно задать меньшее значение, например 1300. Для этого идем в /etc/ppp/pptpd-options и дописываем:

mru 1300
mtu 1300

ПОЛЕЗНЫЕ ССЫЛКИ:


Жопиздан:) (с) Job Is Done

четверг, 14 апреля 2011 г.

Установка принтера Canon LBP 3010 в ubuntu 9.04 +



Качаем необходимые дрова для принтера вот отсюда http://software.canon-europe.com/

Ставим драйвера в таком порядке (версия драйвером может отличаться):
1. cndrvcups-capt_2.20-1_i386.deb
2. cndrvcups-common_2.20-1_i386.deb

Далее рестартуем CUPS:

$sudo /etc/init.d/cups restart

Регистрируем принтер в системе. Смотрим какой ppd файл соответствует нашему принтеру https://help.ubuntu.com/community/HardwareSupportComponentsPrinters/CanonPrinters?highlight=%28%28CanonCaptDrv190%29%29 и
собственно регистрируем его:

$sudo /usr/sbin/lpadmin -p LBP3010 -m CNCUPSLBP3050CAPTK.ppd -v ccp:/var/ccpd/fifo0

Теперь в "Система -> Администрирование -> Печать" - должен появиться принтер LBP 3010.

Регистрируем usb - соединение принтера:

$sudo /usr/sbin/ccpdadmin -p LBP3010 -o /dev/usb/lp0

в ответ должны получить что то типа:

значит все гуд.

Вот теперь для нормальной работы принтера нужно подправить файл ccpd:

$sudo mcedit /etc/init.d/ccpd

файл должен содержать только:
# startup script for Canon Printer Daemon for CUPS (ccpd)

### BEGIN INIT INFO
# Provides: ccpd
# Required-Start: $local_fs $remote_fs $syslog $network $named
# Should-Start: $ALL
# Required-Stop: $syslog $remote_fs
# Default-Start: 2 3
# Default-Stop: 0 1 4 5 6
# Description: Start Canon Printer Daemon for CUPS
### END INIT INFO


DAEMON=/usr/sbin/ccpd
LOCKFILE=/var/lock/subsys/ccpd
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=ccpd
DESC="Canon Printer Daemon for CUPS"

test -f $DAEMON || exit 0

. /lib/lsb/init-functions

case $1 in
start)
log_begin_msg "Starting $DESC: $NAME"
start-stop-daemon --start --quiet --exec $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
log_end_msg $?
;;
status)
echo "$DESC: $NAME:" `pidof $NAME`
;;
restart)
log_begin_msg "Restarting $DESC: $NAME"
start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
sleep 1
start-stop-daemon --start --quiet --exec $DAEMON
log_end_msg $?
;;
*)
echo "Usage: ccpd {start|stop|restart|status}"
exit 1
;;
esac

exit 0

сохраняем и перезапускаем canon`вского демона:

$sudo /etc/init.d/ccpd restart

Теперь, чтобы принтер работал и после перезагрузки системы, выполняем:

$sudo update-rc.d ccpd defaults 50

Валим, напоследок, стандартный принтер, найденый системой.
Жопиздан (с) Job Is Done

вторник, 12 апреля 2011 г.

Сохранить установленный deb пакет из системы

Иногда, необходимо сохранить установленный deb пакет из системы. Делается это просто. Ставим dpkg-repack:

$sudo apt-get install dpkg-repack

и выполняем команду:

$sudo dpkg-repack <имя необходимого пакета>

На выходе имеем свежесобранный пакет в текущем каталоге.

Жопиздан (с) Job Is Done

среда, 16 марта 2011 г.

Запретить apt-get обновлять конкретный пакет Ubuntu

Иногда возникает необходимость отказаться от обновления некоторых пакетов. Через ГУЙ это не составляет никаких проблем. например, через sinaptic. Но, часто, обновление и установка пакетов проходит в терминале. Захолдить пакет для apt-get можно так:


$ echo "<полное название пакета> hold" | sudo dpkg --set-selections


<полное название пакета> — можно узнать так:

$ dpkg --get-selections | grep <название пакета>


Чтобы снова разблокировать пакет, необходимо выполнить туже команду, только параметр hold заменить на install

пятница, 25 февраля 2011 г.

Проблемы после блокировки экрана Ubuntu 10.04

Столкнулся с такой вот "кАкой". После того как тазик выходит после блокировки экрана не могу взаимодействовать с рабочим столом. Т. е. мышка бегает, но не на что не действует. Написать тоже ничего не могу. Помогает нажатие ALT+F2 (выполнить программу). После чего фокус опять возвращается и можно дальше нормально работать.

Входе жесткого поиска причин, было выяснено - проблема с wine!!!!
Решение: в winecfg, закладка "Графика", убрать галочку "Разрешить менеджеру окон управлять окнами wine".

среда, 23 февраля 2011 г.

Монтирование сетевые шары, в пути которой есть пробел

Монтируя сетевые шары с помощью cifs, через /etc/fstab, можете столкнуться с проблемой, если вдруг в пути расшареваемой папки есть пробелы. К примеру:

//192.168.0.2/Сетевой диск

Чтобы все заработало, надо использовать следующую запись:
//192.168.0.2/Сетевой\040диск

понедельник, 21 февраля 2011 г.

Web-camera в Ubuntu 10.04

Если в skype (или другом приложении) веб-камера в устройствах отсутствует, то можно попробовать запустить приложение так:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

Если веб-камера показывает изображение вверх-тормашками, то есть такое решение:


export LIBV4LCONTROL_FLAGS=3
LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

в большинстве случаев помогает.

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

MC c поддержкой smbfs

Качаем свежий source c www.midnight-commander.org/downloads
Распаковываем и собираем с опцией подключения самба ресурсов:

$ cd /mc-source
$ ./configure --enable-vfs-smb
$ make
$ sudo make install

Собсна, все! Жопиздан (с) Job Is Done