Linux-Tool zum automatischen Herunterladen und Erstellen von SourceForge?

513
Melodic

Hat jemand etwas (auch nur ein Skript) zum automatischen Herunterladen, Entstarten und Erstellen von Projekten aus SourceForge in Linux erstellt? Wie kann ich das machen?

Ich benutze speziell Ubuntu 12.10.

1

3 Antworten auf die Frage

2
terdon

Der Standardworkflow für die Installation von der Quelle ist das Herunterladen des Pakets, das Dekomprimieren, Ausführen des enthaltenen configureSkripts, Kompilieren und Installieren. In den Fällen, in denen das zu installierende Paket der Standardmethode folgt, können Sie Folgendes tun:

#!/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 

Speichern Sie dieses Skript beispielsweise als sforge.shausführbar ( chmod a+x sforge.sh) und führen Sie es mit der URL des sourceforge-Pakets aus, das Sie installieren möchten. Stellen Sie sicher, dass Sie den direkten Link verwenden, und entfernen Sie alle Verweise auf Spiegel. In diesem Beispiel lade ich herunter conky. Wenn ich auf den Link "Direkter Download" von Sourceforge klicke, wird die URL angezeigt

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

Ich möchte nur den ersten Teil (in Fettdruck), oder der Name der Datei wird seltsam sein, daher werde ich Folgendes verwenden:

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

WICHTIGE NOTIZ

Dieses Skript funktioniert nur für Pakete, die dem normalen Layout entsprechen. Es muss ein Teer bz2oder eine gzipDatei sein und erwartet ein configureSkript und ein Makefile. Viele Pakete haben diese nicht und das Skript funktioniert nicht. Für viele, wenn nicht sogar für die meisten Fälle, sollte dies in Ordnung sein.

Das ist genau das, was ich wollte. Es gab jedoch einige Fehler, da "find" zu viele Dinge erhalten hat. Ich wollte, dass dies in meinem Home-Verzeichnis ausgeführt werden kann, also muss ich es zuerst etwas anpassen. Melodic vor 11 Jahren 0
Ah, ja entschuldige, ich habe vergessen zu erwähnen, dass dies wirklich in einem leeren Verzeichnis ausgeführt werden sollte, das zu diesem Zweck erstellt wurde. Denken Sie daran, dass einige Pakete alles aus dem aktuellen Verzeichnis extrahieren, während andere ein neues erstellen. Das Erweitern eines Archivs in Ihrem $ HOME ist in der Regel eine schlechte Idee, da Dateien überall landen können. terdon vor 11 Jahren 1
Nun, ich habe bereits die gesamte Direktlink-URL verwendet, indem ich wget zwinge, im `basename` abzüglich des '?' und alles darüber hinaus. Ich habe gerade mit einem gefilterten `tar -tf` gearbeitet, um die extrahierten Ordner der obersten Ebene automatisch abzurufen. Melodic vor 11 Jahren 0
@ Melodisch vorsichtig, wie gesagt, das hängt davon ab, ob der `tar` einen neuen Ordner erstellt oder nicht. Ich empfehle Ihnen wirklich, dies in einem leeren Verzeichnis gemäß dem aktualisierten Skript durchzuführen. terdon vor 11 Jahren 1
Mm, ok. That seems easier AND safer, really. Can you edit it to include this filter though? `tar=$(basename "$1" | grep -Po "[^?]*(?=[?$])")` `wget $1 --output-document $tar` Melodic vor 11 Jahren 0
@Melodic done, geschickte Verwendung von 'basename' übrigens. terdon vor 11 Jahren 1
Added a custom keyboard shortcut in Ubuntu to call this with the clipboard using xsel: `gnome-terminal -e "bash -c '/sforge.sh $(xsel -o -b)'"` It also works with `$(xclip -o -selection c)` in place of xsel. Now I just right-click, copy-link-to-clipboard, and press ctrl+super+D and everything else is done for me! :D Melodic vor 11 Jahren 1
1
dawud

Dafür gibt es ein paar Hilfsmittel: Jordan Sissels fpm und Bernd Ahlers fpm-cookery . Die erste Möglichkeit, Pakete auf einfache Art und Weise aus Quellcode zu erstellen, die zweite Möglichkeit, diesen Workflow zu automatisieren.

Ich werde nicht ins Detail gehen, da die Projekte sehr gut dokumentiert sind und es Arbeitsrezepte für verschiedene Arten von Code gibt.

0
thaolt

Wenn ich Ihre Frage richtig verstanden habe, gibt es kein generisches Werkzeug zum "Auto-Build" für alle Projekte. Jedes Projekt hat seine eigenen spezifischen Schritte zum Überprüfen von Abhängigkeiten, Herunterladen der Quelle, Kompilieren und Installieren. Wenn jemand eine bestimmte Anwendung manuell erstellen kann, kann er / sie ein Auto-Build-Skript für diese bestimmte Anwendung schreiben und das Skript dann für jedermann zugänglich machen.

Außerdem können Sie versuchen, ArchLinux zu verwenden. Der AUR-Paketmanager funktioniert auf ähnliche Weise, z. B. Abrufen von Quelltext-Tarballs, Installieren von Abhängigkeiten, Kompilieren und Installieren. Wenn Sie ein solches Paket erstellen möchten, lesen Sie die AUR-Benutzerrichtlinien .