Чем отличается Windows от Linux? (Часть 2)
В этой статье мы рассмотрим абсолютно не связанные между собой, но от этого не менее важные вопросы жизни. Сегодня меня, например, интересует, почему борода у Деда Мороза белая, а завтра захочется знать, почему трава зеленая, а небо голубое. Естественно, душа требует ответа на эти животрепещущие вопросы. Надеюсь, никто не будет возражать против столь похвальной любознательности.
В соответствии с правилами хорошего тона нам придется уделить немного времени системам Linux и опыту взаимодействия с ними. Видите ли, у каждого журнала есть свой формат, и редакторы, используя метод кнута и пряника (в редких случаях прибегая к прямым угрозам и насилию), обязывают его соблюдать. Поэтому сегодня, в качестве реверанса редакторам, мы разберем отличия в том, как происходит установка ПО в Windows и Linux.
Но начнем мы с более простых вещей, например, со смысла бытия. Один старый мудрец сказал: «Все дни человека – скорби, и его труды – беспокойство, даже ночью сердце его не знает покоя. И это – суета!» Именно беспокойными трудами я и решил заняться в один из свободных дней. В то время, когда все адекватные убунтоводы, убунтисты и убунтарии сидят на релизе 18.04 LTS (long time service) и спокойно дожидаются новой версии с долгосрочной поддержкой, отпетые разгильдяи вроде меня затевают обновление системы (минуточку, за месяц до выхода нормального и стабильного релиза).
Мой провайдер, видимо, тоже немного философ, поэтому, когда я задумал обновиться до Ubuntu 19.10, он урезал мне скорость до 50-70 Кбит/с. Естественно, только из благих побуждений, с целью дать мне побольше времени познания пути «Дзен».
После первого часа загрузки обновлений лицо мое было красным, пульс – быстрым, а настрой – воинственным. Если бы в тот момент меня увидел кто-либо из службы поддержки моего оператора, то, думаю, оптоволокно к моему дому проспонсировал бы из личных средств сам гендиректор компании.
Через два-три часа все домашние благоразумно покинули поле моей схватки с компьютером. Кто-то вспомнил про срочные дела, кто-то внезапно решил подышать свежим воздухом. Кошка, по неизвестным причинам спрятавшись за дверью в коридоре, успешно притворялась меховым тапком.
На исходе пятого часа наступила ночь. Я лежал в темноте и печально вглядывался в потолок. Потолок с интересом вглядывался в меня фосфоресцирующими звездочками и овечками, приклеенными на него неугомонной детворой. Постепенно мысли о несправедливости мира и желание встать на тропу войны с провайдером стали уступать место более прозаичным вопросам. С некоторыми из них вы уже имели счастье ознакомиться в начале сего опуса. Думаю, такие размышления действительно важны для человечества и для меня как его представителя.
Но есть еще один вопрос, который не был упомянут. Он пришел из пустоты и, перекатываясь горошинкой в моем уставшем мозгу, не давал ему покоя. Как обновляется Linux-система на полностью отключенном от Интернета и локалки компьютере?
Только представьте, как тяжело бедной железяке стоять за бронированными дверьми с семью замками в самом труднодоступном и охраняемом месте. Приятно ли каждый день видеть только светлый лик сотрудников службы безопасности, нет-нет да допускающих до работы с тобой вусмерть заинструктированное, бледное от оказанной ему чести доверенное лицо? Так ли просто хранить все коммерческие тайны большого предприятия, не имея возможности поделиться с широкой общественностью содержимым папочки private_photo_corporateparty? В конце концов, каким образом, находясь в такой безвыходной ситуации, обновиться до приемлемого состояния и установить новое, необходимое для работы ПО?
Для ответа на эти вопросы будем применять логику. Итак, у нас имеется машина с полностью настроенной и стабильно работающей операционной системой. На ней установлены все приложения, необходимые для автономной работы. Контакты этого компьютера даже с внутренней сетью предприятия отсутствуют. Единственная возможность получить новые данные, обновления или, на худой конец, зловреда – только через переносные носители информации. Будет ли системный администратор ежедневно скачивать из Сети обновления и устанавливать их, учитывая риски получения нестабильной работы системы или приложений? Мне трудно представить такую ситуацию. Ведь правило любого сисадмина, формирующееся годами работы с учетом совершенных ошибок, гласит: «Если всё работает как нужно – НЕ ТРОГАЙ!»
Если уж совсем невтерпеж полюбоваться на новые обои, то обновить систему можно при таких условиях: отдельные физические диски, рассчитанные только на хранение данных, + отдельный SSD только для ОС и необходимых приложений. При обновлении системы с физического носителя никакие данные не затрагиваются, а в случае неработоспособности система откатывается до предыдущей версии. Всё.
Другое дело, если внезапно возникла необходимость в новом программном обеспечении. Каждый Windows-юзер знает, что для этого нужно просто скачать эксешник с ПО, воткнуть флешку с ним в машину и ткнуть пару раз в него мышкой.
Для Linux-систем существует подобный способ, однако он не всегда наилучший и далеко не единственный. Рассмотрим их по порядку.
exe = deb = rpm = snap?
Исходный код – наиболее надежный и сложный вариант установки. Иногда нам встречается фраза «скомпилировать из исходников». Всегда существует возможность ознакомиться с исходным кодом для любого open source проекта. Зачастую это означает, что программный код, написанный на одном из языков программирования и наиболее приближенный к человеческому языку, можно проверить, изменить в соответствии со своими требованиями и перевести в понятные для машины команды с помощью компилятора. Единственный вопрос, который возникает при таком подходе: сколько времени у вас займут обучение языку программирования, вычитка исходного кода, редактирование найденных багов, компиляция и отладка? Для начинающего пользователя затея эта откровенно провальная.
Крайняя противоположность (как и результат) самостоятельной компиляции – самораспаковывающийся архив. Файл с расширением .exe с высокой долей вероятности является самораспаковывающимся архивом. В exe-файле находятся сам архив с программой, исполняемый код для его распаковки (инструкция) и все необходимое для корректной установки и работы ПО в системе. Для того чтобы запустить установку находящегося внутри него ПО, необходим только двойной клик по его иконке. Всё остальное будет сделано самостоятельно, и ПО вместе со всем своим скарбом переедет в указанную пользователем папку.
Такой способ наиболее легок и приятен для обычных пользователей, однако не лишен некоторых особенностей. Сей процесс вызывает у меня ассоциации... с супермаркетом. Допустим, собрался я прикупить килограммов двадцать разных круп и туалетной бумаги рулончиков эдак пятьдесят. Зачем? Откуда я знаю!? Сейчас все так делают и у нас, и в просвещенной Европе. Может быть, это станет моим высокодоходным инвестиционным портфелем и гарантирует безбедную старость, в конце концов!
Зайдя в магазин, я вижу, что к каждому пакету с крупой примотан скотчем пакетик майонеза. Гречка, рис и макарошки, пельмени и вкуснейшие шоколадные конфеты продаются только с майонезом и никак иначе. Туалетная бумага выглядит как обычно, но если внимательно присмотреться, то видно, что еще на фабрике внутрь втулки аккуратно запихнули – что бы вы думали? Молодцы, догадались, – пачку майонеза! По прошествии получаса я уезжаю из магазина с полным набором продуктов и с двадцатью одинаковыми пачками майонеза. Мне хорошо, потому что майонез абсолютно необходим для нормального функционирования всех систем в моем организме. Немного тяжело будет переварить его, и мешать он будет в холодильнике, но я справлюсь – я сильный. Примерно так, хоть и утрированно, можно описать принцип установки exe-архивов.
Как показал опыт, самораспаковывающиеся архивы еще и очень удобны для распространения нежелательного ПО – троянов, шифровальщиков, шпионов и т. д. Именно из-за простоты их использования собрать на своей машине виварий из разнообразных зловредов – дело пяти минут.
Многие считают Windows-подход неправильным и нелогичным: дескать, зачем при установке новой программы она тащит за собой кучу компонентов, уже имеющихся в системе? Не лучше ли загрузить необходимую библиотеку один раз, выделить ей определенное место и позволить всем программам обращаться к ней при необходимости?
Именно такую философию исповедуют deb и rpm-пакеты
С практической точки зрения deb- и rpm-пакеты похожи как братья. И те, и другие являются архивами, в которых находятся установочные файлы какой-либо программы, а также прописаны инструкции для установщика, зависимости и необходимые для работы библиотеки. Разница между ними в том, что deb-пакеты используются операционными системами, основанными на Debian, а rpm-пакеты были разработаны для другого семейства Linux систем – RedHat, CentOS, Fedora. Зеленый хамелеон OpenSuse, хотя и основан на Slackware, тоже использует формат rpm.
Deb- и rpm-пакеты не являются исполняемыми файлами. Для установки содержащегося в таких архивах ПО необходима специальная утилита – менеджер пакетов или менеджер приложений. Менеджер пакетов проделывает огромную работу. Он находит необходимый архив в репозиториях, выясняет, что еще нужно для корректной работы программы, проверяет наличие в операционной системе требуемых библиотек, фреймворков и плагинов и загружает их при необходимости. И наконец, после разрешения всех зависимостей он устанавливает пакет с ПО в систему.
Сама идея совместного использования ресурсов очень хороша и соответствует философии Linux. Она позволяет высвобождать так необходимые объемы памяти и место на жестком диске. Достаточно сравнить вес образов Windows 7 (2,3–2,8 Гбайт) и вышедшей в то же время Ubuntu 9.10 (всего 0,7 Гбайт). Однако с появлением совершенно новых устройств, ростом производительности процессоров и увеличением объемов доступной памяти в новых машинах преимущества deb- и rpm-пакетов стали не так заметны. Зато на передний план выступили их недостатки.
Так, при постоянно увеличивающемся разнообразии «железа», вариантов и версий софта, ОС, вариаций систем от адептов Linux выяснилась главная проблема deb и rpm – проблема совместимости. Пользователи столкнулись с тем, что какой-то программе срочно требуется пакет А, но для его установки нужно удалить пакет В, без которого не будет работать программа С. И вообще, неплохо бы обновить пакет D, но только до версии 3.0, ибо этого требует менеджер обновлений системы. Причем никто не мог гарантировать, что после обновления и установки всё заработает и не отвалится еще что-либо.
Для крупных разработчиков ПО отдельной головной болью стало огромное количество Linux-дистрибутивов. Попробуйте сделать так, чтобы Firefox одинаково хорошо работал на сотнях совершенно не похожих друг на друга десктопных ОС, а также на смартфоне, нетбуке и стационарном ПК 90-х годов! Такого рода задача не для слабых умов, здесь требуются сила духа и изрядное упорство. Или другой подход к решению.
AppImage, Flatpak, Orbital Apps и Snap
Мало-помалу, с увеличением популярности Linux, к разработчикам пришло понимание, чего желает обычный пользователь. Такой, как я, к примеру. А мне нужно, чтобы при установке дополнительного ПО и обновлении системы передо мной не вылезало окошечко терминала с непонятными чужеземными буковками и вопросами, требующими решений. Хочу я ткнуть кнопку «Установить» – и пусть оно там как-нибудь само работает. И чтобы всегда само работало! И само обновлялось! И чтобы кнопку новую на клавиатуре поставили – «Сделать все хорошо»!
Исходя из реалий времени и потребностей новообращенных линуксоидов, на сцене появился новый формат пакетов. И назвали их самодостаточными. Как подсказывает само название, пакеты Snap, Flatpak, AppImage, ORB executable не нуждаются ни в ком и ни в чем, кроме себя любимых. Их можно скачать, скопировать на носитель и установить на машину, не подключенную к Сети. По идее разработчиков такие пакеты работают автономно в любой Linux-системе, независимо от дистрибутива и наличия доступных библиотек, так как все свое принесли с собой. Совсем как exe-файлы.
По этой причине в среде настоящих линуксоидов не утихают голоса, что это измена идеалам. Утверждают, что Linux вырождается и с таким подходом мы скоро получим клон Windows. Очень даже может быть. Однако удобство и простота установки таких пакетов очень привлекательны. Достаточно зайти в менеджер приложений и посмотреть источник большинства из них.
К своему стыду, я очень любил троллить тру-линуксоидов детским стишком Самуила Яковлевича Маршака:
Дама сдавала в багаж
Диван,
Чемодан,
Саквояж,
Картину,
Корзину,
Картонку
И маааленькую собачонку…
После чего делал наивные глаза и вопрошал: «А в чем разница между обычным exe-файлом и вашими новейшими Snap, Flatpak, AppImage, ORB executable? Новоявленные адепты Linux шипели, плевались и даже пытались выцарапать мне глаза. Однако забавно было ровно до того момента, пока я не повстречал достойного противника. Он тоже любит рассказывать истории, приводить яркие примеры и немножко подтасовывать факты. Все, о чем писалось выше, он объяснил просто и доходчиво – на бабушках.
О бабушках, шерстяных носках и концепциях
Представим себе бабушку, сидящую в кресле-качалке: симпатичную такую, с седыми волосами, собранными в пучок, очками, надетыми на кончик носа, и вязальными спицами в руках. Она очень хорошо вяжет шерстяные носки, и поэтому мы решили вместе сделать супердоходный бизнес. На мне организация рабочего места, доставка пряжи и расходных материалов, а ее дело – производство конечного продукта.
В день запуска нашего СП мы водружаем старушку вместе с креслом-качалкой в кузов грузовика и везем на городскую площадь. Там уже ждут коробка с пряжей и спицы. Поскольку я человек нежадный, все ее имущество и готовую продукцию охраняет группа быстрого реагирования. Создана она специально для бабушек, вяжущих носки, во всех районах нашего города, поэтому ее бойцы носятся туда-сюда с огромной скоростью и иногда не успевает. Ушлые горожане нет-нет, да и украдут что-либо. Это концепция самораспаковывающихся архивов exe.
Понаблюдав немного за происходящим, я принимаю решение собрать их вместе. Однако не всё так просто, как кажется. Тетя Нина предпочитает для вязки спицы № 3 и сине-голубую акриловую пряжу (на натуральную шерсть у нее аллергия). Клавдия Петровна использует только шерсть ламы, окрашенную натуральными пигментами, и все носки должны быть с помпончиками диаметром 50 мм и никак иначе. Для бабы Вали не имеет никакого значения состав нити, но спицы могут быть только красными (со спицами другого цвета нее получается только свитер). В дополнение ко всему происходящему каждая из бабушек считает себя абсолютно правой и старается переманить подружек на свою сторону, периодически выкидывая «неподходящие» материалы в мусор. Такая картина характеризует deb- и rpm-пакеты.
Вдоволь намучившись с таким совместным производством, я принимаю судьбоносное решение. Специально для тети Нины, Клавдии Петровны и бабы Вали мы строим коттеджный поселок закрытого типа. У каждой из них теперь свой домик, в который им доставляют все, что может потребоваться для жизни и работы в соответствии с их запросами. Доступ в поселок имеют только те, кто признан безопасным визитером. Визиты и проживание родственников (детей и внучат) в своем доме регламентируют сами сотрудницы. Горожане, уже привыкшие к бесплатным носкам, стараются пролезть сквозь прутья ограды и застревают там. Более недалекие пытаются проломить ворота головой, с разбегу стукаясь о табличку с надписью: «Посторонним вход запрещён!» А так на сегодняшний день можно проиллюстрировать работу самодостаточных пакетов типа Snap.
С тех пор я не подшучиваю над пользователями Linux и лишь иногда, устанавливая очередной пакет с ПО, пытаюсь угадать, кто же там, внутри? Бабушка Валя? Тетя Нина? А может, сама Клавдия Петровна почтила меня своим присутствием?
* * *
К сожалению, я так и не сумел объяснить вам, почему борода у Деда Мороза белая, трава – зеленая, а небо – голубое. Дело в том, что я и сам этого не знаю. Но могу дать совет: позвоните своим бабушке и дедушке – уж они точно знают ответ.
Опубликовано 25.03.2020