Есть ли команда apt для загрузки файла deb из репозиториев в текущий каталог?

Меня часто интересуют триггеры установки (postinst, postrm) или определенные части пакетов (например, /usr/share и /etc). В настоящее время я выполняю следующую команду для получения исходного кода:

apt-get source [package-name]

Недостатком является то, что этот файл часто намного больше двоичного пакета и не отражает дерево установки.

Сейчас я загружаю пакеты через http://packages.ubuntu.com/ :

  1. Поиск [package-name] [ 1113]
  2. Выберите пакет
  3. Нажмите на amd64 / i386 для загрузки
  4. Скачать актуальный файл
[ 1121] Это занимает слишком много времени для меня, и как человек, который действительно любит оболочку, я хотел бы сделать что-то вроде следующей ( мнимой ) команды:

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

Я не смог найти что-то подобное на странице руководства apt-get . Самым близким, что я нашел, был переключатель --download-only, но он помещает пакет в /var/cache/apt/archives (который требует прав root), а не в текущий каталог.

46
задан 16 March 2011 в 15:29

7 ответов

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

Примечание:

Вам необходимо создать папку с именем частично в папке назначения.

0
ответ дан 16 March 2011 в 15:29

Вы можете использовать подкоманду download из apt, apt-get или aptitude. Например, если вам нужен пакет $ PKG , то подойдет любой из них:

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

Для этого не требуются привилегии root. То же самое можно аппроксимировать, используя apt-get и 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}_")

Вы также можете поместить строку wget в функцию, чтобы иметь возможность использовать ее в качестве команды apt-download с именем пакета в качестве параметра:

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

Обратите внимание на изменения: $ PKG заменяется на $ 1, а параметр -c позволяет продолжать прерванную загрузку.

0
ответ дан 16 March 2011 в 15:29

В 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
0
ответ дан 16 March 2011 в 15:29

/var/cache/apt/archives доступно для чтения. После apt-get -d просто распакуйте его в свой домашний каталог. Запустите dpkg -e /var/cache/apt/archives/foo_version.deb foo, находясь в вашем домашнем каталоге, и управляющие файлы будут сброшены в foo/.

0
ответ дан 16 March 2011 в 15:29

sudo apt-get install devscripts

dget [package-name]

0
ответ дан 16 March 2011 в 15:29

Если вы хотите загрузить все пакеты deb из списка, вы можете сделать это:

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

Просто поместите одно имя пакета в строку. Как в файле require.txt. Например, с таким содержанием:

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

Надеюсь, это поможет. ;)

0
ответ дан 16 March 2011 в 15:29

Можно использовать команду debget который включен в пакет debian-goodies.

Установите его с:

sudo apt install debian-goodies

Использование пакетов загрузки:

debget <package_name>

Например:

debget debian-goodies

Который загрузит debian-goodies_0.79_all.deb в Вашем текущем каталоге (делают pwd распечатать Ваш текущий рабочий каталог).

0
ответ дан 22 November 2019 в 23:56

Другие вопросы по тегам:

Похожие вопросы: