저장소에서 현재 디렉토리로 deb 파일을 다운로드하는 apt 명령이 있습니까?


45

나는 종종 설치 트리거 (postinst, postrm) 또는 패키지의 특정 부분 (와 같은 /usr/share및 /etc)에 관심이 있습니다. 현재 다음 명령을 실행하여 소스 코드를 검색하고 있습니다.

apt-get source [package-name]

단점은이 파일이 종종 바이너리 패키지보다 훨씬 크며 설치 트리를 반영하지 않는다는 것입니다.

현재 http://packages.ubuntu.com/을 통해 패키지를 다운로드하고 있습니다 .

  1. 검색 [package-name]
  2. 패키지를 선택하십시오
  3. 다운로드를 위해 amd64 / i386을 클릭하십시오
  4. 실제 파일 다운로드

이것은 나에게 너무 오래 걸리며 쉘을 정말로 좋아하는 사람으로서 다음 ( 가상 ) 명령 과 같은 것을하고 싶습니다 .

apt-get get-deb-file [package-name]

apt-get manual page 에서 이와 같은 것을 찾을 수 없습니다 . 내가 찾은 가장 가까운 것은 --download-only스위치이지만 /var/cache/apt/archives, 현재 디렉토리가 아닌 패키지를 루트 권한이 필요합니다.


파일을 저장하지 않은 시스템의 차이점 : ssh debianmachine1 "dpkg --get-selections"| diff-<(dpkg --get-selections)
— Scott Robert Schreckengaust

debget패키지에서 사용할 수 있습니다 debian-goodies.
— Shayan

답변:


58

당신은 사용할 수 download의 하위 명령을 apt, apt-get또는 aptitude. 예를 들어 $ PKG 가 원하는 패키지 인 경우 다음 중 하나를 수행합니다.

apt-get download $PKG
apt download $PKG
aptitude download $PKG

루트 권한이 필요하지 않습니다. apt-getand를 사용하여 동일하게 추정 할 수도 있습니다 wget.

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2)

그러나 패키지를 설치하는 데 필요한 모든 패키지를 가져 오므로 대신 제한을 시도 할 수 있습니다.

wget $(apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | grep "/${PKG}_")

패키지 이름을 매개 변수로 사용하여 apt-download 명령으로 사용할 수 있도록 wget 행을 함수에 넣을 수도 있습니다.

function apt-download { wget -c $(apt-get install --reinstall --print-uris -qq $1 | cut -d"'" -f2); }

수정 사항에 유의하십시오. $ PKG는 $ 1로 바뀌고 -c 매개 변수는 계속 중단 된 다운로드를 가능하게합니다.


1
훌륭합니다. 이것이 내가 찾고있는 것입니다. 또 다른 이유는 내 시스템에 적성 유지하기 위해 제공하지 않는 다른 유용한 명령 apt입니다 aptitude changelog $PKG.
— Lekensteyn

4
업데이트 : 단정 한에서 (APT 버전 0.8.11 정확한 될)는 aptitude download기능에서 사용할 수 있습니다 apt뿐만 아니라 : apt-get download $PKG.
— Lekensteyn

달콤한 나의 고대 쉽다 v0.8.10에도 불구하고 작동
— rogerdpack

그들이 멀리 --print-URL을 옵션으로했던 것 같다
— erjoalgo

--print-urls 옵션은 여전히 ​​존재합니다
— kumarharsh

8
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package

노트 :

대상 폴더에 partial이라는 이름의 폴더를 만들어야합니다.


그렇게 나쁘게 들리지 않습니다. 옵션은로 설명 된 것 같습니다 man apt.conf. 폴더 생성을 피하고 싶습니다.
— Lekensteyn

궁금한데 왜 폴더를 만들지 않겠습니까?
— mount.cifs

패키지를 영원히 저장할 필요가 없으며 폴더를 만들지 않아도 시간이 절약됩니다.
— Lekensteyn

이 솔루션은 패키지 제거를 주장합니다 (예 : /etc/apt/sources.list나중에 패키지를 다운로드 할 의도로 최신 버전으로 변경 하는 경우).이 경우 wget위 의 방법은 더 유용 할 수 있습니다. 아무것도 제거하고 싶지
— 않아

5

Ubuntu 14.04 ( apt패키지 버전 1.0.1ubuntu2) apt-get에는 현재 디렉토리에 download지정된 패키지를 다운로드하는 명령이 포함되어 .deb있습니다.

예를 들어 파일 관리자를 다운로드한다고 가정합니다 Ranger.

$ apt-get download ranger

결과 :

$ ls . | grep ranger
ranger_1.6.0-1_all.deb

이것은 완벽 해요. 모든 apt install의존성 요구 사항을 충족시킬 수 없다면 내가 시도한 다른 모든 솔루션이 작동하지 않습니다 . 나는 단지 땜질을 위해 .deb 파일을 원했다!
— Raziel

3

목록에서 모든 deb 패키지를 다운로드하려면 다음을 수행하십시오.

cat path/to/text/file.txt | xargs apt-get install --reinstall --print-uris -qq $PKG | cut -d"'" -f2 | xargs wget

한 줄에 하나의 패키지 이름 만 넣으십시오. requirements.txt 파일과 같습니다. 예를 들어 다음과 같은 내용이 있습니다.

apache2-mpm-event
curl
dmidecode
ethtool
libapache2-mod-wsgi
libapache2-mod-python

도움이 되었기를 바랍니다. ;)


2

sudo apt-get install devscripts

dget [package-name]


이것은 질문에 대한 답변을 제공하지 않습니다. 저자에게 비평을하거나 설명을 요청하려면 게시물 아래에 의견을 남겨주십시오.
— s3lph

어떻게 대답하지 않습니까? 아카이브에서 현재 디렉토리로 deb를 다운로드합니다. 그게 정확히 질문이 아니 었습니까?
— Michael Terry

조금 더 자세한 내용이 유용 할 수 있습니다. 이것은 기술적 으로 답변 이되지만 여전히 두 개 이상의 명령을 제공 할 수 있습니다.
— s3lph

:: shrug :: 여기의 다른 답변과 달리이 질문에는 단서 나 경고가 없습니다. 간단한 질문에 대한 간단한 답변입니다.
— Michael Terry

0

/var/cache/apt/archives세계가 읽을 수 있습니다. 후에 apt-get -d는 홈 디렉토리로 압축을 풉니 다. dpkg -e /var/cache/apt/archives/foo_version.deb foo홈 디렉토리에서 실행 하면 제어 파일이로 덤프됩니다 foo/.


이 방법의 문제점은 다운로드에 여전히 관리자 권한이 필요하다는 것입니다. 홈 디렉토리에 파일을 가져 오는 것만으로도 극한의 상황에 빠지는 것은 바보 같은 것 같습니다.
— ændrük

.deb를 여는 것은 문제가 아니라 다운로드하는 것입니다. 버그 일 수도 있고 / var / cache / apt / archives`의 패키지도 umask의 영향을받습니다. umask를 027로 설정 했으므로 패키지를 /var/cache/apt/archives읽을 수 없습니다. 패키지 내용을 검사해야하므로 한 번만 다운로드하면됩니다 /tmp.
— Lekensteyn

0

debget패키지에 포함 된 명령 을 사용할 수 있습니다 debian-goodies.

다음과 같이 설치하십시오.

sudo apt install debian-goodies

다음을 사용하여 패키지를 다운로드하십시오.

debget <package_name>

예를 들면 다음과 같습니다.

debget debian-goodies

debian-goodies_0.79_all.deb현재 디렉토리에 다운로드 됩니다 ( pwd현재 작업 디렉토리를 인쇄하십시오).


debian-goodies유용한 명령이 많이 포함되어 있습니다. askubuntu.com/a/1170001/777279
— Shayan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.