Как скачать программу с GitHub в Linux через терминал: git clone, wget и curl

Разбираемся, как скачать программу, файл или целый репозиторий с GitHub через терминал Linux. Примеры с `git clone`, `wget`, `curl`, архивами и готовыми бинарниками.
На GitHub лежит огромное количество программ, скриптов и различных утилит для Linux. И довольно часто инструкция заканчивается примерно так:
Скачайте последнюю версию с GitHub.
Если на Linux установлен графический интерфейс, можно открыть браузер, нажать Releases, скачать архив и распаковать его. Но на сервере, Raspberry Pi, Orange Pi, Rock Pi или обычной Debian-машине без рабочего стола гораздо удобнее сделать всё непосредственно через терминал.
Здесь есть важный нюанс: скачать программу с GitHub можно несколькими совершенно разными способами.
Можно:
- клонировать весь репозиторий через
git clone; - скачать конкретный файл через
wget; - скачать файл через
curl; - загрузить готовый бинарник из GitHub Releases;
- скачать ZIP или
tar.gzс исходниками; - скачать установочный скрипт и сначала проверить его содержимое.
Разберём каждый вариант и заодно выясним, почему git clone далеко не всегда является правильной командой.
Подготавливаем Linux
В Debian, Ubuntu, Armbian и большинстве основанных на них систем сразу поставим основные инструменты:
sudo apt update
sudo apt install -y git wget curl unzip
Проверить, что всё установилось:
git --version
wget --version
curl --version
Для большинства дальнейших примеров этого достаточно.
Сначала разберёмся: репозиторий или готовая программа
Это одна из основных ошибок начинающих пользователей Linux.
Допустим, на GitHub есть проект:
OWNER/PROGRAM
На его основной странице находится исходный код. Кнопка Code позволяет клонировать этот репозиторий.
Но готовые версии программы разработчик может публиковать отдельно в разделе Releases.
Получается два разных варианта.
Репозиторий
Обычно содержит:
- исходный код;
- документацию;
- конфигурационные файлы;
- скрипты сборки;
- историю проекта.
Его можно получить через:
git clone
Release
Может содержать уже собранные программы:
program-linux-amd64
program-linux-arm64
program-linux-amd64.tar.gz
program-linux-arm64.zip
program.deb
Если задача заключается просто в установке программы, обычно разумнее сначала посмотреть Releases.
Компилировать исходный код самостоятельно только потому, что проект находится на GitHub, совершенно необязательно.
Как скачать репозиторий с GitHub через git clone
Самый известный вариант выглядит так:
git clone https://github.com/OWNER/REPOSITORY.git
Например, если репозиторий называется:
OWNER/program
команда будет иметь вид:
git clone https://github.com/OWNER/program.git
После выполнения Git создаст каталог:
program
Переходим в него:
cd program
Посмотреть содержимое:
ls -la
git clone загружает не просто отдельный файл, а локальную копию Git-репозитория.
Это удобно, если проект потом потребуется обновлять.
Например:
cd program
git pull
Команда git pull получает изменения из удалённого репозитория и обновляет локальную копию.
Как скачать только последнюю версию репозитория
Полная история разработки нужна далеко не всегда.
Для обычной установки или просмотра исходников можно сделать неглубокое клонирование:
git clone --depth 1 https://github.com/OWNER/REPOSITORY.git
Параметр:
--depth 1
загружает только последнее состояние репозитория без всей предыдущей истории Git.
Для крупных проектов это может заметно сократить объём скачиваемых данных.
Как скачать файл с GitHub через wget
Если нужен один конкретный файл, клонировать весь репозиторий бессмысленно.
Для этого удобнее использовать wget.
Общий вид команды:
wget URL
Например:
wget https://example.com/program.tar.gz
Файл сохранится в текущий каталог.
Посмотреть его:
ls -lh
Если нужно явно указать имя:
wget -O program.tar.gz URL
После загрузки можно проверить размер:
ls -lh program.tar.gz
Как скачать файл с GitHub через curl
То же самое можно сделать через curl.
Но здесь есть небольшое отличие.
Обычная команда:
curl URL
выведет полученные данные прямо в терминал.
Чтобы сохранить файл, используем:
curl -L -o program.tar.gz URL
Где:
-Lразрешает переходить по HTTP-перенаправлениям;-oзадаёт имя сохраняемого файла.
Если имя файла уже нормально присутствует в URL, можно использовать:
curl -L -O URL
Заглавная -O говорит curl сохранить файл с именем, полученным из URL.
Для GitHub параметр -L особенно полезен, поскольку загрузка файла может проходить через перенаправление.
Как скачать программу из GitHub Releases
Теперь наиболее практичный вариант.
Допустим, разработчик публикует в Releases такие файлы:
program-linux-amd64.tar.gz
program-linux-arm64.tar.gz
program-windows-amd64.zip
Нам сначала нужно определить архитектуру своего Linux.
Выполняем:
uname -m
На обычном ПК или VPS чаще всего увидим:
x86_64
Это обычно соответствует вариантам с названием:
amd64
x86_64
x64
На современных ARM-одноплатниках можно получить:
aarch64
Тогда обычно нужен файл:
arm64
aarch64
На более старых 32-битных ARM-системах встречается:
armv7l
Важно: конкретные названия файлов определяет разработчик программы. Всегда проверяйте описание Release.
После того как нужный файл найден, его адрес можно скачать через:
wget URL_ФАЙЛА
или:
curl -L -O URL_ФАЙЛА
Почему архитектура программы имеет значение
Представим, что у нас Orange Pi с ARM64:
uname -m
возвращает:
aarch64
А мы случайно скачали:
program-linux-amd64
При запуске Linux может ответить примерно так:
cannot execute binary file: Exec format error
Проверить тип скачанного файла можно командой:
file program
Например:
ELF 64-bit LSB executable, x86-64
или:
ELF 64-bit LSB executable, ARM aarch64
Если архитектура программы не совпадает с архитектурой системы, скачиваем другой вариант Release.
Как распаковать tar.gz
Очень часто программы на GitHub распространяются в архиве:
program-linux-amd64.tar.gz
Распаковываем:
tar -xzf program-linux-amd64.tar.gz
После этого смотрим содержимое:
ls -lah
Если хочется сначала посмотреть, что лежит внутри архива, не распаковывая его:
tar -tzf program-linux-amd64.tar.gz
Это особенно полезно перед распаковкой неизвестного архива.
Как распаковать ZIP
Если программа распространяется в ZIP:
unzip program-linux-amd64.zip
Посмотреть содержимое ZIP перед распаковкой:
unzip -l program-linux-amd64.zip
Если команда unzip отсутствует:
sudo apt install unzip
Как сделать скачанную программу исполняемой
После скачивания Linux может не разрешить запуск файла:
./program
и ответить:
Permission denied
Проверяем права:
ls -l program
Добавляем право на выполнение:
chmod +x program
Теперь запускаем:
./program
Почему используется ./?
Linux обычно не ищет программы в текущем каталоге автоматически. Поэтому:
program
может вернуть:
command not found
а:
./program
явно означает: запусти файл program, находящийся в текущем каталоге.
Как установить бинарник, чтобы команда работала отовсюду
Допустим, мы скачали программу:
program
и она нормально запускается:
./program
Чтобы потом можно было выполнять просто:
program
бинарник можно установить в /usr/local/bin:
sudo install -m 0755 program /usr/local/bin/program
Проверяем:
which program
Ожидаемый результат:
/usr/local/bin/program
Теперь программу можно запускать из любого каталога:
program
Каталог /usr/local/bin как раз подходит для программ, устанавливаемых администратором вручную и не управляемых пакетным менеджером дистрибутива.
Если GitHub предлагает DEB-пакет
Иногда в Releases уже имеется:
program_amd64.deb
Для Debian, Ubuntu и Armbian это очень удобный вариант.
Скачиваем файл и устанавливаем:
sudo apt install ./program_amd64.deb
Именно apt install, а не просто распаковка архива, позволяет пакетному менеджеру обработать зависимости программы.
После установки проверяем:
program --version
Название команды зависит от конкретной программы.
Как скачать исходники без git clone
Если Git вообще не нужен, GitHub позволяет получить архив определённой ветки или тега.
Например, архив основной ветки обычно имеет структуру адреса:
https://github.com/OWNER/REPOSITORY/archive/refs/heads/main.tar.gz
Скачать его можно через:
wget -O source.tar.gz URL
Затем:
tar -xzf source.tar.gz
В отличие от git clone, здесь мы получаем обычный снимок файлов проекта без истории Git.
Git clone или wget: что использовать
Если коротко:
| Задача | Что использовать |
|---|---|
| Скачать весь Git-репозиторий | git clone |
| Скачать репозиторий без старой истории | git clone --depth 1 |
| Скачать один файл | wget или curl |
| Скачать готовую Linux-программу | GitHub Releases + wget/curl |
| Скачать исходники архивом | ZIP или tar.gz |
В дальнейшем делать git pull |
git clone |
Установить готовый .deb |
apt install ./file.deb |
То есть команда git clone не является универсальным способом установки программ с GitHub.
Иногда она вообще не нужна.
Осторожнее с командами curl | bash
На GitHub часто встречаются инструкции примерно такого вида:
curl -fsSL URL | bash
или:
wget -qO- URL | bash
Такая команда скачивает скрипт и сразу передаёт его оболочке Bash на выполнение.
Это действительно удобно, но есть очевидный недостаток: код выполняется сразу.
Если источник вызывает хоть какие-то сомнения, безопаснее сначала скачать файл:
curl -fsSL URL -o install.sh
Посмотреть его:
less install.sh
или открыть в редакторе:
nano install.sh
И только после проверки выполнить:
bash install.sh
Если скрипту действительно необходимы права администратора:
sudo bash install.sh
Особенно внимательно стоит относиться к установочным скриптам, которые запускаются от root.
Ошибка git: command not found
Если команда:
git clone ...
возвращает:
git: command not found
устанавливаем Git:
sudo apt update
sudo apt install git
И повторяем команду.
Ошибка wget: command not found
Установка:
sudo apt install wget
Ошибка curl: command not found
Установка:
sudo apt install curl
Ошибка 404 при скачивании Release
Например:
404 Not Found
Чаще всего это означает, что ссылка ведёт на старую версию программы или разработчик переименовал файл.
Адрес Release обычно содержит номер версии, поэтому после выхода обновления ссылка из старой инструкции может перестать подходить.
В таком случае нужно открыть страницу проекта и проверить актуальный Release.
Не стоит механически менять номер версии в URL: название файла или структура Release тоже могли измениться.
curl скачал не то, что нужно
Если вместо программы появился маленький файл с HTML или текстом перенаправления, убедитесь, что используете:
curl -L -O URL
или:
curl -L -o program.tar.gz URL
Параметр -L заставляет curl следовать HTTP-редиректам.
Проверить полученный файл:
file program.tar.gz
Например, для gzip-архива должно быть что-то похожее на:
gzip compressed data
Если вместо этого видим:
HTML document
значит скачалась веб-страница, а не нужный архив.
Permission denied после скачивания программы
Если:
./program
возвращает:
Permission denied
проверяем:
ls -l program
и разрешаем выполнение:
chmod +x program
После этого:
./program
Exec format error
Ошибка:
Exec format error
в первую очередь заставляет проверить архитектуру.
Система:
uname -m
Программа:
file program
Например, бинарник x86-64 не запустится непосредственно на ARM64-системе.
Программа скачалась, но как её устанавливать дальше?
Здесь единой команды уже нет.
GitHub является площадкой для хранения проектов, а не единым пакетным менеджером Linux.
После скачивания в репозитории стоит искать:
README.md
INSTALL
docs/
Посмотреть README прямо из терминала можно так:
less README.md
Иногда установка выглядит как:
sudo install -m 0755 program /usr/local/bin/program
Иногда:
sudo apt install ./program.deb
Иногда проект нужно собирать из исходников.
А некоторые программы вообще запускаются непосредственно из скачанного каталога.
Поэтому перед выполнением случайной команды лучше хотя бы бегло прочитать инструкцию именно этого проекта.
Самый простой алгоритм
Если нужно поставить неизвестную программу с GitHub на Linux, я бы действовал так.
Сначала определяем архитектуру:
uname -m
Затем на странице GitHub смотрим раздел Releases.
Если там есть готовый файл под нашу архитектуру:
linux-amd64
linux-arm64
aarch64
x86_64
.deb
.tar.gz
скачиваем его:
wget URL
или:
curl -L -O URL
Если это архив:
tar -xzf archive.tar.gz
Если бинарник:
chmod +x program
./program
Если всё работает и программу нужно запускать постоянно:
sudo install -m 0755 program /usr/local/bin/program
А git clone используем тогда, когда действительно нужен сам репозиторий, а не просто готовая программа.
Так гораздо проще ориентироваться в GitHub с Linux-сервера и не клонировать несколько сотен мегабайт исходников ради одного исполняемого файла.
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Свой сайт на одноплатнике: реально ли это в 2026 году
LattePanda Mu Ultra: x86-модуль с Intel Core Ultra и 115 TOPS размером с банковскую карту
3x-ui для администратора: защита панели и резервные копии
Proxmox Backup Server: настройка бэкапа и восстановление VM
Remnawave: архитектура панели, ноды и безопасная эксплуатация