вівторок, 1 березня 2011 р.

Вот какой $PS1 я себе заделал

Недавно мне надоело мое обычное приглашение командной строки и я решил придумать что-то свое, интересное и дикое. После 10 минут размышлений и проектирования я набросал эскиз и написал приглашение. Вот что я использовал:
  1. Символы юникода для отрисовки линий (в текстовой консоли у меня смотрится, как ни странно, корректно)
  2. Переменные цвета, созданные из escape-последовательностей
  3. Специальные символы консоли:
    • \u — имя пользователя;
    • \H — название компьютера;
    • \w — текущая папка;
    • \n — перевод на новую строку
Соединив это воедино я получил вот такое прикольное приглашение для работы:



Для того, чтобы это заиметь и Вам, нужно определить переменную $PS1. Открываем в текстовом редакторе файл ~/.bashrc и вставляем туда следующий код:
# Определяем цвета: зеленый и бесцветный:
export GREEN='\e[1;32m' NC='\e[0m'
# Само приглашение прописывается тут (одна строка):
export PS1="╓── I'm $GREEN\u$NC on $GREEN\H$NC machine.\"$GREEN\w$NC\" is working directory.\n╙───────────────> "
Потом сохраните и перечитайте настройки командой:
[keed'0'@mandrivka ~]$ . ~/.bashrc
или
[keed'0'@mandrivka ~]$ source ~/.bashrc
и созерцайте крутую консоль настоящего хакера :) Тут целый полигон для идей и мыслей, так что если придумали что-то еще круче, обязательно (слышишь, обязательно) отпишись в комментах! ))


вівторок, 22 лютого 2011 р.

urpmi. Краткое руководство пользователя

Давным-давно, когда еще весь цивилизованный мир не знал про пакетные менеджеры, установка ПО в Linux была длительная и мучительная. Представьте себе, как только не матюкались пользователи, особенно не опытные, когда пытаешься ставить один пакет, но он этого не хочет, ибо сначала нужно поставить второй пакет. Ставишь второй — он требует в зависимостях третьего, третий четвертого и так далее. И каждый пакет нужно было искать вручную, часто в интернете, тогда еще ооооочень медленном. Десятки нерешенных зависимостей заставили разработчиков задуматься: «А не написать ли нам такую программу, которая сама решает что ставить, как и куда?». И в светлейших головах хороших людей родился первый пакетный менеджер. От человека требовалось всего лишь знать название нужного пакета, доступ к хранилищу пакетов (репозиторию) и права для самой установки. С тех пор основные принципы
не изменились, но сами они значительно обросли новыми функциями, невероятной мощью и гибкостью. На сегодня самые популярные это: yum, urpmi — ставят пакеты rpm; apt — ставят в основном deb-пакеты, но иногда к ней прикручивают rpm. Сегодня я хочу немного рассказать про менеджер urpmi, который используется в любимой мной Mandriva Linux. Команда rpm предоставляет нам очень большие возможности работы с пакетами, но самая большая проблема в том, что она сама не умеет ставить зависимости. Для решения этой проблемы в недрах компании Mandriva был разработан программный комплект urpmi, который работает поверх стандартной rpm как оболочка. В состав пакета входят несколько утилит для работы с пакетами и их источниками. Ниже мы подробно рассмотрим работу каждого составляющего.

Инсталляция пакетов — urpmi [имя_пакета].
Для установки пакета, как я уже говорил, нужно знать его название. Для примера попробуем поставить программу для создания меню DVD-дисков 2mandvd:
[root'0'@mandrivka keed]$ urpmi 2mandvd
Наступні пакунки буде встановлено для задоволення залежностей:
  Пакунок                       Версія       Випуск       Арх.
(носій «Contrib media»)
  2mandvd                       1.3.3        4mdv2010.1   i586
  dvdauthor                     0.6.18       1mdv2010.1   i586
  ffmpegthumbnailer             2.0.1        1mdv2010.1   i586

  libffmpegthumbnailer4         2.0.1        1mdv2010.1   i586
