Как скачать исходные пакеты для всех установленных пакетов?

Какие apt-заклинания мне нужно использовать, чтобы загрузить исходные пакеты для всех установленных пакетов в каталог? (Вариант использования - соответствие GPL при передаче установленной системы Ubuntu другому человеку вместе с компьютером.)

5
задан 5 April 2012 в 17:32

4 ответа

Альтернативой для вас может быть просто раздать исходные компакт-диски:

0
ответ дан 5 April 2012 в 17:32

В Ubuntu см. Команду:

apt-get source package-name

. Рекомендуется использовать apt-get source только в качестве обычного пользователя, потому что тогда вы можете редактировать файлы в пакете с исходным кодом, не требуя привилегий root. ]

0
ответ дан 5 April 2012 в 17:32

Попробуйте это ..

Создайте каталог, в который вы хотите загрузить исходный код для всех установленных пакетов, и введите его.

mkdir source; cd source

Создайте файл с именем 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

Сделайте его исполняемым.

chmod a+x getsource.sh

Выполнить это ..

./getsource.sh

И иди, возьмите чашку кофе:)

0
ответ дан 5 April 2012 в 17:32

В принятом ответе есть пара вопросов, связанных с лучшим ответом в Unix Stack Exchange. Вот улучшенный и протестированный скрипт с комментариями:

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

Запуск от имени пользователя без полномочий root (_apt работает). Обратите внимание на любые ошибки, так как они могут указывать на пакеты без доступных источников. Возможно, вы захотите запустить скрипт с 2>err.log, чтобы потом разобрать их вручную.

0
ответ дан 5 April 2012 в 17:32

Другие вопросы по тегам:

Похожие вопросы: