Narzędzie Linux do automatycznego pobierania i budowania z SourceForge?

1

Czy ktoś zrobił coś (nawet tylko skrypt), aby automatycznie pobierać, rozpakowywać i tworzyć projekty z SourceForge w Linuksie? Jak mogłem to zrobić?

Używam w szczególności Ubuntu 12.10.

Melodyczny
źródło

Odpowiedzi:

2

Standardowym przepływem pracy do instalacji ze źródła jest pobranie pakietu, rozpakowanie go, uruchomienie dołączonego configureskryptu, kompilacja i instalacja. Tak więc w przypadkach, w których pakiet, który chcesz zainstalować, jest zgodny ze standardową metodą, możesz to zrobić:

#!/usr/bin/env bash

## Make a new empty directory ($$ is the script's PID)
echo "Creating directory $$"
mkdir $$
cd $$
## get the file name 
tar=$(basename "$1" | grep -Po "[^?]*(?=[?$])") 
## Download the file
wget $1 --output-document $tar
## Check if it is a gzipped or bzipped tar 
file=$(find . -type f);
istgz=$(echo $file | grep "tar\.gz\|tgz")
istbz=$(echo $file | grep "tar\.bz\|tbz")
ok=1

## Extract the archive
if [ $istbz ]; then
    tar xjf $file;
    ok=$? ## $? is the last command's exit status
elif [ $istgz ]; then
    tar xzf $file
    ok=$?
## If things did not go OK, complain
else
    echo "Something went wrong, perhaps the filetype is not recognized"
    exit 1;
fi
## If things went OK, install
if [ $ok = 0 ]; then
    ## Look for a configure script and cd into wherever it is
    conf=$(find . -name configure -executable)
    if [ $conf ]; then
        dir=$(dirname $conf);
        cd $dir;
        ## run the configure script, make and install
        ./configure &&  make && sudo make install && echo "Succesfully installed, installation directory was $$"
    else
        echo "No configure script found, exiting."
    fi
fi

Zapisz ten skrypt, na przykład, sforge.shaby był wykonywalny ( chmod a+x sforge.sh) i uruchom go z adresem URL pakietu sourceforge, który chcesz zainstalować. Upewnij się, że używasz bezpośredniego linku i usuwasz wszelkie odniesienia do mirrorów. W tym przykładzie pobieram conky, kiedy klikam link „bezpośrednie pobieranie” z sourceforge, adres URL to

http://downloads.sourceforge.net/project/conky/conky/1.9.0/conky-1.9.0.tar.bz2 ? r = http% 3A% 2F% 2Fsourceforge.net% 2Fprojects% 2Fconky% 2F% 3Fsource% 3Ddlp & ts = 1367161220 & use_mirror = netcologne

Chcę tylko pierwszą część (pogrubioną czcionką), inaczej nazwa pliku będzie dziwna, więc użyję:

sforge.sh http://downloads.sourceforge.net/project/conky/conky/1.9.0/conky-1.9.0.tar.bz2

WAŻNA UWAGA

Ten skrypt będzie działał tylko dla tych pakietów, które mają normalny układ. Musi to być plik smołowany bz2lub gzipplik i oczekuje configureskryptu i pliku Makefile. Wiele pakietów nie będzie ich posiadało, a skrypt nie będzie działał. Jednak w wielu przypadkach powinno być OK.

terdon
źródło
Jest to zgodne z tym, czego chciałem. Wystąpiły jednak błędy związane z findotrzymywaniem zbyt wielu rzeczy. Chciałem, aby mógł on działać w moim katalogu domowym, więc najpierw go poprawiam.
Melodic
1
Ach tak, przepraszam, zapomniałem wspomnieć, że to naprawdę powinno być uruchomione w pustym katalogu stworzonym w tym celu. Pamiętaj, że niektóre pakiety wyodrębnią wszystko z bieżącego katalogu, a inne utworzą nowy. Rozszerzenie dowolnego archiwum w $ HOME jest zwykle złym pomysłem, ponieważ pliki mogą skończyć się wszędzie.
terdon
1
@Melodic ostrożnie, jak powiedziałem, będzie to zależeć od tego, czy tarutworzy nowy folder, czy nie. Naprawdę polecam, abyś zawsze robił to w pustym katalogu zgodnie ze zaktualizowanym skryptem.
terdon
1
@Melodic zrobione, przy okazji sprytne użycie basename.
terdon
1
Dodano niestandardowy skrót klawiaturowy w Ubuntu, aby wywoływać to w schowku za pomocą xsel: gnome-terminal -e "bash -c '<SCRIPT-LOCATION>/sforge.sh $(xsel -o -b)'"Działa również z $(xclip -o -selection c)zamiast xsel. Teraz wystarczy kliknąć prawym przyciskiem myszy, skopiować link do schowka i nacisnąć ctrl + super + D, a wszystko inne jest dla mnie zrobione! : D
Melodic
1

Istnieje kilka narzędzi, które mogą w tym pomóc: fpm Jordana Sissela i fpm-cookery Bernda Ahlersa . Pierwszy jest w stanie wygodnie budować pakiety z kodu źródłowego w bardzo prosty sposób, drugi zapewnia sposób na zautomatyzowanie tego przepływu pracy.

Nie będę wchodził w szczegóły, ponieważ projekty są bardzo dobrze udokumentowane, a istnieją przepisy na różne rodzaje kodu.

dawud
źródło
0

Jeśli dobrze zrozumiałem twoje pytanie, nie ma takiego ogólnego narzędzia do „automatycznego budowania” wszystkich projektów. Każdy projekt ma swoje określone kroki w celu sprawdzenia zależności, pobrania źródła, kompilacji i instalacji. Jeśli ktoś może ręcznie zbudować określoną aplikację, może napisać skrypt automatycznej kompilacji dla tej aplikacji, a następnie udostępnić skrypt publicznie dla wygody wszystkich.

Dodatkowo możesz spróbować użyć ArchLinux , jego menedżer pakietów AUR działa w podobny sposób, np. Pobiera pakiety kodu źródłowego, instaluje zależności, kompiluje i instaluje. Jeśli chcesz utworzyć taki pakiet, przeczytaj Wskazówki dla użytkowników AUR .

thaolt
źródło