Спецкурс по Linux, весна 2007, 03 лекция (от 09 марта)

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Предыдущая лекция | Следующая лекция

Содержание

[править] Тема: Какие бывают под Linux программы

Авторский вариант: http://uneex.cs.msu.su/uneex/LecturesDistro2007/03_LinuxApps

Два народных наблюдения:

  1. Есть стоянка, где стоят машины, на которых ездят студенты. Стоят два студента, машина чёрная, капот открыт, оба стоят молча, смотрят туда и ничего не делают;
  2. Идёт ГК по второму этажу, там два студента, мальчик и девушка, девушка что-то рассказывает и энергично махает сумкой, а в сумке такая обитая доска... "Когтедранка — это прекрасно!"

Вопрос, какой вопрос на первое место:

  1. Какие бывают программы под Linux
  2. Как пересобрать ядро

В связи с тем, что для пересборки ядра человек знает

Какие бывают программы под Линух: вопрос неправильный. Эриграф (из понедельник начинается в субботу): ""Почему и от чего издохли попугаи?" — добавил было я, но Корнеев проворчал: "Почему и от чего первым признаком отравления является посинение трупа?" — и мой вопрос не записали."

Какие бывают программы под Линух: apt-cache show *

  • Подход от названия
  • Подход от инструмента — тоже неправильный. Человек имеет в виду свою задачу.

Нужен подход от задачи.

Пункт 2. Очень слабо, очень гибко определяемое сочетание "программы под Linux". Что такое программа под Виндовз — есть хренька, которую можно скачать, два раза нажать, пробегут умные строчки и появится иконка. Под линукс бывают разные вещи:

  • Степень подлинуксовости. — что такое "подлинукс"?

Человек разводит ежей, и он не знает, что такое собирать программу.

Третье. Схватить на улице линуксоида за гастук и спросить "скажи мне, какие бывают программы" это последнее дело.

  • Куда задавать вопросы (и как?)

Для начала оценим степень подлинуксовости:

[править] Подлинуксовость

(отсортировано по вероятности того, что программа заработает в вашей системе)

  • Бинарники — первый и самый наименее вероятный уровень.
    • Подвиндовз + wine
      • Wine имеет двух наследников — Wine intersoft и crossover office, небесплатных
    • Бинарники под Linux
      • Для того, чтобы такая программа нормально заработала нужно кроме программы предоставить все библиотеки, с которыми она собрана. Статическая сборка/с библиотеками
      • Если не статически собраны, то возникает проблема с версиями библиотек и размещением конфиг. файлов.
    • Практика показывает, что эта степень подлинуксовости — низшая
  • Программа на Си++
    • Тоже низшая степень подлинуксовости. Если я написал программу, она компилируется и работает, то я написал программу под Линукс. Такие проекты либо очень быстро задыхаются (ибо программа работает только на той машине, где писалась), либо очень простые
    • Сборка? Во многих случаях это возможно, но никакой гарантии нет
  • Уровень крибле-крабле-бумс — использование Autotools
    • Способ делать более-менее кроссплатформенноен приложение. Они делают мейк-файл, который позволяет собирать программу на большом количестве систем. Вероятность сборки повышается, особенно если у вас просто линукс, а линукс это мейнстрим.
    • Кто и как часто собирает? Если нужно установить программу на нескольких машинах то что, надо всё время скачивать и пересобирать? Сборка это невоспроизводимый процесс (на разных машинах — разные программы)
  • Пакеты другого дистрибутива (чужой пакет). Есть некоторая вероятность, что он не заработает.
    • Всё равно встаёт вопрос соместимости по библиотекам
    • Поскольку пакет не вашего дистрибутива, то он не входит в структуру. Вы обновляете дистрибутив, а пакет не обновляется. Дело в том, что когда вы дообновляетесь до того, что обновятся библиотеки так, что пакет перестанет работать, то надо что-то делать.
  • spec-файл (для rpm). Можжно взять src.rpm и spec-файл, то можно попытаться собрать его, подсунув свои библиотеки.
    • Опять попадаете в ситуацию сизифового труда. Взяли спек, подправили баги, собрали, всё это в одиночку. Послезавтра если это надо будет установить на другой машине, то собирать придётся с начала.
    • Это не пакет. Он не обновляется, и т. д.
    • Можно доработать его до пакета, положить в дистрибутиьв и стать maintainerом этого пакета.
  • Пакет дистрибутива.

Один забавный факт. Человек, от линукса далёкий, будет искать сверху вниз. Человек недалёкий будет делать это в обратном порядке.

В последнем случае получаются много бонусов.

Ровно до момента "чужой пакет" вы не являетесь членом сообщества вообще. И только в последнем случае вы — полноправный член сообщества. Единственное, чем этот путь плох — этот путь не для простого пользователя, это путь для разработчика.

Джава — ОС в ОС. Со стороны maintainerов дистрибутива, нужно положить в дистрибутив Джава-машину, эклипс и всё. (...)

