Вопрос или проблема
Я хочу установить rsync 3.2.7 на Ubuntu 20.04, но не уверен, возможно ли это; в настоящее время у меня установлена 3.1.3 (которая установлена по умолчанию).
Я нашел этот вопрос, но в нем упоминается только 3.2.3, которая меня не интересует.
Попытка установить 3.2.7 из deb-пакета, предназначенного для 22.04, очевидно, провалилась.
После ~1 часа исследований я не смог найти способ или информацию, которая указала бы мне решение, как установить 3.2.7 или возможно ли это вообще.
Что бы я сделал:
Отредактируйте /etc/apt/sources.list.d/official-package-repositories.list
или /etc/apt/sources.list
(сделайте резервную копию перед этим).
Замените все вхождения fridge
на jammy
.
Затем выполните
apt update
$ apt policy rsync
rsync:
Установлено: 3.2.7-0ubuntu0.22.04.2
Кандидат: 3.2.7-0ubuntu0.22.04.2
Таблица версий:
*** 3.2.7-0ubuntu0.22.04.2 500
500 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
3.2.3-8ubuntu3 500
500 http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
apt upgrade rsync
Тогда, если apt
не пытается обновить всю систему, это должно сработать.
После этого восстановите резервные файлы, затем снова выполните apt update
.
Или, возможно, рассмотрите возможность обновления до jammy
.
Возможно добавить репозиторий и установить оттуда, но проблема в том, что репозитории создаются для более поздних версий Ubuntu, таких как 22.04 и 22.10. Чаще всего всё будет в порядке, но это тот случай, когда он устанавливает или обновляет пакеты, которые не соответствуют поддерживаемым репозиториям для вашей версии, и вы оказываете в зависимости на дне ада.
Лучшая опция — скомпилировать его из исходников.
Исходный код для rsync 3.2.7
доступен здесь: https://github.com/RsyncProject/rsync/releases/tag/v3.3.0
Вам нужно будет убедиться, что установлены необходимые инструменты для сборки. Затем добавьте директорию двоичного файла rsync 3.2.7
в ваш $PATH
через один из ваших инициализационных файлов оболочки, чтобы она была доступна при входе в систему, а затем выполните его или начните новую сессию оболочки или используйте export PATH=/path/to/rsync/bi/:$PATH
, чтобы изменения вступили в силу немедленно. Это даст вам то, что вам нужно, избегая ада зависимости, добавляя репозиторий с более поздними пакетами.
Ответ или решение
Для установки rsync версии 3.2.7 на Ubuntu 20.04.2, существует несколько подходов. Важно отметить, что версия rsync 3.1.3 является стандартной для вашей конфигурации, и просто обновление из репозиториев Jammy (22.04) может вызвать проблемы с зависимостями. Мы рекомендуем установить нужную версию из исходников, чтобы избежать таких проблем.
Вот пошаговая инструкция для установки rsync 3.2.7:
Шаг 1: Установите необходимые пакеты для сборки
Откройте терминал и выполните следующую команду для установки необходимых инструментов для сборки:
sudo apt update
sudo apt install build-essential wget
Шаг 2: Скачайте исходный код rsync
Затем скачайте исходный код rsync версии 3.2.7:
wget https://download.samba.org/pub/rsync/src/rsync-3.2.7.tar.gz
Распакуйте архив:
tar -xzf rsync-3.2.7.tar.gz
cd rsync-3.2.7
Шаг 3: Соберите и установите rsync
Теперь соберите и установите rsync:
./configure
make
sudo make install
Шаг 4: Проверьте установку
После завершения установки проверьте, что rsync установлен корректно, выполнив команду:
rsync --version
Вы должны увидеть информацию о версии 3.2.7.
Шаг 5: (Опционально) Добавьте в PATH
Если вы хотите, чтобы система всегда использовала вашу установленную версию rsync, вам нужно добавить путь к её расположению в переменную окружения PATH. Это можно сделать, добавив следующую строку в файл .bashrc
(или другой инициализационный файл, который вы используете):
export PATH=/usr/local/bin:$PATH
Не забудьте перезагрузить терминал или выполнить команду source ~/.bashrc
, чтобы изменения вступили в силу.
Заключение
Следуя этим шагам, вы сможете установить rsync версии 3.2.7 на вашу систему Ubuntu 20.04.2 без необходимости смешения репозиториев и рисков, связанных с зависимостями.