9 октября 2008 г.

Монтирование удаленных файловых систем по SSH и Samba

ssh
Мне в процессе работы часто приходится заходить по SSH на разные сервера. Как-то я задался вопросом: «А нельзя ли облегчить себе жизнь?». Выход был найден довольно быстро sshfs.
sshfs - это утилита, которая позволяет монтировать удаленные системы и работать с ними так, как будто это файловая система на вашем компьютере. Преимуществом утилиты является легкость в обращении и передача данных по зашищенному соединению.
Итак, приступим к установке. Запускаем терминал и вводим команду:

  1. $ sudo apt-get install sshfs

теперь, для использования sshfs вам необходимо добавить вашего пользователя в группу fuse (если нужно монтировать фс из-под другого пользователя, то добавляем и его):

  1. $ sudo usermod -a -G fuse <имя_пользователя>

Все готово, теперь можно использовать:

  1. $ sshfs <name>@192.168.102.20:/home/derand/ <mountPoint>

где:
name — имя пользователя на уделенной машине,
192.168.102.20 - IP-аддресс удаленного компьютера,
/home/derand/ - папка на удаленной машине,
mountPoint — локальная директория, в которую смнтируется удаленная файловая система (/home/derand).
Чтобы отмонтировать удаленную ситему введите:

  1. $ umount <mountPoint>

Для автоматического монтирования при загрузке системы нужно добавить строчку в файл /etc/fstab:

  1. sshfs#<name>@192.168.102.20:/home/derand/ <mountPoint> fuse defaults,auto 0 0


Samba
Если вам необходимо смонтировать некоторый Windows-ресурс, необходимо установить пакет smbfs:

  1. $ sudo apt-get install smbfs

монтируется командой:

  1. $ smbmount //192.168.102.10/Share <mountPoint> -o rw,iocharset=utf8,codepage=cp866,username=myname,password=mypasswd

где:
//192.168.102.10 — удаленный сервер, где расположен общедоступный Windows-ресурс,
Share — имя расшареного ресурса на нем,
mountPoint — локальная директория в которую будет монтироватся ресурс,
rw — монтирование как для чтения, так и для записи (ro — только для чтения),
iocharset=utf8 — кодировка в которой будет отображатся смонтированый ресурс на вашем компьютере
codepage=cp866 — кодировка на сервере.
Username — указывает имя пользователя(myname) для доступа на сервер, опция password указывает пароль.
Отмонтировать можно командой:

  1. $ smbumount <mountPoint>

И для автоматического монтирования ресурса при загрузке системы нужно добавить строчку в /etc/fstab:

  1. //192.168.102.10/Share &lt;mountPoint&gt; cifs auto,users,rw 0 0

22 мая 2008 г.

VMWare server в Ubuntu 8.04

У меня возникла задача написать кроссплатформенный код, а непосредственно, чтоб работал и под Windows и под Mac OS. Среду разработки я выбрал Qt, так как его код легко компилируется на этих платформах, захотелось покопаться в чем-то новом для себя, да и еще заказчик сделал акцент на этом языке.
Проблемой для меня стало тестирование моего кода под Mac OS, так как нет возможности «пощюпать» настоящий Mac. Да, можно конечно было поставить еще одну систему (так называемую «хакинтош»), но мне б пришлось переразбивать свой винт, что меня совсем не устраивает. Поэтому выбор пал на виртуальную машину. С выбором ПО виртуальной машины вопросы отпали почти сразу, после большого кол-ва ссылок на образы виртуалок под VMWare server. Установка самого VMWare оказалась не тривиальной (sudo apt-get...), далее приводится установка VMWare server для Ubuntu 8.04 взятая с:

Небольшое руководство по установке продукта VMware Server на последнюю версию Ubuntu. Так же представлено решение проблемы с компиляцией модуля vmmon.
Установим необходимые пакеты
Код:
aptitude install build-essential linux-headers-`uname -r` xinetd

Скачайте дистрибутив VMware server по адресу http://register.vmware.com. По ссылке необходима регистрация, но она займет у вас пару минут, после чего вы получите серийный номер (или несколько если вам надо) для дистрибутива программы, и возможность скачать архив с самой программой.
Запустим установку:
tar -vxzf VMware-server-1.0.5-80187.tar.gz
cd vmware-server-distrib
./vmware-install.pl

