Wget + Make

Содержание
Введение
Проверка существования директории
Wildcard: скачивание по неполному имени
Связанные статьи

Введение

Про make отдельно можно прочитать в статье make

Про wget в статье wget

Предварительно изучите эти статьи если ваши знания по теме не очень обширны.

В этой статье вы можете изучить несколько примеров их совместного использования

Проверка существования директории

Полезно проверить существование директории, в которую вы хотите что-то скачать. Если такой нет, можно её создать

LINUX_DIR=/home/$$(whoami)/Downloads/linux_isos/ .PHONY: centos7-readme centos7-readme: # Download centos7_README.txt $(check_dir) @if [ ! -f $(LINUX_DIR)centos7_README.txt ]; then \ wget -c http://centos.mirror.far.fi/7.9.2009/isos/x86_64/0_README.txt \ -O $(LINUX_DIR)centos7_README.txt; \ else \ echo "centos7_README.txt already exists"; \ fi define check_dir if [ ! -d $(LINUX_DIR) ]; then \ echo "INFO: Creating dir "$(LINUX_DIR); \ mkdir -p $(LINUX_DIR); \ fi endef

Wildcard: скачивание по неполному имени

У файла в репозитории может периодически меняется часть имени.

Например, выходит новая версия у которой в названии другие цифры.

Мне часто нужно скачивать самую последнюю версию софта, не важно какие у него цифры в имени. Я переименовываю скачанный файл в какое-то легко запоминаемое название.

С этим помогает использование * - wildcard

Допустим, нам нужен файл
ubuntu-18.00.1-desktop-amd64.list
а может быть уже вышла новая версия -
ubuntu-18.04.6-desktop-amd64.list

в общем мы не хотим заносить в скрипт точный номер.

Нам нужно скачать актуальную версию файла и переименовать в ubuntu-desktop.list если файл уже есть - скачивать не нужно, нужно выдать предупреждение.

Для примера воспользуемся репозиторием Ubuntu от компании Yandex https://mirror.yandex.ru/ubuntu-releases/bionic/

Обратите внимание - не все репозитории поддерживают wildcard я пробовал репозиторий от Timeweb - https://mirror.timeweb.ru/ubuntu-releases/bionic/ и скрипт не сработал.

Будем считать, что это скрипт работает при поддержке сервиса Yandex Аренда - переходите по ссылке если сдаёте/ищете жильё.

LINUX_DIR=/home/$$(whoami)/Downloads/linux_isos/ UBUNTU_REPO="mirror.yandex.ru" .PHONY:download-ubuntu-desktop-list download-ubuntu-desktop-list: # Download ubuntu-desktop.list $(check_dir) @if [ ! -f $(LINUX_DIR)ubuntu-desktop.list ]; then \ wget -r -np "https://$(UBUNTU_REPO)/ubuntu-releases/bionic/ubuntu-18.04.6-desktop-amd64.list" \ -A "*-desktop-amd64.list"; \ else \ echo "WARNING: ubuntu-desktop.list already exists"; \ fi sudo mv ./$(UBUNTU_REPO)/ubuntu-releases/bionic/* $(LINUX_DIR)ubuntu-desktop.list @rm -rf $(UBUNTU_REPO) define check_dir @if [ ! -d $(LINUX_DIR ]; then \ echo "INFO: Creating dir "$(LINUX_DIR; \ mkdir -p $(LINUX_DIR); \ else echo "INFO: Directory "$(LINUX_DIR" already exists"; \ fi endef

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

ls /home/$(whoami)/Downloads/linux_isos

centos7_README.txt ubuntu-desktop.list

Пояснения: сначала с репозитория была скачана вся иерархия до файла ubuntu-18.04.6-desktop-amd64.list

Если бы мы в этот момент выполнили

tree mirror.timeweb.ru

То увидели бы

mirror.timeweb.ru └── ubuntu-releases └── bionic └── ubuntu-18.04.6-desktop-amd64.list

Затем командой mv файл перемещается в нужную директорию и переименовывается.

Последний шаг - удаление ненужной более иерархии

Похожие статьи
wget + make
make
CURDIR
shell
-c: Компиляция
Linux
Bash
C
C++
C++ Header файлы
Configure make install
DevOps
Docker
OpenBSD
Errors make

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: