Ответ на форуме даёт полное имя файла, и имя выглядит как решение: один .deb, одна команда, готово. На самом деле эта строка кодирует версию пакета, архитектуру процессора и набор дистрибутива, против которого он был собран в тот день, когда кто-то написал сообщение. Ни одно из этих трёх не описывает автоматически плату на вашем столе. Старая загрузка — это снимок состояния одной машины, а не план установки для вашей.

Что имя файла тихо фиксирует

Читайте имя вроде openfortivpn_1.17.0-1_armhf.deb справа налево. Суффикс — это архитектура, под которую скомпилирован бинарный файл, среднее поле — версия upstream и пакетирования, а неявное четвёртое поле — набор библиотек дистрибутива, в котором он собран.

В 64-битной установке Raspberry Pi OS архитектура системы — arm64, поэтому dpkg -i отклоняет пакет armhf из-за несовпадения архитектуры. Даже там, где multiarch позволяет установку, бинарный файл ожидает версии библиотек из того выпуска, против которого он собран, а более новая базовая система может их уже не предоставлять. Результат — установленный пакет, у которого исполняемый файл не запускается, и это тот самый сбой, который люди обычно ошибочно приписывают самому клиенту.

То, что плата — устройство ARM, не делает пакет ARM подходящим. Архитектура — одна ось; выпуск и ABI — две другие, и они отказывают независимо.

Спросите дистрибутив, прежде чем просить ссылку на скачивание

Каждый поддерживаемый канал может сказать, что он установил бы прямо сейчас. Выполните запрос на целевой машине, с теми репозиториями, которые она действительно использует, прежде чем рассматривать какую-либо передачу файлов.

cat /etc/os-release
dpkg --print-architecture
apt-cache policy openfortivpn

Строка кандидата с версией и именем репозитория означает, что у дистрибутива уже есть сборка для этой системы. Отсутствие кандидата или кандидат из набора, который вы не собирались использовать, — это информация о ваших источниках, а не о том, что программа где-то существует.

Если обновление метаданных не удаётся, держите этот сбой отдельно от вопроса о пакете. Разрешение имён, транспорт репозиториев, отсутствующая подпись Release и набор с истёкшим сроком поддержки ломают apt update ещё до того, как клиент вообще вступает в дело. Исправление источников — другая задача, чем выбор VPN-клиента, и смешивание двух — это то, как люди направляют текущую систему на устаревший выпуск.

Что проверяет apt и чего не получает скачанный файл

Обычная установка следует цепочке подписей: архив подписывает свой индекс, индекс несёт хэши каждого пакета, и пакет должен совпадать. справка по аутентификации архива отделяет эту цепочку от идеи проверять подпись, прикреплённую к каждому отдельному файлу.

Файл, сохранённый со старой HTTP-ссылки, не имеет ничего из этого. Он приходит без идентичности репозитория, не обновляется, когда дистрибутив исправляет клиент, и ничто не фиксирует, кто отвечает за его замену. Это всё ещё может быть законным выбором для администратора с закреплённым артефактом, но выбор должен идти с владельцем, где-то записанной контрольной суммой и планом следующего обновления безопасности.

Подавление ошибок подписи или отключение проверки TLS, чтобы старая инструкция продолжала работать, убирает единственную часть процесса, которая что-то проверяла. Восстановите вместо этого падающую проверку.

Установите клиент, затем отлаживайте соединение отдельно

Когда поддерживаемый кандидат существует, установите его через обычную проверенную транзакцию и дайте менеджеру пакетов записать, что он сделал.

Если развёртыванию действительно нужна сборка из upstream, следуйте текущим инструкциям проекта по сборке и относитесь к ней как к программе, которую вы теперь сопровождаете: пакеты разработки, pkg-config, заголовки библиотеки TLS и демон PPP — настоящие зависимости, как и процедура удаления, которая понадобится позже.

Установка — это только локальный программный этап. Шлюз должен принять протокол и поток аутентификации клиента, клиент должен доверять сертификату, который представляет шлюз, а туннелю нужен работающий слой PPP плюс маршруты и владелец резолвера. Завершённая транзакция пакета ничего не доказывает о том, принимает ли шлюз учётную запись или доступен ли частный диапазон. Проверяйте каждый слой там, где он ломается, вместо повторного запуска установщика.

План, который должен заменить старое имя файла

Сначала запишите идентичность платформы: выпуск ОС, архитектуру и список используемых источников. Затем назовите разрешённое место, откуда приходит пакет — будь то репозиторий дистрибутива, репозиторий поставщика с закреплённым ключом или сборка, которую вы компилируете и пакетируете сами.

Наконец, назовите сопровождающего и путь обновления. Pi, на котором работает клиент, которым никто не владеет, будет работать до первого обновления библиотеки, а затем ту же тему на форуме снова найдёт кто-то с той же проблемой.

Исправленное убеждение достаточно просто сформулировать одной строкой: старый пакет — доказательство того, что клиент когда-то собрался и работал, а не доказательство того, что он установится на вашей плате сегодня вечером. Проверьте три оси, затем выберите канал, который вы можете продолжать обновлять.

Похожие статьи