Когда вы дойдете до пункта принятия лицензионного соглашения и напишите yes прервите установку и проделайте описаное ниже.
Необходимо скачать патч исправляющий ошибки сборки модулей, он доступен по ссылке http://vmkernelnewbies.googlegroups.com.
Распакуйте и примените патч:
tar -zxf vmware-any-any-update-116.tgz
cd vmware-any-any-update-116
./runme.pl

Далее завершим настройку VMware:
vmware-config.pl


Затем выполните команду:
cp /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1

Теперь можно запускать VMware либо командой vmware либо из меню Программы > Прочее > VMware server console
На этом установка завершена, но например у меня возникли проблемы при сборке модуля vmmon.
В исходных кодах допущена небольшая ошибка исправить которую можно выполнив несколько простых операций с файлами которые я приведу ниже
Ошибка:
include /asm/bitops_32.h:9:2: error: #error only
can be included directly, and vmmon-only compile fails

Решение ошибки:
Отредактировать исходный код файла модуля:
cd /usr/lib/vmware/modules/source
cp vmmon.tar vmmon.tar.orig
tar xvf vmmon.tar
cd vmmon-only/include/
vim vcpuset.h
Перейдите к линии 74 и измените строку: #include “asm/bitops.h” на: #include “linux/bitops.h”
rm vmmon.tar
tar cvf vmmon.tar vmmon-only/
rm -rf vmmon-only/
vmware-config.pl

После выполненных действий с файлами модуль скомпилировался нормально и установка завершилась как следует.


У меня проблемм с vmmon небыло.
Следующим шагом было — поиск подходящего образа виртуальной системы, их в сети довольно много. У меня со второго образа все запустилось (и то, потому, что первый я скачал из-за невнимательности для 64-битной архитектуры, хотя третий скачанный не пошел).
ЗЫ: Образы брал с torrents.ru, thepiratebay.org и www.mininova.org

15 мая 2008 г.

Nautilus: пиктрограммы для файлов Open Office.

В Nautilus-e хорошо то, что о содержании файла можно догадываться не только по его названию, но и по пиктограме файла, будь то картинка, pdf-документ, или фильм. Мне не понятно, почему разработчики не включили и предпросмотр файлов Open Office.
Я расскажу, как это сделать.

Для начала нужно создать файл ooo2-thumbnailer в папке /usr/bin содержащий:
#!/usr/bin/python

import zipfile
import sys
import gnomevfs

inURL=gnomevfs.get_local_path_from_uri(sys.argv[1])
outURL=sys.argv[2]

zip=zipfile.ZipFile(inURL,mode="r")
picture=zip.read("Thumbnails/thumbnail.png")
thumbnail=open(outURL,"w")
thumbnail.write(picture)
thumbnail.write("/n")
zip.close()
thumbnail.close()


используйте для этого ваш любимый текстовый редактор, но учтите, что он должен быть запущен из-под пользователя root.
Далее добавляем ему атрибут на запуск:
$ sudo chmod +x /usr/bin/ooo2-thumbnailer

Создаем еще один файл ooo2.schemas в папке /usr/share/gconf/schemas содержащий:

<gconfschemafile>
<schemalist>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.text/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.spreadsheet/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.graphics/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.formula/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.oasis.opendocument.presentation/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.writer/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.calc/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.draw/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.math/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>
<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/enable</applyto>
<owner>ooo2-thumb</owner>
<type>bool</type>
<default>true</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>


<schema>
<key>/schemas/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</key>
<applyto>/desktop/gnome/thumbnailers/application@vnd.sun.xml.impress/command</applyto>
<owner>ooo2-thumb</owner>
<type>string</type>
<default>/usr/bin/ooo2-thumbnailer %u %o</default>
<locale name="C">
<short></short>
<long></long>
</locale>
</schema>

</schemalist>
</gconfschemafile>


теперь заставляем gnome прочитать этот файл:
$ sudo gconftool-2 --install-schema-file /usr/share/gconf/schemas/ooo2.schemas

и перезапускаем nautilus:
$ killall -9 nautilus

Conky: мониторинг системы

Conky является мощным и довольно просто настраиваемым монитором для XWindow.
Установка для Debian/Ubuntu:
$ sudo apt-get install conky

