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

Свежий 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