Буде використано 4.7МБ додаткового місця на диску.
Буде отримано 2.4МБ пакунків.
Продовжити встановлення 4 пакунків? (Y/n) (Т/н)
Как видим, программа подробно информирует нас о том, что будет делать. Для обеспечения работы нашего пакета требуется еще три дополнительных. Если нас все устраивает, то отвечаем на запрос положительно, нажимая клавишу «у» и пакеты установятся. Можно таким же образом устанавливать одиночные rpm-пакеты, указав их расположение. Как вы уже догадались, все зависимости решаются, в отличии от обычной rpm -Uvh [package.rpm]. Установим таким образом программу для чистки ненужных эскизов — clean:
[root'0'@mandrivka keed]$ urpmi ~/clean-0.2-1.noarch.rpm'
  встановлюється clean-0.2-1.noarch.rpm з /home/keed/
 Підготовка...         #############################################
  1/1: clean           #############################################
[root'0'@mandrivka keed]$
Удаление пакетов — urpme [имя_пакета].
Удаление также не сложно. Принцип работы такой же, как и в urpmi, только результат обратный. Для примера давайте удалим пакет clean, который мы установили минутой раньше:
[root'0'@mandrivka keed]$ urpme clean
вилучається clean-0.2-1.i586

вилучається пакунок clean-1:0.2-1.i586
[root'0'@mandrivka keed]$
Как бы тоже не очень сложно. Но тут иногда нужно быть осторожным, иначе по тем же зависимостям можно снести пол-системы. Для ясности попробуем удалить пакет libgnome-desktop-2_17, к которому много чего привязано:
[root'0'@linux.local keed]$ urpme libgnome-desktop-2_17
Щоб задовольнити залежності, буде вилучено 23 пакунків (170МБ):
   eog-2.30.1-1mdv2010.1.i586
     (через відсутність libgnome-desktop-2.so.17)
   evolution-2.30.2-1mdv2010.1.i586
     (через відсутність libgnome-desktop-2.so.17)
   gdm-2.30.2-12mdv2010.1.i586
     (через відсутність gnome-settings-daemon)
   gnome-applets-2.30.0-1mdv2010.1.i586
     (через відсутність libgnome-desktop-2.so.17,
     через відсутність gnome-python-applet)
   gnome-control-center-2.30.1-5mdv2010.1.i586
     (через відсутність libgnome-desktop-2.so.17,
     через незадоволеність gnome-settings-daemon >= 2.21.5,
     через відсутність libgnome-window-settings.so.1)
   gnome-panel-2.30.2-1mdv2010.1.i586
     (через відсутність libgnome-desktop-2.so.17,
     через відсутність gnome-screensaver,
     через відсутність gnome-session)
[ *=*=*= урезано для экономии места =*=*=* ]
Вилучити 23 пакунки? (Т/н)
Программа не дура, она знает, что без главных библиотек среды GNOME аж 23 пакета не смогут работать и будут просто занимать такое ценное место на диске. Поэтому и их удалить — это все-таки мудрое решение. Но мы нажимаем «n» для отмены.

Поиск пакетов — urpmq [имя_пакета].
Поиск в БД пакетов происходит по таким критериям: по названию пакета (urpmq [имя_пакета]), по файлу в нем содержащегося (urpmf [имя_файла]) и в описании пакетов по ключевым словам (urpmq --fuzzy [ключевое_слово]). Последние два пункта требуют в наличии закэшированого файла xml-info, который должен находиться в папке с подключенным репозиторием. Где это, смотрите ниже.

Добавление источников пакетов — urpmi.addmedia [название_источника] [путь]. Эта команда позволяет добавлять новые репозитории для установки пакетов. Добавлять можно как локальные носители, так и сетевые. Для просмотра уже добавленых можно воспользоваться этой документированной командой:
[root'0'@mandrivka ~]$ urpmq --list-media
Main media
Contrib media

distrib
У меня на данный момент подключено аж три источника — это для примера, на самом деле их больше. Хотя есть еще один, более хитрый способ получить этот список:
[root'0'@mandrivka ~]$ find /var/lib/urpmi/ -type d
/var/lib/urpmi/
/var/lib/urpmi/Main media

/var/lib/urpmi/distrib
/var/lib/urpmi/Contrib media
Как вы уже могли догадаться, каждый добавленный носитель предоставляет собой папку в директории /var/lib/urpmi/, в которой лежит список пакетов, место, где эти пакеты брать и MD5-суммы для проверки целостности. Так давайте добавим источник с названием Contrib local media из локального cdrom:
[root'0'@mandrivka ~]$ urpmi.addmedia Contrib\ local\ media cdrom://i586/media/contrib
додавання носія "Contrib local media"
[root'0'@mandrivka ~]$
После добавления желательно обновить центральную БД пакетов командой urpmi.update -a. Только после этого действия пакеты с новых источников станут видимыми и доступными для установки.

Удаление источников — urpmi.removemedia [название_источника] [путь].
Принцип действия обратно пропорциональный предыдущей команде, и синтаксис похож. Поэтому долго зацикливаться на этом не буду, просто приведу пример:
[keed'0'@mandrivka ~]$ sudo urpmi.removemedia "Contrib local media"
вилучається носій "Contrib local media"
[keed'0'@mandrivka ~]$
И удалять можно сразу несколько источников.

Rpmdrake. Это официальная «морда» для urpmi, написанная на связке perl+gtk. Довольно удобная оболочка, но по-моему еще не так функциональна, как, например, synaptic. Пакеты удобно собраны в группы и отображаются в левой колонке. Правая же колонка горизонтально поделена на две части. В верхней выбираем интересующий нас пакет, а снизу читаем информацию про него. Запутаться трудно, но возможно — я один раз долго не мог понять, почему rpmdrake никак не находил mplayer. А дело было в том, что сразу после установки системы он настроен на отображение пакетов с GUI. Просто в спадающем списке над левой колонкой выбираем «Все» и будет вам счастье :)

В завершение приведу русифицированную табличку, которую я бессовестно стащил с сайта http://distrowatch.com/. В ней можно найти основную информацию о командах и их применении. А также используйте ее как словарь-переводчик с других пакетных менеджеров.


Задача
Пакетный менеджер

apt (deb) Debian, Ubuntu

zypp (rpm) openSUSE

yum (rpm) Fedora, CentOS

urpmi (rpm) Mandriva

Управление пакетами

Установить пакет с репозитория

apt-get install pkg

zypper install pkg

yum install pkg

urpmi pkg

Установить ПО с файла

dpkg -i pkg

zypper install pkg

yum localinstall pkg

urpmi pkg

Обновить версию ПО

apt-get install pkg

zypper update -t package pkg

yum update pkg

urpmi pkg

Удалить ненужное ПО

apt-get remove pkg

zypper remove pkg

yum erase pkg

urpme pkg

Обновить список пакетов

apt-get update

aptitude update

zypper refresh

yum check-update

urpmi.update -a

Обновить систему

apt-get upgrade

aptitude safe-upgrade

zypper update

yum update

urpmi --auto-select

Поиск в БД пакетов

Поиск пакета по имени

apt-cache search pkg

zypper search pkg

yum list pkg

urpmq pkg

Поиск по содержимому

apt-cache search pattern

zypper search -t pattern pattern

yum search pattern

urpmq --fuzzy pkg

Поиск по файлу

apt-file search path

zypper wp file

yum provides file

urpmf file

Список установленных пакетов

dpkg -l

zypper search -is

rpm -qa

rpm -qa

Работа с репозиториями

Вывести список

cat /etc/apt/sources.list

zypper repos

yum repolist

urpmq --list-media

Добавить источник

(edit /etc/apt/sources.list)

zypper addrepo path name

(add repo to /etc/yum.repos.d/)

urpmi.addmedia name path

Удалить источник

(edit /etc/apt/sources.list)

zypper removerepo name

(remove repo from /etc/yum.repos.d/)

urpmi.removemedia media
P.S. Учите консольные команды. У меня один раз в самый ответственный момент rpmdrake просто рухнул и до сих пор не запускается. И где гарантия того, что это с вами не случится? Если изложенной мной информации вам мало, то просто запустите любую команду без параметров и получите хорошее, толковое руководство. Благо оно локализирована и легкая для понимания. И вы поймете, насколько мощным инструментом наградили разработчики мандриву!


понеділок, 21 лютого 2011 р.

Прозрачность фона в smplayer

Как-то раз внезапно на учетной записи моего брата стал дивным образом глючить smplayer: черный фон заставки и верхних/нижних скобок стал прозрачным. И когда смотришь широкоформатное видео на моем обычном мониторе, то сверху и снизу виден рабочий стол. У меня такого нет. Собственно, поглядите сами:
Как я понял, то причиной может быть особое сочетание compiz-fusion, OpenGL из пропиретарных драйверов и, возможно, cairo-dock. Решается это путем запуска плеера такой командой:
[keed'0'@mandrivka ~]$ env XLIB_SKIP_ARGB_VISUALS=1 smplayer
Теперь он будет работать нормально, по-человечески:
Чтобы не запоминать эту команду, поправьте главный .desktop файл. Для этого идем по адресу /usr/share/applications и находим и открываем значок smplayer в любимом текстовом редакторе от имени root. Находим там строку «Exec= smplayer %U» и меняем ее на «Exec=env XLIB_SKIP_ARGB_VISUALS=1 smplayer %U». Сохраняем. Значок рекомендую скопировать в папку ~/.local/share/applications. Если вы имеете право на редактирование значка, то посто поправьте его таким вот способом:


