воскресенье, 28 июля 2013 г.

Почему я выбирал make install

Преврати свой дистрибутив в свалкСлаку

Как всё начинается

Новый пользователь по совету друзей и из собственного любопытства (не берём более конкретные цели) устанавливает какой-либо дистрибутив GNU/Linux. Не важно какой, но с вероятностью 0.99 это будет пакетный дистрибутив. Всё здорово, но вот он захотел установить какую-то программу. По привычке как он это делал в Windows или MacOSX. Заходит на сайт программы, скачивает архив и тут начинается самое интересное.



Внутри архива он обнаруживает кучу каких-то непонятных файлов. Среди них есть INSTALL или README или он идёт снова на сайт и читает инструкцию по установке. И видит там ./configure && make && make install, надо сказать autotools вещь очень мощная, но есть ньансы о которых ниже. Начав действовать по инструкции он с вероятностью 0.95 получит ошибку об отсутствующих библиотеках, заголовочных файлах или ещё чего. С этой проблемой он приходит на форум где ему говорят что ставить софт так нельзя и для этого есть пакетный менеджер в дистрибутиве. А если нужной программы нет в стандартных репозиториях, то существует много сторонних. Если программа популярная, то проблем с поиском её в репозитории для своего дистрибутива обычно не возникает.

Шли годы...

Всё было хорошо, пользователь радовался новым возможностям, полученным от новой операционной системы, но фиаско подкрался незаметно. Установленный много лет назад дистрибутив оказался не поддерживаемым, а значит новые пакеты для него не собирают, да и из-за устаревшего набора софта и библиотек становится затруднительно ставить новые программы. К тому времени он уже умел собирать программы из исходников и даже собирать их в пакеты, но и с этим было не всё так гладко из-за зависимостей и особенностей пакетной базы дистрибутива. 
Как быть дальше? Пути 3:
  1. Обновиться до новой версии дистрибутива;
  2. Собирать пакеты для своего старого дистрибутива по всем правилам и становится мейнтейнером;
  3. Забить на всё и ставить программы из исходников без сборки пакетов.
Если бросить лягушку в кипящую воду, то она выпрыгнет. Если оставить её в холодной воде и медленно нагревать - сварится заживо. Путь №1 в моём случае всегда сопровождался невероятными проблемами, из-за которых приходилось таки ставить ОС с нуля. Это - не выпрыгнувшая лягушка из кипящей воды. Путь №2 интересен с одной стороны и бесполезен с другой. Бесполезен потому что много сил тратится на "собственноручную поддержку не поддерживаемого дистрибутива". Причём по качеству это далеко от нормальной поддержки сообщества, а по результату для себя едва ли оправдывает средства, да и мало кому ещё нужен. И так путь №3.

Почему именно так

Началось всё с покупки нетбука с Intel GMA500 которая вовсе не интел, а PowerVR. Этой теме можно посветить целую запись про то как Intel практически остался без драйверов для своего чипсета из-за несговорчивых аутсорсеров. Но не будем гадать "как на самом деле". С давних времён линуксоиды знают истину "Intel - значит всё хорошо". Вот и я выбирая нетбук нашёл подходящий по характеристикам, увидел что там Intel и решил "ну точно всё в порядке будет". Масштаб ошибки осознал только попытавшись добиться родного разрешения в openSUSE 11.3 - крайней версии этого дистрибутива на тот момент.

Начав поиски оказалось что я не один совершил такую ошибку и что для этой видеокарты нет драйвера под Linux. На самом деле оказался самодельный, реверснутый модуль для пропатченного ядра определённой версии которое было в openSUSE 11.2 до каких-то обновлений. Отлично, так и поступим. Не без  проблем, но заработало. Удалось получить родное разрешение и почти всё бы ничего кроме того что теперь нельзя трогать ядро и иксы покуда оно хоть как-то работает. Шли годы. У Интела наконец-то появились родные драйвера этого чипсета под Linux, но для них потребовалось бы обновление иксов, а openSUSE 11.2 на тот момент уже не поддерживалась и такого обновления взять было негде. Ставить вручную - слишком сложно, да и результат работы этого драйвера судя по отзывам мог того не стоить. Да и процедура установки этого драйвера очень позабавила. В общем так и бросил это дело ибо "работает - не трогай". Потом появился в новых ядрах модуль для поддержки этого чипсета. Пробовал ставить новые дистрибутивы с этим ядром, но там тоже одни проблемы. Так и решил вернуться на рабочий вариант.

Прошло ещё много времени и понадобилось установить summon arm toolchain и утилиту для программирования TI Stellaris Launchpad. Но не так всё просто ибо многие необходимые для всего этого библиотеки на моей системе устарели. Значит надо ставить из исходников. Тут стоит вспомнить про checkinstall, но работает от чуть реже чем никогда и победить эти проблемы так и не получилось. Да и не панацея это ибо см.путь №2. Так и понеслась. Сначала несколько библиотек, потом ещё пропатченный OpenOCD для поддержки встроенного отладчика и вот уже куча всего установлено мимо пакетного менеджера. Сначала было неловко от этой мысли, но потом забил окончательно и вот сейчас на этом нетбуке большинство необходимого софта установлено именно так.

И вот примерно таким же образом установка мимо пакетного менеджера захватила и основной рабочий компьютер. Но уже от лени обновления дистрибутива, а не реальных проблем с железом. Первым звонком был Gimp который в версии 2.8 получил однооконный интерфейс. До этого всякий раз как приходилось в нём работать было мучение с этими разными окнами. И вот в очередной раз измучившись от этого многооконного интерфейса решил собрать его из исходников. Разумеется, ещё 2 десятка необходимых библиотек либо отсутствовали либо были устаревшие. Среди них Gtk+, поэтому решил ставить всё в /opt во избежание проблем. И вот ура, новый Gimp с однооконным интерфейсом! А потом ещё куча всего.

Вывод

Для тех кто не хочет постоянно обновлять ОС (даже раз в несколько лет) тоже есть выход по трудозатратам ничуть не тяжелее постоянных обновлений, да ещё растянутый по времени на долгие годы. Однако установка софта мимо пакетного менеджера несомненно в какой-то момент упрёт Вас в ограничения, и дальше либо то чего мы так боялись - снос старой ОС и установка новой, либо переход на новый уровень дзена - сборка абсолютно всего софта из исходников, выпиливание пакетного менеджера и остальное красноглазие. Как та лягушка, мы либо сваримся заживо, либо мутируем для жизни в новых условиях.
Cheers!
                            

1 комментарий:

  1. Сборка из исходников, имхо, далеко не самый красивый вариант. Но, действительно, разрулить можно, выкурив изрядное число манов. И все в /opt будет уживаться и древние (рабочие), и свежие (на поглядеть) варианты. Именно так свежий wine был побежбден и запущен совместо с виртуальным сидюком (цели очевидны ))))) ).

    ОтветитьУдалить