linux — вопросы с ответами

Linux kernel

Linux – это операционная система, платформа, экосистема и культура. В то время как продолжающееся доминирование Windows и Mac OS для настольных компьютеров заставляет непосвященного потребителя предполагать, что Linux является своего рода ограниченным вариантом для экстремалов и тех, кто не хочет платить за операционную систему, правда в том, что Linux – самая используемая и самая важная операционная система на планете. Она питает сеть, питает нашу инфраструктуру и крупнейшие суперкомпьютеры в мире. Разработка под Linux может быть сложной задачей, но она также может быть чрезвычайно полезной.

Ядро Linux (kernel) – это, пожалуй, самый амбициозный проект по разработке программного обеспечения на планете. Новые стабильные выпуски выходят примерно каждые три месяца, и в каждом выпуске участвуют тысячи разработчиков, работающих в десятках стран.

Как ни парадоксально, но увлечься разработкой ядра проще, чем кажется, но в то же время это невероятно сложно. Проще это потому, что нет процесса найма, нет собеседования, нет бюрократии. Любой, кто знает, что он делает, может разработать под ядро ​​и представлять свои патчи. С другой стороны, это также чрезвычайно сложно, потому что само ядро ​​чрезвычайно сложно. Более того, сообщество разработчиков ядра, хотя и в некотором смысле доброжелательное, не очень хорошо переносит любительские махинации. И хотя это распространенное явление в IT, на самом деле ничто не заменит фактическое знания о том, что вы делаете. Разработка ядра – довольно серьезный бизнес, для которого необходимы глубокие познания. Если вы только начинаете разработку операционной системы, это не то место, с которого нужно начинать.

Проект с открытым исходным кодом

Преимущества

Linux была одной из первых технологий с открытым исходным кодом, но многие программисты внесли свой вклад и добавили программное обеспечение, полностью открытое для любого пользователя. Это означает, что вы можете скачать исходный код и изменить его по своему усмотрению. У некоторых разработчиков есть ограничения на то, как вы можете распространять код. Например, некоторые разработчики разрешают вам изменять код, но вы не можете распространять его за деньги.

Одним из главных преимуществ технологий с открытым исходным кодом, таких как Linux, является широкий диапазон доступных пользователям опций и повышенная безопасность. Поскольку Linux является программным обеспечением с открытым исходным кодом, конечному пользователю доступно несколько дистрибутивов. Debian, Fedora, Ubuntu и Mint – лишь некоторые из дистрибутивов, доступных для конечных пользователей, и эти дистрибутивы абсолютно бесплатны для скачивания.

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

Недостатки

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

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

Поддержка открытого исходного кода также может быть проблемой. В то время как есть много людей, поддерживающих Windows, Linux не поддерживается "из коробки". Распределительные компании Linux зарабатывают деньги через свои каналы поддержки. Это означает, что компании должны платить за поддержку, если они не могут решить проблему. Тем не менее, существует множество форумов и блогов, которые освещают проблемы Linux. Если у есть хороший администратор Linux, то он обычно может найти ответы по одному из этих бесплатных каналов, не платя никаких денег за поддержку.

Необходимые навыки для разработки ядра

Если вы все же решитесь заняться именно программированием ядра Linux, то вы должны овладеть некоторыми навыками и языками. Программирование ядра Linux выполняется на C. Не на C++, не на Objective-C и не на C#. Поэтому первое, что вам нужно сделать, это очень хорошо выучить язык программирования C. Также вы также должны иметь глубокое понимание теории операционной системы, особенно в том, что касается системы Linux

Естественно, вы должны понимать Linux как со стороны пользователя, так и разработчика. Это включает в себя достаточно глубокое понимание того, как структурировано само ядро Linux, и как различные подпроекты сочетаются друг с другом.

Наконец, вам нужно понять, как на самом деле работает процесс разработки Linux. Это включает в себя понимание сообщества в целом, его культуры и того, как различные члены сообщества разработчиков связаны друг с другом. Кроме того, это означает понимание распределенного контроля версий и цикла разработки.

Лучшие Linux-дистрибутивы для программирования

Использование Linux, когда вы начинаете работать в IT, прекрасно, потому что Linux бесплатен и имеет открытый исходный код. Вам не нужно тратить кучу денег на покупку программного обеспечения и ОС.

Наличие открытого исходного кода также позволяет вам вносить изменения в соответствии с вашим удобством и создавать персональную систему в соответствии с вашими потребностями программирования. Вы можете настроить терминал, попробовать разные текстовые редакторы и установить среду рабочего стола по вашему выбору. Более того, большинство языков программирования (если они не ограничены конкретной ОС) работают в Linux.

