Как скачать исходные пакеты для всех установленных пакетов?
Какие apt-заклинания мне нужно использовать, чтобы загрузить исходные пакеты для всех установленных пакетов в каталог? (Вариант использования - соответствие GPL при передаче установленной системы Ubuntu другому человеку вместе с компьютером.)
4 ответа
Попробуй это..
Создайте каталог, в который вы хотите загрузить исходный код для всех установленных пакетов, и введите его.
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
И иди, возьми чашку кофе:)
Альтернативой для вас может быть просто раздать исходные компакт-диски:
На Ubuntu обратитесь к команде:
apt-get source package-name
рекомендуется использовать только apt-get source
как обычный пользователь, потому что тогда вы можете редактировать файлы в пакете с исходным кодом, не требуя привилегий root.
Есть пара вопросов в принятом ответе и с лучшим ответом в 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
разобрать их вручную позже.