Como baixar os pacotes fontes para todos os pacotes instalados?

Como baixar os pacotes fontes para todos os pacotes instalados?

Quais encantamentos do apt eu preciso usar para baixar os pacotes fonte de todos os pacotes instalados em um diretório? (O caso de uso é a conformidade com a GPL ao fornecer um sistema Ubuntu instalado a outra pessoa junto com um computador.)

Responder1

Experimente isso..

Crie um diretório onde deseja que a fonte de todos os pacotes instalados seja baixada e insira-a.

mkdir source; cd source

Crie um arquivo chamadogetsource.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

Torne-o executável.

chmod a+x getsource.sh

Execute..

./getsource.sh

E vá tomar um café :)

Responder2

Uma alternativa para você pode ser apenas distribuir os CDs de origem:

Responder3

No Ubuntu consulte o comando:

apt-get source package-name

é recomendado que você use apenas apt-get sourcecomo usuário regular, pois assim você poderá editar arquivos no pacote fonte sem precisar de privilégios de root.

Responder4

Há alguns problemas na resposta aceita e na melhor resposta vinculada no Unix Stack Exchange. Aqui está um script melhorado e testado com comentários:

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

Execute como usuário não root ( _aptfunciona). Observe quaisquer erros, pois eles podem indicar pacotes sem fontes disponíveis. Você pode querer executar o script para 2>err.loganalisá-los manualmente mais tarde.

informação relacionada