Архив рубрики: unix

И зрелищ!

Наконец-то разобрался, как в Pitivi растянуть выражения лиц бардам до нормальных пропорций и как прикрыть заглушкой те места, где изображение пропадало совсем. Собрал тестовую запись — концерт КСП «Моримоша» на открытии Лесной площадки XXXIX Ильменского фестиваля. Кому невтерпёж — можно смотреть прямо сейчас, со всеми глюками. Как дотянусь до файлов, что писались самими камерами — переделаю.

Настройки масштабирования в Pitivi

Видеозаписи трансляции с Лесной площадки XXXIX Ильменского фестиваля будут потихоньку выкладываться на video.mineralogy.ru/video/ilmenyfest/album/284

Закончу с этим годом — займусь прошлым.

Перловые модули вставали не туда

Только сейчас обнаружил интересную штуковину: если в убунте выполнять общесистемную установку перловых модулей командой

sudo cpan Имя::Модуля

то модуль встаёт куда надо — в моём случае это /usr/local/share/perl/5.18.2 (а мануалы ложатся в /usr/local/man/man3), но если сначала взять себе рутовую консоль командой

sudo bash

и из такой консоли запускать cpan — модули встанут в ~/perl5/lib/perl5, чего я не ожидал.

P. S. Про sudo apt-get install libимя-модуля-perl я в курсе.

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

Как известно, каждая свежая версия Ubuntu не только приносит что-то новое, но и обязательно ломает что-то, спокойно работавшее раньше. Вот сейчас, например, в процессе настройки ноутбука жены вместо снова сдохшего своего, я обнаружил, что в старом гноме (gnome-fallback) пропала возможность менять некоторые клавиатурные команды через System Settings. Точнее, возможность задавать нужные клавиатурные команды осталась, но оттуда пропали некоторые команды, которые мне нужны, например те, что позволяют выбрать нужный рабочий стол (у меня их шесть). Что странно — на рабочем компьютере, где стоит та же самая Ubuntu 14.04 LTS, такую проблему я не встречал.

Нашёл такой метод: указать нужные сочетания клавиш через dconf-editor, в разделе org.gnome.desktop.wm.keybindings. Попробовал — получилось.

Настройка клавиатурных команд через dconf-editor

Смотрим размер файла в бесконечном цикле

Для подсчёта количества байт, символов, слов и строк в юникосоподобных операционных системах предназначена программа wc. Иногда хочется запускать её, например, раз в секунду, чтоб следить за выполнением какого-нибудь долгого процесса.

Сделал по-быстрому скрипт, который просто вызывает wc и выводит его результат, пока пользователю не надоест и он не нажмёт Ctrl+C

#!/usr/bin/perl

print STDERR "Press ^C to exit\n";
my $cmd_line = 'wc ' . join ' ', @ARGV;
my $out;
while (1) {
    $out = `$cmd_line`;
    chomp $out;
    print "\cM$out";
    sleep 1;
}

Запустить можно, например, так:

wcloop -l some-big-file.txt

update/19.11.2014: Мне подсказали пару других, более изящных методов:

Командой watch:

watch -n 1 wc -l ФАЙЛ

Без watch, циклом на баше:

while true; do wc ФАЙЛ | tr '\n' '\r'; sleep 1; done

Свежий JOSM не любит шестую яву

С недавних пор JOSM перестал запускаться под шестой явой — для его работы нужна Java версии не ниже 7. Это не стало сюрпризом — в конце концов, об этом уж несколько месяцев как предупреждают. Сюрпризом стало другое: вместо того, чтобы просто тихо проигнорировать шестую яву, JOSM упорно пытается использовать её, если находит. И падает. С точки зрения обычного пользователя — молча и непонятно. С точки зрения вооружённого терминалом — нормально падает, не молча:

Using /usr/lib/jvm/java-6-openjdk-i386/bin/java to execute josm.
Exception in thread "main" java.lang.UnsupportedClassVersionError: JOSM : Unsupported major.minor version 51.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: JOSM. Program will exit.

Как выяснилось, в кода скрипта, запускающего JOSM, ничего не поменялось.

Надеюсь, скоро эту ошибку устранят. Ну а тот, кому не терпится, может подправить нужный файл (в Ubuntu это /usr/bin/josm) самостоятельно, убрав из него упоминания шестой явы:

--- josm.ORIG	2013-08-09 20:11:05.000000000 +0600
+++ josm	2014-06-05 12:28:03.797657191 +0600
@@ -11,9 +11,9 @@
 
 # If OpenJDK is only available headless, do not try it
 if dpkg --get-selections 'openjdk-*-jre' | grep install$ > /dev/null ; then
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-openjdk/bin/java /usr/lib/jvm/java-6-openjdk-$ARCH/bin/java /usr/lib/jvm/java-6-sun/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-openjdk/bin/java /usr/lib/jvm/java-7-openjdk-$ARCH/bin/java /usr/lib/jvm/java-7-oracle/bin/java"
 else
