web-dev-qa-db-ja.com

インストールされているすべてのパッケージのソースパッケージをダウンロードする方法

インストールされているすべてのパッケージのソースパッケージをディレクトリにダウンロードするには、どのような適切な呪文を使用する必要がありますか? (インストールされたUbuntuシステムをコンピューターと一緒に他の人に渡す場合、ユースケースはGPL準拠です。)

5
hsivonen

これを試して..

すべてのインストール済みパッケージのソースをダウンロードするディレクトリを作成し、入力します。

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

そして、コーヒーを飲みに行きます:)

7
SirCharlo

別の方法として、ソースCDを配布することもできます。

1
Jorge Castro

受け入れられた答えにはいくつかの問題があり、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
Jonah Braun

Ubuntuでは、次のコマンドを参照してください。

apt-get source package-name

root権限を必要とせずにソースパッケージ内のファイルを編集できるため、apt-get sourceのみを通常のユーザーとして使用することをお勧めします。

0
codegenki