Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

воскресенье, 19 июня 2011 г.

Установка redmine на Debian 6.0 squeeze

Будем считать, что apache уже установлен. В качестве базы данных используем PostgreSql:
plumbum@alpha:~$ sudo aptitude install postgresql
Изменим пароль пользователя postgres:
root@alpha:~# sudo -u postgres psql
psql (8.4.7)
Type "help" for help.

postgres=# ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'sa';
ALTER ROLE
postgres=# \q
root@alpha:~# 
После этого установим redmine:
plumbum@alpha:~$ sudo aptitude install redmine redmine-pgsql
На вопрос о настройки базы данных с помощью dbconfig-common отвечаем утвердительно, в качестве базы данных указываем pgsql. Придумываем и вводим пароль.

После этого ставим passenger:
plumbum@alpha:~$ sudo aptitude install libapache2-mod-passenger
Создаем конфигурацию для сайта:
plumbum@alpha:~$ sudo touch /etc/apache2/sites-available/redmine
Конфигурация будет следующей:
<VirtualHost *:80>
  ServerName  redmine.alpha

  DocumentRoot /usr/share/redmine/public
  <Directory /usr/share/redmine/public>
    Options -MultiViews
    allow from all
  </Directory>
  LogLevel warn

  CustomLog /var/log/apache2/access.log combined
  ErrorLog /var/log/apache2/error.log

  ServerSignature Off
</VirtualHost>
Делаем новый сайт активным:
plumbum@alpha:~$ sudo a2ensite redmine
plumbum@alpha:~$ sudo invoke-rc.d apache2 reload

После этого redmine должен стать доступен на поддомене redmine. Для ввода используется учетная запись admin/admin.

суббота, 27 ноября 2010 г.

BibTeX, utf8 и стили gost

У BibTeX из TeX Live возникает проблема с кодировкой utf8 при использовании стиля gost78s, которая может касаться и других стилей gost: вместо инициалов авторов подставляются неюникодные символы, что приводит к ошибке трансляции.
! Package inputenc Error: Unicode char \u8:�. not set up for use with LaTeX.

Это можно решить тем же способом, что и проблему с MiKTeX: необходимо заменить f. (f с точкой) на ff (две f). В файле /usr/share/texmf-texlive/bibtex/bst/gost/gost780s.bst эта подстрока встречается два раза. Чтобы не менять системный файл, этот файл можно скопировать в рабочую папку, сменив имя, чтобы LaTeX не спутал его с системным.

Найдено здесь.

вторник, 9 ноября 2010 г.

LaTeX: единый Makefile для Windows и Linux

Бывает необходимо собирать документы LaTeX и на Windows и на Linux. За счет использования MiKTeX и GnuWin можно не беспокоится о платформозависимости, но остается один мелкий нюанс: создание директории для сборки командой mkdir. В linux'е она принимает ключ -p, позволяя создать несколько вложенных директорий за раз и не падать с ошибкой, если директория уже существует. В винде этот ключ рассматривается как имя папки и повторный запуск make'а прерывает сборку с ошибкой, что папка уже существует. Для решения этой проблемы нужно реализовать ветвление по типу ОС.

...

UNAME = $(shell uname)
ifeq ($(UNAME), windows32)
  MKDIR_COMMAND = if not exist $(BUILD_DIR) mkdir $(BUILD_DIR)
else
  MKDIR_COMMAND = mkdir -p $(BUILD_DIR)
endif

all: $(PDF)

$(PDF): $(TEX) $(STYLE)
  $(MKDIR_COMMAND)
  pdflatex -output-directory=$(BUILD_DIR) $(TEX)
  pdflatex -output-directory=$(BUILD_DIR) $(TEX)
  mv $(BUILD_DIR)/$(PDF) .

...

суббота, 6 ноября 2010 г.

Установка PSCyr под TeX Live

Google на вопрос об установке PSCyr под linux отвечает массой странных ссылок, предлагающих превратить Убунту в Слаку. Самая адекватная, на мой взгляд, инструкция находится здесь. Позволю себе ее скопировать, приведя ее в соответствие тому, что есть сейчас.

  1. Нужно достать PSCyr. На данный момент последняя версия, доступная тут — 0.4d-beta9. Скачиваем файлы pscyr-0.4-beta9exp2-tex.tar.gz и pscyr-0.4-beta9exp2-type1.tar.gz.
  2. В домашнем каталоге необходимо создать директорию с именем .texmf-var. В этом каталоге будут храниться пользовательские настройки, что довольно удобно: дополнительные пакеты может ставить и простой пользователь, не только root.
  3. Теперь извлекаем из скачанных архивов в ~/.texmf-var/ каталоги fonts и tex. Каталог dvips извлекать не нужно!
  4. В каталоге ~/.texmf-var/fonts/ необходимо создать два каталога: map и enc. Здесь хранится информация осоответствии имен файлов и имен шрифтов, а также о кодировках шрифтов.
  5. Теперь настал черед директории dvips из архивов. Необходимо распаковать файл dvips/pscyr/pscyr.map в каталог ~/.texmf-var/fonts/map/, а файлы dvips/pscyr/t2a.enc и dvips/pscyr/t2d.enc в каталог ~/.texmf-var/fonts/enc/. Тем самым, необходимые для работы PSCyr файлы оказываются на нужных местах. Остается только указать xdvi и dvips, чтобы они их использовали.
  6. Изменение конфигурационных файлов. Увы, тут без прав root не обойтись. В файл /etc/texmf/xdvi/xdvi.cfg нужно добавить строку dvipsmap pscyr.map. А в файл /etc/texmf/dvips/config/config.ps строку p +pscyr.map. После чего от имени пользователя выполнить команду texhash. PSCyr должен работать с этого момента.

Проверено на Ubuntu 10.10 Maverick Meerkat, texlive версии 2009-10.

Update: лучше пользоваться этим.

Ubuntu 10.10 Maverick Meerkat. Настройка grub

Адаптируем заметку Ubuntu Karmic. Настройка Grub к последней версии дистрибутива — Maverick Meerkat.

Касательно файла /etc/default/grub все осталось без изменений, необходимо изменить указанные ниже настройки:
  • GRUB_TIMEOUT=5 — время показа меню, 5 секунд.
  • раскомментировать GRUB_DISABLE_LINUX_RECOVERY="true" для отключения recovery пунктов меню.

Для отключения вызова memtest'а с выводом на последовательную консоль необходимо привести файл /etc/grub.d/20_memtest86+ в следующий вид:
#!/bin/sh
set -e

if [ -f /usr/lib/grub/grub-mkconfig_lib ]; then
  . /usr/lib/grub/grub-mkconfig_lib
  LX=linux16
elif [ -f /usr/lib/grub/update-grub_lib ]; then
  . /usr/lib/grub/update-grub_lib
  LX=linux
else
  # no grub file, so we notify and exit gracefully
  echo "Cannot find grub config file, exiting." >&2
  exit 0
fi

# We can't cope with loop-mounted devices here.
case ${GRUB_DEVICE_BOOT} in
  /dev/loop/*|/dev/loop[0-9]) exit 0 ;;
esac

prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e "s/^/\t/")"

if test -e /boot/memtest86+.bin ; then
  MEMTESTPATH=$( make_system_path_relative_to_its_root "/boot/memtest86+.bin" )
  echo "Found memtest86+ image: $MEMTESTPATH" >&2
  cat << EOF
menuentry "Memory test (memtest86+)" {
EOF
  printf '%s\n' "${prepare_boot_cache}"
  cat << EOF
    $LX $MEMTESTPATH
}
EOF
fi
На закомментированные строки в конце файла (начинающиеся с #) можно не обращать внимания. Код, который следует поместить в файл /etc/grub.d/08_windows_7, представлен ниже. Новый файл должен иметь исполняемый бит.
#! /bin/sh
set -e

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib

. ${libdir}/grub/grub-mkconfig_lib

if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then
  # missing os-prober and/or linux-boot-prober
  exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
  # empty os-prober output, nothing doing
  exit 0
fi

for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  if [ "x${LONGNAME}" = "xWindows 7 (loader)"  ]; then
    echo "Found Windows 7" >&2
    cat << EOF
menuentry "Windows 7" {
EOF
    save_default_entry | sed -e "s/^/\t/"
    prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
    cat << EOF
  chainloader +1
}
EOF
  fi
done
Теперь необходимо внести изменения в файл /etc/grub.d/30_os-prober, что он не находил Windows 7. Файл большой, поэтому приведем только часть кода, начинающуюся со 149 строки. Необходимо добавить в файл последние 4 приведенные здесь строки:
for OS in ${OSPROBED} ; do
  DEVICE="`echo ${OS} | cut -d ':' -f 1`"
  LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
  LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
  BOOT="`echo ${OS} | cut -d ':' -f 4`"

  if [ -z "${LONGNAME}" ] ; then
    LONGNAME="${LABEL}"
  fi

  if [ "x${LONGNAME}" = "xWindows 7 (loader)"  ]; then
    echo "Found Windows 7, skipping" >&2
    continue
  fi
После внесения все изменений необходимо отдать команду sudo update-grub:
user@host:/etc/grub.d$ sudo update-grub
Generating grub.cfg ...
Found Windows 7
Found linux image: /boot/vmlinuz-2.6.35-22-generic
Found initrd image: /boot/initrd.img-2.6.35-22-generic
Found memtest86+ image: /memtest86+.bin
Found Windows 7, skipping
done
После этого загрузочное меню должно принять вид
  • Windows 7
  • Ubuntu
  • Memtest

По умолчанию будет загружаться Windows 7.

четверг, 2 сентября 2010 г.

Bash: как сделать trim()?

Q: Как сделать trim() в bash?


A:
~$ echo " test" | tr -d " "

Linux: изменить локаль запускаемого приложения

Q: Как запустить некоторое приложение так, чтобы вместо локали по умолчанию, например, русской, использовалась английская?


A:
~$ LANG=C command

Простой проект с использованием CMake, log4cxx, boost

Планируется серия постов, посвященных разработке простого проекта на C++, использующего библиотеки boost, log4cxx, и собираемого CMake. Будет рассмотрена интеграция с Visual Studio 2010 и Eclipse Helios CDT, соответственно проект будет собираться под Windows и Linux. Отдельные детали уже были описаны в предыдущих постах, сейчас же рассмотрим все в подробностях.

Примерный план такой:

  1. Сборка log4cxx под Windows

  2. Установка boost под Windows
  3. Разработка структуры проекта
  4. Написание кода
  5. Конфигурация log4cxx
  6. Сборка CMake'ом под Windows
  7. Интеграция с Visual Studio 2010
  8. Установка библиотек и сборка CMake'ом под Linux
  9. Интеграция с Eclipse Helios CDT
Больше внимания будет уделено Windows, поскольку для нее все оказалось сложнее и не так прямолинейно, как для Linux.

понедельник, 9 августа 2010 г.

Как программно отключить bluetooth

rfkill block bluetooth

Управление цветом в KDE

Стандарных средств для настройки яркости и контрастности в KDE нет, поэтому придется использовать гномовский gnome-color-manager, который есть в репозиториях Ubuntu 10.04. После установки программа будет доступна в по адресу K-menu -> Приложения -> Настройка -> Цветовые профили.

Перед запуском необходимо открыть gconf-editor (через меню найти не удалось, можно запустить из командной строки Alt+F2). В нем установить в true ключ /apps/gnome-color-manager/show_fine_tuning. После запуска приложения на вкладке устройства выбрать монитор и открыть группу "Уточнение параметров", там будут ползунки яркости, контрастности и гаммы.


Чтобы восстановить настройки после запуска нового сеанса, необходимо добавить gcm-apply в автозагрузку.

Как в Ubuntu убрать стандартные папки из домашнего каталога

За стандартные папки типа "Загрузки", "Документы" отвечает пакет xdg-user-dirs. Для его настройки необходимо отредактировать файл ~/.config/user-dirs.dirs.

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/"
XDG_TEMPLATES_DIR="$HOME/"
XDG_PUBLICSHARE_DIR="$HOME/"
XDG_DOCUMENTS_DIR="$HOME/"
XDG_MUSIC_DIR="$HOME/"
XDG_PICTURES_DIR="$HOME/"
XDG_VIDEOS_DIR="$HOME/"

Для того, чтобы папка не создавалась при загрузке, нужно чтобы соответствующая переменная указывала на $HOME. "Desktop" вместо "Рабочий стол" удобнее в консоли. После изменения файла можно удалять папки, больши они появиться не должны.

среда, 4 августа 2010 г.

Простой скрипт для настройки iptables

Создаем файл /etc/network/if-up.d/iptables и назначаем ему права на выполнение. Скрипт рассчитан на машину, подключаемую к сети по локалке и wi-fi.

#!/bin/sh
echo "Setting iptables rules"

IPTABLES="/sbin/iptables"

# delete rules and chains
$IPTABLES -F
$IPTABLES -X

# enable everything on lo
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

for iface in eth0 wlan0
do
 # enable all established input connections
 $IPTABLES -A INPUT -i $iface -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
 $IPTABLES -A INPUT -i $iface -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
 $IPTABLES -A INPUT -i $iface -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT

 # enable outgoing traffic
 $IPTABLES -A OUTPUT -o $iface -p tcp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
 $IPTABLES -A OUTPUT -o $iface -p udp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
 $IPTABLES -A OUTPUT -o $iface -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
done

# block all other input connections
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
$IPTABLES -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
 
# default policies
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#protect from spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter

вторник, 3 августа 2010 г.

Установка Ubuntu 10.04 на LVM

В CD версиях дистрибутива отсутствует поддержка LVM, поэтому для установки необходим ряд дополнительных действий.

После загрузки с LiveCD необходимо установить соответствующий пакет:
sudo aptitude update
sudo aptitude install lvm2

Затем необходимо активировать группу томов (vg00):
sudo vgchange -a y vg00
Если диск не размечен под LVM, придется использовать утилиты vgcreate, lvcreate и т.д., поскольку установщик не поддерживает управление томами LVM.

После активации группы томов необходимо установить дистрибутив. Тома LVM будут доступны под именами вида /dev/<имя группы томов>/<имя тома> (например, /dev/vg00/lvhome). При этом для каталога /boot необходимо создать отдельный раздел, не находящийся под управлением LVM, иначе система на сможет загрузиться. Предположим, что этим разделом будет /dev/sda5.

В установленной на жесткий диск системе пакет LVM отсутствует, его необходимо поставить в chroot'е. Для этого необходимо подмонтировать соответствующие разделы (будем считать, что / находится на разделе /dev/vg00/lvroot)
sudo mkdir /mnt/target
sudo mount /dev/vg00/lvroot /mnt/target
sudo mount /dev/sda5 /mnt/target/boot
sudo mount -o bind /dev /mnt/target/dev
sudo mount -o bind /dev/pts /mnt/target/dev/pts
sudo mount -o bind /dev/shm /mnt/target/dev/shm
sudo mount -o bind /proc /mnt/target/proc
sudo mount -o bind /sys /mnt/target/sys

После установить пакет:
sudo chroot /mnt/target
sudo aptitude update
sudo aptitude install lvm2

Затем необходимо отмонтировать разделы в порядке, обратном порядку монтирования:
sudo umount /mnt/target/sys
sudo umount /mnt/target/proc
sudo umount /mnt/target/dev/shm
sudo umount /mnt/target/dev/pts
sudo umount /mnt/target/dev
sudo umount /mnt/target/boot
sudo umount /mnt/target/

После этого установленная система должна загружаться.

пятница, 25 декабря 2009 г.

Ubuntu Karmic. Настройка Grub

На компьютере установлены Ubuntu Karmic и Windows 7, по умолчанию загружается Ubuntu. Необходимо изменить ОС по умолчанию на семерку, убрав из меню загрузчика лишние пункты.

В файле /etc/default/grub
  • GRUB_TIMEOUT=5 - время показа меню, 5 секунд.
  • раскомментировать GRUB_DISABLE_LINUX_RECOVERY="true" для отключения recovery пунктов меню.
Из файла /etc/grub.d/20_memtest86+ убрать код memtest'а с выводом на консоль.

menuentry "Memory test (memtest86+, serial console 115200)" {
linux16    $MEMTESTPATH console=ttyS0,115200n8
}

Для того, чтобы убрать все пункты memtest, необходимо сбросить с этого файла исполняемый бит.

После этого меню будет иметь вид
  • Ubuntu
  • Memtest
  • Windows 7
Переместим семерку на первое место в списке. Для этого добавим файл /etc/grub.d/08_windows_7. Код в этом файле будет искать на диске Windows 7 и, найдя, добавлять ее в меню загрузчика. Код скопируем из /etc/grub.d/30_os-prober

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib

. ${libdir}/grub/grub-mkconfig_lib

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
exit 0
fi

if [ -z "`which os-prober 2> /dev/null`" ] ; then
# missing os-prober
exit 0
fi

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
if [ -z "${OSPROBED}" ] ; then
# empty os-prober output, nothing to do
exit 0
fi

for OS in ${OSPROBED} ; do
DEVICE="`echo ${OS} | cut -d ':' -f 1`"
LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
BOOT="`echo ${OS} | cut -d ':' -f 4`"

if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi

echo "Found ${LONGNAME} on ${DEVICE}" >&2

if [ "x${LONGNAME}" = "xWindows 7 (loader)" ]; then
cat << EOF
menuentry "Windows 7" {
EOF
save_default_entry | sed -e "s/^/\t/"
prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"

cat <<EOF
chainloader +1
}
EOF
fi

done

Все подробности можно найти здесь https://help.ubuntu.com/community/Grub2