Debian GNU/Linux

Дистрибутив Debian GNU/Linux является материнской операционной системой для многих других дистрибутивов Linux. Его последний «натяжной» релиз появился совсем недавно. В любом обсуждении лучших дистрибутивов Linux для программистов, Debian всегда занимает лидирующие места Причиной такого статуса, как операционной системы разработчика, является большое количество пакетов, которые направлены на стабильность (.deb), множество учебных пособий для решения ваших проблем и улучшения ваших действий. Также хотелось бы упомянуть ветку тестирования Debian, которая имеет все новейшее программное обеспечение и довольно стабильна. Настоятельно рекомендуется для опытных программистов и системных администраторов.

Ubuntu

Ubuntu является наиболее известным и широко используемым дистрибутивом Linux для разработки и множества других целей. За прошедшие годы, благодаря поддержке, оказанной Canonical и сообществом открытого исходного кода, Ubuntu превратилась в один из самых надежных дистрибутивов Linux. Благодаря своей популярности и постоянному развитию этот производный от Debian активно используется в облачных и серверных приложениях. Он также поставляется в нескольких вариантах, чтобы удовлетворить различные потребности людей.

Для любых ваших целей разработки получение пакетов .deb не будет сложной задачей. В его собственном магазине (Software Center) есть множество бесплатных приложений, которые делают его отличной ОС Linux для программирования. LTS-версия поддерживается в течение 5 лет и обеспечивает стабильность фиксированной версии. Примечательно, что многим программистам не понравилась его среда рабочего стола Unity. Но из-за некоторых недавних изменений Ubuntu вернулась к рабочему столу GNOME.

Fedora

Развивающаяся благодаря сообществу Fedora, основным спонсором которой является Red Hat Inc., известна тем, что предоставляет самые передовые функции в мире настольных систем Linux. Ее последние выпуски часто вдохновляют другие дистрибутивы Linux на внедрение новых функций и внесение изменений. Умная автоконфигурация и обновленные пакеты делают ее идеальной операционной системой для разработчиков. Если вы не хотите сидеть на одной версии операционной системы целую вечность, вы можете использовать Fedora, поскольку она имеет цикл выпуска в 6 месяцев. Обновление с одной версии на другую также происходит безболезненно.

Более того, Fedora поставляется только с компонентами с открытым исходным кодом. Даже Линус Торвальдс (создатель Linux) предпочитает Fedora, а не Debian или Ubuntu. Официальный форум Fedora – это очень удобная платформа для того, чтобы делиться своими проблемами и решать их. Поскольку Fedora поддерживается Red Hat, вы можете быть уверенными, что она будет работать без проблем в процессе разработки.

Выбор языка программирования

  • C/С++. Хотя они и считаются двумя разными языками, но C++ является лишь расширением языка C и добавляет объектно-ориентированные возможности в C. Поэтому их и можно сгруппировать вместе. Как вы уже знаете, Linux в основном работает на языке C. Так что вы можете использовать C и кроссплатформенный инструментарий GTK+ для приложений с графическим интерфейсом;
  • Python. Это высокоуровневый динамический и интерпретируемый язык программирования общего назначения, который медленно, но верно становится популярным на рынке. Многие программисты обращаются к Python из-за его легкого для чтения синтаксиса и способности позволить программистам выражать концепции в несколько строк кода по сравнению с другими языками программирования. Он легко учиться, и это хороший вариант для начинающих разработчиков;
  • JavaScript/GitHub Electron. JavaScript прост в изучении, и при использовании в сочетании с HTML и CSS вы сможете создавать удивительные настольные приложения для Linux. Electron же является фреймворком для разработки собственных кроссплатформенных приложений с использованием веб-технологий. Он активно поддерживается в GitHub и сообществе участников;
  • Perl. В течение многих лет Perl, который многие разработчики называли «бензопилой швейцарской армии» среди скриптовых языков. Это язык сложных сценариев обработки текста и по умолчанию устанавливался в Linux/Unix-подобных системах.
