
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 source
como 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 ( _apt
funciona). Observe quaisquer erros, pois eles podem indicar pacotes sem fontes disponíveis. Você pode querer executar o script para 2>err.log
analisá-los manualmente mais tarde.