Для работы программы необходим конфигурационный файл ~/.conkyrc. Можно его создать и с нуля, но проще взять готовый и отредактировать под свои нужды и вкус.
Файл конфигурации состоит из двух частей.
- глобальные настройки, это такие, как размещение на экране рабочего стола, шрифт, обрамления, размер и т.д. Полный список тут.
- вывод элементов мониторинга с заданной (update_interval) частотой, это те которые идут после тега TEXT, все переменные которыми оперирует программа задаются в этой секции.
Перед названием переменной необходим знак $. Например, если мы хотим вывести версию ядра то пишем после $kernel. Список переменных можно посмотреть тут.
Также Conky представляют интерфейс для запуска внешних скриптов с помощью переменных семейства exec (exec,execbar,execgraph,execp,execi).
А вот тут есть несколько скриншотов а также файлы конфигов (.conkyrc) к ним.

2 мая 2008 г.

Установка Linux не записывая дистрибутив на CD/DVD

Интересную статью нашел в просторах инета. Ох, нашел бы я ее пару дней назад, не пришлось мне б бегать в магазин за болванкой. Эта статья, мой первый опыт перевода.

После скачивания дистрибутива Linux с интернета вам необходимо записать его на DVD или CD чтоб проинсталировать. Вообшем, эти диски необходимы только один раз, и после инсталляции становятся ненужными, тем более, что почти каждый дистрибутив обновляется каждые 6 месяцев. Итак, если вы хотите обновляться к новым версиям, то у вас соберется куча CD, которые вам фактично уже не нужны. Какое нерациональное использование CD. Но, используя маленький трюк вы сможете установить любой дистрибутив Linux с вашего жесткого диска без записи его на CD или DVD. Необходимым условием является установленная система на вашем компьютере. Это очевидно, поскольку если вы не сможете загрузиться, то и не сможете проинсталлировать, поскольку предполагаться, что у вас нет установочного диска с Linux. Тут описывается трюк с Microsoft Windows как уже проинсталлированой системой.
Почти все Linux-овые инсталляции используют два файла для загрузки компьютера: ядро Linux, и загрузочную корневую файловую систему, которая содержит минимальный набор директорий, которые монтируются перед тем, как будет смонтирована настоящая корневая файловая система /. Эту файловую систему называют Ram disk (initrd). Мы будем использовать эти два файла, чтоб загрузить ОС на наш компьтер. Теперь опишем полностью процедуру.

1. Сперва нужно скопировать ISO файлы Linux-а на ваш жесткий диск. Убедитесь, что раздел на жестком диске отформатирован как FAT32, если конечно, ваш дистрибутив не имеет поддержки чтения/записи с NTFS разделов. Некоторые дистрибутивы требуют ISO-файл в корне раздела. Если вы скопируете его в папку, установщик может не найти его.
2. Используйте WinRAR для открытия ISO файла (не разархивируя его). Распакуйте два файла, про которые говорилось выше. Эти файлы можно найти в папке isolinux. Разные дистрибутивы могут содержать их в другом месте, вам необходимо найти их. Эти два файла могут иметь разные имена в разных дистрибутивах. Файлы которые нужно распаковать из архива (файл ядра обозначен зеленым цветом, Ram disk обозначен красным цветом):
Fedora: vmlinuz и initrd.img
Suse: linux и initrd
Mandriva: vmlinuz и all.rdz
Ubuntu: vmlinuz и initrd.gz
Gentoo: gentoo и gentoo.igz
Knoppix: vmlinuz и initrd.img
Slackware: bzImage и initrd.img
Debian: vmlinuz и initrd.gz
3. Распакуйте эти два файла в папку c:\boot (вы должны будете создать каталог 'boot')
4. Теперь скачайте файл grub4dos. Распакуйте его в папку 'boot' и файл 'grldr' из скачаного архива. Внутри директории 'boot' есть директория 'grub'; скопируйте директорию 'grub' в c:\boot. Скопируйте файл "grldr" в c:\.
5. Откройте c:\boot\grub\menu.lst и добавьте следующие строки. (Учтите, что hd0 есть первый ваш жесткий диск. Если у вас больше одного жесткого диска, то они будут называться соответственно hd1, hd2 и т.д. Замените hd0 правильным названием если у вас windows установлена на другом жестком диске). Замените Linux_kernel и Ram_disk соответствующими названиями файлами описанными выше (вы их скопировали в c:\boot).
title Install Linux
kernel (hd0,0)/boot/Linux_kernel
initrd (hd0,0)/boot/Ram_disk