7 ответов
Я пытаюсь установить Prestissimo на сервер Ubuntu 16.04, но это приводит к ошибке: $ composer global require "hirak/prestissimo:^0.3" Changed current directory to /home/kramer65/.composer [ErrorException] file_put_contents(./composer.json): failed to open stream: Permission denied require [-...
composer-php
sudo
18 дек. 2016, в 18:08
6 ответов
Я создал PHP 7 с конфигурацией, которая работала для предыдущей версии PHP. Теперь мои веб-сайты WordPress получают сообщение: В вашей установке PHP, по-видимому, отсутствует расширение MySQL, которое требуется WordPress. Другие сайты, использующие mysqli, работают. Что мне не хватает? Я также вкл...
15 дек. 2015, в 13:14
5 ответов
Наша команда работает над созданием плагинов WordPress и предоставляет размещенные экземпляры на нескольких независимых серверах. Наша установка WordPress управляется Git, на всех серверах установлена одна и та же установка источника и WordPress, только домены и фактические данные в базе данных раз...
performance
03 апр. 2014, в 19:24
9 ответов
Я пытаюсь скомпилировать свою программу и возвращает эту ошибку: usr/bin/ld: cannot find -l<nameOfTheLibrary> в моем make файле я использую команду g++ и ссылку на мою библиотеку, которая является символической ссылкой на мою библиотеку, расположенную в другом каталоге. Есть ли возможность до...
g++
23 май 2013, в 09:12
9 ответов
Я надеюсь, что это не встречается как глупый вопрос, но его всегда то, что я задавал себе вопрос. И Windows (API Win32), и OS X (Cocoa) имеют свои собственные API-интерфейсы для обработки окон, событий и других материалов ОС. Я никогда не получал четкого ответа относительно того, что эквивалент Linu...
user-interface
03 окт. 2012, в 22:29
32 ответа
Моя проблема началась с того, что я не смог войти в систему как root в мою установку mysql. Я пытался запустить mysql без включения паролей... но всякий раз, когда я запускал команду: # mysqld_safe --skip-grant-tables & Я бы никогда не получил подсказку назад... (я пытался следовать инструк...
16 авг. 2012, в 14:49
25 ответов
Когда я пытаюсь загрузить Java из Oracle, я вместо этого загружаю страницу, сообщающую мне, что мне нужно согласие с условиями лицензии OTN. К сожалению! Чтобы загрузить продукты из Oracle Technology Network, вы должны согласиться с условиями лицензии OTN. Убедитесь, что... В вашем браузере есть ...
wget
install
22 апр. 2012, в 15:16
12 ответов
Несколько лет назад я установил Apache 2.2x и PHP 5.3.1 на сервере Linux, который я поддерживаю. Я использовал .tar.gz и построил их в соответствии с инструкциями (вместо rpms и what-have-you). И все было хорошо. Сегодня мне нужно установить этот, который выглядит как библиотека PHP. Я прошел все ша...
php-ini
30 дек. 2011, в 22:23
23 ответа
Я пытаюсь напечатать текст в терминале с помощью команды echo. Я хочу напечатать текст красного цвета. Как я могу это сделать?
echo
command-line
10 май 2011, в 09:52
14 ответов
Я знаю, что функция POSIX sleep(x) делает программу спящей в течение x секунд. Есть ли функция, позволяющая программе спящий режим для x миллисекунд в С++?
sleep
15 нояб. 2010, в 11:07
16 ответов
Каков наилучший способ открыть файл как чтение/запись, если он существует, или если он этого не сделает, тогда создайте его и откройте его как чтение/запись? Из того, что я читал, file = open('myfile.dat', 'rw') должен сделать это, правильно? Он не работает для меня (Python 2.6.2), и мне интересно, ...
file-permissions
file-io
03 июнь 2010, в 15:15
19 ответов
Есть ли команда MySQL для поиска файла конфигурации my.cnf, аналогичного тому, как PHP phpinfo() находит свой php.ini?
20 март 2010, в 07:15
5 ответов
Используя Linux, я хочу сравнить две базы данных SQLite, имеющие одну и ту же схему. Будет только несколько отличий. Есть ли инструмент, который выводит эти различия? Предпочтительно выводите их в командную строку, чтобы я мог grep/sed их. SQLite использует SQL, поэтому может также использоваться об...
19 янв. 2010, в 11:45
5 ответов
Несколько недель назад я перешел с общего хостинга на VPS, и у меня возникли такие неприятные проблемы с разрешением в WordPress. Вы знаете, что вы можете загружать и обновлять плагины (и сам Wordpress) с панели администратора, но с тех пор, как я переехал, он начал просить меня мои учетные данные F...
permissions
11 июль 2009, в 12:22
16 ответов
Я настраиваю новый сервер и хочу полностью поддерживать UTF-8 в моем веб-приложении. Я пытался сделать это в прошлом на существующих серверах, и мне всегда приходилось прибегать к ISO-8859-1. Где именно мне нужно установить кодировку/кодировки? Я знаю, что мне нужно настроить Apache, MySQL и PHP д...
10 нояб. 2008, в 19:45
Наверх
Меню