web-dev-qa-db-fra.com

Comment télécharger les packages source pour tous les packages installés?

Quelles aptitudes dois-je utiliser pour télécharger les packages source de tous les packages installés dans un répertoire? (Le cas d'utilisation est la conformité à la GPL lorsque vous donnez un système Ubuntu installé à une autre personne avec un ordinateur.)

5
hsivonen

Essaye ça..

Créez un répertoire dans lequel vous souhaitez télécharger la source de tous les packages installés, puis entrez-le.

mkdir source; cd source

Créez un fichier nommé getsource.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

Rendez-le exécutable.

chmod a+x getsource.sh

L'exécuter..

./getsource.sh

Et va prendre une tasse de café :)

7
SirCharlo

Une alternative pour vous pourrait être de simplement distribuer les CD sources:

1
Jorge Castro

Il y a quelques problèmes dans la réponse acceptée et avec la meilleure réponse liée dans Unix Stack Exchange. Voici un script amélioré et testé avec des commentaires:

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

Exécuter en tant qu'utilisateur non root (_apt fonctionne). Notez toutes les erreurs car elles peuvent indiquer des paquetages sans sources disponibles. Vous voudrez peut-être exécuter le script avec 2>err.log pour les analyser manuellement ultérieurement.

0
Jonah Braun

Sur Ubuntu, référez-vous à la commande:

apt-get source package-name

il est recommandé d'utiliser uniquement apt-get source en tant qu'utilisateur ordinaire, car vous pourrez alors modifier les fichiers du paquet source sans avoir besoin des privilèges root.

0
codegenki