Wie lade ich die Quellpakete für alle installierten Pakete herunter?

Wie lade ich die Quellpakete für alle installierten Pakete herunter?

Welche passenden Zaubersprüche muss ich verwenden, um die Quellpakete aller installierten Pakete in ein Verzeichnis herunterzuladen? (Der Anwendungsfall ist die GPL-Konformität, wenn ein installiertes Ubuntu-System zusammen mit einem Computer an eine andere Person weitergegeben wird.)

Antwort1

Versuche dies..

Erstellen Sie ein Verzeichnis, in das die Quelle für alle installierten Pakete heruntergeladen werden soll, und geben Sie es ein.

mkdir source; cd source

Erstellen Sie eine Datei mit dem Namengetsource.sh

getsource.sh

#!/bin/bash
dpkg --get-selections | while read line
do
        package=`echo $line | awk '{print $1}'`
        mkdir $package
        cd $package
        apt-get -q source $package
        cd ..
done

Machen Sie es ausführbar.

chmod a+x getsource.sh

Führ es aus..

./getsource.sh

Und hol dir eine Tasse Kaffee :)

Antwort2

Eine Alternative für Sie könnte darin bestehen, einfach die Quell-CDs zu verteilen:

Antwort3

Unter Ubuntu verwenden Sie den folgenden Befehl:

apt-get source package-name

Es wird empfohlen, es nur apt-get sourceals normaler Benutzer zu verwenden, da Sie dann Dateien im Quellpaket bearbeiten können, ohne Root-Rechte zu benötigen.

Antwort4

Es gibt ein paar Probleme mit der akzeptierten Antwort und mit der verlinkten besseren Antwort in Unix Stack Exchange. Hier ist ein verbessertes und getestetes Skript mit Kommentaren:

#!/bin/bash

# ${Source} doesn't always show the source package name, ${source:Package} does.
# Multiple packages can have the same source, sort -u eliminates duplicates.
dpkg-query -f '${source:Package}\n' -W | sort -u | while read p; do
    mkdir -p $p
    pushd $p

    # -qq very quiet, pushd provides cleaner progress.
    # -d download compressed sources only, do not extract.
    apt-get -qq -d source $p

    popd
done

Als Nicht-Root-Benutzer ausführen ( _aptfunktioniert). Beachten Sie alle Fehler, da diese auf Pakete ohne verfügbare Quellen hinweisen können. Möglicherweise möchten Sie das Skript ausführen, um 2>err.logdiese später manuell zu analysieren.

verwandte Informationen