Использование unrar в Centos

17 July 2018 #linux#soft#travis

На корпоративных серверах обычно используются образы с 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-сервера. И при этом получил возможность использования большого числа форматов архивов с использованием всего одной команды.