Использование emerge в Gentoo

Аналог статьи про Ubuntu.

https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet – список необходимых команд, все что ниже там есть.

В целом мне не нравятся Gentoo/FreeBSD во многом из-за сравнения процессов работы с приложениями в CentOS, Ubuntu – там все намного быстрее и проще.

Portage — основная система управления пакетами в Gentoo Linux. Аналог системы портов FreeBSD.

К примеру, в Gentoo для добавления модуля xmlwriter, который необходим для работы PHPExcel (генерация xlsx) нужно пересобирать php с новым USE (или лучше указанием в Portage типа /etc/portage/package.use/php) в котором будет включен xmlreader/xmlwriter, а не “просто взять и поставить” этот модуль отдельно.

$ sudo emerge -vp php5-xml
emerge: there are no ebuildsto satisfy "php5-xml". 
$ sudo emerge -vp php-xmlwriter 
emerge: there are no ebuildsto satisfy "php-xmlwriter". 

Gentoo users: emerge does notcompile dev-lang/php with —enable-xmlwriter by default. To enable this option,add the flag xmlwriter to your USE variable and recompile php.
Просмотр

Посмотреть все установленные пакеты.

qlist -I (qlist -Iv с версиями)

Смотрим какие версии приложения установлены и какие активны.

$ eselect postgresql list
Available PostgreSQL Slots
 10 * 10.1
Обновление пакетов и ОС

Очень хорошо и подробно описано тут.

Из того что приходилось использовать:

Обновление дерева portage.

sudo emerge --sync

Нужно после обновлений, тут обычно указываем, что не нужно замещать текущие настройки новыми.

etc-update

Сталкивался с кейсом, когда старое приложение (в нашем случае postgresql) при масштабном обновлении ОС удалялось, но новое не ставилось. Связано с autoclean, аналогичную проблему описывал в Ubuntu с autoremove. В нашем случае при этом, т.к. сервис не был отключен при удалении, он остался в процессах и зависимые от БД ресурсы еще как-то (в некоторых случаях частично) работали, хотя в /etc/init.d/ уже не было сервиса. Решилось установкой версии чуть старше установленной ранее (10ый postgres встал, но не запускался, разобраться быстро не получилось).

1517170003: >>> AUTOCLEAN: app-eselect/eselect-postgresql:0
1517170078: === Unmerging... (dev-db/postgresql-9.5.4)
1517170136: »> unmerge success: dev-db/postgresql-9.5.4
$ ps -aux | grep pos
postgres 24296 0.0 0.0 78268 3920 ? S 2016 45:10 /usr/lib64/postgresql-9.5/bin/postgres -D /etc/postgresql-9.5 —data-directory=/var/lib/postgresql/9.5/data
Установка

Проверяем актуальность текущей версии, смотрим зависимости с опцией –p (не ставит ничего, это pretend что будет поставлено).

sudo emerge -vp vim
зеленый - значит есть апдейт версии или модуля
красный - установлено
синий - модули доступные для установки (через пересборку)

Если конфликтов нет, то устанавливаем (или переустанавливаем, например новую версию или с новыми расширениями в USE) самый актуальный пакет и зависимые пакеты, для работы нужного пакета. Если существует несколько пакетов с таким именем в разных репозиториях – emerge покажет. Можно через emerge даже ставить gem’ы для ruby, но лучше так не делать.

sudo emerge -v vim
sudo emerge -v expect (требует для работы установленного telnet, plink -telnet не поможет)
sudo emerge -v net-misc/telnet-bsd
sudo emerge -v graphviz
 These are the packages that would be merged, in order:
 Calculating dependencies -
 [ Results for search key : graphviz ]
 * dev-haskell/graphviz
 * media-gfx/graphviz
sudo emerge -v media-gfx/graphviz

Установка старой версии пакета.

sudo emerge -v =dev-db/postgresql-9.5.10
УДАЛЕНИЕ

Удаление только при отсутствии зависимостей других пакетов от удаляемого.

sudo emerge -cav www-client/firefox

Удаление несмотря на наличие зависимостей.

sudo emerge -C dev-db/postgresql-10.1

Leave a Reply