Разделы

ПО Софт Техника

Криворукие пользователи сломали установщик программ, появления которого в Windows ждали 35 лет

Пользователи winget – первый бесплатный менеджер пакетов для Windows 10, который позволяет легко и быстро установить любую из более чем 1,5 тыс. доступных популярных программы, не удержались и забросали репозиторий проекта «мусором», обойдя автоматические проверки. Чтобы исправить ситуацию, Microsoft пришлось привлечь людей к процедуре проверки пакетов, предлагаемых к включению в репозиторий.

Машина не заменила человека

Microsoft ввела ручную проверку добавляемых пользователями программ в репозиторий проекта winget, новейший пакетный менеджер для операционной системы Windows 10, который позволяет легко и быстро устанавливать программы с использованием интерфейса командной строки.

Таким образом команда проекта ответила на резкий наплыв некорректно оформленных пакетов, созданных либо имеющими злой умысел, либо просто неумелыми пользователями.

Ранее, по данным издания The Register, «контроль качества» осуществлял специальный бот. Теперь же по просьбе пользователей ключевой разработчик winget – Деметриус Нелон (Demetrius Nelon) сформировал команду из 14 модераторов, которая займется отсеиванием «плохих» пакетов.

Microsoft ввела ручную модерацию в репозитории winget после того, как пользователи закидали его «кривыми» пакетами

Разработчики также намерены запустить процедуру проверки пользователей, публикующих программы в репозитории winget. По словам Нелона, у компании есть планы на этот счет, реализация которых «близка к завершению».

Команда winget также запустила на Github открытое обсуждение, посвященное направлению развития модерации репозитория проекта. В своем стартовом сообщении Нелон попросил участников обсуждения подойти к вопросу позитивно и конструктивно.

Суть проблемы

Чтобы добавить пакет с приложением в репозиторий winget, пользователю необходимо сформировать так называемый манифест и отправить его в виде пул-реквеста (pull request, запрос на принятие изменений в коде) в Github-репозиторий проекта.

Манифест – это специальный файл, содержащий данные, которые необходимы менеджеру пакетов для корректной работы с пакетом. Благодаря манифесту winget «знает», в частности, о версии приложения, архитектуре процессора, на работу с которым оно рассчитано, а также о типе установщика и том, откуда именно его нужно загружать.

Написать манифест можно вручную или сгенерировать с помощью разработанной Microsoft утилиты Windows Package Manager Manifest Creator.

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

Однако, как выяснилось, валидация манифестов не всегда проходила по плану. Как пишет Bleeping Computer, примерно с 31 мая 2021 г. пользователи начали засыпать репозиторий проекта неправильно оформленными пакетами и дубликатами, которые не были отвергнуты автоматикой. К примеру, в некоторых случаях ссылка на местоположение инсталлятора приложения могла оказаться недоступной. Дубликаты же, в свою очередь, могли заменять уже представленные в репозитории пакеты. Причем качество метаданных в подобных ситуациях оставляло желать лучшего.

Пользователь KaraKad, по данным Bleeping Computer, насчитал около 60 «кривых» пул-реквестов, в Github winget. Журналисты издания обратили свое внимание на манифест к пакету конвертера документов PrimoPDF, который содержал некорректные URL (сетевой адрес) инсталлятора и идентификатор пакета. Также пострадали популярный свободный медиа-плеер VLC и игровой клиент Steam – их манифесты были перезаписаны небрежно оформленными дубликатами.

Пакетный менеджер «в стиле Linux»

Утилита winget во многом напоминает инструменты для управления пакетами, применяемые в популярных дистрибутивах Linux – в Debian и Ubuntu, к примеру, это программа apt. Инструмент позволяет при помощи ввода простой однострочной команды в консоли установить одно или сразу несколько приложений из курируемого Microsoft репозитория.

Winget может пригодиться пользователям и администраторам Windows 10, которые автоматизируют процессы установки и удаления приложений при помощи скриптов или пакетных файлов. Благодаря поддержке новым пакетным менеджером интерфейса командой строки пользователи, в первую очередь программисты, могут быстро устанавливать нужное для работы ПО без необходимости всякий раз запускать установщик каждого приложения и взаимодействовать с многочисленными диалоговыми окнами.

Искусственный интеллект в электронном документообороте: ожидания, реальность и будущее
Маркет

Важным преимуществом менеджеров пакетов является то, что они, как правило, умеют разрешать зависимости, то есть при установке какого-либо приложения автоматически загружают необходимые для его работы библиотеки и другие компоненты подходящих версий. Однако в Windows 10 проблема зависимостей актуальна в меньшей степени, нежели в Linux-системах, поскольку Windows-разработчики предпочитают упаковывать в инсталлятор сразу все необходимые программе компоненты.

Пакетный менеджер winget с открытым исходным кодом впервые был представлен в мае 2020 г. в рамках конференции для разработчиков Microsoft Build 2020.

В апреле 2021 г. с выходом превью-релиза winget 0.3 пользователям утилиты стали доступны команды удаления любых установленных в системе программ, а также вывод на экран их полного перечня.

26 мая 2021 г. состоялся полноценный релиз (1.0) менеджера пакетов для Windows 10.

Интранет в HR-стратегии: как автоматизировать рутину и вовлечь сотрудников в корпоративную культуру
Бизнес

Загрузить winget можно из официального репозитория проекта на Github. Код менеджера пакетов написан на C++ и опубликован под свободной лицензией MIT.

Репозиторий, к которому обращается пакетный менеджер winget, на данный момент содержит более 1,5 тыс. наименований программ. В частности, из него можно установить популярные архиваторы WinRAR и 7Zip, интегрированную среду разработки Microsoft Visual Studio, медиаплеер VLC, торрент-клиент Transmission, офисный пакет Libreoffice, различные дистрибутивы OpenJDK и многое другое. Полный список доступных приложений можно вывести на экран при помощи команды ‘winget search'.

Дмитрий Степанов