Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Sunday, September 4, 2011

Yaourt: оболочка к pacman с доступом к AUR

AUR - Archlinux User Repository


У Arch Linux есть репозиторий с пакетами, которые поставляют сами пользователи, http://aur.archlinux.org, там часто можно найти всякие штучки, которые по тем или иным причинам не попадают в основной репозиторий дистрибутива (например, та же самая клавиатурная раскладка дворака для программистов или самый-самый-самый свежий firefox). Про сам репозиторий есть большая страница на wiki .

Для установки какого-то пакета из дистрибутива (или локально) используется pacman, однако пользовательские дистрибутивы в pacman отключены, а пакетов там навалом. По сути, пользовательский репозиторий - это набор пакетов с правилами их сборки, описываемых в специальных файлах с названием PKGBUILD, содержимое которого обычно указывает, что откуда скачать и что с этим сделать (например, скачать исходники, скачать патч, наложить патч, отредактировать настройки так, чтобы это работало в арче, и тому подобное). Например, это может выглядеть вот так:



1 # Author: Julien MISCHKOWITZ <wain@archlinux.fr>
2 # Author: tuxce <tuxce.net@gmail.com>
3
4 pkgname=yaourt
5 pkgver=0.10.1
6 pkgrel=2
7 pkgdesc="A pacman wrapper with extended features and AUR support"
8 arch=('any')
9 url="http://www.archlinux.fr/yaourt-en/"
10 license=(GPL)
11 depends=('diffutils' 'pacman>=3.5' 'package-query>=0.7' 'gettext')
12 optdepends=('aurvote: vote for favorite packages from AUR for inclusion in [community]'
13 'customizepkg: automatically modify PKGBUILD during install/upgrade'
14 'rsync: retrieve PKGBUILD from official repositories'
15 'pacman-color: fully colorized output')
16 backup=('etc/yaourtrc')
17 source=(http://mir.archlinux.fr/~tuxce/releases/$pkgname/$pkgname-$pkgver.tar.gz)
18
19 build() {
20 cd $srcdir/$pkgname-$pkgver/
21 make PREFIX=/usr sysconfdir=/etc localstatedir=/var
22 }
23
24 package() {
25 cd $srcdir/$pkgname-$pkgver/
26 make PREFIX=/usr sysconfdir=/etc localstatedir=/var DESTDIR=$pkgdir install
27 }
28
29 # vim:set ts=2 sw=2 et:
30
31
32 md5sums=('b7c471bc0e763e587a965616540b1a7d')


В целом, если внимательно посмотреть, никакой чёрной магии там нет. Пример взят из утилиты yaourt (). На странице утилиты в AUR описано, какие файлы входят в tarball с PKGBUILDом, ну и можно поругаться со всеми желающими в комментариях (сначала надо зарегестрироваться).
Чтобы установить пакет из пользовательского дистрибутива, надо скачать tarball, при желании посмотреть/поправить содержимое PKGBUILD и сделать пакет:


$ tar xzvf yaourt.tar.gz
yaourt/
yaourt/PKGBUILD
$ cd ./yaourt
$ makepkg


Далее можно лицезреть всяческие радостные сообщения из серии "я скачал пакет оттуда-то, проверил чексумму, вроде совпадает, проверил зависимости, всё на месте, зажигай!". Если зависимости не будут удовлетворены, следует найти нужный пакет в AUR и поставить сначала его (список пакетов-зависимостей можно посмотреть на странице пакета или в самом PKGBUILD). После решения всех этих квестов, на выходе появится фраза в стиле "Finished making: yaourt 0.10.1-2....". После этого в папке появится пакет, который уже можно устанавливать через pacman:

$ ls
pkg PKGBUILD src yaourt-0.10.1-2-any.pkg.tar.xz yaourt-0.10.1.tar.gz
$ pacman -U yaourt-0.10.1-2-any.pkg.tar.xz


YAOURT как панацея от рутины


Понятно, что пять-шесть раз выполнив такую процедуру, слегка устаёшь скачивать пакетики и их распаковывать. Посему на помощь приходят всякие утилиты-автоматизаторы этих манипуляций, одна из наиболее популярных - yaourt. Его надо будет установить именно так, "муторно", скачав все зависимости (если они ещё не удовлетворены) и вручную запустив makepkg и прочее. Зато потом это окупается и остальные пакеты можно ставить прямо из командной строки. Преимущество yaourt в том, что он работает ну совсем как pacman, даже многие ключи те же (поиск -Ss, апгрейд всех пакетов -Syu, к тому же позволяющий выбрать, какие пакеты ставить в массовой закачке, а какие нет). Ну и, конечно, есть всякие плюшечки типа раскраски вывода и интерактивного поиска. Типичный вывод yaourt:

$ yaourt -Ss notion
community/notion 20110823-1 [1.10 M] [installed]
Tabbed tiling, window manager. Fork of Ion3
aur/libtu-git 20101217-1 (2)
Utility library for notion
aur/notion-styles-thinviolet 0.1-1 (0)
modified Notion style without window border
aur/notion-xft 20110827-1 (0)
Tabbed tiling, window manager. Fork of Ion3, with XFT patch


Сначала выводятся "оффициальные репозитории", на которые настроен pacman, а потом уже aur. При установке будут сначала показаны последние комментарии, а потом будет предложено отредактировать PKGBUILD и, если есть, правила установки. Зависимости будут ставиться автоматически (если они есть только в AUR, дадут возможность поправить PKGBUILD и им). Помимо этого, к нему есть куча приятных штучек, например, тулза aurvote, позволяющая проголосовать за включение пакета в основной репозиторий "не отходя от кассы".

Конфигурационный файл yaourt находится в /etc/yaourtrc, и представляет из себя типичный формат "все значения по умолчанию прописаны как есть, но закомментированы". Вот его стандартное содержание:


1 # yaourtrc - Configuration for yaourt
2 #
3 # See yaourtrc(5) for more information
4 #
5 #
6
7 # ABS_REPO list repositories available on archlinux rsync server
8 ABS_REPO=(testing core extra community-testing community gnome-unstable kde-unstable)
9
10 # General
11 #AUTOSAVEBACKUPFILE=0
12 #DEVELBUILDDIR="/var/abs/local/yaourtbuild"
13 #DEVEL=0
14 #EDITOR="$EDITOR"
15 #FORCEENGLISH=0
16 #FORCE=0
17 #TMPDIR="/tmp"
18 #SUDONOVERIF=0 # Avoid multiple sudo checks when timestamp_timeout=0
19
20 # AUR
21 #AURCOMMENT=5
22 #AURDEVELONLY=0
23 #AURSEARCH=1
24 #AURUPGRADE=0
25 #AURVOTE=1
26
27 # Build
28 #EXPORT=0 # Export to 1: EXPORTDIR or PKGDEST
29 # 2: pacman cache (as root)
30 #EXPORTSRC=0 # Need EXPORT>0 to be used
31 #EXPORTDIR="" # If empty, use makepkg's connfiguration (see makepkg.conf)
32
33 # Prompt
34 #NOCONFIRM=0
35 #UP_NOCONFIRM=0 # No prompt while build upgrades (including -Sbu)
36 #BUILD_NOCONFIRM=0 # Only prompt for editing files
37 #EDITFILES=1
38 #NOENTER=1
39
40 # Output
41 #USECOLOR=1
42 #DETAILUPGRADE=1
43 #SHOWORPHANS=1
44 #TERMINALTITLE=1
45
46 # Command
47 #PACMAN="pacman"
48 #DIFFEDITCMD="vimdiff"


К полезным параметрам я бы отнёс TMPDIR - можно задать папку для временных файлов и директорий, FORCEENGLISH - обязательное использование стандартной англоязычно локали и AURCOMMENT, указывающий число комментариев для отображения.

Подводя итоги, yaourt очень сильно облегчает использование AUR (кстати, название так и расшифровывается: Yet AnOther User Repository Tool), при этом сохраняя общий дух простоты использования KISS и позволяющий плавно использовать его вместо pacman.

Wednesday, August 3, 2011

bash history: args

Я постоянно забываю, как работают внутренние переменные для работы с историей баша. Вот на днях я потянул руку и тепер на ней на неделю гипс, поэтому всякие мелкие фишечки сокращающие лишние клавиатурные комбинации особенно актуальны. Кстати, ионовские биндинги тоже поменялись, но пока непонятно, как они покажут себя в бою, т.к. пока что идёт "обкатка".

[igor@nastya 10:38:50 ~]
$ gqview /tmp/screenshot-2011-08-03-10\:06.png
[igor@nastya 10:49:13 ~]
$ ^gqview^mv Dropbox/Public/music.png
mv Dropbox/Public/music.png /tmp/screenshot-2011-08-03-10\:06.png
mv: cannot stat `Dropbox/Public/music.png': No such file or directory
[igor@nastya 11:19:44 ~]
$ mv !!:2 !!:1
mv /tmp/screenshot-2011-08-03-10\:06.png Dropbox/Public/music.png

(кстати, да - полчаса это я столько искал и читал гайд по башу %)

Во-первых, баш, как нормальная (читать "не-awk") утилита, нумерует аргументы с нуля. !! - предыдущая команда (sudo !! является, пожалуй, наиболее частым моим применением этой функции. !abracadabra - последняя команда, в которой был текст abracadabra.

Пользуясь случаем, йцукенг - редкостное говно, а dvorak-r почти так же охрененен, как programmer's dvorak

Saturday, February 13, 2010

dubuzzing


fuck yeah!

И на всякий случай unfollow и block, unfollow и block, unfollow и block.. (блиа, нельзя было сделать прямо в том окошке множественный выбор? И вообще зачем сразу добавлять всех-то?).

Ну и спрятать этот феерический ёбнутый логотип можно drag-n-drop'ом его в "More", чтобы не портил картинку.

btw, mutt rulez:

1 set sendmail="/usr/bin/msmtp -a cra"
2 set use_from=yes
3 set realname="Spaceship Monkey"
4 set from="mailmonkey-of-spaceship-monkey@mail.ru"
5 set envelope_from=yes
6
7 mailboxes ='[Gmail]/Label1' ='[Gmail]/Label2'
8
9 set imap_user="ACC@gmail.com"
10 set imap_pass="PASS"
11 unset imap_passive
12 set imap_keepalive=300
13
14 set smtp_url="smtps://ACC:PASS@smtp.gmail.com:465/"
15 set from="ACC@gmail.com"
16
17 set folder="imaps://ACC@imap.gmail.com:993"
18 set spoolfile="+INBOX"
19 set postponed="+[Gmail]/Drafts"
20 set message_cachedir=~/.mutt/cache/bodies
21 set certificate_file=~/.mutt/cache/certificates
21
22 set sort='threads'
23 set sort_aux='last-date-received'
24 set imap_check_subscribed
25
26 color indicator yellow default
27 color message white default
28 color normal white default
29 color quoted brightblue default
30 color signature green default
31 color underline green blue
32 color status white blue
33 color header yellow default "^from"
34 color header green default "^from:"
35 color header green default "^to:"
36 color header green default "^cc:"
37 color header green default "^date:"
38 color header yellow default "^newsgroups:"
39 color header yellow default "^reply-to:"
40 color header brightcyan default "^subject:"
41 color header red default "^x-spam-rule:"
42 color header yellow default "^x-mailer:"
43 color header yellow default "^message-id:"
44 color header yellow default "^Organization:"
45 color header yellow default "^Organisation:"
46 color header yellow default "^User-Agent:"
47 color header yellow default "^message-id: .*pine"
48 color header yellow default "^X-Fnord:"
49 color header red default "^X-WebTV-Stationery:"
50 color header yellow default "^X-Message-Flag:"
51 color header yellow default "^X-Spam-Status:"
52 color header yellow default "^X-SpamProbe:"
53 color header red default "^X-SpamProbe: SPAM"
54 color tree green default
55

Sunday, February 7, 2010

Urxvt links parsing

Когда меня наконец-то задолбало постоянно кликать третьей кнопкой мыши в тонкой адресной строке моего браузера, перед этим тщательно выделяя ссылки в mcabber, снабжённые вялыми описаниями моих друзей "ZOMG! INVISIBLE SANDWICH!", я решил посмотреть, что же можно с этим сделать. Оказалось практически как с метрономами и тюнерами фирмы KORG: батарейки входят в комплект, но с неожиданной стороны коробки.
Добавляем следующие строчки в наш .Xresources:
1 URxvt*perl-ext-common: default,matcher
2 URxvt*keysym.C-g: perl:matcher
3 URxvt*urlLauncher: firefox
4 URxvt*colorUL: #86a2be

И по нажатию ctrl-g у нас будет открываться в firefox последний url-match.
Можно ещё мышкой кликать (по умолчанию - средняя кнопка, но можно настроить через URxvt*matcher.button). И вообще, в man 3 urxvtperl много чего любопытного написано, оказывается.

Tuesday, February 2, 2010

latex2html

I do think it's good. No matter, how hardly I study it, no matter how I take it apart..

Я настолько свыкся с техом, что мне уже непривычно набирать объёмные структурированные документы в чём-то другом. Однако, до сих пор встречаются люди, недолюбливающие pdf, но на вопрос "Хорошо, а если это будет html?" уверенно отвечающие "да не вопрос!"

Специально для таких есть вариант простой конвертации одного в другое, и этому perl-скрипту даже посвещена довольно куцая страница на википедии.

Пример вызова:
$ latex2html -show_section_numbers -t "Для Служебного Пользования" -noinfo -nonavigation -split 0 filename.tex


Параметры:
-noinfo уберёт раздел "Об этом документе..."
-split 0 не будет разбивать документ на кусочки
-t "BLABLABLA" заголовок страницы
-show_section_numbers показывать номера в разделах, номера берутся из filename.aux

Пример документа для данной штуки (крайне куц, тоже):
\documentclass[12pt,a4paper,oneside]{article}
\usepackage[russian]{babel}
\setcounter{secnumdepth}{2}
\setcounter{tocdepth}{2}

\begin{document}
\tableofcontents
\input{main-koi}

\end{document}


где main-koi содержит обычную теховскую стрктуру --- section, subsection, etc

И да, эта дура не очень любит не-английские тексты (и юникод, похоже, тоже), поэтому потом придётся вскрыть выходной файлик и прописать ручками в соответствующем meta-тэге content-type = text/css; charset = koi8-r, а то несчастные хомячки опять будут вопить о том, что "у тебя там кракозяблики"

А на дворе стояло начало второй декады двадцать первого века..

Saturday, September 12, 2009

Zenwalk 6.2: epic fail.



Всё, пришло время менять дистрибутив.
Я два с половиной года сижу на Zenwalk, недавно они выпустили следующую версию - 6.2. На моём ноутбуке сидит 6.0, я практически не пользуюсь иксовым софтом, поставляемым от дистрибутива (zenpanel, xfce, totem, geany). До недавнего времени всё работало, но я прозевал смену версии и не успел поставить какие-то пакеты из репозитория (эта политика закрытия старых репозиторий в основанных на версиях дистрибутивах меня безумно раздражает). Я понимаю, что если я опять скачаю инсталяционный диск, запишу его на болванку и поставлю систему "с нуля", то всё будет работать, а у меня в uname будет написано 6.2 вместо 6.0, но что-то внутри против такого решения.
Соответственно, после выполнения ритуальных netpkg update, слетели иксы, запустить которые быстро не удалось (как уже потом стало ясно, вопрос пакетного менеджера "upgrade whole system?" не подразумевает установку дополнительных пакетов, необходимых для нормального функционирования системы). В общем, третий раз подряд апдейт провалился. Кажется, нормально проапгрейдить систему у меня получилось только один раз - с Zenwal 4.0 до Zenwalk 4.2. Сурово поматерясь и потратя полчаса на поиски болванки в общаге, в итоге был закачан archlinux и после двух-трёх часов конфигурации, я снова влюбился :) Да, почти голая система после установки, зато нет ничего лишнего и всё предельно просто, без излишних упрощений. В общем, философия Arch (The Arch Way) мне кажется более сохранённой, чем философия Zenwalk ("unix way - one task, one program." - Сильно ломается в последнее время, в связи с уходом одно с небольшим скандалом из постоянных контрибьюторов товарища gapan и в след за ним уходом ещё некоторого количества достаточно влиятельных людей).
Короче, я доволен Archlinux, пока не всё настроил, но высокая степень прозрачности системы очевидна. Любимый оконный менеджер ion3 встал легко и непринуждённо, хотя с настройкой клавы и пришлось немножко повозиться.
А самое главное! Тут нет погони за версиями. Просто rolling releases, которые регулярно отображаются в виде "а вот исошник тут - дамп основных пакетов из репозитория. Бери, коль инета нет".
Так что, два с половиной года с Zenwalk было весело, но пора уже и честь знать. Судя по всему, с Archlinux повеселее будет :)

Wednesday, September 9, 2009

MIDI keyboard under linux (как подружить usb midi keyboard, fluidsynth и jack)

Вчера наконец-то заставил работать под линуксом миди-клавиатуру (честно говоря, не совсем наконец-то, всего второй раз пробовал)

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

Общая схема подключения оказалась такой:
0. втыкаем клаву
1. запускаем демон jackd с нужными параметрами (см. ниже)
2. стартуем fluidsynth указывая, что надо использовать jack и определённый soundfont (без него ничего не получится)
3. связываем средствами ALSA ввод с миди с выходом fluidsynth
4. связываем jack-ом выход fluidsynth с системным выходом.
5. ?????????
6. PROFIT

скриптец с раскраской, требует допиливания, чтобы заработало

Если говорить в терминах команд, то получаем следующее:
Запускаем джек:
jackd -dalsa -dhw:0,0 -r44100 -p512 -n4 &

Теперь запустим синтезатор, скормив ему звуковой шрифт:
fluidsynth -ajack /home/cra/Unison.SF2

Кстати, откроется шелл, в котором можно регулировать gain командой gain X, где X - число от 1 до 5. Остальные команды, в общем-то, не столь важны.

Далее, смотрим, какие порты у нас открыты по выводу команды
aconnect -o

И подключаем вывод клавиатуры к входу синтезатора: что-то в духе
aconnect 128:0 20:0

Ну а теперь надо подцепить выход синтезатора джэком к системному выводу звука:
jack_connect fluidsynth:left system:playback_1
jack_connect fluidsynth:right system:playback_2

Всё, из колонок должны доноситься звуки.

Wednesday, April 29, 2009

screen splitting

Есть очень удобная тулза, gnu screen, которую я использую в связке сервер - скрин - приложения.
По сути, это тот же концепт, что и виртуальные рабочие столы, только для консоли. Основное преимущество в том, что при разрыве коннекта мы можем подключиться потом к серверу и вернутся в тот же экран, где всё как раз на том же месте и осталось.
Собственно, это делается командой screen -dAR - в такой комбинации параметров, если скрина не было, создаётся новый, а если был, то он дополнительно ресайзится в окно, в котором запущен.

ctrl-A x - lock screen
ctrl-A h - hardcopy current view. Очень удобная команда, делает ascii-скриншот того, что видно
ctrl-A S - split screen - разбивает область со скринами на две, так, что можно в одной открыть tail -f какого-то лога, а в другой собственно проводить манипуляции с серваком.
ctrl-A :resize +-N - изменить размер текущего фрейма. Такой консольный ion3 получается :)

Friday, March 27, 2009

bash wrapper scripting - parameters

краткий ответ: $@

сам пост:
Допустим, есть какая-то уже налаженная схема запуска чего-либо, где всё настроено и работает, но хочется чуть-чуть изменить процесс, причём где-то в середине и без особого гемороя. Легко и просто - заменяем исполняемую команду на скриптег, который делает наши действия и потом вызывает саму настоящую программу. Бида, бида нас ждёт, если сделать всё в лоб!
[cra@server 10:37 ~]
$ cat /usr/bin/svnserve
#!/bin/bash

umask 002
/usr/bin/svnserve_real

даст, например, неудачный резальтат

[cra@zenwalk 10:38:53 /tmp]
$ svn checkout svn+ssh://servak_inet/repos/gui/trunk
You must specify exactly one of -d, -i, -t or -X.
Type '/usr/bin/svnserve_real --help' for usage.
svn: Connection closed unexpectedly


Решение тривиально, надо чуть-чуть изменить исходный скрипт
[cra@server 10:45 ~]
$ cat /usr/bin/svnserve
#!/bin/bash

umask 002
/usr/bin/svnserve_real $@


Вот так, а я и не знал, однако :)

Friday, March 6, 2009

Dream Theater в Москве 10 июня!



Кстати, скриншоты в линуксе делаются командой, указанной на скриншоте :) import -window root filename.png %)

UPD: that was awesome, но за такие деньги я на них больше не пойду.

Wednesday, March 4, 2009

Digitizers & awk helps a lot

Понадобилось перевести картинку в набор точек. Оказалось, существует целый набор подобных программ, назваются Дигитайзеры. Я использовал Engauge Digitzer: ( например, тут можно его скачать http://linux.softpedia.com/progDownload/Engauge-Digitizer-Download-1240.html )

Использование этой штуки крайне интуитивно, просто расставляются точки, устанавливаются опорные точки, и вуаля - на выходе csv готово. Засунуть в код можно простым и грубым способом через awk:
awk {print "points[" NR-1 "].set(" $1 "," $2 ");"} Armko.csv

Криво и через задницу, зато работает. А конкструктор можно переписать, когда уже будет отлажена функциональность

Tuesday, February 17, 2009

7z backup script

Скрипт для удобного бэкапирования

#!/bin/bash

ARCHNAME=server-shares
DIRS="/home/shares/work /home/shares/iso"
BACKUPDIR=/backups

NOW=`date +%d-%b`
/usr/bin/tar -cf - $DIRS | 7za a -si $BACKUPDIR/$ARCHNAME-$NOW.tar.7z


Потом кинуть куда-нибудь типа /etc/cron.monthly и радоваться :)

Tuesday, February 10, 2009

nut apc smartups sc1000 com-usb и Zenwalk 5.2

Фух, задолбался его настраивать. По горячим следам пишу этот пост. Воткнул упсу, читал, гуглил.. И так далее. Краткая выжимка:

Втыкаем упсу, делаем lsusb, читаем вывод:
$ lsusb
Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub


Если повезёт, то /dev/ttyUSB0 (или не 0, смотря что уже втыкали) появится в вашей системе. Мне повезло меньше, зато поплясал с бубном. Во-первых, эта сука почему-то хоть и писала в dmesg про /dev/ttyUSB0 цеплялась на /dev/tts/USB0, чем обильно попарила мне мозг старым добрым "Not a typewriter", ныне "inapropriate ioctl for device". Когда же успешный порт был найден (почти чудом, кстати), мой конфиг ups.conf выглядел так:
[apc]
driver = apcsmart
port = /dev/tts/USB0
cable = "940-0272"
desc = "APC Back-UPS 1000SC"


940-0272 это кабель com-usb, который я и подключал к девайсу.

upsd больше не поддерживает Access Control List и вместо этого надо правильно указывать директиву LISTEN в файле upsd.conf:
LISTEN 127.0.0.1 3493


Другие параметры можно не трогать, разве что я MAXCONN выставил в 24 (просто убрав 10 из числа 1024)
важная строка в upsmon.conf:
MONITOR apc@localhost 1 monuser password master


Кстати, убедитесь, что в /usr/local/ups/etc/* у вас нет world readable документов, на всякий случай. И world writable тем более, ибо SHUTDOWNCMD в upsmon.conf может кто-то заменить на что-то неприятное и тогда всё, плакал сервак.

Далее, мне понадобилось накатать примерно такой /etc/rc.d/rc.nut (я почему-то не нашёл ничего подобного в тех краях, куда встал nut).

#!/bin/sh
# Start/stop/restart the ups nut daemon:

# made by cra on 10 feb 2009

nut_start() {
# start driver
/usr/local/ups/bin/drvctl start

# now start daemon
/usr/local/sbin/upsd
}

nut_stop() {
kill `cat /var/state/ups/upsd.pid`
/usr/local/ups/bin/drvctl stop
}

nut_restart() {
if [ -r /var/state/ups/upsd.pid ]; then
echo "Stopping daemon and driver, this might take a while"
nut_stop
else
echo "There does not appear to be a parent instance of upsd running."
exit 1
fi
sleep 2
nut_start
}

case "$1" in
'start')
nut_start
;;
'stop')
nut_stop
;;
'restart')
nut_restart
;;
*)
echo "usage $0 start|stop|restart"
esac

Всё, можно делать service start ups и смотреть вывод /usr/local/ups/bin/upsc apc@localhost

После этого можно настроить ремотную тулзу для мониторинга состояния упски, или можно настроить нагиос. Проверяем работоспособность плагина: $ /usr/local/nagios/libexec/check_ups -H localhost -u apc
UPS OK - Status=Online Utility=218.0V Batt=100.0% Load=11.7% |voltage=218000mV;;;0 battery=100%;;;0;100 load=11%;;;0;100


Чтобы это было в нагиосе, надо добавить в /usr/local/nagios/etc/objects/commands.cfg следующий кусочек:
define command{
command_name check_ups
command_line $USER1$/check_ups $ARG1$
}


в конфиге нагиоса на нужном сервере тогда будет что-то в духе check_ups!-H localhost -u apc -w 80 -c 10
Либо, если использовать один ups, то можно все параметры прописать сразу в комманде (или хотя бы стандартный нагиосовский -H $HOSTNAMEADDRESS$) и в конфиге писать просто check_ups. Теперь, как сказал коллега "если придёт письмо о варнинге, бежим за ключом от серверной".

UPD: Оппа.. Проверка показала, что это не работает - хотя локально /usr/local/nagios/libexec/check_ups -H localhost -u apc даёт варнинг, когда шнурок отключён, нагиос считает, что всё хорошо :( Это я неправильно настроил кусок нагиоса.

Monday, February 9, 2009

bash minitip

Раньше, когда я переходил в какую-то директорию и мне надо было потом назад, я использовал cd $OLDPWD, но оказалось, что всё намного проще и можно использовать просто "cd -". Мелочь, а приятно

Friday, December 5, 2008

recordmydesktop

Понадобилось на днях удалённо объяснить, на какие кнопки и где тыкать, recordmydesktop - отличная консольная софтинка, для самых простых нужд запустить в консоли recordmydesktop, и.. мы в эфире! После нажать ctrl-C и после энкодинга получаем на выходе файл ovg. Чтобы не пугать народ, его можно сконверировать в ави:
mencoder -idx out.ogv -ovc lavc -nosound -o output.avi
обрезать потом ненужные кадры (выход из системы, етц) можно опять им же:

mencoder ftp_access_for_dummies.avi -oac copy -ovc copy -o ftp_access_fordummies_cut.avi -endpos 34

Tuesday, November 18, 2008

Arduino: установка софта

Наконец пришла ко мне Arduino Decima. Процедура установки под Zen 5.2 практически один в один совпадает с рекомендациями по установке слаки на официальном сервере , надо только учитывать, что софт может быть новее, чем в статье. Чтобы не заморачиваться с тем, какой gcc ставить, я взял тот, что стоял у меня в системе как основной. Чтобы узнать, какой же он стоит, можно посмотреть вывод gcc -v.

21M binutils-2.19.tar.gz
43M gcc-4.2.4.tar.bz2
1.1M avr-libc-1.6.4.tar.bz2
1.3M arduino-0012-linux.tgz

Я ставил так:

mkdir ~/arduino && cd ~/arduino
wget ftp://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.gz
tar xvfz binutils-2.19.tar.gz
cd binutils-2.19
PREFIX=$HOME/avr
export PREFIX
PATH=$PATH:$PREFIX/bin
export PATH
mkdir obj-avr && cd obj-avr
../configure --prefix=$PREFIX --target=avr --disable-nls
make
make install
cd ../..
wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.2.4/gcc-4.2.4.tar.bz2
tar xvfj gcc-4.2.4.tar.bz2
cd gcc-4.2.4
mkdir obj-avr && cd obj-avr
../configure --prefix=$PREFIX --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2
make && make install
cd ../..
wget http://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.6.4.tar.bz2
tar xvfj avr-libc-1.6.4.tar.bz2
cd avr-libc-1.6.4
./configure --prefix=$PREFIX --build=`./config.guess` --host=avr
make && make install

Подключив свою Decimila к ноуту, он мне приветливо поморгал светодиодом и загорелс индикатор PWR, а в /dev я увидел новое устройство: /dev/ttyUSB0

Теперь пора поставить собственно, саму IDE:
wget http://www.arduino.cc/files/arduino-0012-linux.tgz
tar xzvf arduino-0012-linux.tgz
cd arduino-0012-linux
./arduino

Появилось приветливое окошко, но в разделе Tools пункт Serial Port был затемнён :(
Посмотрев тот же гайд, я обнаружил, что это могу быть проблемы с разрешениями:
$ ls -l /dev/ttyUSB0
crw-rw---- 1 root tty 188, 0 2008-11-17 19:20 /dev/ttyUSB0

что, соответственно, приводит к трём вариантам решения этой проблемы - пустить себя в группу tty, поправить правила udev или запускать IDE от рута. Я выбрыл первое, это мне показалось наименее неприятным:
sudo vim /etc/udev/rules.d/40-general.rules
там находим строчку:
KERNEL=="ttyUSB[0-9]*", NAME="%k", GROUP="tty", MODE="0660", SYMLINK+="tts/USB%n", SYMLINK+="pilot%n"
и тут опять же - или менять группу, или менять пермишены. Я поменял права с 660 на 666.
После этого я перевоткнул устройство - и вуаля! У меня работает этот пункт меню :)