logo

muhas.ru — это просто блог…

О linux, о используемых или просто понравившихся инструментах, вобщем обо всем что окружает мою аскетичную компьютерную жизнь и показалось достойным упоминания или заметки «на память»

ArchLinux vs Python3

python arch logoВ Arch Linux произошло забавное изменение - теперь /usr/bin/python указывает на python3, программы требующие python2 пересобраны с указанием на /usr/bin/python2 (который в свою очередь обновился до 2.7, т.е. последний крупный релиз во второй ветке)

Но народ не перестает возмущаться. А чему возмущаться если в репах всё работает? А AUR... пакеты в AUR потому там и лежат что не могут в репозитарий по тем или иным причинам попасть... Т.е. многие пакеты в AUR требуют обновления (fbless, который мейнтейню, я уже обновил)

Если кому-то сильно нужны питоньи пакеты из AUR неработающие с python3, то предлагаю пару решений проблемы.
  • Если в PKGBUILD используется python setup.py блаблабла, то просто замените на python2 setup.py блаблабла
  • Добавить export PYTHON=`which python2` в начале функции build()
  • Пройтись с помощью sed'а по нужным файлам заменяя путь к нужной версии питона
  • Использовать версию из реп вместо всяких git/bzr/hg/svn/etc из aur
  • Некоторый софт может не работать ни с python 2.7 ни c python3, тут уж либо ставить из aur python26 и править для запуска предыдущими методами, либо патчить софт для работы с 2.7 или 3
  • Ну и самый Ъ метод — пропатчить софтину для работы с python3, ведь рано или поздно это делать придется =)

А теперь немного мыслей по поводу перехода на python3 по-умолчанию...
Мне кажется что это вполне логичный путь, который рано или поздно должен будет произойти во всех дистрибутивах. Ведь нельзя же вечно сидеть на ветке 2.*
Возможно в ArchLinux это сделано преждевременно, но кто-то должен быть первым (хотя в Gentoo у некоторых пакетов есть use-флаги для python3) иначе это может затянуться на долго... хотя и так затянулось ведь версия 3.0 вышла уже почти два года назад...
Хорошо что перешли или плохо решать каждому, однако факт остается фактом — в ArchLinux теперь по-умолчанию третья версия питона, чему лично я рад.

P.S. Всё что из python использую я заработало без лишних телодвижений

CUT — Debian Rolling Release?

debian logoНе мог поделиться сей интересной новостью в блоге (в juick уже поделился, и маленько даже обсудили).

Разработчики Debian GNU/Linux активно обсуждают и готовят к реализации идею «более юзабельного, т.е. более вычищенного и стабильного» дистрибутива на базе Debian unstable/testing. Проект получил название Constantly Usable Testing (CUT).

Ожидается, что CUT станет компромиссом между стабильностью всей системы и актуальностью включенных в нее пакетов программного обеспечения. Вполне вероятно, что после его появления будет выходить и rolling release-редакция CUT.
(Новость с nixp.ru)

Планы по дистрибтиву уже опубликованы на cut.debian.net

Лично я не вижу смысла делать такой дистрибутив не rolling release... Надеюсь разработчики Debian считают так же.

ArchLinux: ускоряем работу pacman с помощью pacman-cage

arch logoНе так давно, из обсуждения на ЛОРе, узнал о том что помимо pacman-optimize, который просто немного оптимизирует расположение базы данных (туева хуча мелких файлов) с пакетами на диске, существует и другая утилита — «ускоритель» pacman-cage.

Что же делает pacman-cage?
Просто загоняет все файлы базы данных (/var/lib/pacman) в loop-fs. И всё!
Но этого более чем достаточно — скорость поиска по базе, да и вообще всех операций чтения записи в базу очень значительно ускоряются.

Устанавливаем из AUR пакет pacman-cage. После чего от рута запускаем pacman-cage что создаст файл /var/lib/pacman.db и примонтирует базу в каталог /var/lib/pacman (и сделает бэкап — я решил немного поэксперементировать и бэкап пригодился) и добавляем pacmandb в rc.conf в демоны — всё, теперь демон монтирует loop-файл при старте и отмонтирует при остановке. Так что вы даже не заметите что он работает...

Стоит учесть что файлы из /var/lib/pacman переносятся в loop-файл /var/lib/pacman.db, т.е. при его отмонтировании у вас не только удалятся информация о том что находится в репозиториях но и о том какие пакеты установлены у вас (вот тут бэкап и пригодился).

PS. Существует pacman-cage ижно с 2006 года — но я, к своему горю, о нём не знал. А знать это не помешает каждому арчеводу (и почему pacman-cage ещё не в репах?). Правда с такого «ускорителя» не было бы толку если бы pacman перевели на sqlite, а не использовали уйму текстовых файлов разбросанных по директориям (такая же «проблема» и у debian) — насколько я помню sqlite для pacman уже предлагали (и не просто предлагали, а присылали патч), но что-то не срослось...

PPS. На днях этот бложик перешагнул двухлетний рубеж (напрашиваюсь на поздравления).

Пишем сообщения в mcabber в своем редакторе

Помнится я писал про многострочные сообщения в mcabber, но пользователи GNU Screen могут вдвойне порадоваться — с появлением в mcabber плагинов появился и плагин для них(и не только, о чем ниже). Плагин позволяет открыть в новом окне screen'а редактор ($EDITOR или указанный вами редактор специально для mcabber).

Имя сему плагину extsay.
Пишем в mcabberrc волшебные строчки
set extsay_script_path = путь/к/скрипту/extsay
module load extsay
Не забываем подключить модуль работы mcabber с именованными каналами fifo, ибо работает плагин именно с его помощью.

Утягиваем волшебный скрипт extsay.sh из hg.

Именно от сего скрипта и зависит как у нас будет обрабатываться команда extsay, в том файле что вы вытяните из hg обработка завязана именно на GNU Screen, но тем кто его не использует сочувствую никто не запрещает отредактировать его под свои нужды — запускать vim в новом терминале или gedit. Мне же как счастливому пользователю screen'а сего делать не пришлось (хотя скрпит всё-равно поправил под себя — указал fifo и редактор)

Так же в плагине предусмотрено не только открытия отдельного окна в screen но и разбиение (split) на регионы(включается благодоря set extsay_split_win = 1). Т.е. пишем /extsay (или вешаем это на хоткей) и регион с mcabber делится на два — в вверхнем сам mcabber, в нижнем наш редактор — высота которого устанавливается опцией extsay_win_height(к примеру, set extsay_win_height = 10 в конфиге выставит высоту в 10 строк).
При изменении скрипта эти переменные можно так же использовать для своих нужд (скрипту передается три параметра, первый из которых jid), к примеру на каком теге/виртуально рабочем столе запускать редактор или ещё что-нибудь.

Сама же команда extsay это смесь say и say_to, т.е. /extsay [jid] (если jid не указан то используется текущий активный)

В общем плагин чудный во всех отношениях!

Пакеты для арчеводов i686 mcabber-module-fifo и mcabber-module-extsay (PKGBUILD'ы в AUR не выкладываю, уж извините) или в моей репозитарии для i686.


Список всех модулей mcabber тут.

Горячие клавиши в GNU Screen

Часто GNU Screen ругают за неудобную систему хоткеев в стиле emacs, т.е. за хоткеи с префиксом. Честно признаться, мне такие хоткеи наоборот ближе, но многих они раздражают. «GNU — это вам не хрен собачий» и посему screen дает возможность изменить не только горячие клавиши с префиксом, но и создать их без префикса. Иногда это удобно — к примеру, для смены региона проще воспользоваться чем-то схожим с привычным Alt-Tab или для выбора шела(окна) сочетанием вида Alt+цифра с номером окна.

Сразу оговорюсь, этот пост выбивается из тех что я обычно пишу — это скорее вопрос чем рассказ о использовании bindkey...

В screenrc у меня красуются строки

# выбор окон по Alt-цифра
bindkey "\0331" select 1
bindkey "\0332" select 2
bindkey "\0333" select 3
#  и таак далее
bindkey "\0330" select 0

# ^Q закрывает окно, ^T открывает новый  shell(окно)
bindkey "^Q" kill
bindkey "^T" screen

# удаляем текущий регион регион с помощь Ctrl-o
bindkey "^O" remove

# сплиты, т.е. создание регионов
bindkey "^V" split -v
bindkey "^S" split

# переход по регионам, ^\ по-кругу
bindkey "^\" focus 
Ctrl-Tab не осилил, получается только один tab который нужен уже внутри screen, но им перехватывается...

Плюс этих клавиш помимо того что они без префикса в том что в отличии от префиксных они работают в любой раскладке клавиатуры и регистра ввода. Т.е. новое окно в моем случае будет вызываться и по ^+t и по русским ^+Е и ^+е. По этой же причине не реккомендую ^+H ставить на хоткей, ибо это всё же аналог клавиши Backspase и в итоге стереть символ не получтся ибо screen перехватит клавишу для выполнения своего действия...

Так же можно назначать и клавиши F1-F12, к примеру, F7 — bindkey -k k7, F9 — bindkey -k k9, F11 — bindkey -k F1, F12 — bindkey -k F2.

Признаюсь чесно, не разобрался я с bindkey в screen, часть клавиш сообразил, а часть даже не представляю как делать (те же F10, ^+Tab, сочетания вида Alt+буква) ибо нужный раздел man'а меня не то что не просветил в этом плане, а ещё больше запутал(в отличии от man ratpoison, где именно это часть достаточно понятная и в использовании интитивно понятная). Если кто мне разъеснит как всё же bindkey использовать буду очень признателен.