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