[править] Как искать программы под Linux

  • Искать в дистрибутиве (apt-cache search).
    • Поиск в собственном дистрибутиве
    • Поиск в бэкпортах — сборка новых программ под старые дистрибутивы (окружения)
    • Поиск в тестовой версии
  • Искать в чужом дистрибутиве.
    • Вероятность довольно высокая потому, что много людей пытались собрать эту программ до вас
    • src.rpm
    • rpm
  • Поиск по разработчикам (sourceforge, savanna, freshmeat). Они выдадут по ключевым словам, какие существуют программные продукты, соотвествующие ключевым словам. Из этого списка нужно выбрать несколько кандидатов, посмотреть их, понять, почему до вас не собрали, собрать...
    • Это может не помочь по двум причинам
      1. Не все проекты, особенно проекты экзотические (академические) попадают на эти порталы. Но елси у людей есть сайт, то крупные поисковые системы наверняка их проиндексировали по тем же ключевым словам (go google)
  • Если всё это проделали, и результатов нет, то не значит, что софта не существует. Очень хороший источник информации — сообщество.
    • Поиск сообщества
    • Поиск ресурса в сообществе
    • Официальные информационные ресурсы (документация, сайт, wiki)
      • Списки рассылки
      • IRC, форумы (если игнор-лист правильно настроить)

Почему сообщество на последнем месте — до этого тратите только своё время, а в сообществе тратят своё время другие люди.

[править] Пара слов о выборе дистрибутива

В отличие Виндовза или Макоса, где выбора нет вообще, в Линуксе выбор большой.

  1. По инструметнам (в случае неглубокого интереса, ограниченного круга задач)
  2. Выбор сообщества
    • Язык (+ специфика национальная)
    • Культура и тематика — разные дистрибутивы сосредоточены вокруг разного
    • Инструментарий (уже было) — чем в сообществе пользоваться (например, дистрибутив kde-based, а может и нет)
    • По направленности — хакеры его делаю, для хакеров он для эндюзеров, для инжинеров, для разработчиков, для сисадминов, для бизнесса...
  3. По информационному наполнению
  4. Техподдержка — если собираетесь внедрять на производстве, то важно поддержку аутсорсить
  5. Популярность и распространённость
  6. возможность личного участия

[править] Подход от задачи

Сначала понять набор задач и потом подбирать инструменты.

[править] Графика в Linux

Это довольно типичный пример. Пришёл человек, говорит: "У меня вот Photoshop, а что у Вас в Линуксе есть? — А у нас есть Гимп". Уходит, человек, приходит потом и говорит — "отстой ваш Гимп, ничего, что мне надо, там нет". Самый плохой подход — подход от названия. Более сложный и обстоятельный подход — подход от инструметна. Он популярен у людей, коотрые более-менее в теме, но не освоили подход от задач.

Подход от инструмента: посмотрим, что в пакетной базе содержит слово "графика". Графики бывает несколько видов, например, векторная. Её тоже бывате несколько видов: плакатная, диаграммы, макетная (пдф). В плане плакатной графики — Inkskape, Xara Xtreeme, Kontour и, если опискать, ещё добрый десяток. Диаграммы – Dia, Xfig, OpenOffice.org Draw. Печатные макеты — читаем на Викитпедию, узнаём, что не надо редактировать программы на Постскрипте (это язык такой, на котором даже вирус можно написать), ПДФ ‒ Постскрип, сильно извращённый Адобом, чтобы копирайт можно было накладывать. Что касается растровой графики. Обработка фотографий — GIMP, Krita (?). Аналог MS Paint — их бесконечно много, один хуже проще другого, напиме, можно вспомнить Tux Paint, Kolourpaint — рисование от руки. Ещё есть офлайновые преобразователи, большой рахздел растровай графики занимают вещи, где надо писать скрипты, которые преобразуют картинки — ImageMagick, VIPS (?). Можно вспомнить про 3D-графику — Blender, POV-RAY.

Вываливаете человеку 200 названий, человек уходит, приходит, говорит, что ,Линукс это ужасно круто, но он не может делать то, что ему надо.

Теперь сажаете человека, и начинаете распрашивать, что ему нужно "У меня есть фотооппарат, Нужно делать каталог, назначать теги, убирать красные глаза...". Дорогой друг, ты ставишь КДЕ, ставишь Digicam, который всё это умеет. Возможно, ещё понадобится GFOTO2, если её нужен вот-такой вот драйвер.

В следующий раз: как собрать ядро под Линукс.


Спецкурс по Linux, весна 2007


01 02 03 04 05 06 07 08 09 10 11 12


Календарь

Февраль
16
Март
02 09 16 23 30
Апрель
06 13 20 27
Май
04 11

18 мая 2007 года прошёл экзамен по курсу. Краткий конспект экзамена.
22 мая 2007 года прошёл экзамен по курсу для студентов 3 курса и тех, кто не сдал экзамен 18 мая. Подробности здесь.
12 июня 2007 года (вторник) пройдёт экзамен по курсу. Информация об экзамене отсюда.


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы