Porządki w naszych pakietach .deb

Łukasz Piotrowski Komentarzy 0

    Każdy użytkownik linuksa ściąga z sieci przeróżne pakiety w postaci plików .deb Po pewnym czasie zbiera się ich niemiłosiernie sporo i człowiek się gubi w gąszczu. Ułatwieniem może być pokatalogowanie ich w jakiejś strukturze drzewa.

    Np.

    /
    |- a
    |_ b
      |_ bagietka
        |_ bagietka.deb
    
    

    Zadaniem takiej struktury jest przeniesienie wszystkich pakietów .deb odpowiednio do folderów z literą alfabetu rozpoczynającą nazwę pakietu a następnie do katalogu z nazwą samego pakietu.

    Niezwykle wygodne bo wchodząc np. do katalogu /pakiety/v/vim mamy wszystkie pakiety wymagane dla vim o ile były pobrane w formie pakietów.

    Jak tego dokonać? Napisałem bardzo prosty skrypt w Bash'u który realizuje to zadanie. A więc do dzieła.

    Przygotowania

    Po pierwsze musimy mieć zainstalowany pakiet dpkg-dev. Moja struktura znajduje się w katalogu użytkownika.

    mkdir -p ~/pakiety/{binary,resort} cd ~/pakiety

    Twoezymy jakiś pliczek i nadajemy prawa do uruchamiania:

    touch update.sh && chmod +x ./update.sh

    Do środka wklejamy coś takiego (wyjaśnię pod spodem):

    #!/bin/sh
    cd './resort';
    if [ `ls | tr -d [:blank:]` ] then
        for pakiet in *
        do
            katalog=`dpkg -I $pakiet | grep Source | cut -f2 -d: | tr -d [:blank:]`;
            if [ $katalog ] then
                subdir=`expr substr $katalog 1 1`;
                subdir2="../binary/${subdir}/${katalog}/";
                mkdir -p $subdir2;
                mv $pakiet $subdir2
            else 
                katalog=`dpkg -I $pakiet | grep Package | cut -f2 -d: | tr -d [:blank:]`;
                subdir=`expr substr $katalog 1 1`;
                subdir2="../binary/${subdir}/${katalog}/";
                mkdir -p $subdir2;
                mv $pakiet $subdir2
            fi
        done
    fi

    Mało elegancki kod jednak spełnia swoje zadanie. Skrypt odczytuje z pakietu .deb o nazwie aplikacji (linia 15) bądź przynależności do aplikacji (linia 7) i na jej podstawie tworzy ścieżkę katalogów a następnie przenosi pakiet do tego właśnie katalogu.

    Użycie

    Wszystkie nasze pakiety pakujemy do katalogu resort i uruchamiamy nasz pliczek update. I na tym się kończy cała zabawa.

    Uwagi końcowe

    Skrypt ma jedną zasadniczą wadę. Jeśli mamy dużo pakietów lib to one także powędrują do odpowiednich katalogów. W kolejnej części zmodyfikujemy nasz plik tak aby porządkował nasze biblioteki bez widocznego uszczerbku przejrzystości naszej struktury.

    Jeśli będą jakieś błędy to proszę o informacje. Będę wtedy aktualizował i poprawiał.

    Wpis ten został przeniesiony z archiwalnych wpisów poprzedniego bloga.

    Top