설치된 패키지 소스를 다운로드하는 데비안 스크립트가 실패합니다.

설치된 패키지 소스를 다운로드하는 데비안 스크립트가 실패합니다.

askuubtu의 다음 스크립트를 사용하여 새로운 데비안 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" 파일에 액세스할 수 없기 때문에 샌드박싱 없이 루트로 다운로드가 실행되었습니다. - 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

관련 정보