Системное радио libc6

21 Июнь 2010

Крокозяблы в mc на удаленном сервере

В общем проблему видно на скриншоте mc. Битые сиволы (они же крокозяблы), съехавшая псевдографика... Такое часто происходит на всяких выделенных серверах, одним словом, это не локальная машина, а удаленная. Обычно я такую проблему не решаю. А тут вдруг решил двумя строчками. Дело в локалях и кодировках.

Смотрю работающие в системе локали -

ll /var/lib/locales/supported.d
и вижу, что директория пустая.

Завожу две нужные мне простой командой

locale-gen ru_RU.UTF-8 en_US.UTF-8
теперь в supported.d должен появится файлик local с таким содержимым
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8

Теперь в свой ~/.bashrc просто добавляю язык:

LANG=ru_RU.UTF-8
LANGUAGE="ru_RU:ru:en_US:en"

Запускаю новый bash или делаю релогин, и готово. MC чувствует себя отлично, никаких битых символов и съехавшей псевдографики не наблюдается.

Спасибо http://my-ubuntu-land.blogspot.com/2010/02/ubuntu-804.html за очень внятный пост о локалях.

Ярлыки:


Читать дальше...

23 Май 2010

Создание загрузочного установочного USB диска для WINDOWS 7 из Linux

Исходные требования:

  • Флешка 4GB или больше
  • Образ Windows 7 в виде ISO файла
  • Терминал
  • Интернет
  • gparted, gettext, mount, ntfsprogs, ms-sys последней версии

Процесс

  • Бекапим данные с флешки, так как ее придется отформатировать в NTFS
  • Устанавливаем пакет ntfsprogs, он понадобится для mkfs.ntfs
  • Удаляем с флешки все разделы, создаем один primary раздел и метим его флагом boot. Форматируем полученный раздел в NTFS. Этот пункт я выполнял с помощью gparted.
  • Монтируем windows7.iso. На этом диске UDF файловая система, поэтому опции для mount соответствующие:
sudo mount -t udf -o loop Downloads/ru_windows_7_ultimate_x64_dvd_x15-65952.iso /media/cdrom0
  • Копируем все с примонтированного образа на флешку. Процесс занимает примерно 7-8 минут.
cp -R /media/cdrom0/* /media/4CC695DA630FCBA5/
  • Идем на sourceforge, ms-sys, download, скачиваем последнюю версию. В моем случае - ms-sys-2.2.0.tar.gz
#aptiude install build-essential #если не установлен ранее
cd Downloads 
wget -c "http://surfnet.dl.sourceforge.net/project/ms-sys/ms-sys%20stable/2.2.0/ms-sys-2.2.0.tar.gz"
tar -xvf ms-sys-2.2.0.tar.gz
cd ms-sys-2.2.0
sudo su
make

В этом месте, после команды make, мы увидим сообщение об ошибке компиляции:

#последние 3 строчки вывода
msgfmt -o mo/sv.mo po/sv.po
make: msgfmt: Команда не найдена
make: *** [mo/sv.mo] Ошибка 127

Установим gettext и продолжим

aptitude install gettext
make clean
make
make install
  • Устанавливаем Загрузчик Windows 7 в MBR область флешки
ms-sys -7 /dev/sdX 
# где X - буква в имени устройства целевого USB диска
  • Отмонтируем образ win7 и флешку
  • Готово

По мотивам creating-windows-7-bootable-usb-from-linux, с пояснениями и командами.

Ярлыки: ,


Читать дальше...

08 Февраль 2010

Установка monitorix под tomcat

Всем привет, на волне libc6 с новыми заморочками. Приступаю сразу к делу.

monitorix

Это легкое средство мониторинга жизни сервера - сетевые интерфейсы, активность жестких дисков, нагрузка cpu, памяти, сканирование активности указанных портов, использование ядра и даже температура устройств через lm-sensors и hddtemp.

Monitorix написан на perl, использует rrdtool для сбора/хранения статистики и генерации графиков, изначально предназначен для работы в среде apache через интерфейс cgi. И вот последнее я как раз и буду заменять на tomcat.

Исходные данные

- Документация к tomcat по активированию cgi проксирования CGI How To . Страница отсылает нас к самостоятельному поиску установки привилегий контексту после фразы: “Only Contexts which are marked as privileged may use the CGI servlet (see the privileged property of the Context element).”

- Статья человека по имени monks (больше ничего об авторе не нашел, к сожалению) Tomcat и Perl. Быстрый старт из блога Ворота в Perl, в которой раскрывается, как же указать контексту, что он привилегированный.

- Непосредственно документация к установке monitorix под ubuntu Installation on an Ubuntu Linux 9.04 исключая установку apache httpd, а так же немного FAQ в части "А точно ли мне нужен apache и можно ли как-то без него?"

Ставим сам monitorix

Последовательность действий: устанавливаем зависимости из репозиториев; если нужно, доустанаволиваем (и настраиваем) lm-sensors и hddtemp; качаем monitorix последней версии, распаковываем, устанавливаем по инструкции без боязни и тут же запускаем сам демон сбора статистики.

sudo aptitude install rrdtool libwww-perl  librrds-perl hddtemp lm-sensors
sudo sensors-detect
# type 'yes' several times
cd Downloads
wget http://www.monitorix.org/monitorix-1.4.1.tar.gz
tar -zxvf monitorix-1.4.1.tar.gz
cd monitorix-1.4.1/
sudo ./install.sh
# type 3, i.e. Debian (Ubuntu)
# type y
sudo /etc/init.d/monitorix start

Теперь немного магии с tomcat6

Создадим webapp приложение для monitorix

Теперь создадим виртуальное приложение monitorix под tomcat. Для этого перенесем директорию monitorix из /var/www/monitorix в %CATALINE_HOME/webapps/monitorix и настроим ее под себя - дадим ей права своего юзера (который запускает томкат). В новом доме мониторикса создадим директорию WEB-INF, а в ней директорию cgi.

И теперь самая магия: из /var/www/monitorix делаем ссылку на %CATALINE_HOME/webapps/monitorix, а из %CATALINE_HOME/webapps/monitorix/WEB-INF/cgi создаем ссылку monitorix.cgi на /usr/lib/cgi-bin/monitorix.cgi.

cd /var/www
sudo mv -r monitorix %CATALINE_HOME/webapps
chown -R tomcat:tomcat %CATALINE_HOME/webapps/monitorix
sudo ln -s %CATALINE_HOME/webapps/monitorix /var/www/monitorix
mkdir -p %CATALINE_HOME/webapps/monitorix/WEB-INF/cgi
ln -s /usr/lib/cgi-bin/monitorix.cgi %CATALINE_HOME/webapps/monitorix/WEB-INF/cgi/monitorix.cgi

Если где-то ошибся в командах, исправьте, пожалуйста. Я все делал в mc.

Настроим web.xml в новом приложении

Теперь настроим web.xml в своем виртуальном приложении, добавив в него BASIC авторизацию для стандартной в томкате роли manager. И самое основное - именно для этого приложения активируем cgi функционал.

vi %CATALINE_HOME/webapps/monitorix/WEB-INF/web-xml
#insert following 

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app id="WebApp_ID" version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">

  <!-- Define where to get tomcat users -->
 <resource-env-ref>
  <resource-env-ref-name>users</resource-env-ref-name>
  <resource-env-ref-type>org.apache.catalina.UserDatabase</resource-env-ref-type>
 </resource-env-ref>

 <!-- Define secure url-mappings and mapped security role -->
 <security-constraint>
  <web-resource-collection>
   <web-resource-name>Monitorix</web-resource-name>
   <url-pattern>*.html</url-pattern>
   <url-pattern>*.cgi</url-pattern>
   <url-pattern>*.png</url-pattern>
  </web-resource-collection>
  <auth-constraint>
   <role-name>manager</role-name>
  </auth-constraint>
 </security-constraint>

 <!-- Define BASIC auth for application -->
 <login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>Monitorix Application</realm-name>
 </login-config>

 <!-- Finally define a role on which auth will be based -->
 <security-role>
  <role-name>manager</role-name>
 </security-role>

 <!-- Mandatory parameters for app name -->
 <display-name>Monitorix</display-name>
 <description>Monitor server env</description>
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
 </welcome-file-list>

 <!-- Setup cgi servlet exactly for this app -->
 <servlet>
   <servlet-name>cgi</servlet-name>
   <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
   <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
   </init-param>
   <init-param>
    <param-name>cgiPathPrefix</param-name>
    <param-value>WEB-INF/cgi</param-value>
   </init-param>
   <load-on-startup>5</load-on-startup>
 </servlet> 
 
 <!-- Setup cgi url mapping exactly for this app -->
 <servlet-mapping>
   <servlet-name>cgi</servlet-name>
   <url-pattern>/cgi-bin/*</url-pattern>
 </servlet-mapping>
</web-app>

:wq

Не забудем активировать роль manager в %CATALINA_HOME/conf/tomcat-users.xml, если ее там еще нету:

 <role rolename="manager" />
 <user roles="manager" username="manager" password="secret" />

Настроим привилегированный контекст для разрешения запуска cgi

Разрешим запуск cgi скриптов только для приложения monitorix. Для этого нужно создать в приложении директорию META-INF и разместить в ней файл context.xml c настройками привилегий контекста.

mkdir %CATALINA_HOME/webapps/monitorix/META-INF
vi %CATALINA_HOME/webapps/monitorix/META-INF/context.xml

Содержимое:

<Context reloadable="true" privileged="true" path="monitorix">
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>  

Фуф, с магией вроде всё!

Конфигурация monitorix

Документацию по параметрам конфигурации можно найти здесь Configuration options

Совсем немного подправим файл /etc/monitorix.conf. В нем буквально нужно будет указать имя хоста - $HOSTNAME, загловок для странички с графиками - $TITLE, подправить параметр $MEMORY с указанием количества памяти в мегабайтах. К примеру, у меня $MEMORY = “3903”

Если вы хотите получать графики по температурам от lm-sensors - установите занчение $ENABLE_LMTEMP в Y, подправьте значения для $SENSORS_LIST и $HDDTEMP_LIST, но тут уже см документацию по параметрам самостоятельно.

Дальше я отключил отправку мыла по крону “в случае чего” - $ENABLE_CROND_MAIL = “N” и убрал некоторые порты из прослушивания. Чтобы убрать порт из мониторинга, из переменной просто убирается знак “=” и значение, получается что-то вроде такого

our $PORT03 = "80";
our $PORT03_NAME = "HTTP";
our $PORT04;
our $PORT04_NAME;

То есть 80й слушаем, а то, что было на PORT4 - отключаем от мониторинга. Неудобно то, что на графиках отчетов эти порты будут все равно, но информации и названия порта по ним не будет. Лучше бы уж полностью убрали из отчетов несканируемые порты.

После сборки обработать напильником

Откроем файл /usr/bin/monitorix.pl и в 771й строке заменим путь к cgi от корня на относительный - с точкой:

Было:

<form action="/cgi-bin/monitorix.cgi" method="get">

Сделаем:

<form action="./cgi-bin/monitorix.cgi" method="get">

Тут дело в том, что tomcat воспринимает лидирующий слеш в ссылках, как путь к корню домена, точнее, к root context-у. Получается, что ссылка будет вести не на %HOSTNAME/monitorix/cgi-bin/ .... а просто на %HOSTNAME/cgi-bin . Это мы и исправили.

Enjoy

После правки конфига перегружаем сам демон мониторинга

sudo /etc/init.d/monitorix restart

Перегружаем tomcat штатными средствами (когда вам бизнес позволяет это делать? В три ночи? Ну, так встаньте в три ночи и перегрузите ;)) и наслаждаемся.

http://%HOSTNAME/monitorix

Ярлыки:


Читать дальше...

17 Декабрь 2009

mc unzip uzip не раскрывает war jar архивы

Обнаружил вдруг, что в ubuntu 9.10 mc (midnight commander) не открывает war, jar и другие zip архивы. В ходе копаний также нашел, что утилиты uzip в пакетах больше нет, есть только unzip.
Покопал в интернете и вот что нашел:

Источник: http://kozelka.net/blog/mc-unzip-problem-on-ubuntu-karmic

Проблема реашается выполнением команды (которую автор написал для "truly lazy people", то есть для нас)

sudo sed '/op_has_zipinfo/{s:0:1:}' /usr/share/mc/extfs/uzip >x && sudo chmod 755 x && sudo mv x /usr/share/mc/extfs/uzip
Спасибо автору за простое решение.

Ярлыки:


Читать дальше...

04 Ноябрь 2009

Добавление нескольких фильмов в vlc playlist через кастомную команду nautilus

Обычно ведь было как? Я скачиваю несколько новых серий любимого сериальчика, открываю vlc, открываю плейлист, добавляю туда эти несколько последних серий, включаю на проигрывание первую из них.

Сегодня мне это все надоело, и я задался целью создавать плейлист для vlc прямо из наутилуса, путем выбора нескольких файлов мышью и использования кастомной команды для открытия файла по его mime-type.

В свое время я написал заметку о добавлении своей команды в контекстное меню наутилуса, это тоже была тема о vlc. Эту команду я ищу в содержимом файлов в домашней директории, и нахожу ее в файле

~/.local/share/applications/userapp-vlc-KFUHSU.desktop
Содержимое файла:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=vlc --aout alsa --alsadev surround51 %f
Name=vlc 5.1 sound
Comment=Особое определение для vlc
NoDisplay=true
Чудно, теперь я знаю, как создать новую кастомную команду. Но надо узнать, откуда задается ее выполнение. Ищем в содержимом файлов имя предыдущего найденного файла. Подстрока userapp-vlc-KFUHSU.desktop, как оказалось, обитает в файле
~/.local/share/applications/mimeapps.list
Содержимое:
[Added Associations]
application/x-ms-dos-executable=wine.desktop;file-roller.desktop;gedit.desktop;
video/x-matroska=vlc.desktop;totem.desktop;
video/x-msvideo=userapp-vlc-KFUHSU.desktop;totem.desktop;vlc.desktop;
text/vnd.sun.j2me.app-descriptor=userapp-gedit-7VD7ZU.desktop;
Делаю вывод, что для новой команды нужен еще один файл. Копирую userapp-vlc-KFUHSU.desktop в userapp-vlc-playlist.desktop и открываю его на редактирование. Подменяю строки
Exec=vlc --aout alsa --alsadev surround51 %f
Name=vlc 5.1 sound
на
Exec=vlc %F
Name=vlc play playlist
и сохраняю. Имя нового файла прописываю в mimeapps.list
video/x-msvideo=userapp-vlc-KFUHSU.desktop;userapp-vlc-playlist.desktop;totem.desktop;vlc.desktop;
То есть, по моему разумению, когда в окне наутилуса я буду выбирать контекстное меню на video/x-msvideo файлах, одной из кастомных команд должна быть моя новая команда.

В общем-то, и все. Щелкаю на пункте с новой командой, открывается vlc и сразу запускает первый в списке фильм. Проверяю playlist список - все на местах.

Доволен :)

Использован материал о допустимых символах подстановок в кастомные команды: http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s06.html

Ярлыки:


Читать дальше...

Ubuntu 9.10, обзор live cd

Скачал себе сегодня, записал и посмотрел.

Основной интерес был в сихронизхации заметок tomboy через централизованный веб-сервис ubuntu one, жду эту фичу с полгода, наверное. Собственно, сегодня работал дома и опять полез в tomboy за намётками по работе, а там - болт. Вспомнил о своих ожиданиях синхронизации и полез смотреть ubuntu 9.10 live cd.

Заметки протестил первым же делом. Зарегистрировался на ubuntu one быстро, в интернете не искал, меня туда отправил сам tomboy при попытке синхронизироваться через web. Впечатления: сайт работает медленно, редактирование заметок через браузер подглючивает; с файлшарингом не все ясно, но файлики на ubuntu one storage забрасывать можно, /etc/passwd по крайней мере улетел; сама синхронизация заметок через клиент (tomboy) работает быстро, заметки ходят в обе стороны, но не очень понятно, по какому принципу они мержатся (merge), и мержатся ли вообще... Надо тестить на живом контенте. Вот пару скриншотиков:

На самом сайте ubuntu one - смешной лозунг. Back up your life... говорят. Ага, щас забекаплю, как же!

Дальше я просто посмотрел на всякие иконочки, значки, менюшки и вообще. Понравилось. Тема иконок очень симпатичная. Не смог скрыть удовольствия. Пока лазил по меню, нашел в System - Administration некую Disk Utility. О, боги! Что это? Это же smartinfo по жестким дискам в gtk окошках! Был приятно удивлен. Вот скрин.

Следующим приятным номером был мой любимый rb, какой то более симпатичный, что-ли, стал. В Totem добавили занятную фичу - делать серию скриншотов из проигрываемого фильма. Правда, в буржуйском формате jpeg, но это мы переживем. Жалко еще, что этой же фичи нет в командной строке к totеm-у, я бы пользовался.

Еще мне показался очень симпатичным ubuntu software center. Это такая штука вместо старого Find / Install в меню Applications. Выглядит взрослее и серьезнее старого. Картинка, приличное описание, ссылка на сайт. Ну и старый добрый synaptic никуда не дели, за что, конечно, спасибо.

Еще в окне наутилуса, в домашней директории, есть такая папочка - Ubuntu One file sharing. А в трее на панельке справа есть апплетик, который теоретически должен помогать залогиниться в облако ubuntu one и расшарить то самое из дом.директории. Но никто никуда не коннектится и ничего не шарит. Или просто лыжи не едут. Я так и не понял. А есть такие, кто понял?

Последнее: мессенджер empathy не понравился. И говорить о нем не стану. Буду и дальше юзать pidgin. К тому же я еще не решил, стоит ли обновлять систему, опять гемороится, все переустанавливать и перенастраивать, или попытать сомнительного счастья апгрейда вживую, или вообще ну его нафиг. Апгрейд вживую это же как серпом по ... горлу. А как определюсь, скажу.

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

.

Ярлыки:


Читать дальше...

17 Октябрь 2009

Eclipse property file charset enconding

В Eclipse IDE есть одна заморочка: дефолтная кодировка файлов по типам (расширениям) и кодировка файлов проекта. Проблема кодировки файлов проекта решается просто (через свойства проекта, первое же окно "Resource"), желательно только указать нужную кодировку еще на этапе создания проекта. А вот настройку кодировок, заданных файлам в зависимости от типа, найти не легко. По крайней мере я нашел совсем не сразу. А проблема показала себя, когда я стал делать lang_xx.properties файлы для локализации своего проекта. Созранить *.properties файл с русским/украинским текстом внутри было нельзя. Eclipse сообщал: "Внутри файла есть недопустимые символы, сохранять не буду". Даже учитывая то, что файлы я писал в линуксе в кодировке UTF-8. Порывшись в настройках (window - preferences) я нашел одно интересное окно с настройками content-type-ов. И вот там, как оказалось, нужно указать дефолтную кодировку файлам конкретного типа. Указав UTF-8 вместо исходного ISO-8859-1 я решил свою беду. Файл с русским текстом сохранился успешно. Надесюь, сохранил кому-то час времени.

Ярлыки:


Читать дальше...

06 Октябрь 2009

кастомный автостарт скрипт в /etc/init.d на примере apache tomcat

Речь пойдет о создании кастомного автостартующего скрипта в /etc/init.d/ для запуска/останова/перезапуска apache-tomcat, установленого в пользовательскую директорию и с необходимостью запускать именно от указанного пользователя. Скрипт можно будет дергать, как сервис, аля

sudo /etc/init.d/apache-tomcate start|stop|restart

Постановка задачи. По пути /home/libc6/tomact6 живет apache tomcat. Веб-приложение, установленное в этот tomcat, должно доступаться к своим данным в директории /home/libc6 от имени пользователя libc6. Такой путь выбирается из-за предрассудка: работать в системе под рутом, не выполняя административных задач - плохо. Приложение будет работать с файловой системой, создавать и удалять данные, доступаться к БД, но только не из-под рута. Задача два: tomcat должен уметь стартовать сам при перезапуске системы.

Шаг 1.

vim tomcat.sh
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    
# Required-Stop:
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: apache tomcat autostart service
# Description: apache tomcat autostart service
### END INIT INFO
case "$1" in
    start)
         echo -n "Starting Apache Catalina Tomcat 6 ... \n"
         su - libc6 -c "/home/libc6/tomcat6/bin/startup.sh; logout"
         echo -n "Starting Tomcat done\n"
         ;;
    stop)
         echo -n "Stopping Apache Catalina Tomcat 6 ... \n" 
         su - libc -c "/home/libc6/tomcat6/bin/shutdown.sh; logout"
         echo "Stopping Tomcat done\n"
         ;;
    restart)
         echo -n "Stopping Apache Catalina Tomcat 6 ... \n" 
         su - libc6 -c "/home/libc6/tomcat6/bin/shutdown.sh; logout"
         echo -n "Starting again Apache Catalina Tomcat 6 ... \n"
         su - libc6 -c "/home/libc6/tomcat6/bin/startup.sh; logout"
         echo -n "Starting Tomcat done\n"
         ;;
esac;   
Не забываем про ### BEGIN INIT INFO аннотации, это нужно в каждом init.d скрипте (но вообще и без них работает). Так же не забываем про ;; в конце case итерации.
chmod +x tomcat.sh
sudo cp  tomcat.sh /etc/init.d
sudo update-rc.d tomcat.sh start 51 S .
Не забываем про точку в конце команды. Точка нужна.

Отныне управлять tomcat-ом можно через псевдосистемный сервис, допустим:
sudo /etc/init.d/tomcat.sh restart
Убеждаемся, что tomcat работает от имени того пользователя, который нам нужен.
ps aux | grep tomcat

Теперь пояснения.

sudo - libc6
- так как сервис работает от рута, нужно, чтобы команда выполнялась от имени пользователя libc6. Дополнительный минус перед именем пользователя означает "логинться юзером и поднимать все его системные переменные". Если написать просто sudo libc6 - могут не подняться переменные окружения, установленные именно в среде пользователя. Иметь в виду.
sudo -с "command"
- выполняет команду в кавычках. В конце команды указан logout, иначе процесс остается в окружении пользователя, куда он (процесс) зашел при указании sudo - user.

Ну вот собственно и все. Можно ребутнуть машину, проверить результат работы.

Ярлыки:


Читать дальше...

Быстрая установка cvs в ubuntu 9.04

Исходно cvs устанавливается по официальной убунтовской инструкции CVS Server. Два дополнения:
- вместо /usr/lib/cvs - пути к репозиторию - использовать /srv/cvs - дефолтный путь хранилища в нынешней версии cvs.
- после установки и запуска через xinetd нужно создать в системе юзеров (самый простой путь) и добавить их в группу src через простое редактирование /etc/group (src:x:40:user1,user2,user3). Юзеры по-простому добавляются командой sudo useradd -m -U user1, где -m создает юзеру домашнюю директорию, а -U создает одноименную группу user1.

После этого можно смело брать Eclipse и коннектится к репозиторию с авторизацией ssh2pserver простая pserver авторизация не годится в силу передачи пассворда по сети простым текстом. Дальнейшая настройка cvs и авторизаций делается позже уже в самом cvs

Ярлыки:


Читать дальше...