6. Теперь вы должны добавить grub в файл c:\boot.ini. Открыть boot.ini можно переходя Start->Run и там вписать c:\boot.ini. Если Windows не позволяет вам его модифицировать, то зайдите на вкладку Advanced из Control Panel->System. Под Startup and Recovery нажмите Settings и тогда на System Startup нажмите Edit. Откройте boot.ini и добавьте эту строчку в конец файла.
C:\grldr=”Start GRUB”

7. Теперь вы готовы инсталлировать Linux. Перезагрузите компьютер и из меню загрузки выберете "Start GRUB". Это загрузит GRUB. Из меню grub-а выберете "Install Linux". Во время инсталляции вас спросят про источник инсталляции. Выберете жесткий диск и тогда выберете раздел на нем, на который вы скопировали ISO-файл. Иногда нужно указать полный путь и точное название файла ISO. Так, что запишите заранее это перед инсталляцией.
Я непосредственно протестировал это с Fedora, Suse и Mandriva и это работало без проблем. Я не сомневаюсь, что это будет работать и с другими дистрибутивами.

Update: dougfractal добавил, что такой способ можно провернуть и из проинсталлированого Linux. Он делал так:

В терминале введите команды:
sudo mkdir /distro
sudo chmod `whoami`:`whoami`
cp MYLINUX.iso /distro/distro.iso

Распакуйте Linux_kernel и Ram_disk в /distro

добавте в файл /boot/grub/menu.lst строки:
#ADD NEW ENTRY#
title Install Linux
root (hdX,X)
kernel /distro/Linux_kernel
initrd /distro/Ram_disk

Перезагрузите компьютер и виберете "Install Linux" из меню grub.

26 апреля 2008 г.

Ubuntu 8.04 впечатления

Буду добавлять по мере того, как буду сталкиваться с проблемами.

Клиент PSI:
Обновленный клиент не нашел SSL плагин, переустановка либы qca-tls не помогла. Поэтому апт-ом удалил с машины PSI, и поставил с исходников, которые можно скачать с официального сайта psi-im.org
$ sudo apt-get autoremove qca-tls psi


Больше ничего не замечено.

9 апреля 2008 г.

Запуск ssh-agent при старте системы

Я, например, храню свои RSA/DSA ключи в ssh-agent.
При запуске bash-а, создаеться свое окружение, и чтоб не запускать постоянно новый ssh-agent, а главное не вводить постоянно пароли к ключам (я использую ключи с паролями), можно просто экспортировать переменные окружения агента.
Небольшой скриптик, который проверяет, не запущен ли сейчас ssh-agent, и если нет... запускает его с нужными ключами:
$ cat start_sshagent.sh
#!/bin/sh

# ssh-agent runner
# RSA/DSA private key files, it`s params script

eval `cat /tmp/ssh_agent.txt`
ret=`ps $SSH_AGENT_PID|grep $SSH_AGENT_PID`
if [ -z $ret ]; then
ssh-agent > /tmp/ssh_agent.txt
eval `cat /tmp/ssh_agent.txt`
ssh-add $1
echo "new ssh-agent"
else
ret=`ssh-add -l | grep $1`
if [ -n $ret ]; then
ssh-add $1
else
echo "yet"
fi
echo "use exist ssh-agent"
fi
echo "ok"

что б он постоянно выполнялся при запуске bash, я его включил в ~/.profile
start_sshagent.sh  /home/`whoami`/.ssh/id_to_remote_ssh_server
eval `cat /tmp/ssh_agent.txt`

7 апреля 2008 г.

Краткий справочник svn (subversion)

