Меня часто интересуют триггеры установки (postinst, postrm) или определенные части пакетов (например, /usr/share
и /etc
). В настоящее время я выполняю следующую команду для получения исходного кода:
apt-get source [package-name]
Недостатком является то, что этот файл часто намного больше двоичного пакета и не отражает дерево установки.
Сейчас я загружаю пакеты через http://packages.ubuntu.com/ :
[package-name]
[ 1113]
apt-get get-deb-file [package-name]
Я не смог найти что-то подобное на странице руководства apt-get . Самым близким, что я нашел, был переключатель --download-only
, но он помещает пакет в /var/cache/apt/archives
(который требует прав root), а не в текущий каталог.
sudo apt-get -o dir::cache::archives="/path/to/folder/" -d install package
Примечание:
Вам необходимо создать папку с именем частично в папке назначения.
Вы можете использовать подкоманду 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 позволяет продолжать прерванную загрузку.
В 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
/var/cache/apt/archives
доступно для чтения. После apt-get -d
просто распакуйте его в свой домашний каталог. Запустите dpkg -e /var/cache/apt/archives/foo_version.deb foo
, находясь в вашем домашнем каталоге, и управляющие файлы будут сброшены в foo/
.
sudo apt-get install devscripts
dget [package-name]
Если вы хотите загрузить все пакеты 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
Надеюсь, это поможет. ;)
Можно использовать команду debget
который включен в пакет debian-goodies
.
Установите его с:
sudo apt install debian-goodies
Использование пакетов загрузки:
debget <package_name>
Например:
debget debian-goodies
Который загрузит debian-goodies_0.79_all.deb
в Вашем текущем каталоге (делают pwd
распечатать Ваш текущий рабочий каталог).