sobota, 14 maja 2011

Przyjazna wersja emerge

Wrapper na program emerge dla Gentoo. O mnie nazywa się po prostu e .

Przydatne wywołania:
  • e a g w = aktuazliacja całego systemu, z prezentacją co będzie aktualizowane. Przy błędzie próbuje wznawiać.
  • e f w = pobranie wszystkich potrzebnych plików
  • e k = kompilacja i instalacje kernela, rekompilacja wszystkich zależnych modułów z repozytorium, generacja initrd i aktualizacja GRUBa (trzeba wywołać z katalogu z już skonfigurowanym kernelem, tj np po make oldconfig)
  • e c = odinstalowanie niepotrzebnych pakietów, usunięcie niepotrzebnych plikóœ źródłowych i plikóœ pakietów binarnych, wyczyszczenie starych kerneli i aktualizacja GRUBa. TO polecenie robić po resecie po zainstalowaniu nowego kernela.

#!/bin/bash

KEEP_GOING=""
ASK=""
VERBOSE="-v"
TREE=""
FETCH=""

while [ "$1" ]
do
    CMD=$1
    shift
    case $CMD in
        "")
            echo "$0 [Quiet] [Ask] [Tree] [Fetch] [keepGoing] [World|System|Kernel|Clean]"
            ;;
        q*|Q*)
            VERBOSE=""
            ;;

        a*|A*)
            ASK="-a"
            ;;
        t*|T*)
            TREE="-t"
            ;;
        f*|F*)
            FETCH="-f"
            ;;
            
        g*|G*)
            KEEP_GOING="--keep-going"
            ;;
            
        w*|W*)
            emerge -DuN $VERBOSE $ASK $KEEP_GOING $TREE $FETCH @world
            exit $?
            ;;

        s*|S*)
            emerge -DuN $VERBOSE $ASK $KEEP_GOING $TREE $FETCH @system
            exit $?
            ;;

        k*|K*)
            export CCACHE_DIR=/usr/src/.ccache
            export PATH=/usr/src/ccache_bin:$PATH
            [ -f .config ] && make -j8 && make modules_install install
            exit $?
            ;;

        c*|C*)
            #emerge -a --depclean && eclean-pkg -d && eclean-dist -d && eclean-kernel -a
            emerge -a --depclean && eclean-pkg -d && eclean-kernel -a
            exit $?
            ;;

        --)
            shift
            emerge $VERBOSE $ASK $KEEP_GOING $TREE $FETCH $@
            exit $?
            ;;

    esac
done


Skrypt /etc/kernel/postinst.d/10_rebuild realizujący aktualizacje po instalacji kernela:
#!/bin/sh
export FEATURES="-ccache"
sudo -H emerge -v @module-rebuild && \
sudo -H dracut -f --kver "$1" && \
sudo -H grub2-mkconfig -o /boot/grub/grub.cfg