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 |
РЕКЛАМА от Google. Может быть недоступна в вашем регионе.
Конец рекламы от Google. Если в блоке пусто считайте это рекламой моей телеги