У меня нет привилегии sudo, поэтому я хочу установить программное обеспечение в свой домашний каталог. У меня много пакетов для загрузки, поэтому я хочу написать скрипт для этого. Я использую:
apt-get download libopencv-dev
dpkg-deb -x libopencv-dev_2.4.8+dfsg1-2ubuntu1_amd64.deb /my/path
, но когда я пишу сценарий, я не знаю имя загруженного файла (libopencv-dev_2.4.8+dfsg1-2ubuntu1_amd64.deb
), кто-нибудь знает, как получить имя файла apt-get download
?
Сделайте сценарий:
PACKAGE=packagename
apt-get download $PACKAGE
dpkg-deb -x $PACKAGE*.deb /my/path
Это должно работать на все пакеты. Это может или не может работать в или внешних репозиториях PPA.
Вот сценарий, названный downloadthis
.
#!/bin/bash
for i in $(apt-cache show $1 | grep Version | sed 's/^Version..//g')
do apt-get download $1
dpkg-deb -x "$1"*"$i"*deb $2
done
не забывают делать это исполняемым файлом.
Вот пример использования:
./downloadthis libopencv-dev
сценарий создаст каталог, названный libopencv-dev
в Вашем корневом каталоге. Можно отредактировать сценарий и изменение ~/$1
к другому пути (как /my/path
, например).
, С другой стороны, Вы могли отредактировать сценарий и изменение ~/$1
к ~/$2
, чтобы позволить Вам указывать каталог извлечения, когда Вы запускаете скрипт.
Вот пример этого использования:
./downloadthis libopencv-dev /my/path
Можно попытаться анализировать вывод apt-get download --print-uris
, который просто печатает информацию о загрузке, на самом деле не загружая его:
$ apt-get download vim --print-uris
'http://ppa.launchpad.net/pi-rho/dev/ubuntu/pool/main/v/vim/vim_7.4.1907-1~ppa1~x_amd64.deb' vim_2%3a7.4.1907-1~ppa1~x_amd64.deb 1073208 SHA256:f2d9029ec937fa0d4f16612f21bc2cb4ff2ef8dc16f7f31af660c5cb272d92bc
Это дает Вам URL, имя файла, ожидаемый размер и хеш. Если бы Вы так выбрали, то Вы могли бы выполнить загрузку и проверку сами также (в этом случае, можно загрузить и сохранить к любому имени файла, которое Вы хотите).
На данный момент:
filename=$(apt-get download libopencv-dev --print-uris | awk '{print $2}')