четверг, 6 сентября 2012 г.

[GENTOO] Установка и настройка DropBox 1.2.x в Gentoo Linux

Сам DropBox есть в дереве портажей, однако он какойто урезаный.
Например нет возможности выбрать директории для синка либо исключить директории из синхронизации. Есть альтернативный вариант, написанный на python но о нем не в этом посте.


Итак. Команда eix dropbox выдаст нам следующее:

* net-misc/dropbox
     Available versions:  1.2.48-r1^ms ~1.2.51-r2^ms ~1.4.3-r1^ms ~1.4.7-r1^ms {{+librsync-bundled}}
     Homepage:            http://dropbox.com/
     Description:         Dropbox daemon (pretends to be GUI-less)

* net-misc/dropbox-cli
     Available versions:  ~1
     Homepage:            http://www.dropbox.com/
     Description:         Cli interface for dropbox daemon (python)
dropbox-cli -- интерфейс для доступа к демону dropbox

О нем позже, ибо пока что не смог заставить его работать :)

Собираем пакет net-misc/dropbox
По  умолчанию ставится в /opt/dropbox, это первое. Второе, в пакете НЕТ скрипта запуска демона, поэтому придется его писать самому. На сайте разработчика есть скрипт для генты, но он не для нашего случая. Их скрипт для версии dropbox, которая скачивается с их сайта и устанавливается вручную. На базе их скрипта я написал свой (листинг будет в конце поста), который позволяет запускать демона для конкретных пользователей, которые (к сожалению) задаются в самом скрипте запуска (лучше так, чем никак). Так же в скрипте есть переменные для вывода логов в /var/log/dropbox

Листинг скрипта запуска и короткое объяснение что это и как настраивать:
Установка:
Копипастите нижеследующий скрипт либо качаете его с моего стайта и помещаете его в папку /etc/init.d/ с нужным вам именем (у меня оно лежит под именем dropboxd). Ну и даете ессно на него права на запуск типа chmod go+rwx /etc/init.d/dropboxd

Настройка:
DROPBOX_USERS -- список пользователей для которых будет запускаться демон. Файло будет синкаться в /home/<username>/Dropbox
LOG_* -- путь и имена файлов логов, расписывать полнее не имеет смысла =)
localhost init.d # cat /etc/init.d/dropboxd
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License, v2 or later
#
# dropbox daemon start/stop/status
# by thunder <thunder@blackdeath.ru>, (C) sep, 2012
#

DROPBOX_USERS="thunder"
NICENESS=5
LOG_DIR=/var/log/dropbox/
LOG_ERR=${LOG_DIR}dropbox.error.log
LOG_FILE=${LOG_DIR}dropbox.work.log

if [ ! -d $LOG_DIR ] ; then
    mkdir $LOG_DIR
    chmod o+rwx $LOG_DIR
    touch $LOG_FILE && touch $LOG_ERR
fi

depend() {
   need localmount net
   after bootmisc
}

start() {
   ebegin "Starting dropbox..."
   for dbuser in $DROPBOX_USERS; do
      start-stop-daemon -S -b -m --pidfile /var/run/dropbox-$dbuser.pid -N $NICENESS -u $dbuser -v -e HOME="/home/$dbuser" -x /opt/dropbox/dropboxd -1 ${LOG_FILE} -2 ${LOG_ERR} -k 007
   done
   eend $?
}

stop() {
   ebegin "Stopping dropbox..."
   for dbuser in $DROPBOX_USERS; do
      start-stop-daemon --stop --pidfile /var/run/dropbox-$dbuser.pid
   done
   eend $?
}

status() {
   for dbuser in $DROPBOX_USERS; do
      if [ -e /var/run/dropbox-$dbuser.pid ] ; then
         echo "dropboxd for USER $dbuser: running."
      else
         echo "dropboxd for USER $dbuser: not running."
      fi
   done
   eend $?
}
Вот и все, скрипт можете допиливать по своему усмотрению.

Вопросы? Welcome to comments :)