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

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

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

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


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

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

  • Случайно запустить «apt install *» теперь все пакеты помечены как «вручную установленные»,
  • debootstrap завершается частично через "stdin: не в сжатом формате"
  • Ошибка при установке Apache; ошибка: «E: Sub-process / usr / bin / dpkg возвращает код ошибки (1)»
  • Могу ли я одновременно использовать GnuPG 2 и GnuPG 1, видя одни и те же клавиши?
  • понимание номеров версий пакета Debian dpkg
  • Как сделать dpkg быстрее?
  • «UnicodeDecodeError:« utf-8 »кодек не может декодировать байт 0xff в позиции 0: недопустимый стартовый байт» при попытке удалить пакет nvidia-304
  • Состояние DPKG повреждено
  • 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"
      фи
     сделанный
    
    
    Interesting Posts

    Печать полей из файла только в том случае, если строка начинается с определенного слова

    Как установить тег по умолчанию для окон jEdit в Awesome WM?

    Установка вентилятора процессора на 100%

    как я могу получить файлы для монтирования после установления беспроводного соединения?

    разрешение на доступ к файлам запрещено, а некоторые сеансы убиты

    sed – печатать строки, соответствующие диапазону шаблонов, если одна строка соответствует условию

    Если я устанавливаю вредоносное ПО, что он может сделать?

    транспонировать наборы из трех строк в столбцы

    Простое переключение на динамический менеджер окон из KDE

    сеть: хост назначения недоступен

    Make: рецепт для целевого 'pcap-bt-monitor-linux.o' не выполнен

    Перезагрузка системы во время запуска при кажущейся случайной точке при каждой загрузке

    Что такое стандартная графическая карта, поддерживаемая QEMU?

    Скопируйте и получите файлы с одной машины, которая связана через ssh с другим

    Linux: что есть на каждом из моих жестких дисков

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