пятница, 6 ноября 2009 г.
Отличный пост про aptitude
Очень подробно и с примерами описан поиск в aptitude в частности и работа с ним вообще. То что нужно для домашнего сервера!
понедельник, 24 августа 2009 г.
Webmin
Для тех, кому не хочется добавлять пользователей (или делать что-то еще) на сервере ручками, придумали Webmin. Эта штука позволяет заходить на сервер из браузера и делать все, что угодно. Установка- вполне простая. Взято с UbuntuGeek.
Надо скачать последнюю версию отсюда, например так:
$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.480_all.deb
Установить на сервере необходимые пакеты:
$ sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl
Установить на сервере собственно Webmin:
$ sudo dpkg -i webmin_1.480_all.deb
Использование- еще проще.
В браузере коннектимся к серверу:
https://your-server-ip:10000
И заходим с логином, который позволяет делать sudo:

Webmin будет сразу использовать sudo.
Надо скачать последнюю версию отсюда, например так:
$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.480_all.deb
Установить на сервере необходимые пакеты:
$ sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl
Установить на сервере собственно Webmin:
$ sudo dpkg -i webmin_1.480_all.deb
Использование- еще проще.
В браузере коннектимся к серверу:
https://your-server-ip:10000
И заходим с логином, который позволяет делать sudo:

