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

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

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

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

Свежий 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. Сохранить результат.

Как отменить прилипание указателя мыши к краю экрана

Так получилось, что не дождавшись апреля, когда должна выйти очередная версия Ubuntu 14.04 LTS, обновил свою старую 12.04 LTS до актуальной 13.10 — и тут же напоролся на кучу глюков в старом гноме, куда пошёл по привычке. Решил всё-таки попробовать Unity — кое-что (например, запуск приложений по клавише Win) мне там показался удобным.

В Unity, запущенной на двух мониторах, обнаружились мелочи, мешавшие радоваться и продуктивно работать: указатель мыши прилипал к краям монитора — особенно это раздражало при переходе между мониторами. Ну и выскакивающая при этом залипании панель с иконками тоже не радовала.

Погуглил — нашёл метод: достаточно в настройке дисплеев отключить прилипание и задать тот, монитор, на котором панель всё-таки нужна.

Displays

Параметры Launcher placement и Sticky edges как раз и позволяют это настроить. По умолчанию панель отображается на обоих мониторах и прилипание включено.

Свежий Frescobaldi под убунтой

Нотный редактор Frescobaldi по умолчанию в Ubuntu 12.04 LTS не очень свеж — сейчас предлагается позапрошлогодняя версия 2.0.0, где нет, например, нумерации строк исходного кода. В более свежих версиях её наконец-то сделали. Чуть более свежую версию Frescobaldi — майскую предпоследнюю 2.0.10 — можно поставить так (точнее, обновить, когда уже установлена старая):

sudo add-apt-repository ppa:ryanakca/frescobaldi
sudo apt-get update
sudo apt-get upgrade

Попутно обновятся и другие пакеты, если найдётся, что обновлять. Если надо именно поставить либо обновить только Frescobaldi — действуем как обычно: вместо последней команды пишем

sudo apt-get install frescobaldi