
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 source
als 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 ( _apt
funktioniert). 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.log
diese später manuell zu analysieren.