Webmin будет сразу использовать sudo.
понедельник, 17 августа 2009 г.
Установка Perforce (клиент Ubuntu)
В одном из предыдущих постов я написал как установить Perforce на сервер. В этом посте речь пойдет о клиенте на Убунту.
1. Переходим в директорию, куда скачали p4. Делаем файл исполняемым и переносим в директорию /usr/local/bin:
$ sudo chmod +x p4
$ sudo mv p4 /usr/local/bin
2. Есть несколько способов сообщить клиенту, где искать сервер. Например, можно определить P4PORT и прочие переменные в файле /etc/profile, как для сервера. Мы же воспользуемся наиболее удобным- файлом с настройками. Perforce ищет файл настроек в текущей директории, если не находит, ищет в родительской директории и т.д. Создадим файл .p4config и запишем его в директорию с проектами, например /home/alex/projects:
P4CLIENT=alex-ws
P4EDITOR=gedit
P4PORT=192.168.0.180:1666
P4USER=alex
Теперь все проекты в этой директории будут использовать одни и те же настройки:
3. Сообщаем p4, как узнать имя файла настроек- редактируем /etc/profile:
$ gksu gedit /etc/profile
Добавляем в конец этого файла:
export P4CONFIG=.p4config
4. Создаем спецификацию клиента:
$ p4 client
[update]
5. Проверяем:
$ p4 info
User name: alex
Client name: alex-ws
Client host: alex-laptop
Client root: /home/alex/Projects
Current directory: /home/alex
Client address: 192.168.0.183:38973
Server address: 192.168.0.180:1666
Server root: /perforce_depot
Server date: 2009/08/24 22:04:50 -0500 CDT
Server uptime: 00:39:30
Server version: P4D/LINUX26X86/2009.1/208599 (2009/07/23)
1. Переходим в директорию, куда скачали p4. Делаем файл исполняемым и переносим в директорию /usr/local/bin:
$ sudo chmod +x p4
$ sudo mv p4 /usr/local/bin
2. Есть несколько способов сообщить клиенту, где искать сервер. Например, можно определить P4PORT и прочие переменные в файле /etc/profile, как для сервера. Мы же воспользуемся наиболее удобным- файлом с настройками. Perforce ищет файл настроек в текущей директории, если не находит, ищет в родительской директории и т.д. Создадим файл .p4config и запишем его в директорию с проектами, например /home/alex/projects:
P4CLIENT=alex-ws
P4EDITOR=gedit
P4PORT=192.168.0.180:1666
P4USER=alex
Теперь все проекты в этой директории будут использовать одни и те же настройки:
3. Сообщаем p4, как узнать имя файла настроек- редактируем /etc/profile:
$ gksu gedit /etc/profile
Добавляем в конец этого файла:
export P4CONFIG=.p4config
4. Создаем спецификацию клиента:
$ p4 client
[update]
5. Проверяем:
$ p4 info
User name: alex
Client name: alex-ws
Client host: alex-laptop
Client root: /home/alex/Projects
Current directory: /home/alex
Client address: 192.168.0.183:38973
Server address: 192.168.0.180:1666
Server root: /perforce_depot
Server date: 2009/08/24 22:04:50 -0500 CDT
Server uptime: 00:39:30
Server version: P4D/LINUX26X86/2009.1/208599 (2009/07/23)
воскресенье, 16 августа 2009 г.
Изменить Timezone
Вот тут нашел, как это делается на сервере Ubuntu:
$ sudo dpkg-reconfigure tzdata
Стрелочками выбираем нужную страну/город, жмем Ok, все!
$ sudo dpkg-reconfigure tzdata
Стрелочками выбираем нужную страну/город, жмем Ok, все!
среда, 12 августа 2009 г.
Установка Perforce (сервер)
На прошлой работе мы использовали Perforce, на теперешней- Clear Case и Subversion. Ну, Clear Case- это просто чудовищный монстр, а Subversion как-то странно смотрится после Perforce. К хорошему быстро привыкаешь, и я решил поставить Perforce дома. Лицензия на его использование не нужна, если число пользователей не больше двух, а рабочих пространств (workspace)- не более пяти. Должно хватить. Если в будущем не хватит, перейду на git.
Установка довольно подробно описана в Perforce System Administrator's Guide и прочих документах. Пример установки можно найти здесь, хотя он и не без ошибок. Я придерживался именно его, корректируя ключевые места по официальной документации. Вот что получилось.
Скачиваем Perforce с офф-сайта, нам понадабятся и сервер (p4d), и клиент (p4). Я также скачал грфические клиенты p4v для Windows и Linux (они пригодятся позже), а потом скопировал p4 и p4d на сервер через самбу.
Часть 1. Установка
Установка выполняется из-под рута. Дальше все команды начинаются с sudo, сейчас имеет смысл переключиться на root с помощью sudo su.
1. Переходим в директорию, куда скопировали p4 и p4d. Делаем их исполняемыми и переносим в директорию /usr/local/bin:
$ sudo chmod +x p4 p4d
$ sudo mv p4d /usr/local/bin
$ sudo mv p4 /usr/local/bin
2. Создаем суперпользователя perforce и группу p4admin. Суперпользователь perforce должен быть в группе p4admin:
$ sudo adduser perforce
$ sudo addgroup p4admin
$ sudo usermod -g p4admin perforce
3. Разрешаем суперпользователю perforce запускать sudo.
$ sudo visudo
Добавляем в конец файла строку
perforce ALL = ALL
4. Создаем директорию для хранения журнала и лога perforce:
$ sudo mkdir /var/log/perforce
5. Создаем директорию для хранения всей базы. Желательно держать базу на отдельном винте на случай, если винт сбойнет, тогда базу можно будет восстановить из журнала. У меня винт только один, так что без изысков:
$ sudo mkdir /perforce_depot
6. Изменяем права на исполняемые файлы и только что созданные директории. Нам нужно, чтобы пользователь perforce имел все права, а остальные- только на чтение и исполнение:
$ sudo chown perforce:p4admin /usr/local/bin/p4d
$ sudo chown perforce:p4admin /usr/local/bin/p4
$ sudo chown perforce:p4admin /perforce_depot
$ sudo chown perforce:p4admin /var/log/perforce
$ sudo chmod 755 /usr/local/bin/p4d
$ sudo chmod 755 /usr/local/bin/p4
$ sudo chmod 755 /perforce_depot
$ sudo chmod 755 /var/log/perforce
7. Записываем наши настройки в /etc/profile:
$ sudo vim /etc/profile
Добавляем в конец этого файла:
# Perforce Settings
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4PORT=localhost:1666
export P4ROOT=/perforce_depot
export P4USER=perforce
8. Заставляем Perforce стартовать вместе со всей системой:
$ sudo apt-get install daemon
$ cd /etc/init.d
$ sudo vim perforce
Копируем туда вот эти строки:
#!/bin/sh -e
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4ROOT=/perforce_depot
export P4PORT=1666
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
. /lib/lsb/init-functions
p4start="p4d -d"
p4stop="p4 admin stop"
p4user=perforce
case "$1" in
start)
log_action_begin_msg "Starting Perforce Server"
daemon -u $p4user $p4start;
;;
stop)
log_action_begin_msg "Stopping Perforce Server"
daemon -u $p4user $p4stop;
;;
restart)
stop
start
;;
*)
echo "Usage: /etc/init.d/perforce (start|stop|restart)"
exit 1
;;
esac
exit 0
Изменяем права на файл perforce. Замечу, что этот файл дожен принадлежать root:
$ sudo chmod 755 perforce
Часть 2. Первый запуск.
Загружаемся как пользователь perforce и выполняем следующие команды.
1. Загружаем настройки:
$ sudo source /etc/profile
2. Запускаем сервер в бэкграунде (не из-под root):
$ p4d &
3. Создаем журнал:
$ p4d -jc
4. Устанавливаем права доступа для пользователей (я этого не делал, т.к. я- один-единственный реальный пользователь)- редактируем Perforce Protection Specification:
$ p4 protect
5. Создаем клента и сохраняем файл:
$ p4 client
6. Проверяем наши установки:
$ p4 info
7. Останавливаем сервер Perforce:
$ p4 admin stop
Осталось только перегрузить сервер.
Установка довольно подробно описана в Perforce System Administrator's Guide и прочих документах. Пример установки можно найти здесь, хотя он и не без ошибок. Я придерживался именно его, корректируя ключевые места по официальной документации. Вот что получилось.
Скачиваем Perforce с офф-сайта, нам понадабятся и сервер (p4d), и клиент (p4). Я также скачал грфические клиенты p4v для Windows и Linux (они пригодятся позже), а потом скопировал p4 и p4d на сервер через самбу.
Часть 1. Установка
Установка выполняется из-под рута. Дальше все команды начинаются с sudo, сейчас имеет смысл переключиться на root с помощью sudo su.
1. Переходим в директорию, куда скопировали p4 и p4d. Делаем их исполняемыми и переносим в директорию /usr/local/bin:
$ sudo chmod +x p4 p4d
$ sudo mv p4d /usr/local/bin
$ sudo mv p4 /usr/local/bin
2. Создаем суперпользователя perforce и группу p4admin. Суперпользователь perforce должен быть в группе p4admin:
$ sudo adduser perforce
$ sudo addgroup p4admin
$ sudo usermod -g p4admin perforce
3. Разрешаем суперпользователю perforce запускать sudo.
$ sudo visudo
Добавляем в конец файла строку
perforce ALL = ALL
4. Создаем директорию для хранения журнала и лога perforce:
$ sudo mkdir /var/log/perforce
5. Создаем директорию для хранения всей базы. Желательно держать базу на отдельном винте на случай, если винт сбойнет, тогда базу можно будет восстановить из журнала. У меня винт только один, так что без изысков:
$ sudo mkdir /perforce_depot
6. Изменяем права на исполняемые файлы и только что созданные директории. Нам нужно, чтобы пользователь perforce имел все права, а остальные- только на чтение и исполнение:
$ sudo chown perforce:p4admin /usr/local/bin/p4d
$ sudo chown perforce:p4admin /usr/local/bin/p4
$ sudo chown perforce:p4admin /perforce_depot
$ sudo chown perforce:p4admin /var/log/perforce
$ sudo chmod 755 /usr/local/bin/p4d
$ sudo chmod 755 /usr/local/bin/p4
$ sudo chmod 755 /perforce_depot
$ sudo chmod 755 /var/log/perforce
7. Записываем наши настройки в /etc/profile:
$ sudo vim /etc/profile
Добавляем в конец этого файла:
# Perforce Settings
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4PORT=localhost:1666
export P4ROOT=/perforce_depot
export P4USER=perforce
8. Заставляем Perforce стартовать вместе со всей системой:
$ sudo apt-get install daemon
$ cd /etc/init.d
$ sudo vim perforce
Копируем туда вот эти строки:
#!/bin/sh -e
export P4JOURNAL=/var/log/perforce/journal
export P4LOG=/var/log/perforce/p4err
export P4ROOT=/perforce_depot
export P4PORT=1666
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
. /lib/lsb/init-functions
p4start="p4d -d"
p4stop="p4 admin stop"
p4user=perforce
case "$1" in
start)
log_action_begin_msg "Starting Perforce Server"
daemon -u $p4user $p4start;
;;
stop)
log_action_begin_msg "Stopping Perforce Server"
daemon -u $p4user $p4stop;
;;
restart)
stop
start
;;
*)
echo "Usage: /etc/init.d/perforce (start|stop|restart)"
exit 1
;;
esac
exit 0
Изменяем права на файл perforce. Замечу, что этот файл дожен принадлежать root:
$ sudo chmod 755 perforce
Часть 2. Первый запуск.
Загружаемся как пользователь perforce и выполняем следующие команды.
1. Загружаем настройки:
$ sudo source /etc/profile
2. Запускаем сервер в бэкграунде (не из-под root):
$ p4d &
3. Создаем журнал:
$ p4d -jc
4. Устанавливаем права доступа для пользователей (я этого не делал, т.к. я- один-единственный реальный пользователь)- редактируем Perforce Protection Specification:
$ p4 protect
5. Создаем клента и сохраняем файл:
$ p4 client
6. Проверяем наши установки:
$ p4 info
7. Останавливаем сервер Perforce:
$ p4 admin stop
Осталось только перегрузить сервер.
среда, 5 августа 2009 г.
Впечатления от ccache
ccache- это кешируещий препроцессор исходников. Основная идея состоит в том, чтобы выяснить, не собираемся ли мы компилировать тот же самый код снова, и если да, то просто воспользоваться уже сгенерированным кодом и, таким образом, сэкономить кучу времени. Уверяют, что часто компиляция осуществляется в 5-10 раз быстрее. Вот тут написано за счет чего это достигается.
Народ, кто пользуется distcc, очень активно интересовался, а будет ли distcc работать в паре с ccache? Ответ был дан такой: да, но только в простом (не-pump) режиме. Поскольку, pump меня не устраивает, я решил попробовать, а вдруг что-нибудь путное получится из использования ccache?
Развитие ccache остановилось пять лет назад, поэтому последнюю версию можно ставить из репозитариев. Не знаю в чем дело, но на моей машине после этого слетели настройки рендеринга шрифтов, так что осторожнее с этой командой:
$ sudo apt-get install ccache
Update: После переустановки Ubuntu , я сначала поставил все GNOME приложения, ccache, и только после это библиотеки и приложенияKDE. Может быть дело было именно в порядке установки, но теперь со шрифтами все нормально.
Использование ccache простое- вместо просто make надо делать
$ make 'CC=ccache gcc'
Если есть желание подружить его с distcc, то в установке distcc ничего менять не надо, а собирать надо так:
$ make -j40 'CC=ccache distcc gcc'
Я проверял, как всегда, на vim 7.2. Существенная разница есть между временем компиляции просто make и с использованием ccache:
Make без ccache и distcc- 2 мин 17 сек.
С использованием ccache без distcc- 1 мин 57 сек.
С использованием distcc без ccache, только на сервере- 1 мин 51 сек.
С использованием distcc без ccache, на localhost и сервере- 1 мин 10 сек.
С использованием ccache и distcc, на localhost и сервере- 1 мин 10 сек.
Отсутствие выиграша по времени в последним случае можно объяснить медленным процессором, который выполняет ccache и даже небольшим размером проекта vim. Но, с учетом проблем со шрифтами, желание работать с ccache отпало.
Существует похожий проект cachecc1, ориентированный только на gcc. Из статистики, приведенной на оффсайте следует, что cachecc1 в целом дает лучшие результаты, чем ccache, иногда превосходя его в разы по времени компиляции. Будем копать.
Народ, кто пользуется distcc, очень активно интересовался, а будет ли distcc работать в паре с ccache? Ответ был дан такой: да, но только в простом (не-pump) режиме. Поскольку, pump меня не устраивает, я решил попробовать, а вдруг что-нибудь путное получится из использования ccache?
Развитие ccache остановилось пять лет назад, поэтому последнюю версию можно ставить из репозитариев. Не знаю в чем дело, но на моей машине после этого слетели настройки рендеринга шрифтов, так что осторожнее с этой командой:
$ sudo apt-get install ccache
Update: После переустановки Ubuntu , я сначала поставил все GNOME приложения, ccache, и только после это библиотеки и приложенияKDE. Может быть дело было именно в порядке установки, но теперь со шрифтами все нормально.
Использование ccache простое- вместо просто make надо делать
$ make 'CC=ccache gcc'
Если есть желание подружить его с distcc, то в установке distcc ничего менять не надо, а собирать надо так:
$ make -j40 'CC=ccache distcc gcc'
Я проверял, как всегда, на vim 7.2. Существенная разница есть между временем компиляции просто make и с использованием ccache:
Make без ccache и distcc- 2 мин 17 сек.
С использованием ccache без distcc- 1 мин 57 сек.
С использованием distcc без ccache, только на сервере- 1 мин 51 сек.
С использованием distcc без ccache, на localhost и сервере- 1 мин 10 сек.
С использованием ccache и distcc, на localhost и сервере- 1 мин 10 сек.
Отсутствие выиграша по времени в последним случае можно объяснить медленным процессором, который выполняет ccache и даже небольшим размером проекта vim. Но, с учетом проблем со шрифтами, желание работать с ccache отпало.
Существует похожий проект cachecc1, ориентированный только на gcc. Из статистики, приведенной на оффсайте следует, что cachecc1 в целом дает лучшие результаты, чем ccache, иногда превосходя его в разы по времени компиляции. Будем копать.
вторник, 4 августа 2009 г.
distcc 3.1-1 и переменные окружения
Для экспериментов с distcc очень удобно использовать переменную DISTCC_HOSTS. Ее distcc проверяет первой, а за ней уже файлы ~/.distcc/hosts и /etc/distcc/hosts. Так что если надо быстро добавить или убрать компилирующий хост, то делаем:
$ export DISTCC_HOSTS='localhost 192.168.0.180'
Проверяем:
$ distcc --show-hosts
Чтобы вернуться к списку хостов, записанному в файле hosts, делаем
$ unset DISTCC_HOSTS
Существует еще одна переменная, тоже перечисляющая компилирующие хосты- DISTCC_POTENTIAL_HOSTS. Она используется в режиме pump, о котором речь идет в предыдущем посте. Как следует из названия переменной, смысл ее в том, что она перечисляет все хосты, которые могут использоваться для компиляции:
$ export DISTCC_POTENTIAL_HOSTS='localhost 192.168.0.180,cpp 192.168.0.200,cpp,lzo'
Перед началом компиляции, если переменная DISTCC_HOSTS не определена, скрипт pump (а точнее, lsdistcc) проверит, доступны ли хосты, перечисленные в этой переменной, и есть ли работающий distcc демон на этих хостах. Список хостов, прошедших проверку, будет сохранен в переменной DISTCC_HOSTS, которая будет использоваться distcc, как раньше.
Параметр ,cpp указывает, что для данного сервера должен быть включен режим pump. Параметр ,lzo указывает, что инклюды должны упаковываться перед пересылкой данному серверу.
$ export DISTCC_HOSTS='localhost 192.168.0.180'
Проверяем:
$ distcc --show-hosts
Чтобы вернуться к списку хостов, записанному в файле hosts, делаем
$ unset DISTCC_HOSTS
Существует еще одна переменная, тоже перечисляющая компилирующие хосты- DISTCC_POTENTIAL_HOSTS. Она используется в режиме pump, о котором речь идет в предыдущем посте. Как следует из названия переменной, смысл ее в том, что она перечисляет все хосты, которые могут использоваться для компиляции:
$ export DISTCC_POTENTIAL_HOSTS='localhost 192.168.0.180,cpp 192.168.0.200,cpp,lzo'
Перед началом компиляции, если переменная DISTCC_HOSTS не определена, скрипт pump (а точнее, lsdistcc) проверит, доступны ли хосты, перечисленные в этой переменной, и есть ли работающий distcc демон на этих хостах. Список хостов, прошедших проверку, будет сохранен в переменной DISTCC_HOSTS, которая будет использоваться distcc, как раньше.
Параметр ,cpp указывает, что для данного сервера должен быть включен режим pump. Параметр ,lzo указывает, что инклюды должны упаковываться перед пересылкой данному серверу.
Подписаться на:
Сообщения (Atom)
