Как загрузить пакеты из командной строки данного репозитория?

Речь идет не о обычной загрузке и установке, какой apt (aptitude и т. Д.), Это загружаемый сценарий пакетный файл.

Я нашел инструмент dget для этой задачи, который работает достаточно хорошо. Но, к сожалению, у него нет возможности указывать другой URL-адрес репозитория, как он указан в /etc/apt/sources.list .

Как это возможно? На самом деле функция dget была бы лучшей, но где я также могу указать URL-адрес репо.


Ps Большое спасибо сценарии, но я бы предпочел инструмент debian для этой очень простой задачи. Он будет частью buildscript, для внешнего использования, и любая ненужная сложность имеет невыносимые затраты на обеспечение. Это должно быть сделано с помощью инструмента debian.

Ps2. Наконец, я решил это с обновлением общесистемных репозиториев и загрузкой пакетов с помощью dget . Большое спасибо скриптам!

4 Solutions collect form web for “Как загрузить пакеты из командной строки данного репозитория?”

Если вы используете достаточно недавнюю версию Debian или другого дистрибутива с помощью apt, вы можете использовать apt-get для этого. Поместите следующие параметры в файл apt-get.conf чтобы он не использовался

 Dir::Etc::main "."; Dir::Etc::Parts "./apt.conf.d"; Dir::Etc::sourcelist "./sources.list"; Dir::Etc::sourceparts "./sources.list.d"; Dir::State "./apt-tmp"; Dir::State::status "./apt-tmp/status"; Dir::Cache "./apt-tmp"; 

Подготовьте необходимые файлы:

 mkdir -p apt-tmp/lists/partial touch apt-tmp/status apt-get -c apt.conf update >/dev/null 

Затем вы можете загружать пакеты в текущий каталог с помощью

 apt-get -c apt.conf download $packages 

В старых версиях apt-get которым не хватает команды download , вы можете использовать

 apt-get -c apt.conf install -d $packages 

для загрузки пакетов и их зависимостей в apt-tmp/archives .

Все инструменты, которые я могу найти, используют локальную информацию apt (и, следовательно, репозитории в /etc/apt/sources.list и т. Д., Как определено в последний раз, apt-get update было выполнено apt-get update ). Однако не сложно интерпретировать формат репозитория .

Сохранить

 #!/bin/sh # Downloads a package from a repository # dlpkg repo distro suite arch package for arch in all "${4}"; do curl "${1}/dists/${2}/${3}/binary-${arch}/Packages.xz" | xz -d | "$(dirname $0)/pkgfilename" -v "PACKAGE=${5}" | while read filename; do curl -O "${1}/${filename}" done done 

как dlpkg , и

 #!/usr/bin/awk -f /Package:/ { package = $2 } package == PACKAGE && /Filename:/ { print $2 } 

как pkgfilename , сделать их исполняемыми, а затем загрузить пакет, выполнив

 ./dlpkg <repository URL> <distribution> <suite> <architecture> <package> 

например

 ./dlpkg http://ftp.fr.debian.org/debian unstable main amd64 libc6 

Если вам нужно обрабатывать репозитории, файлы Packages которых не находятся в каноническом порядке ( Package до имени Filename ), вы можете использовать следующий скрипт AWK:

 #!/usr/bin/awk -f BEGIN { filename = "" } /^$/ { filename = "" stanza = 0 } /Package:/ { if ($2 == PACKAGE) { stanza = 1 if (filename != "") { print filename stanza = 0 } } } /Filename:/ { filename = $2 if (stanza == 1) { print filename filename = "" } } 

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

Я не думаю, что то, что вы пытаетесь достичь, соответствует идее иметь репозиции как таковые. Идея заключается в том, что вам нужно будет добавить репо к реполисту, а затем установить его и т. Д.

Можно загружать пакет вручную (я делаю это довольно часто с пакетами RPM для Fedora) и устанавливаю пакет вручную с помощью обычных инструментов (в моем случае dnf ).

Обычно я использую URL-адрес из /etc/yum.repos.d/<repo>.repo а затем просто просматриваю браузер и загружаю с помощью wget . Он должен быть аналогичен пакетам DEB.

Так,

  1. Загрузите пакет вручную с помощью браузера или wget
  2. Установите с клиентом управления пакетами из cli.

Если репо напрямую доступно онлайн (что я не вижу, почему нет), dnf понимает, когда ему присваивается URL-адрес пакета RPM. Я уверен, что эквивалентный инструмент Debian сделает то же самое. Таким образом, вы сохраните загрузку пакета с помощью браузера или с помощью wget .

Насколько я понимаю, вы заинтересованы только в загрузке пакетов. Так что в этом случае я думаю, что использование простого wget – лучший способ пойти и т. Д.

Возможно, этот сценарий является решением для ваших нужд:

 #! / Bin / Баш

 U = "$ 1"
 FILE = "$ 2"

 [[-z "$ U"]] && echo -e "Использование: $ 0 repo-url [файл для загрузки] \ nwoutout предоставить \" файл для загрузки \ "этот скрипт будет перечислять файлы внутри repo \ n";

 для i в $ (curl -l "$ U" 2> / dev / null | grep -i 'href =' | sed -e 's /.* href = // g' -e 's_.*/ / g '-e' s / "// g '| grep -v' / $ '| grep" $ FILE ")
 делать
  если [[-z "$ FILE]]]
  тогда
   echo "FILE: $ i"
  еще
   echo "Скачать файл: $ i"
   curl -q "$ {U} / $ {i}" --output "$ i" 2> / dev / null
   ls -la "$ i"
  фи
 сделанный

  • Проверка вывода для конкретных расширений в выражении if
  • Разница между установкой и установкой в ​​dpkg.log
  • Не удалось создать для Ubuntu
  • Как повлиять на порядок обновления пакета (apt-get upgrade / dist-upgrade)
  • Как некоторые пакеты deb найдены dpkg-query, пока они еще не установлены?
  • Как работает / var / lib / dpkg / lock?
  • Поведение dpkg -S, когда аргумент начинается с косой черты
  • Я удалил / bin / rm. Как его восстановить?
  • Как настраивать сборщик debian's busybox?
  • Обмен кодом между сценариями dpkg
  • Укажите опцию diff для подсказки файла конфигурации dpkg
  • Почему некоторые пакеты недоступны в моей установке Debian Jessie?
  • Interesting Posts

    Сервер SSH синхронизирует локальный хост и переназначает разрывы выхода X11

    Почему Vim только активирует мою настройку выделения после того, как я вручную извиню .vimrc?

    Как закрыть все приложения в рабочей области?

    Вызывать команды экрана вне сеанса

    Как извлечь текущую дату Date Log из файла catalina.out

    Движение курсора в терминалах

    Настройка файловой системы ext4 для раздела хранения

    Как установить libXcursor.so.1 на Debian?

    Диагностика потерянного сетевого подключения на Ubuntu

    Транспонирование нескольких столбцов – это строка

    Почему у Linux так много проблем с зависимостями при установке программного обеспечения, в то время как Windows не только немногие, как VC ++?

    uim не может зарегистрировать mozc (ubuntu)

    1 FastCGI, отправленный в stderr: «Сообщение PHP: PHP Неустранимая ошибка: session_start (): Не удалось инициализировать модуль памяти:

    Связанный сетевой кабель ==> USB Wi-Fi разбился

    Почему end-of-line $ anchor не работает с командой grep, даже если привязка front-of-line ^?

    Linux и Unix - лучшая ОС в мире.