Ru/Installing on Gentoo

From LeechCraft
Jump to: navigation, search

Установка LeechCraft в Gentoo

Использованные инструменты

Далее будут использованы программы, которые, возможно, отсутствуют в вашей системе. Пожалуйста, установите их в случае необходимости.

eix - app-portage/eix
equery - app-portage/gentoolkit
qatom - app-portage/portage-utils
flaggie - app-portage/flaggie


USE флаги

По умолчанию, в ебилдах категории app-leechcraft принудительно включены практически все флаги устанавливающие зависимые (суб)модули. И тем, кто не стремится непременно ими всеми воспользоваться, имеет смысл их прочистить, явно отключив всё, что не нужно. Узнать какие флаги есть и за что отвечают, можно командой:

$ equery u app-leechcraft/<package-mame>

При желании, можно посмотреть флаги всех пакетов:

$ equery u `eix --category app-leechcraft --only-names`

Для правки флагов можно воспользоваться инструментом app-portage/flaggie:

# flaggie app-leechcraft/lc-azoth -adiumstyles -birthdaynotifier -juick -keeso -msn -murm -vader -woodpecker ...


Простая установка

Установка целиком

Наиболее простой способ установить LeechCraft целиком и, практически, полностью — это установка соответствующего метапакета:

# emerge -av app-leechcraft/leechcraft-meta

Как и указано в описании, этот пакет содержит список всех плагинов готовых к использованию.

Выборочная установка отдельных плагинов

Так же как и любой другой пакет, плагины LeechCraft можно устанавливать по отдельности, например:

# emerge -av app-leechcraft/lс-azoth

Необходимые для их работы пакеты доустановятся по зависимостям.

Установка версии замаскированной по кейворду

Например, вам захотелось установить версию app-leechcraft/leechcraft-meta-9999, но она замаскирована по кейворду. Тогда, для размаскировывания, вполне достаточно выполнить:

# emerge --autounmask-write -av =app-leechcraft/leechcraft-meta-9999

Эта команда проверит необходима ли размаскировка и если да, то внесёт необходимые изменения в файлы конфигурации портеджей. После повторного запуска этой команды начнется непосредственно сборка и установка.


Выборочная установка собственными сетами

Белый список

Тут не просто, а очень просто:

# eix --category app-leechcraft --only-names --not leechcraft-meta > /etc/portage/sets/leechcraft-my

И затем, открыв файл /etc/portage/sets/leechcraft-my в редакторе, убираете то, что вам не нужно.

Установка:

# emerge -av @leechcraft-my

Черный список

Здесь же всё немного сложнее. Чтобы создать свои списки в пределах механизма сетов будет необходимо слегка в него окунуться. За основу тут лучше взять всё тот же app-leechcraft/leechcraft-meta, так как оттуда более-менее оперативно выкидываются более не развиваемые модули. За пример возьмем работу с live-версией, но с таким же успехом можно создать сет и для любой другой доступной в портеджах версии. Сначала создадим статичный сет того, что вам не нужно, вписав список таких пакетов в /etc/portage/sets/leechcraft-negative Например:

File: /etc/portage/sets/leechcraft-negative
app-leechcraft/leechcraft-meta # Обязательно включите сюда этот пакет!
# Остальное на ваше усмотрение.
app-leechcraft/lc-aggregator
app-leechcraft/lc-bittorrent
app-leechcraft/lc-hotsensors
app-leechcraft/lc-knowhow
app-leechcraft/lc-laure
app-leechcraft/lc-lcftp
app-leechcraft/lc-liznoo
app-leechcraft/lc-sidebar
app-leechcraft/lc-tabpp
app-leechcraft/lc-kbswitch
app-leechcraft/lc-nacheku
app-leechcraft/lc-popishu
app-leechcraft/lc-newlife
app-leechcraft/lc-laughty
app-leechcraft/lc-htthare
app-leechcraft/lc-sysnotify

Далее необходимо создать динамический сет дописав в /etc/portage/sets.conf что-то вроде:

File: /etc/portage/sets.conf
[leechcraft-my-live]
class = portage.sets.shell.CommandOutputSet
command = equery -C g app-leechcraft/leechcraft-meta-9999 | grep "\[ *1\]" | sed s/'.*] *'/'~'/ | sort -u | grep --color=never -v -- "$(eix --only-names --set '@leechcкaft-negative')"

Здесь 9999 можно поменять на любую другую доступную версию. Вы можете сами проверить получившийся список выполнив команду из параметра command. Поясню, что она делает: equery -C g app-leechcraft/leechcraft-meta-9999 строит дерево зависимостей leechcraft-meta (в конвейер выдается несколько иной вывод нежели просто на терминал), далее идет конвейер вырезающий всё лишнее.

Установка:

# emerge -av @leechcraft-my-live


Пересборка live-версии

Полная пересборка

Например, может понадобится при коммитах в lc-core

Можно реализовать через сет, дописав в /etc/portage/sets.conf следующее:

File: /etc/portage/sets.conf
[leechcraft-rebuild]
class = portage.sets.shell.CommandOutputSet
world-candidate = False
command = echo "net-libs/qxmpp"; eix --only-names -I --category app-leechcraft

Пересборка:

# emerge -av @leechcraft-rebuild

Частичная пересборка

В автоматическом режиме возможна через использование app-portage/smart-live-rebuild


Установка с отладочной информацией и символами отладки

Сперва необходимо создать соответствующую конфигурацию переменных окружения portage. Можно всё в одном файле, можно распилить на отдельные (как в данном примере).

Включение отладочной инфы:

File: /etc/portage/env/debug.conf
CFLAGS="${CFLAGS} -ggdb"
CXXFLAGS="${CXXFLAGS} -ggdb"

Отключение "вырезания" отладочной инфы из бинарных файлов:

File: /etc/portage/env/nostrip.conf
FEATURES="nostrip"

Альтернатива предыдущему пункту — сжатие и упаковка отладочной информации в файлы отделенные от исполнимых:

File: /etc/portage/env/splitdebug.conf
FEATURES="compressdebug splitdebug"

Установка Qt:4 c дебагом

Иногда LeechCraft падает из-за ошибок глубоко внутри Qt. В этом случае может оказаться полезной отладочная информация от Qt.

# eix --category dev-qt --only-names | sed s/$/' debug.conf splitdebug.conf'/ > /etc/portage/package.env/qt

Далее имеет смысл включить для Qt USE="debug":

# eix --category dev-qt -U debug --only-names | sed s/$/' debug'/ > /etc/portage/package.use/qt-debug

Для пересборки Qt можно воспользоваться вышеупомянутым механизмом сетов добавив в /etc/portage/sets.conf следующее:

File: /etc/portage/sets.conf
[qt-rebuild]
class = portage.sets.shell.CommandOutputSet
world-candidate = False
command = eix --only-names -I --category dev-qt

И запустив:

# emerge -av @qt-rebuild

Установка LeechCraft c дебагом

Аналогично с Qt:

# eix --category app-leechcraft --only-names | sed s/$/' debug.conf splitdebug.conf'/ > /etc/portage/package.env/leechcraft
# eix --category app-leechcraft -U debug --only-names | sed s/$/' debug'/ > /etc/portage/package.use/lc-debug

Установка QXMPP с дебагом

# echo "net-libs/qxmpp debug.conf splitdebug.conf" > /etc/portage/package.env/qxmpp

В редких случаях может потребоваться собрать net-libs/qxmpp c USE="debug":

# echo "net-libs/qxmpp debug" > /etc/portage/package.use/qxmpp-debug

Но сборка net-libs/qxmpp-9999 при этом вполне может прерваться ошибкой, в этом случае можно воспользоваться ебилдом из https://overlay.qmellon.googlecode.com/hg/net-libs/qxmpp/


Подготовка новых пакетов LeechCraft к установке

Периодически в дереве portages появляются пакеты с новыми модулями для LeechCraft. И для подготовки к их установке можно воспользоваться маленьким скриптом:

File: /usr/local/sbin/moarlc.sh
#! /bin/bash


        until [ -z "$1" ]; do
		CATEGORY="$(qatom -q $1 | sed s/'\s*(null)\s*'/' '/g | cut -d ' ' -f1)"
		PN="$(qatom -q $1 | sed s/'\s*(null)\s*'/' '/g | cut -d ' ' -f2)"
                if eix -eq \
                        --category $CATEGORY \
                        --name $PN
		then
#			grep -q "$CATEGORY/$PN" /etc/portage/package.env/leechcraft || \
#			echo "$CATEGORY/$PN debug.conf splitdebug.conf" >> /etc/portage/package.env/leechcraft
#			grep -q "$CATEGORY/$PN" /etc/portage/package.env/ccache || \
#			echo "$CATEGORY/$PN ccache.conf" >> /etc/portage/package.env/ccache
#			grep -q "$CATEGORY/$PN" /etc/portage/package.use/lc-debug || \
#			echo "$CATEGORY/$PN debug" >> /etc/portage/package.use/lc-debug
#			grep -q "$CATEGORY/$PN" /etc/portage/package.keywords/leechcraft-live || \
#			echo "=$CATEGORY/$PN-9999* **" >> /etc/portage/package.keywords/leechcraft-live
			true
		else
                        echo "Your request - $1 - did not match any packet"
                        echo -e "Did you mean \n$(eix --only-names $(qatom -q $1 | sed s/'\s*(null)\s*'//g | cut -d ' ' -f2))"
                fi
                shift
        done

Пожалуйста, раскомментируйте и, при необходимости, поправьте пары строк grep -q ..., echo ..., которые вам понадобятся.

Пример использования:

 # moarlc.sh app-leechcraft/lc-liznoo