Использование unrar в Centos
На корпоративных серверах обычно используются образы с Centos. Оно в принципе понятно и обосновано. Но столкнулся с тем, что 7zip, идущий в поставке epel репозитория полностью избавлен от поддержки rar-архивов. И если в ubuntu есть отдельные пакеты с non-free плагинами, то здесь их нет.
Для написания ansible-плейбука можно было бы использовать и пакет unar. Обратите внимание на отсутствие в имени пакета одной буквы r. Но, во-первых, использовать плейбук планировалось на Jenkins-сервере. И, во-вторых, пришлось бы прописывать массу условий для использования того или иного архиватора для работы. Хотелось немного упростить работу и использовать какой-нибудь комбайн, умеющий работать со множеством архивов. Собственно именно поэтому и рассматривал как вариант 7zip.
Довольно долго искал альтернативы, варианты. В итоге остановился на варианте сборки собственного дистрибутива 7zip для centos, с поддержкой rar. Для этого достаточно только скачать дистрибутив с исходниками с официального сайта: 7zip , распаковать его и выполнить команду:
make 7z
Что создаст директорию bin со следующим содержимым:
./bin
|- 7z
|- 7z.so
|- Codecs
|- Rar.so
При сборке на centos будет использовать линковка с библиотеками системы. И могут запускаться из любой директории, куда их разместить. Осталось только продумать, каким образом доставлять их на Jenkins-сервер.
Директорию bin переименовал в 7z, после чего запаковал в zip-архив и опубликовал в приватный nexus-репозиторий. В ansible-плейбуке добавил шаги по скачиванию дистрибутива с nexus, распаковки его в рабочую директорию, и запуск 7z для создания архива или для работы с готовыми архивами.
Таким образом не потребовалось вносить изменения в конфигурацию Jenkins-сервера. И при этом получил возможность использования большого числа форматов архивов с использованием всего одной команды.