svn checkout http://repository.url/svn/name — извлекаем файлы проекта из репозитория, сокращение: svn co;
svn update — получаем обновления из репозитория, сокращение: svn up;
svn update -r rev_num ./file_name — извлекаем ревизию файла с номером rev_num;
svn add ./file_name — добавляем файл в репозиторий (не важно текстовый или бинарный);
svn rename ./old_file_name ./new_file_name — переименовываем файл в репозитории;
svn remove ./file_name — удаляем файл/директорию из репозитория;
svn status — просматриваем локально измененные файлы, сокращение: svn st;
svn status -u — просматриваем локально измененные и изменившиеся в репозитории файлы, сокращение: svn st -u;
svn diff ./file_name — показывает локальные изменения в файле построчно;
svn diff -r rev_num1:rev_num2 ./file_name — показывает различия между ревизией rev_num1 и rev_num2 файла;
svn revert ./file_name — откатывает локальные изменения файла (выгружает из репозитория последнюю закоммиченную ревизию);
svn revert -R ./ — откатывает все локальные изменения файлов;
svn log ./file_name — список ревизий с комментариями;
svn blame ./file_name — показывает авторов изменений файла построчно, синоним: svn annotate;
svn propset svn:ignore ./file_name . — добавляем файл в список игнорируемых файлов;
svn propset svn:keywords "Id Author Date" ./file_name — установка атрибутов файла;
svn cleanup — снимает блокировки с файлов;
svn unlock http://repository.url/svn/file_name — снять блокировку файла (URL можно узнать с помощью команды svn info ./file_name | grep URL, его и нужно передавать в svn unlock);
svnadmin setlog --bypass-hooks /path/to/repository -r rev_num ./commit_text_file — заменяет текстовое описание коммита, где rev_num — номер ревизии, commit_text_file — путь к файлу, содержащему новый комментарий к коммиту;
svn help command_name — выводит помощь по команде command_name, например, «svn help update»;
svn merge -r rev_to_rollback:rev_good ./file_name — откатываем ревизию номер rev_to_rollback до ревизии rev_good, причем все изменения старше rev_to_rollback сохраняются (Например, у файла есть ревизии 11,12 и 13. Хотим откатить 12-ую ревизию, но так, что бы изменения 13-ой остались в силе. Делаем тогда так: svn merge -r 12:11 ./file_name);
svn copy http://repository.url/svn/name/trunk/ http://repository.url/svn/name/branches/new_branch_name/ — создаем ветку с названием new_branch_name из главной линии разработки;
svn merge --dry-run -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — проверяем, что будет изменено при объединении веток, где rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
svn merge -r rev_num1:rev_num2 http://repository.url/svn/name/trunk/ — синхронизирует вашу ветку с главной линией разработки с учетом ревизий: rev_num1 — номер ревизии, когда ваша ветка была «открыта», или это м.б. номер предыдущего объединения (слияния), rev_num2 — версия главной линии разработки, с которой производим объединение. Необходимо отметить, что все изменения будут применены для директории, в которой выполнялась эта команда;
Полную документацию по subversion на русском языке можно посмотреть по ссылке «Управление версиями в subversion». Если Вы нашли ошибку на этой странице, напишите по адресу mail (at) gnuman (dot) ru.
© www.gnuman.ru

Update (22.11.2010):
Статья по работе с бранчами в svn.

4 апреля 2008 г.

Оператор Life:), телефон LG-G1800

Как я подключал мобильный телефон LG-G1800 (оператор 'Life:)')
Ubuntu 7.10 легко определяет мой телефон подключенный через USB-порт:
$ lsusb 
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 002: ID 0458:003a KYE Systems Corp. (Mouse Systems)
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 0e8d:0003 #<<<< вот адресс устройства моего телефона
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

да и появляется устройство "/dev/ttyACM0"
для подключения к оператору 'Life:)' я использую консольную утилиту pppd:
$ sudo pppd call ll

и соответственно два конфига:
/etc/ppp/peers/ll:
noauth
connect "/usr/sbin/chat -v -f /etc/chatscripts/life-gprs"
defaultroute
/dev/ttyACM0
115200
persist
# You may need these
passive
noipdefault
noproxyarp
ipcp-accept-local
#ipcp-accept-remote
#ipcp-restart 2
#ipcp-max-configure 20
#ipcp-max-failure 20
lcp-echo-failure 0
lcp-echo-interval 0
lcp-max-configure 0
lcp-max-failure 0
asyncmap 0xa0000
novj
nodeflate
nobsdcomp
usepeerdns
user ""
lock

и /etc/chatscripts/life-gprs:
ABORT 'BUSY'
ABORT 'ERROR'
ABORT 'NO ANSWER'
ABORT 'NO CARRIER'
ABORT 'NO DIAL'
'' AT
OK AT+CGDCONT=1,"IP","internet"
OK ATD*99***1#
CONNECT \d\c

Русские шрифты в wine

Коряво отображались русские символы под wine-ом.
$wine --version
wine-0.9.46

Точнее даже в самом Lotus Notes 7.0 шрифты отображались коряво (кстате установка его происходила из под винды, потом просто скопировал из 'C:\Program Files\lotus' в папку 'Program Files' wine-а). Русские шрифты подправил простой символической ссылкой папки 'c:\windows\fonts' в папку '$HOME\.wine\drive_c\windows\fonts'.