-	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/lib/jvm/java-6-sun/bin/java /usr/bin/java"
+	JAVA_CMDS="$JAVA_HOME/bin/java /usr/lib/jvm/java-7-oracle/bin/java /usr/bin/java"
 fi
 
 JAVA_OPTS="-Djosm.restart=true -Djava.net.useSystemProxies=true $JAVA_OPTS"

update/05.06.2014: defect #10099 JOSM tries to use Java 6 when installed

Subversion 1.8 в Ubuntu 13.10

Жизнь под Убунтой, где принято ставить программы уже готовыми, а не собирать их из исходников самому, как это практикуется в некоторых других юникосоподобных ОС, усиливает лень. Вот, например, вышла Subversion 1.8 (и сменила формат данных в рабочих копиях) — вроде, надо обновить, а фиг: в репозиториях хранилищах программ нет свежих версий — есть лишь 1.7.9.

На форуме askubuntu.com предлагают какой вариант:

sudo sh -c 'echo "# WANdisco Open Source Repo" >> /etc/apt/sources.list.d/WANdisco.list'
sudo sh -c 'echo "deb http://opensource.wandisco.com/ubuntu precise svn18" >> /etc/apt/sources.list.d/WANdisco.list'
wget -q http://opensource.wandisco.com/wandisco-debian.gpg -O- | sudo apt-key add -
sudo apt-get update

С последующим apt-get upgrade либо apt-get install subversion. Хоть рецепт содержит слово precise, что намекает на Ubuntu 12.04 LTS, он работает и в 13.10.

Как люди работают в Unity?

Около месяца назад обновил Ubuntu до 13.10, заодно и оконную среду обновил: вместо чистого GNOME 2 использую Unity.

Месяц тестирования показал, что при всей своей красивости и некоторых удобствах (например, глобальный поиск по клавише LWin), юнити по-прежнему остаётся весьма сырой средой с кучей недоделок. Может, я её не умею готовить? Меня, например, раздражают следющие моменты:

  • Переключение раскладки, которое нормально работало и в голой консоли, и в KDE, и в гноме, вытворяет фокусы: при нажатии Caps Lock (а я переключаю раскладку именно им) сначала меняется регистр символов, затем — раскладка, а потом регистр символов возвращается к исходному; подобное неспешное переключение может занимать целую секунду. Ну и светодиодный индикатор, обозначавший раньше раскладку, теперь не светит, и как его включить — неясно: графических средств для этого нет, а есть ли смысл править /etc/X11/xorg.conf (которого нет) — непонятно.
  • Окна иногда по непонятным причинам оказываются на другом рабочем столе. Бегать по всем шести рабочим столам в поисках сбежавшего окна не хочется.
  • Окно, разворачиваемое на полный экран, часто стремится сбежать на соседний монитор.
  • Индикаторы, которые сидят в углу (в моём случае на верхней панели) дублируются: видны на обоих мониторах.
  • Нет индикатора погоды.

Видимо, пора вернуться к обычному гному.

PDF Chain не всегда может склеить несколько файлов

Сравнительно недавно понадобилось найти способ вырезать отдельные страницы из PDF-файлов, не прибегая к платному Adobe Acrobat. Решение нашлось — PDF Toolkit (pdftk) — он может и резать PDF на кусочки, и склеивать их обратно. Программа кроссплатформенная, работает и под виндой, и в нормальных ОС. Пользователям юниксоподобных операционных систем доступен графический интерфейс к pdftk — PDF Chain.

PDF chain

В Ubuntu обе программы можно найти в Центре приложений по запросу pdftk.

Но не обошлось без ложки дёгтя: иногда при попытке склеить несколько PDF-файлов программа PDF Chain выдаёт ошибку ввода-вывода:

PDFTK returned error!

Input/Output Error
Error code: 256

Проблема автору известна и давно им исправлена —  ещё в октябре 2012 года выпущена версия 0.3.5, где ошибка устранена. Однако в Ubuntu 12.10 LTS всё ещё стоит старая версия 0.3.3. Нашёлся достаточно простой способ обхода этой проблемы, не требующий установки новой версии:

  1. Добавить ещё один PDF-файл (можно продублировать любой из уже́ добавленных).
  2. Переместить этот файл в конец списка.
  3. Снять выделение с чекбокса слева от файла.
  4. Сохранить результат.