В бете федоры 16 x86_64 при попытке вытянуть через yum зависимости для i686 пишет что-то типа:
Ошибка: Защищённые версии multilib ….
Решается включением репозитория updates-testing:
yum install пакет.i686 --enablerepo=updates-testing
Автор: Дмитрий
В бете федоры 16 x86_64 при попытке вытянуть через yum зависимости для i686 пишет что-то типа:
Ошибка: Защищённые версии multilib ….
Решается включением репозитория updates-testing:
yum install пакет.i686 --enablerepo=updates-testing
Автор: Дмитрий
Иногда может случиться так, что порядок разделов в таблице разделов меняется. Таким образом, что раздел (партиция) с номером x+2 оказывается физически между разделом x и x+1. Например, так, как это показано ниже: Читать
Это конспект, который я готовил для доклада на конференции, проводившейся местным университетом совместно с нашей LUG. Доклад «для самых маленьких», так что профессионалам просьба не жаловаться на поверхностность и обзорность.
Эта статья расчитана на два вида читателей. Во-первых, это люди, имеющие опыт программирования под MS Windows, но не имеющие такого опыта под GNU/Linux. Во-вторых, это люди, не имеющие опыта программирования вовсе. Однако, я предполагаю, что читатель в общем знаком с общепринятой в программировании терминологией, и ему не нужно объяснять, например, что такое «программа», «функция», «компилятор» или «отладка».
Я буду рассматривать разработку с использованием тех средств, которые являются наиболее «родными» для GNU/Linux. К ним относятся:
Язык программирования C
Командная оболочка bash
Текстовые редакторы Vim и Emacs
Компилятор GCC
Отладчик GDB
Утилита для сборки проекта GNU make
Система управления версиями Git
Оконная система X11
Выбор именно этих средств не является догмой. Каждое из выше перечисленных средств может быть при желании заменено на другое. Однако, обычно под фразами наподобие «среда разработки Linux» понимается именно этот набор инструментов.
Наиболее «родным» языком программирования для GNU/Linux является C. Это обусловлено следующими факторами:
GNU/Linux заимствует многие идеи (практически, идеологию) операционной системы UNIX;
Операционная система UNIX была написана на языке C (собственно, этот язык создавался именно для написания этой ОС);
Соответственно, ядро Linux и системное окружение GNU написаны тоже на C.
Ниже я буду рассматривать разработку с использованием языка C. Однако, этот выбор не является догмой. Другими популярными при разработке под GNU/Linux языками являются C++, Python, Perl. Конечно, могут использоваться и любые другие языки.
В течение последних двух десятилетий очень широкое распространение получили т.н. IDE — интегрированные среды разработки. Такая среда включает в себя текстовый редактор, компилятор, отладчик, средства сборки проекта и мн.др. Такие среды есть и под GNU/Linux (наиболее популярны Eclipse, NetBeans, IDEA, KDevelop, Anjuta). Однако, история разработки под UNIX-подобные системы показывает, что IDE не являются не только единственным, но и наиболее эффективным средством разработки. Практически, правильный ответ на вопрос «какая самая лучшая IDE под GNU/Linux» — это «GNU/Linux это и есть IDE».
Часто можно встретить мнение, что большой проект без IDE разрабатывать невозможно. Это мнение легко опровергается. Первые версии UNIX писались даже не в Vim (его тогда ещё не было), а в Ed. Это так называемый «построчный» текстовый редактор, в котором вы можете редактировать за раз только одну строку текста. Весь файл на экране не отображается. В случае с UNIX по-другому и быть не могло — у разработчиков не было никаких экранов, а общение с системой осуществлялось при помощи телетайпов. Современное ядро Linux пишется в основном в редакторах Emacs и Vim.
Многие утилиты UNIX вызывают «текстовый редактор по умолчанию». Команда, запускающая текстовый редактор по умолчанию, берётся из переменной окружения $EDITOR. Некоторые утилиты смотрят сначала в переменную $VISUAL, и, лишь если она не установлена, в переменную $EDITOR. Это исторически сложившееся поведение: к старым компьютерам зачастую не было подключено никакого дисплея, а только телетайп, поэтому запускать экранный (визуальный) редактор смысла не было. В современных дистрибутивах обычно по умолчанию оказывается EDITOR=vi или EDITOR=nano. Указать использование другого редактора для одной команды можно так:
EDITOR=emacs some-command
Чтобы использовать нужный редактор по умолчанию всегда, нужно добавить в файл ~/.profile строчку типа
export EDITOR=emacs
Исторически сложилось так, ч
Часто музыкальные альбомы представляют из себя цельный flac. К нему, как правило, прилагается cue-файл с метаданными, который описывает раскладку треков в нём. Иногда это неудобно: нельзя отделить треки, проблема с проигрывателями (мы же в linux, не так ли;) и т.д. Мы хотим разрезать изначальный музыкальный файл на отдельные flac-треки, чтобы было всё красиво, с метаданными, с тегами. На самом деле cue используется с любыми форматами, а не только с flac. Наша изначальная задача разбивается на две: работа с cue и резка flac/ape/… . Кодировать на выходе будем во flac.
Итак, что нам понадобится.
1) Кодек flac. Свободный. Скорее всего уже есть в системе.
Кодек ape. В разных системах называется: mac (monkey's audio) или monkeys-audio или как-то так. Если нужно резать ape, то нужен.
2) Пакет утилит cuetools для работы с cue sheet.
3) Пакет утилит shntool для резки файлов. В некоторых случая может сам работать с cue, так что cuetools для того, чтобы просто порезать может и не понадобиться.
Далее поток мыслей с реализацией каждой из целей, здесь FILECUE — файл cue, FILEFLAC — файл flac (или ape).
cuebreakpoints FILECUE | shnsplit -o flac FILEFLAC
Итак, cuebreakpoints разбивает исходный cue-файл на длительности и отдаёт цифры на вход shnsplit, который режет flac на куски. Выходной формат указан через «-o flac».
shnsplit -o flac -f FILECUE FILEFLAC
Здесь cue sheet задан напрямую параметром «-f». В этих двух последних случаях получаются треки формата flac с именами split-trackXX.flac . Можно с помощью параметра -t указать вид имени получающихся треков, используя метаинформацию, например, в виде XX-ИмяТрека.flac
shnsplit -o flac -f FILECUE -t %n-%t FILEFLAC
Но теги задать при этом нельзя. Печально?
Используется скрипт cuetag (или cuetag.sh). В случае файлов вида split-trackXX.flac можно схитрить так:
cuetag.sh FILECUE split-track*.flac
Если задать имена выходных файлов другие, то они будут разные и применить cuetag ко всем сразу будет не так просто. Но можно написать скрипт, который будет по одному перебирать, у меня такой был когда-то, но уже неактуально, решил пользоваться готовым.
Качаем последнюю версию утилиты (скрипта) cue2tracks, всё сделается за нас: кодирует из/в разных форматов, переименовывает, теггирует. Параметры описаны. Используется, например, так:
./cue2tracks -R -c flac -o "%P/%D - %A/%N - %t" FILECUE
Автор: Дмитрий
Представьте себе огромное количество разного ПО от маленьких (но важных) проектов по отдельным библиотекам до огромных типа KDE, GNOME, Libre- и OpenOffice, ядра Linux. Все эти отдельные проекты развиваются каждый сам по себе, иногда с оглядкой на остальные, иногда нет. Конечно, каждый может собрать это все ПО вместе и объявить дистрибутивом Linux, но в случае серьезных дистрибутивов (я к ним отношу те, что занимают первые 10 мест в рейтинге Distrowatch) все обычно гораздо сложнее.
Немного о терминах.
Разработчиками дистрибутива (или майнтейнерами) обычно называют тех, кто берет какое-то ПО и упаковывает его в пакет для конкретного дистрибутива (пакетная система, для чего она нужна и что делает — отдельный большой вопрос).
Место, откуда это ПО берется — называется апстрим (от английского upstream). Адекватного перевода на русский язык я пока не нашел, да и слово апстрим стало уже устоявшимся термином. Для серьезных дистрибутивов апстримом являются конкретные проекты свободного (и не очень) ПО. Для производных дистрибутивов — другие дистрибутивы Linux. Например, для CentOS — апстримом является Red Hat Enterpise Linux, для Ubuntu — Debian, для Debian — оригинальные разработчики ПО. Еще раз — апстрим это или разработчик конкретной программы, или родительский дистрибутив.
Пакетом называется отдельный атом дистрибутива (в смысле неделимости), который несет в себе конкретную программу (или набор программ), библиотеку (или набор библиотек), документацию, темы оформления или что-то еще. Короче говоря, все, что составляет дистрибутив Linux — это меньшее или большее количество пакетов. Пакет — это обычно:
Пакетная система — то, что помогает пользователям дистрибутива искать, ставить, обновлять пакеты и автоматически отслеживать зависимости между ними. Пакетные системы в мире Linux делятся на три больших и хорошо очерченных класса:
Важный составляющих элемент пакетной системы — менеджер пакетов. Это программа, позволяющая управлять пакетами на конкретной машине. И обычно она имеет только текстовый интерфейс, но разработчики большинства дистрибутивов, как правило, поставляют графические утилиты, взаимодействующие с пакетным менеджером и таким образом значительно облегчающие жизнь тех, кто еще не познакомился с консолью Linux или не хочет с ней знакомится вовсе.
Вопрос какая пакетная система лучше, какая хуже — относится к сфере личных пристрастий и потому спорный. Желающие могут в этом убедиться, открыв на каком-нибудь Linux-форуме тему «Что лучше rpm или deb?». Если Вас сразу не забанят модераторы форума за провокац
ию, то флейм по этому поводу займет не один десяток страниц.
Зависимости — это следующая непонятная новичкам штука. Бывают жесткие и мягкие. Жесткая зависимость в общем виде — это все то, без чего содержимое пакета работать не будет. Обычно это какие-то библиотеки, обеспечивающие функционал конкретной программы. Мягкая зависимость — это то, что обеспечивает дополнительный функционал для программы. Такой тип зависимостей есть, по большому счету, только в deb-пакетах.
Следующее непонятное определение — репозиторий пакетов. Это место, откуда пользователи берут ПО для своего дистрибутива. Обычно это некое сетевое (но может быть и локальным) хранилище пакета, в котором помимо собственно пакетов для дистрибутива находится набор метаданных, которые используются пакетным менеджером для управления ПО на машине пользователя. Именно благодаря этим метаданным пользователям достаточно легко найти нужные пакеты в репозитории, а пакетному менеджеру выяснить, какое ПО требует обновлений.
По способу поддержки репозитория можно выделить три типа дистрибутивов:
Для таких популярных дистрибутивов как openSUSE и Ubuntu есть выбор — либо использовать стабильную базу конкретного релиза их дистрибутива, или подключить дополнительные репозитории (репозитории OBS для SUSE и ppa для Ubuntu), получая таким образом более свежее ПО для своей системы.
Вроде как все, что хотелось бы сказать по данному поводу. Если что осталось неясно, постараюсь ответить в комментариях на вопросы, касающиеся данной статьи. В меру сил и наличия свободного времени постараюсь внести все необходимые изменения, если потребуется в приведенный текст статьи.
Автор: stranger
Это продолжение начатого тут.
Выше я объяснил, что должен делать хороший процесс с PID 1 и как работают существующие системы инициализации. Перед тем как перейти к самому главному, давайте сделаем еще паузу. Сходите налейте себе еще кружечку кофе. Это того стоит.