インストールされたパッケージソースをダウンロードするDebianスクリプトは失敗します。

インストールされたパッケージソースをダウンロードするDebianスクリプトは失敗します。

askuubtuの次のスクリプトを使用して、新しいDebian 9.3 LXDEインストールにインストールされているすべてのパッケージを自動的にダウンロードしました。

ここから:

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

私の問題は、いくつかのエラーが発生し、次のパッケージをダウンロードしますが、私が望むパッケージはダウンロードしないことです。

sh:1:dpkg-source:見つかりませんW:「_apt」ユーザーが「libreoffice_5.2.7-1.dsc」ファイルにアクセスできないため、サンドボックスなしでrootとしてダウンロードが実行されました。 - pkgAcquire::Run(13: 許可拒否) E: "dpkg-source --no-check -x libreoffice_5.2.7-1.dsc" 解凍コマンドが失敗しました。パッケージのリストを読む...「libreoffice-calc」の代わりに「libreoffice」をソースパッケージとして選択してください。

3〜4分ごとに数回約300MB(libreofficeのほぼすべての依存関係について)をダウンロードすることを想像できます。

私のシステムで使用されているパッケージのソースコードを自動的にダウンロードするために、このスクリプトよりも優れた提案をしている人はいますか?

ベストアンサー1

使用しているスクリプトには基本的な問題があります。ソースパッケージではなくバイナリパッケージに基づいているということです。 LibreOfficeのソースコードを複数回ダウンロードする理由は次のとおりです。同じソースパッケージからビルドされたバイナリパッケージがたくさんあります。

別の問題は、インストールしていないdpkg-sourceため、ソースパッケージを解凍できないことです。

代わりに、次のようなものを使用します。

#!/bin/bash
dpkg-query -f '${Source}\n' -W | cut -d\  -f1 | sort -u | while read package
do
    mkdir $package
    pushd $package
    apt-get -q source $package
    popd
done

ソースコードを抽出したくない場合は、-dこの行に追加してエラーをapt-get回避できます。dpkg-source

おすすめ記事