버전 제한이있는 apt-get 다운로드


18

apt-get download특정 버전의 .deb파일 을 가져 오는 데 사용해야 하지만 반드시 정확한 버전은 아닙니다. .deb종속성은 다음과 같은 표현식을 사용할 수 있으며 이러한 종속성을 사용하여 다운로드되는 것과 동일한 버전을 가져오고 >=0.3.0싶습니다 apt-get download.

요약하면, 내가하고 싶은 것은 이것입니다 :

$ apt-get download package='>=0.3.0'

그 기능을 어떻게 얻을 수 있을지 아십니까?


packages.ubuntu.com 에서 패키지를 수동으로 다운로드하지 않는 이유는 무엇 입니까?
terdon

다운로드 한 패키지가 "apt-get install"이 실행될 때 다운로드되는 것과 동일한 패키지인지 확인해야하기 때문입니다. 이것을 cmake 확장 스크립트에 통합하고 있습니다.
mikosz

답변:


2

원하는 최소 버전 이상인 최신 버전을 먼저 찾아서이를 수행 할 수 있습니다. 그런 다음을 사용하여 해당 버전을 정확하게 다운로드하십시오 apt-get download. 이 작업을 수행하는 스크립트는 다음과 같습니다 (조망 스럽지만 아이디어를 얻음).

#!/bin/bash

if [ $# -lt 2 ]; then
    echo "Usage: $0 <packagename> <minimum version>"
    exit 1
fi

pkgname="$1"
minversion="$2"

V="0"

for version in `apt-cache madison $pkgname | awk -F'|' '{print $2}'`; do
    echo "Considering $version"
    if dpkg --compare-versions $version ge $minversion; then
        echo "- Version is at least $minversion"
        if dpkg --compare-versions $version gt $V; then
            echo "- This is the newest version so far"
            V=$version
        else
            echo "- We already have a newer version"
        fi
    else
        echo "- This is older than $minversion"
    fi
done

if [ "$V" = "0" ]; then
    echo "There is no version greater than or equal to $minversion"
    exit 1
fi

echo "Selected version: $V"

echo "Downloading"
apt-get download $pkgname=$V
echo "Done"

패키지가 존재하지 않는 경우 오류 검사를 추가해야하지만 여기에는 핵심 솔루션이 포함됩니다. 또한 여기서는 적어도 특정 버전 인 최신 패키지를 원한다고 가정했습니다. 최소한 특정 버전 인 가장 오래된 패키지를 사용하려면 원하는 버전 이상을 찾으면 검색을 중지하도록 스크립트를 조정해야합니다.


0

정확히 무엇을 원하느냐에 따라 사용자 정의 아카이브 디렉토리를 사용하여 '다운로드 전용 모드' apt-get install로 실행 하는 것이 좋습니다 apt-get install.

-d, --download-only
  Download only; package files are only retrieved, not unpacked or installed.
  Configuration Item: APT::Get::Download-Only.

아카이브 디렉토리를 변경하는 방법? 이것은 구성 옵션입니다.

FILES
  [...]

  /var/cache/apt/archives/
  Storage area for retrieved package files. Configuration Item: Dir::Cache::Archives.

--option매개 변수를 사용하여 임시로 변경할 수 있습니다 .

-o, --option
  Set a Configuration Option; This will set an arbitrary configuration option. 
  The syntax is -o Foo::Bar=bar.  -o and --option can be used multiple times 
  to set different options.

요약:

apt-get install -d -o dir::cache::archives="/some/cache/dir" <package>

이 명령은 다운로드 (만 다운로드하지 설치) 관련됩니다 .deb에 대한 파일 <package>/some/cache/dir. 디렉토리에는 .deb패키지 파일, 종속 항목, 잠금 파일 및 '부분'디렉토리 (비어 있어야 함)가 포함됩니다. .deb필요한 정확한 파일을 필터링하는 것은 쉽지 않습니다.


불행히도 apt-get install수퍼 유저 액세스가 필요합니다.
mikosz

0

apt-get download대상 릴리스를 설정할 수도 있습니다. 도움이되지 않습니까?

apt-get download package/testing

# 1에 대한 설명 (주석을 사용할 수 없음)-매개 변수 --print-uris를 추가 할 apt-get install때 루트 권한이 필요하지 않습니다 (하지만 wget -i FILE_LIST를 사용하면 가장 좋습니다).


Mikolaj Radwan은 나중에 스크립트를 사용하기 위해 표현식을 사용하여 특정 버전을 가져올 수있는 방법을 찾고있는 것 같습니다. 현재 패키지 다운로드 만 허용됩니다.
Will.Beninger

0

SU 권한이 없으면 여전히 apt-cache를 실행하고 필터링과 결합하여 해당 정보를 얻을 수 있습니다. 다음과 같은 것을 사용하십시오 :

데비안 5 :

apt-cache show <pkg> | head | grep -i version 

6시에 다음을 사용할 수 있습니다.

apt-cache show <pkg> | tail | grep -i version

Apt-cache는 5에서 6 사이의 목록 순서에서 동작이 변경되어 6에서 최신 항목이 마지막에 오는 것처럼 보입니다.

한 가지주의 할 점은 "이러한 종속성을 사용하여 다운로드 할 버전과 동일한 버전을 가져 오기 위해"이 출력을 사용하는 경우 apt-get update를 실행하면 사용 가능한 패키지 버전이 변경 될 수 있다는 것입니다. su privs), 또는 버전이 수집 될 때와 버전이 될 것으로 예상되는 것을 설치하는 스크립트를 실행할 때 자동으로 실행되도록 설정되어있는 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.