А я еще так сделал (я в основном так приложения и запускаю):
 [keed'0'@mandrivka ~]$ echo 'alias smplayer = env XLIB_SKIP_ARGB_VISUALS=1 smplayer' >> ~/.bashrc [keed'0'@mandrivka ~]$ . ~/.bashrc
Довольно геморойно, но если вы знаете способ проще, отпишитесь.


понеділок, 14 лютого 2011 р.

Опробовал GNOME Shell

После выхода KDE 4 ближайший конкурент этого популярного рабочего стола — GNOME, тоже решил обновится. Если вы следите за новостями, то скорее всего уже знаете то, чего стоит ожидать. Нам обещали новый, революционный подход к построению и управлению рабочим пространством (по словам самих разработчиков). Это поделие, которое придет в GNOME 3, получило название GNOME Shell. Смотрится, в принципе, красиво и анимировано, но только удобство его использования вызывает крупные споры. Вот и я решил глянуть и «пощупать» все это и сделать собственные выводы. Кстати, давненько уже я это хотел, вот только руки все никак не доходили. И вот на работе внезапно поставил свеженькую Mandriva One GNOME 2010.2 — там уже есть версия Gnome 3 Preview. Вот и попробовал. Хочу сказать, что ожидал большего... В основном я согласен с господином Сергеем Курганом, который в своем блоге уже написал то, что я хочу сказать, и повторять заезженное не буду. Просто хочу сказать, что критиковать еще немного рановато. Хай придет релиз, вот тогда уже можно ругать. А пока в защиту GNOME 3 выдвигаю два аргумента, которые я считаю справедливыми:


  1. GNOME 3 != GNOME Shell. То, что вы наблюдаете сейчас — это просто гном 2 с коряво надетым GNOME Shell на базе библиотек GTK +2. И правда, выглядит не очень аппетитно. Но ведь в GNOME 3 будет и много других вкусностей, таких как GTK+3, новая библиотека отрисовки виджетов и оконный менеджер. И говорить, что GNOME 3 — говно, судя только по Shell — это то же, что говорить плохо про KDE только исходя из работы Plasma.
  2. GNOME Shell — это только первая, пробная версия, которую, я уверен, еще сто раз перепишут и доведут до ума. Вспомните тот ужас, который звался KDE 4.0, и гляньте на KDE 4.6 — это очень большая разница. Или даже Windows 7 alfa, которая мало чем внешне отличалась от Vista. Думаю, с Гномом будет тоже самое, и через годик-второй разработчики учтут жалобы пользователей и напишут действительно удобный, мощный и качественный рабочий стол. А если нет, то все-равно, рано или поздно появятся сборки от сторонних разработчиков. Или хотя-бы патчи. Во всяком случае, на технологиях гнома много чего завязано, так что мы не пропадем!
P.S. Спустя 5 минут работы я уже успел найти баг — при отводе курсора в верхний левый угол появится возможность добавлять рабочие пространства. После 16-го кнопка с плюсиком стает неактивной. Если переключится на рабочий стол и обратно, эта кнопка опять стает активной, но после еще одного добавления рабочего стола опять дезактивируется. И так по кругу можно добиться бесконечного количества рабочих столов. Ниже на скриншоте у меня их сто, но было лень штамповать далее :)



пʼятниця, 11 лютого 2011 р.

Глюки Linux - пойман с поличным

Линукс - это конечно хорошо, но и он порой глючит. Некоторые скриншоты я сохранил. Вот привожу самые-самые за последние 4 года =) Наслаждайтесь!
Раньше такое только в винде видел - "До окончания копирывания осталось 2 года, 10 мес. 3 дня 10 часов" =))

Хороший, толковый индикатор удаления файлов :)
Если бы не глюк, то такая конфигурация смотрится более, чем серьезно!

Внимание на размер выделеного файла))

"Сподівайтесь на краще!" - а сегодня только так и можно...

Проблемы с кодировкой и в наше время встречаются))

А вендовый неро не пишет диски на таких скоростях))

Значит Убунта хорошая ось, говорите?