Skip to main content

JAVA 7 на Debain Squeeze x86_64

Понадобилась мне JAVA 7й версии под дебианом, в репо, как известно (и то скоро выпилят) есть только 6.
Для начала — установим java6 —

apt-get install sun-java6-jdk

Затем скачаем бинарники 7й версии с сайта Oracle (текущая версия — 7u2) и распакуем их в папку ява-машины

wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-x64.tar.gz
tar zxvf jdk-7u2-linux-x64.tar.gz -C /usr/lib64/jvm/

После этого необходимо заставить систему использовать нужную нам версию JAVA, используем штатный update-altenatives:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_02/bin/java 1065
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_02/bin/javac 1065

1065 — это устанавливаемый бинарникам приоритет

Проверить успешность выставления приоритетов можно через параметр —config:

update-alternatives --config java
Есть 2 варианта для альтернативы java (предоставляет /usr/bin/java).
 
  Выбор   Путь                              Приор Состояние
------------------------------------------------------------
* 0            /usr/lib/jvm/jdk1.7.0_02/bin/java      1065      автоматический режим
  1            /usr/lib/jvm/java-6-sun/jre/bin/java   63        ручной режим
  2            /usr/lib/jvm/jdk1.7.0_02/bin/java      1065      ручной режим
 
Нажмите enter, чтобы сохранить текущий выбор[*], или введите выбранное число:

Нажимаем Enter, чтобы оставить «главным» /usr/lib/jvm/jdk1.7.0_02/bin/java
Проверим версию:

java -version
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)

Всё, можно использовать 🙂

Цвета в консоли Debain/Ubuntu

Захотелось цвета в консоли, хз зачем (: Раскрасим текущего пользователя — раскомментируем в файле ~/.bashrc строку:

force_color_prompt=yes

Выполняем:

export LS_OPTIONS='--color=auto'
eval "`dircolors`"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'

Для «сделать красиво» в root консоли — копируем полученный файл из профиля юзера с заменой в папку /root («местный» файл пустой) и выполняем от рута те же команды.

Marvell 88E8001 V.S. Debian x86_64

Как вы думаете, из-за чего может не работать сетевая карта под линуксом?
Имеем Debian 6.0.3 x84_64 и пожилой комп с двумя встроенными гигабитными сетевыми картами, одна на nForce, другая на Marvell 88E8001, первая пашет, вторая — нет:

#lspci

05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)

Видится, может получить iIPv6 по DHCP, IPv4 не получает и не работает в любом варианте.
Многочасовые поиски возможной причины выявили удивительные по своей оригинальности факты:
Debian i386 — работает
Debian amd64 с установленными на материнской плате 3Gb RAM — работает
Debian amd64 с 4Gb — не работает XD

Подозреваю, что ошибка в драйвере skge, используемым сетевой. Заставить ее работать с 4Gb так и не получилось.

Конвертируем файлы из ANSI в UTF8 рекурсивно

Понадобилось давеча конвертировать около 2000 файлов исходников на java из ANSI в UTF8, при этом дописать в начало каждого файла строку на русском для корректного определения этого самого UTF8 🙂

Получился следующий sh скриптик:

find . -iname "*.java" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;
for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done
for j in `(find . -name "*.java")`; do echo /*текст на русском*/ | cat - $j > $j.russ; done
for k in `(find . -name "*.russ")`; do mv $k ${k/.russ/}; done

Что и как происходит:

находим все файлы *.java, конвертируем их в UTF8 и записываем результат в *java.utf8

find . -iname "*.java" -exec sh -c 'iconv -f cp1252 -t utf-8 {} > {}.utf8' \;

переименовываем результат обратно в *.java с заменой оригиналов

for i in `(find . -name "*.utf8")`; do mv $i ${i/.utf8/}; done

записываем в начало нового файла строку и вставляем после нее содержимое оригинального файла, сохраняем как *.russ

for j in `(find . -name "*.java")`; do echo /*текст на русском*/ | cat - $j > $j.russ; done

переименовываем результат в *.java с заменой оригиналов

for k in `(find . -name "*.russ")`; do mv $k ${k/.russ/}; done

На работу скрипта уходит буквально пара секунд (: