LINUX.ORG.RU
ФорумTalks

Поделюсь скриптом для Gentoo

 , ,


1

2

Любителям пересборки различных наборов пакетов предлагаю слегка переработанный мной вариант от Jordan Callicoat.

Назначение: вывод списка пакетов, ещё не обработанных emerge.

Зависимости: python 2.

Ъ:

#!/usr/bin/python2

# Script to read portage resume list
# Jordan Callicoat < MonkeeSage at gmail dot com >
# public domain

import sys, getopt, os, portage

def main(argv):

    try:
        opts, args = getopt.getopt(argv, "bf")
    except getopt.GetoptError as err:
        print str(err)
        print 'Usage:\n{} [-bf]'.format(os.path.basename(sys.argv[0]))
        sys.exit(2)
    keyname = 'resume'
    keyname2 = 'mergelist'
    for opt, arg in opts:
        if opt == "-b":
            keyname = 'resume_backup'
        if opt == "-f":
            keyname2 = 'favorites'
    if (portage.mtimedb.has_key(keyname) and
        len(portage.mtimedb[keyname][keyname2]) != 0):
            if keyname2 == "mergelist":
                for item in portage.mtimedb[keyname][keyname2]:
                    print item[2]
            elif keyname2 == "favorites":
                for item in portage.mtimedb[keyname][keyname2]:
                    print item

if __name__ == "__main__":
    main(sys.argv[1:])


К слову, в paludis запись состояния в файл и продолжение выполения есть из коробки. Не знаю, такой же или нет, но я делаю для выполнения сначала pretend, а потом выполнения без пересчёта.

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

В emerge тоже есть --resume из коробки. Беда в том, что сохраняется только один список, и при сборке в более 1 emerge они конкурируют за этот ресурс. Если нужно оставить что-то на потом, то этот скрипт — неплохой вариант, imho.

pS
() автор топика
Ответ на: комментарий от pS

Ну, а вот в paludis списков можно иметь сколько угодно - можно вбить алиас для основного где-нибудь в /tmp, а при необходимости указывать другой файл.

Bfgeshka ★★★★★
()

у меня 30 см

$ cat /usr/local/bin/ee.sh 
#!/bin/sh
#
# Version 0.1, created 2012/11/26
# Version 0.2, created 2013/07/30
# Version 0.3, created 2013/11/8
# Version 0.4, created 2014/12/14

NO_ARGS=0
if [ $# -eq "$NO_ARGS" ]
    then
        emerge --sync && layman -S && eix-update && emerge -pv --update --newuse --deep --with-bdeps=y @world
fi
while getopts ":hsSlpudcDCrR" Option
    do
        case $Option in
        h ) echo "Версия 0.4"
            echo "Использование: ee.sh [ОПЦИИ]"
            echo "Запуск скрипта без опций выполняет emerge --sync и layman -S, обновляет базу пакетов eix (eix-update) и отображает список пакетов,"
            echo "доступных для обновления или требующих пересборки с учетом новых примененных USE флагов и зависимостей (--deep --newuse world)"
            echo "      -h      Показывает это меню"
            echo "      -s      Выполняет emerge --sync, синхронизирует сторонние оверлеи и обновляет базу пакетов eix"
            echo "      -S      Аналогично -s, БЕЗ синхронизации сторонних оверлеев"
            echo "      -l      Синхронизирует сторонние оверлеи и обновляет пакетную базу eix"
            echo "      -p      Отображает доступные для обновления пакеты с учетом новых примененных USE флагов и зависимостей"
            echo "      -u      Обновляет мир с учетом новых примененных USE флагов и зависимостей"                                                                                                                                   
            echo "      -d      Отображает список пакетов, которые не являются зависимостями, и не записаны в system или world (-pv --depclean)"
            echo "      -c      Выполняет то же самое, что и -d (-pvc)"
            echo "      -D      Удаляет пакеты, которые не являются зависимостями и не записаны в system или world (--depclean)"
            echo "      -C      Выполняет то же, что и -D (-c)"
            echo "      -r      Продолжает сборку пакетов с момента, когда компиляция была прервана, с пересборкой 'плохого' пакета"
            echo "      -R      То же, что и -r, БЕЗ пересборки 'плохого' пакета (актуально для сборщиков firefox и libreoffice:-))";;
        s ) emerge --sync && layman -S && eix-update;;
        S ) emerge --sync && eix-update;;
        l ) layman -S && eix-update;;
        p ) emerge -pv --update --newuse --deep --with-bdeps=y @world;;
        u ) emerge --update --newuse --deep --with-bdeps=y @world;;
        d ) emerge -pv --depclean;;
        c ) emerge -pv -c;;
        D ) emerge --depclean;;
        C ) emerge -c;;
        r ) emerge --resume;;
        R ) FEATURES="keeptemp keepwork" emerge --resume;;
        * ) echo "Выбран недопустимый ключ. Для вызова помощи используйте ключ '-h'";;
        esac
    done
exit 0
leg0las ★★★★★
()
Ответ на: у меня 30 см от leg0las

Oh, so good! But it's not unix-way.

По --resume не та полнота.

pS
() автор топика
Ответ на: комментарий от Gary

Кстати, layman уже не нужен. По крайней мере, для оверлеев в Git.

Meyer ★★★★★
()
Ответ на: комментарий от gadfly

Portage совсем выкинул?

Лежит на случай факапов, но пока не было их

Как с оверлеями?

Встроенные, дополнительные пакеты ставить не надо

Работает шустрее?

Немножко, но не в разы.

Bfgeshka ★★★★★
()
Ответ на: комментарий от entefeed

Не обобщай на всех. Просто я поленился переработать скрипт этого чувака на пистон3. Да и пистон я знаю почти никак.

pS
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.