Некоторое время назад я работал с Red Hat Linux. И вот, после долгого перерыва, мне нужно снова вернуться в мир пингвинов, но столько воды утекло! Может быть, можно собрать все это здесь, как FAQ для программиста на C++, но новичка в Linux? Идти? Общие вопросы.
1. Каковы различия между основными популярными дистрибутивами Linux? > Основное отличие — система пакетов.
(deb, rpm и т. д.) А также для каких архитектур выпущен дистрибутив.
(sl_bug) > Основные отличия: Менеджер пакетов, набор ПО, настройки по умолчанию.
(Евгений_Ширяев) > (помимо Евгения_Ширяева) они иногда отличаются еще и способом настройки служб, запускающихся при загрузке.
Примером является /etc/conf.d/net в Gentoo и /etc/network/interfaces в Ubuntu. Также в каждом дистрибутиве есть свой способ указания списка служб, запускаемых при загрузке.
Иногда они отличаются тем, как организованы сами файлы конфигурации (один файл или группа файлов и макрос, который их собирает).
(экстремальный) > В пакетной системе, в установщике, в системных скриптах.
В версиях ПО и наборе ПО по умолчанию.
(Арсени) 2. Почему системы BSD предпочтительнее систем Linux? > Кто тебе это сказал? Вам нужно выбирать в соответствии с вашими потребностями.
(sl_bug) > Лично я не вижу существенных преимуществ систем BSD перед системами Linux. (Евгений_Ширяев) > Святой вопрос.
Выбор системы зависит от поставленной задачи.
Однако в BSD сетевой стек более продуман и есть такие полезные функции, как accf_http и accf_data. В Linux я пока не встречал замены, кроме TCP_DEFER, которая работает немного по-другому.
(экстремальный) 3. Существуют ли полностью бесплатные дистрибутивы Linux? > Да (sl_bug) > Да и их большинство.
(Евгений_Ширяев) > Я бы сказал, что абсолютное большинство свободно распространяемых дистрибутивов есть.
(экстремальный) > Да, большинство.
Дебиан или Убунту.
Или Федора.
Или Генту.
(Арсени) 4. Почему дистрибутив Linux вообще платный, ведь он построен на основе открытого ПО и бесплатного ядра Linux? > Обычно платна поддержка, а не раздача (sl_bug) > Оплата идет не за сам дистрибутив, а за его поддержку (обновления, техподдержку и т.д.).
(Евгений_Ширяев) > Очень важный момент для разработчика: В платном дистрибутиве SUSE SLES пакеты с исходными кодами также недоступны без подписки (src.rpm = основные исходники + обновления дистрибутива, патчи, спецификации, конфиги).
Пересобрать пакет можно только из оригинального (основного) tar.gz (в лучшем случае из src.rpm opensuse, с перерисовкой зависимостей и прочими прелестями).
В этом случае, естественно, рушится вся система обновлений.
И, возможно, совместимость с другими пакетами системы, в том числе с этим же пакетом, поставленным из бинарников.
Скорее всего, аналогичная ситуация с RedHat и другими платными дистрибутивами.
(qмакс) > (опять же в дополнение к Евгению_Ширяеву) Тут надо помнить, что «открытый код» и «бесплатность» — это все-таки разные понятия.
Обычно лицензии OpenSource не запрещают продажу продуктов, выпущенных под ними, или их использование.
(экстремальный) > Техническая поддержка, коробка, печать.
Или включены фирменные компоненты, удалив которые мы получаем полностью лицензионную версию.
(Арсени) > У вас есть возможность заплатить за поддержку.
Если вам нужен RHEL без поддержки, используйте CentOS. В остальном есть Ubuntu (которая бесплатна, но поддержка стала возможной), OpenSUSE, Fedora (тут вообще только бесплатный вариант)).
(kost_bebix) 5. Если мне нужно установить Linux на множество машин, существует ли лицензия, которая позволит мне один раз купить дистрибутив и установить его на столько машин, сколько я захочу? Или опять же, существует ли полностью бесплатный Linux? > GNU/GPL (sl_bug) > Да.
(Евгений_Ширяев) > Его даже не обязательно покупать, а скачать бесплатно и установить на любое количество машин.
Но если вас интересует поддержка, то действительно лучше купить.
(экстремальный) > По условиям лицензий Debian и Ubuntu вы можете установить их на неограниченное количество ПК.
А вот в России придется покупать коробочную версию.
Теоретически достаточно одной коробки на компанию.
(inkvisitor68sl) > Да, все они (среди популярных): Fedora, Ubuntu, Linux Mint, OpenSUSE, Mandriva, CentOS, Debian, Slackware, Arch, Gentoo бесплатны.
(kost_bebix) 6. Есть ли достойные дистрибутивы «от отечественного производителя»? > Возможен ALT Linux (sl_bug) > На этот вопрос нельзя ответить объективно.
Лично на мой взгляд нет. Однако если вы посмотрите на «наши» дистрибутивы, обратите внимание на ALT Linux. (Евгений_Ширяев) > да.
ИнфраЛинукс, например.
Но в большинстве случаев они платные.
(точно достойно) (inkvizitor68sl) 7. Совместимы ли дистрибутивы Linux на уровне двоичных исполняемых файлов? Можно ли взять файл из Ubuntu и запустить его на Fedora, на FreeBSD? > возможно с 32-битной Ubuntu на 32-битную Fedora (sl_bug) > Дистрибутивы Linux да.
Бинарные файлы Linux можно запускать на FreeBSD, но не напрямую.
(Евгений_Ширяев) > Обычно да.
Трудности возникают, когда бинарник использует какие-то подключаемые библиотеки, а исходная система (из которой находится бинарник) и целевая система (где запускается бинарник) имеют разные версии этих библиотек, в которых могут, например, разные функции называться по-другому или вообще отсутствовать.
Но статически собранные двоичные файлы вполне переносимы.
Примеры: Opera, плагин Adobe Flash для браузеров, Skype и т. д. Во FreeBSD совместимость с бинарниками Linux достигается за счет эмуляции для них среды Linux, для чего, насколько я помню, используются обычные библиотеки Linux из Fedora плюс специальный модуль в ядре, позволяющий это сделать.
(экстремальный) > Linux - да, если у вас есть необходимые Shared-библиотеки.
Linux > > существует двоичная совместимость с BSD. Но в большинстве случаев просто взять пакет и запустить его не получится, подробностей я не знаю.
(Арсени) > большинство двоичных файлов будут работать на любом дистрибутиве.
Некоторые программы распространяются в таком виде (фаерфокс с сайта, например).
Или корзина.
(inkvisitor68sl) > Редко.
Это смотря какой файл.
Есть утилита Alien, которая делает .
rpm из .
deb-пакетов, но это костыль.
Если вы пишете на C++, почитайте про «Opensuse Build Service» — это своего рода место, где вы можете удобно собрать свой проект сразу для всех нужных вам систем.
(kost_bebix) 8. Как обеспечить максимальную совместимость между дистрибутивами Linux на уровне исходного кода при написании программ на C++? Какие библиотеки мне следует использовать? > Широко используется, например Qt. Открытый источник.
Включено в основные репозитории.
(Арсени) > Qt (ГуРу) > Практически любой, но лично я тепло отношусь к Qt, который есть и в Windows, и в MacOS. А так — Гугл всегда найдет что-то абстрактное из раздачи для каждой конкретной задачи.
(kost_bebix) > О да.
И, собственно, о главном — об отличиях написания для Windows. Все просто — вы написали программу для Windows, которая использовала какие-то библиотеки — вы запихнули эти библиотеки прямо в сборку программы и собрали один большой кусок.
В Linux делается иначе — пишешь программу, а потом создаешь .
deb/.
rpm, в котором описываются библиотеки и их версии.
Выгода: — в Linux, если у меня уже установлена эта библиотека, мне ничего скачивать не нужно - если в библиотеках есть уязвимости, они обновляются и все, кто ими пользовался, защищены Проблемы: - если дистрибутив решит использовать новую версию (ветку) библиотеки, все может сломаться.
Поэтому нужно резать (если нужна максимальная кросс-раздача) (kost_bebix) 9. Допустим, требуется какое-то нестандартное решение, например какой-то специальный вызов ядра.
Как узнать, поддерживает ли данная система этот вызов? > Ээкспериментально или спросив в списках рассылки, на форумах, у разработчиков, _читая документацию_. (Арсени) > Если есть ядро, значит есть и функция.
Дальше нужно смотреть на конкретику.
(kost_bebix) 10. Есть ли хорошие альтернативы gcc для разработчика C++? Всегда ли gcc включен в дистрибутив? > 10. icc, всегда (sl_bug) > Нет, не всегда.
Я не знаю бесплатных альтернатив.
(Арсени) 11. Какую IDE и какой оконный менеджер (или как он называется?) вы используете для программирования на C++? Какой отладчик? > vim, gdb (sl_bug) > IDE — Eclipse, похоже, популярен (по словам друга, программиста на C++ и Java, он не претендует на истину в последней инстанции); отладчик — gdb. (экстремальный) > gdb — это отладчик.
для него есть много разных оберток.
Например, для программирования с использованием инструментария GUI Qt я использую QtCreator. В общем, существует много разных IDE. Google. (Арсени) > Если человек задаст вопрос про IDE отдельно про отладчик, то вряд ли он получит что-то кроме vim+gdb. Под IDE мы обычно подразумеваем среду, в которой уже настроена трассировка с помощью горячих клавиш, просмотр отладочной информации и т.п.
В этом случае я бы порекомендовал Qt Creator, KDevelop, Code::Blocks, Eclipse или NetBeans. (Местный) > Eclipse не очень удобен для отладки и тормозит. NetBeans работает медленно.
KDevelop - это мусор.
Qt Creator более-менее (можно использовать).
Достойной альтернативы VS для Linux не существует :( Особенно, когда дело касается простоты отладки.
(GooRoo) > KDE4.3.1 + QtCreator — хорошее решение.
Я использую Emacs и редко пишу на C++.
(kost_bebix) 12. Какие еще инструменты C++ используются? Я слышал о valgrind как о хорошем детекторе утечек памяти.
> IDE — KDevelop, Eclipse, есть отладчик gdb. Дальше тоже нужно смотреть конкретно на то, «что нужно».
(kost_bebix) 13. Какая русская кодировка используется по умолчанию в системах Linux? Поддерживает ли ядро Linux UNICODE? На каком уровне? > utf-8 (sl_bug) > UTF-8 сегодня используется по умолчанию.
Вы можете почти легко сделать любую кодировку по умолчанию, даже CP866. (экстремальный) 14. Какое самое доступное решение для запуска Linux на машине с Windows? А как насчет портативной Ubuntu? Кто-нибудь им пользуется, возможно ли провести полноценную разработку? > вмваре? (sl_bug) > Лучшее решение — запустить Linux на виртуальной машине.
Я рекомендую использовать для этого VirtualBox. > Вам уже рекомендовали VMWare и VirtualBox. Последний бесплатный (экстремальный) > LiveCD) и вообще - виртуалбокс.
Wubi\portable Портативная версия Ubuntu — не лучший вариант. (inkvisitor68sl) > Что значит запустить Linux? Самое простое решение — удалить Windows и установить Ubuntu (kost_bebix) :-) Вопросы для пользователей-программистов C++.
а1. Какой дистрибутив используете лично вы и почему выбрали именно его? > Дебиан, привычка.
Я начал им пользоваться очень давно и не хочу его менять.
Пробовал gentoo (круто, но все из исходников занимает много времени), centos/fedora (не люблю rpm) (sl_bug) > Убунту.
Меньше проблем с настройкой дистрибутива, хороший менеджер пакетов, часто обновляется.
Fedora, OpenSUSE и большинство производных Ubuntu также хороши (для пользователя).
(Евгений_Ширяев) > Дебиан, Убунту.
Последний работает из коробки практически со всем железом, первый — это просто хороший, незагруженный дистрибутив, который я устанавливаю на сервера и на котором разворачиваю только необходимый набор пакетов.
(Арсени) > Мандрива Линукс.
Так сложилось исторически :) Некоторые считают это раздачей для домохозяек и в чем-то они правы :) (GooRoo) > Убунту.
Просто из-за его популярности всё разрабатывается (и так должно быть) и пилится в первую очередь для него.
(kost_bebix) а2. Какие инструменты вы используете для разработки (если используете)? > vim, gcc, gdb (sl_bug) > Qt + Qt Creator, потому что лучше ничего нет, а до vim с emacs я еще не дорос.
(ГуРу) > Я бы, наверное, запустил его с помощью QtCreator, если бы не подсел на Emax. (kost_bebix) а3. Что вам нравится и что не нравится в Linux как программисту на C++? > Не нравится: модель межпроцедурной оптимизации в gcc (не ускоряет), стандартные оптимизации -О2 (приходится добавлять свои, или -О3), каскадные сообщения об ошибках в boost и подобных библиотеках.
(Местный) > Linux — лучшая операционная система, над которой я работал, но она совершенно не подходит для разработки на C++ по сравнению с Windows. Хотя если хотите.
;) (GooRoo) Если не сложно, перед ответом поставьте номер вопроса, на который отвечаете.
И не пережаривайте (я знаю, что хочу невозможного :).
Теги: #linux #BSD #C++ #Разработка сайтов
-
Носимые Шпионские Камеры
19 Oct, 24 -
Выборочная Деанимация Видео
19 Oct, 24 -
Тенденции В Образовании
19 Oct, 24