Linux Compose Key Sequences
В настройках раскладки клавиатуры в DE есть такая клавиша — Compose Key, — которая позволяет вводить символы, отсутствующие на клавиатуре. Различные символы и их коды по ссылке.
Новый ноут — новые запары.
Первая просто прошла неуспешно еще в тот самый день, когда я поменял старый ноут на новый. Проблема поставить арклинукс заключалась в том, что мою сетевуху в 80% случаев отказывался вспоминать даже биос. Ну а сконфигурировать ви-фи было совсем нетривиально для человека, находящегося в гостях и не пожелавшего лезть в арквики, чтобы надолго засидеться с установкой.
Вторая битва прошла более успешно. Я почему-то догадался погуглить проблему. Сетевая установка удалась на славу через беспроводную связь у меня дома благодаря wireless_tools — этот пакет был на LiveCD. Ethernet тогда тоже не заработал. И затем, оказалось, что eth0 мы по-прежнему не включаем по причине device not found, а ви-фи? iwconfig и прочие прелести на голой системе не установлены! Логика меня потрясла, и я в горячах поставил Linux Mint и уже намеревался радоваться этому… событию.
Но потом приходят они. Надежда на лучшее и мозг. И еще элементарный интерес преодолеть проблему. Вчера (календарно — сегодня, в 3 часа ночи) я начал еще раз воевать за арк на ноуте. Поднимаю уже знакомым способом беспроводной интерфейс wlan0:
ifconfig wlan0 up
iwconfig wlan0 essid … key …
dhcpcd wlan0
и система ставится из сети, не без запар, но ставится. Надо сказать, что эти самые запары заключадись в том, что правка конфигов посредством vi уже на первом — rc.conf — давала какие-то глюки. Файл был пустым, и сохраняться не хотел. А дальше была сказка. Я каким-то чудесным образорм вспомнил, что для работы сетевухи может быть полезным выключить ноут на некоторое время. Иными словами, на 30 секунд я его просто выключил :) А далее я попал в те самые чудесные 20% случаев, когда ethernet работает! Первым делом поставил
pacman -S wireless_tools
Ну и потом уже по содержанию арквики вплоть до KDE.
Команда, дающая информация об ID пользователей в Linux:
id <username>
например:
id root
В настройках раскладки клавиатуры в DE есть такая клавиша — Compose Key, — которая позволяет вводить символы, отсутствующие на клавиатуре. Различные символы и их коды по ссылке.
Недавно я понял, что под виндами, какими бы чудесными они не были (я это о Windows 7), сидеть как-то неуютно. Насколько здорово то, что привыкаешь к хорошему, а именно к системе на linux. Дабы не страдать от супер-пупер-видеокарты под арклинуксом, я решил схалтурить во благо экономии времени, поставил федору (Russian Fedora Remix 12). Стало комфортно. Это была прлюдия.
PS1. Только что добавил читабельности в вывод командной строки добавлением в ~/.bashrc вот чего:
PS1 = \[\e[0;34m\][\A|\[\e[1;34m\]\u \[\e[0;34m\]\w]$\[\e[0m\]
А в /root/.bashrc строку добавил немного другую:
PS1 = \[\e[0;34m\][\A|\[\e[1;31m\]\u \[\e[0;34m\]\w]\$\[\e[0m\]
Разница этих вариантов только в цвете имени пользователя. Как может быть поняно наметанному глазу, имя компьютера в приглашении командной строки не выводится, поскольку в этом я не вижу для себя ниакого смысла, зато экономится место в строке за счет отсуствия всякого «shix-rfremix» после «@». Наглядно это выглядит так:

Что значат все эти символы и как проявить свою фантазию? Привожу статью из «Убунтологии», с минимальным корректировками.
За строку приглашения отвечают такие переменные среды, как PS1, PS2, PS3, PS4 и PROMPT_COMMAND.
Значение каждой переменной можно узнать, введя в терминале:
$ echo $имя_переменной (как на картинке выше)
Изменить значение переменной можно двумя способами. Способ первый — указать значение непосредственно в терминале с помощью команды export:
$ export имя_переменной=’значение’
Способ второй — с помощью вашего любимого редактора дописать в .bashrc требуемые значения.
Для указания значений этой переменной используется специальный формат из управляющих последовательностей и обычного текста. Специальные управляющие последовательности упрощают настройку внешнего вида приглашения командной строки.
К примеру, следующая последовательность «\$» заставляет Bash отображать знак доллара ($), когда пользователь является обычным пользователем системы, но заменяет знак доллара решеткой (#), когда пользователь является суперпользователем (root).
Каждая специальная последовательность начинается с обратной косой черты (backslash) — «\».
К примеру, последовательность «\u» указывает, что надо отобразить имя пользователя, «\h»— имя хоста, «\w»— текущую папку.
Теперь объединим всё, чтобы получить приглашение примером выше:
PS1=’\u@\h:\w\$ ’
Знак «собаки» (@) и двоеточия не предварёны обратной косой чертой (\), поэтому они выводятся на экран как есть. Конец строки заканчивается символом пробела, чтобы набираемый в командной строке текст отделялся от приглашения командной строки.
Вот некоторый управляющие последовательности:
\d Дата в формате «День, месяц, число», например, Срд, Окт, 17.
\h Имя хоста (hostname) до первой точки
\H Полное имя хоста
\t Текущее время в 24-часовом формате: HH:MM:SS (часы:минуты:секунды)
\T Текущее время в 12-часовом формате: HH:MM:SS
\@ Текущее время в 12-часовом формате am/pm
\u Имя пользователя, запустившего оболочку
\w Полное имя текущего рабочего каталога (начиная с корня)
\W Текущий рабочий каталог (без указания пути)
\$ Символ #, если оболочка запущена суперпользователем, и символ $, если оболочка запущена обычным пользователем.
\n Новая строка (перевод строки)
\s Имя оболочки
\# Текущий номер команды
\! Порядковый номер данной команды в истории команд
\ Обратный слэш (a backslash)
\nnn Непечатный символ, имеющий восьмеричный код nnn (к примеру esc)
\a Звуковой сигнал (ASCII-код 007)
\e escape (ASCII-код 033)
\[ Начало последовательности не печатаемых символов (этот символ может быть использован для того, чтобы включить в текст подсказки последовательность управляющих символов терминала)
к\] Конец последовательности не печатаемых символов
Например, установка переменой
PS1=’[\A]\u@\h:\w\$ ’
заменяет, скажем, на такое значение:

С помощью специальных непечатаемых последовательностей можно изменить цвет приглашения командной строки, что выделит его из обычного текста. Чтобы показать, что вводится значение цвета, необходимо ввести управляющую ASCII-последовательность \e (или восьмеричный ASCII-кодом \033).
Одна и проблем, которая возникает при использовании не печатных последовательностей, заключается в том, что Bash вычисляет количество символов в приглашении командной строки и использует это число для размещения текста в терминальном окне. Так как коды цветов не выводятся на экран, то они мешают корректному подсчету. Чтобы предотвратить подсчет непечатаемых символов, управляющие последовательности необходимо заключать в управляющие скобки \[ и \]. Для того что бы лучше понять, предлагаю испробовать оба варианта: со скобками и без онных и посмотреть разницу.
Изменению в командной строке поддаётся не только текст, но и фон, поэтому формат цвета можно указать двумя способами — для фона и цвета текста или только для текста.
Формат последовательности для фона и цвета:
\[\е[#;##;#;##m\]
Формат последовательности только для текста:
\[\е[#;##m\]
Где # - специальный номер свойства цвета, а ## - специальный номер цвета. Свойством цвета может быть, например, повышенная или пониженная яркость. В формате для фона и цвета в начале указывается фон, а после цвет самого текста.
Код Свойство
0 Значение по умолчанию
1 Повышенная яркость
2 Пониженная яркость
3 Подчеркнутый
4 Нормальная яркость
7 Инвертированный
8 Скрытый
Текст Фон Цвет
30 40 Черный
31 41 Красный
32 42 Зеленый
33 43 Желтый
34 44 Синий
35 45 Фиолетовый
36 46 Голубой
37 47 Белый
Полный список кодов цветов зависит от типа используемого терминала. (И, вообще, попробуйте сами все эти комбинации, поскольку для terminator’а есть расхождения — прим. Gerfert)
Подытожим раскрасив предыдущее приглашение командной строки следующим образом — время ярко-красным цветом, имя пользователя ярко-жёлтым, имя хоста ярко фиолетовым, а текущий рабочий каталог ярко-синим цветом и в конце приглашения командной строки отметим установку цветового кода в ноль (который обозначает значение по умолчанию):
PS1=’\[\e[1;31m\][\A]\[\e[1;33m\]\u@\[\e[1;35m\]\h:\[\e[1;34m\]\w\$\[\e[0m\] ’
Результат:

Приведу ещё один пример с использованием фона: время раскрасим черным на белом фоне, а всё остальное ярко-синим:

PS2. Вторичная строка приглашения появляется, к примеру, когда ввод команды в первичном приглашении переносится на следующую строку. Сообщить командному интерпретаторуо том, что ввод продолжается в следующей строке, можно, введя обратную косую черту «\» в конце строки и введя Enter. По умолчанию отображается как «>». Формат этой переменной идентичен формату переменной PS1.

А вот почти тот же пример, но строка приглашения разукрашена. Более читабельно?

PS3. Этот вид приглашения используется в скриптах, когда нужно сделать выбор при использовании оператора select. Простой наглядный пример bash-скрипта и его вывод:
#!/bin/bash
# Пример третичного приглашения
# установим PS3 для выбора ответа в виде трёх знаков больше
PS3=”»> “
echo -e “\nВаш любимый сайт ?”
select answer in «www.ubuntologia.ru» «www.microsoft.com»
do
echo -e ’\e[37;44m’”\e[1mВаш выбор — $answer.\e[0m”
echo -e “Продолжение работы скрипта…\n”
break
done
exit 0

PS4. Приглашение четвертого уровня PS4 так же используется в скриптах. К примеру ключ -v заставляет выводить на экран терминала каждую команду прежде, чем она будет исполнена. Ключом -x подобно ключу -v, но выполняет подстановку команд и перед каждой командой выведет четверичное приглашение. Пример bash-скрипта и его вывод:
#!/bin/bash -x
# Пример третичного приглашения
PS4=’команда > ’ # установим приглашение четвертого уровня
echo “Команда номер 1”
echo “Команда номер 2”
echo “Команда номер 3”
echo “Команда номер 4”

PROMPT_COMMAND. С помощью этой переменной можно задать выполнение определённых команд перед каждым первичным приглашением. В основном, она используется, когда нужно расширить возможности первичного приглашения, вызывая какую-то дополнительную функцию или команду или даже целый скрипт. К примеру, я хочу, чтобы перед каждым первичным приглашением происходил вывод текущего каталога и календаря на месяц:
PROMPT_COMMAND=’ls; cal’

Так как эта переменная более функциональна, ею можно заменить первичное приглашение, но при этом надо уметь писать скрипты для Bash, что выходит за рамки повествования. Для более подробной информации читайте
man bash
P.S.: спасибо драг-н-дропу за легкое наполнение сего поста картинками
P.P.S.: в общем, мои приглашения выглядят как закрашенный фон и белый текст поверх. синий фон для обычного пользователя, красный — для рута.
Вась, ты спрашивал :) Переводить влом было.
Configuration files should be placed in the /etc directory. If there’s more than one configuration file, it’s customary to use a subdirectory in order to keep the /etc area as clean as possible. Use /etc/{pkgname}/ where {pkgname} is the name of your package (or a suitable alternative, eg, apache uses /etc/httpd/).
Package files should follow these general directory guidelines:
/etc System-essential configuration files
/usr/bin Application binaries
/usr/sbin System binaries
/usr/lib Libraries
/usr/include Header files
/usr/lib/{pkg} Modules, plugins, etc.
/usr/share/man Manpages
/usr/share/{pkg} Application data
/etc/{pkg} Configuration files for {pkg}
/opt Packages that do not fit cleanly into the GNU filesystem layout can be
placed here. If a package’s files can be cleanly placed into the above
directories, then do so. If there are other high-level directories
that do not fit, then you should use /opt.For example, the acrobat package has Browser, Reader, and Resource directories sitting at the same level as the bin directory. This doesn’t fit into a normal GNU filesystem layout, so we place all the files in a subdirectory of /opt.
Clear as mud? Good.
Взято из ArchWiki
Наука все еще не знает, откуда у меня растут руки. Несколько дней тому назад я приобрел аж за 80 деревянных добровольца на избиение DVD-приводами. Этот доброволец, видимо, был так напуган проиходящим, что решил попросту отказаться от взаимодействия с моим… уж не знаю, чего касается данная проблема.
Суть в том, что различные герой этих событий — болванка DVD+RW — всеми силами отказывась определяться в арклинуксе и федоре как записываемый носитель. Дебиан, который уже более двух суток сам себя компилирует, спрашивать было почти бесполезно. Я на тот момент не додумал создать нового пользователя, впустить его в группу cdrom и пытаться нарезать лазерную пластинку от его имени.
У этой истории необычайно позитивный конец. Решив, что болванка недееспособна, я на нее забил болт. Единственным способом поставить нормально жующую карты от ATI систему было использование 4-хгигабайтную мамину флешку и без того изнасилованную пару десятков раз ISO-шниками разных дистрибутивов. Мною уважаемые федора и русский ее ремикс версии 12 решили обломать меня, не приняв в браться драйвер radeon, несмотря на то, что эти братья-близнецы (или сестры-) всегда лучше всех воспринимали мои железки на Asus M51ta04. Проприетарное чудо от ATI уже совсем не выручает — отстает по версиям. Убунту, эдакая хрень, повела себя совсем некорректно. Она единственная отказывалась залиться образом на флешку простейшим способом:
dd if=somedistro.iso of=/dev/sdb
В связи с выросшим геморроем, я пыталсяосилить заливку убунты на флешку разными утилитами, предназначенными для таких вещей. Я качал их исходники и устанавливал. В дебиане версия python оказалась маловатой, а в арклинуксе таких пакетов в репозиториях не предусмотрено. Зато усвоил вот что. Когда скачиваешь тарболл (нечто.tar.gz), распаковываешь и видишь setyp.py, ставить нужно так:
# python setup.py —install (я еще набрал что-то вроде —buildpkg, но разницы не увидел)
Все эти твари не могла записать на флешку. Им все время хотелось ее отформаотировать, но сами они кнопокчу свою притемнили и все гуёвое удобство таким образом зажали. Впрочем, позднее я понял, что дело в том, что у меня в арклинуксе не стояла утилита mkfs.vfat. Поставил dosfstools — заработало. Но что в арклинуксе, что в дебиане, несмотря на всю вфатность, вывод систем был однозначен:
fdisk -l
<…>
Device Boot Start End Blocks Id System
/dev/sdb1p1 * 1 692 708608 83 Linux
Явный намек на то, что кто-то из нас что-то не понимает. Я спросил fsck. Он сказал, что все же был FAT32, после чего я все же решил, что мои усилия наподобие
mkfs.vfat -F 32 /dev/sdb1
mkfs -t vfat -F 32 /dev/sdb1
mkfs.vfat -I /dev/sdb1
mkfs.vfat -a /dev/sdb1
не прошли даром. И не прошли.
Произошло нечто странное. Наверное, если бы не большой логотип AMD на сайте OpenSUSE, я бы так и не скачал и не попробовал поставить этот дистро в очередной раз. Мы с ним никогда не дружили, хотя и пытались. Я зарузился в LiveCD. Причем, гномовский, потому что рассчитывл пользоваться XFCE, и мусор от qуtюрье мне особо не нужен. Я от балды запустил brasero, почти что просто так, чтобы убедиться в обреченности. И о чудо! mini.iso вселился в главного героя! После чего я вспомнил чьи-то слова о том, что OpenSUSE отличается стабильностью и аккуратностью (особенно в натсройке KDE). Но раньше с ним у меня сплошняком были какие-то проблемы.
Xubuntu выкачено и поставлено. Вот уже и запущено. Это и есть тот самый хэппи-энд, он подоспел к концу написания поста. Если и здесь появятся проблемы, то я знаю, к кому обратиться.
P.S.: я настроен на позитивное восприятие своего строения :)
Сейчас мой домашний комп ревет. Впрочем, он всегда ревел, но вот уже двое суток он ревет по-особенному, не выключаясь, из-за чего мне сложно уснуть по ночам. Ниже приведу репост о причине такого поведения моего компа с мелкими косметическими изменениями отсюда: http://p-n-z-8-8.livejournal.com/40334.html
Apt-build — мощный инструмент Debian, позволяющий в духе FreeBSD (ну, или Gentoo например) одной командой устанавливать пакеты из исходных текстов (вместо унылого ./configure — make — sudo make install), пересобирать уже установленные пакеты с оптимизацией под используемую архитектуру а также, при наличии желания, пересобрать систему целиком. Ставится сие добро самым обычным образом:
sudo apt-get install apt-build
В процессе установки будет задано несколько вопросов:
в /etc/apt/sources.list Не стоит от этого отказываться. Более того, строка должна быть первой в списке репозиториев (критично!).deb file:/var/cache/apt-build/repository apt-build main
На этом конфигурирование apt-build закончено. Если в чём-то неуверены, можно просмотреть настройки в файле /etc/apt/apt-build.conf
build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O2
mtune = -mtune=k8
options = “-pipe -fomit-frame-pointer”
make_options = “-j4”
И либо изменить вручную, либо запустить конфигурирование повторно, используя команду:
sudo dpkg-reconfigure apt-build
Далее устанавливаем всё необходимое для сборки (на всякий случай, вдруг чего-либо недостаёт):
sudo apt-get install libc6-dev g++ gcc
Кроме этого не помешает установить и запустить pbuilder (он может пригодится в ряде случаев, о чём apt-build скажет сам):
sudo apt-get install pbuilder && /usr/lib/pbuilder/pbuilder-satisfydepends
Несколько операций с apt-build требуют root-полномочий. Именно root, а не sudoers. Например, при попытке построить индекс пакетов можно наблюдать такую картину:
sudo dpkg —get-selections | awk ’{if ($2 == «install») print $1}’ > /etc/apt/apt-build.list
bash: /etc/apt/apt-build.list: Permission denied
Поэтому тем пользователям Ubuntu, у которых отключена учётная запись root (а по-умолчанию она отключена) рекомендуется включить её и задать пароль. Всё это можно сделать одной командой:
sudo passwd root
Введите новый пароль UNIX:
После этого логинимся под root:
su
Пароль:
И строим индекс пакетов:
# dpkg —get-selections | awk ’{if ($2 == «install») print $1}’ > /etc/apt/apt-build.list
Использование apt-build в общем и целом идентично использованию apt-get:
apt-build [options] [command]
Commands:
update — Update package lists
upgrade — Perform an upgrade
install — Build and install new packages
source — Download and extract source in build directory
build-source — Download, extract and build source package
update-source — Update all sources and rebuild them
remove — Remove packages
build-repository — Rebuild the repository
clean-sources — Clean up all object files in source directories
clean-build — Erase downloaded packages and temporary build files
clean-repository — Erase downloaded packages and temporary build files
world — Rebuild and reinstall all packages on your system
info — Build-related package information
Поэтому первым делом нужно обновиться:
sudo apt-build update && sudo apt-build upgrade
Само собой, в /etc/apt/sources.list должны быть подключены репозитории с исходными текстами (те, которые «deb-src http://и т.д.»). В Ubuntu они уже присутствуют и их необходимо лишь раскомментировать. В Debian нужно прописать репозитории:
deb-src http://security.debian.org/ etch/updates main contrib
deb-src http://mirror.yandex.ru/debian stable main
deb-src http://mirror.yandex.ru/debian/ lenny main
deb-src http://mirror.yandex.ru/debian lenny main non-free contrib
deb-src http://mirror.yandex.ru/debian-security etch/updates main non-free contrib
В 99,9% случаев основные команды apt-build требуют дополнительных опций:
Options:
—reinstall — Re-build and install already installed package
—rebuild — Rebuild package
—remove-builddep — Remove build-dependencies installed by apt-build
—nowrapper — Do not use gcc/g++ wrapper
—purge — Use purge instead of remove
—noupdate — Do not run ’apt-get update’ before package installation
—build-command — Use to build package
—patch — Apply patch s before the build
—patch-strip — Striplevel for the patch files
—yes -y — Assume yes
—version -v — Show version and exit
—force-yes — Force yes
—source — Do not download source (sources are extracted already)
—build-only — Do not install any of build dependencies
—build-dir — Specify build dir
—repository-dir — Specify the repository directory
—target-release — Distribution to fetch packages from
—sources-list — Specify sources.list file
—apt-get — Specify an alternative apt-get application to use
—apt-cache — Specify an alternative apt-cache application to use
—config — Specify an alternative configuration file
Например, чтобы переустановить из исходников уже установленный пакет, нам понадобится следующая директива:
sudo apt-build —rebuild —reinstall —force-yes —yes install mc
—-—> Installing build dependencies (for mc) <—-—
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
(Вывод опущен)
—-—> Building mc <—-—
dpkg-buildpackage: установка CFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CPPFLAGS в значение по умолчанию:
dpkg-buildpackage: установка LDFLAGS в значение по умолчанию: -Wl,-Bsymbolic-functions
dpkg-buildpackage: установка FFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CXXFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: пакет исходных текстов mc
dpkg-buildpackage: версия исходных текстов 2:4.6.2~git20080311-2
dpkg-buildpackage: исходные тексты изменены root
dpkg-buildpackage: архитектура хоста i386
debian/rules clean
(И т.д.)
В процессе установки/пересборки apt-build сам скачивает нужные ему для компиляции пакеты, поэтому не удивляемся, увидев нечто подобное этому:
—-—> Installing build dependencies (for kdesdk) <—-—
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
НОВЫЕ пакеты, которые будут установлены:
automoc binutils-dev cdbs cmake fdupes hspell kdelibs5-dev kdepimlibs5-dev kdesdk-scripts libacl1-dev libapr1-dev libaprutil1-dev
libasound2-dev libattr1-dev libboost-date-time-dev libboost-date-time1.34.1 libboost-dev libboost-doc libboost-filesystem-dev
libboost-filesystem1.34.1 libboost-graph-dev libboost-graph1.34.1 libboost-iostreams-dev libboost-program-options-dev
libboost-program-options1.34.1 libboost-python-dev libboost-regex-dev libboost-serialization-dev libboost-serialization1.34.1
libboost-signals-dev libboost-signals1.34.1 libboost-test-dev libboost-test1.34.1 libboost-thread-dev libboost-thread1.34.1
libboost-wave-dev libboost-wave1.34.1 libbz2-dev libcups2-dev libdb4.6-dev libgif-dev libgpgme11-dev libicu-dev libilmbase-dev
libjasper-dev libkeyutils-dev libldap2-dev libmysqlclient15-dev libopenexr-dev libphonon-dev libplasma-dev libpth-dev libsasl2-dev
libsoprano-dev libsqlite3-dev libstreamanalyzer-dev libstreams-dev libsvn-dev libtiff4-dev libtiffxx0c2 libxslt1-dev python-dev
python2.5-dev quilt uuid-dev
В конце установки/пересборки apt-build напомнит, что нужно удалить пакеты, использовавшиеся для сборки, для их удаления нужно использовать
apt-get autoremove
Для установки пакета:
sudo apt-build install —yes —force-yes gpicview
Вообще, ключи «—yes —force-yes» — это то, что нужно использовать постоянно.
Для того, чтобы собранные нами пакеты не были заменены обычными версиями при первом же обновлении, необходимо их «заморозить».
Для этого существует два способа. Первый из них описан в документации к apt-build и заключается в внесении в файл /etc/apt/preferences сведений о «замороженных» пакетах в таком формате:
Package: * (обязательно в формате «имя-версия»)
Pin: release o=apt-build
Pin-Priority: 990
Второй способ — специально для любителей «экстрима». Особенно пригодится для тех пакетов, пересобирать которые мы не планируем ещё долго.
# dch -i
sudo aptitude hold gpicview
Теперь самое интересное: apt-build позволяет целиком пересобрать систему:
apt-build world
Однако ньюанс заключается в том, что во-первых, не всё ПО, установленное на машине является свободным, и во-вторых, даже будучи свободным, для того или иного пакета могут отсутствовать прописанные в /etc/apt/sources.list репозитории с исходниками. В этом случае весь процесс пересборки остановится на таком пакете. Чтобы этого не случилось, нужно отредактировать файл /etc/apt/apt-build.list, исключив из него проприетарное ПО и ПО с отсутствующими в пределах досягаемости apt-build репозиториями исходных текстов. Ну а после этого запускать apt-build world и ждать. Долго и мучительно. Как отфильтровать пакеты без исходников? Признаться, не знаю. На момент написания этих строк у меня уже более полутора суток пересобирается система. Каждый раз, когда процесс пересборки ругается на отсутствие исходников, я удаляю строку с именем этого пакета в apt-build.list, а также все вышележащие строки, чтобы не пересобирать тучу программ заново.
По окончании процесса перезагружаемся и делаем:
apt-build upgrade
Затем стоит почистит соответствующие каталоги от исходников и собранных пакетов, т. к. при постоянном использовании apt-build они отъедают значительный объём дискового пространства:
sudo apt-build clean-sources && apt-build clean-repository
Apt-build на мой взгляд является полезной и интересной утилитой.
В качестве заключения опишу несколько важных моментов, связанных с её использованием.
Плюсы: Поскольку при установке/пересборке пакеты компилируются под конкретную архитектуру, увеличение быстродействия видно невооружённым глазом (точных замеров производительности не делал, извините уж :-)
Минусы: Компиляция занимает гораздо больше времени, нежели чем обычная установка через apt-get install. Тоже самое можно сказать и о пересборке, поэтому следует запастись терпением.
Система, собранная из исходных кодов требует гораздо больше внимания. Тем более, изначально для этого не предназначенная (такая как Ubuntu).
Обычное обновление системы через apt-get upgrade порушит все наши труды по сборке и оптимизации. Поэтому во-первых не забудьте о «заморозке» пакетов и, во-вторых, следует выработать собственный график оптимизации системы (например, через некоторое время после очередного релиза).
Возможные проблемы: Несмотря на то, что по идее apt-build сам скачивает и устанавливает всё необходимое для компиляции, иногда при сборке можно увидеть ошибку, связанную с неудовлетворёнными зависимостями. В общем и целом удаётся просто установить нужное через apt-build install. В «сложных» случаях пригодится команда:
apt-get build-dep package_name
Также в некоторых случаях apt-build по неизвестным мне причинам отказывается видеть в /etc/apt/sources.list строчку с собственным локальным репозиторием, вследствие чего отказывается устанавливать только что собранный пакет. Что интересно, если в случае с пересборкой уже установленного пакета запустить
apt-get update && apt-get upgrade
— свежесобранный пакет будет предложен к обновлению. Как раз из локального репозитория. Это все проблемы, с которыми я столкнулся в процессе использования apt-build.
И в заключение самое главное: если кто-то надумает попробовать apt-build — помните: ВСЕ ДЕЙСТВИЯ ВЫ ПРОИЗВОДИТЕ НА ВАШ СТРАХ И РИСК :-) Но на мой взгляд, оно того стоит. Главное — понимать что ты делаешь.
Мне нужен MATLAB под Linux. Без него мне не достичь полного счастья, соответственно, однажды пришлось научиться монтировать образы в каталоги. Замечу, что виндам для этого нужны какие-то дополнительные проги. Команда вот:
sudo mount -t iso9660 -o loop file.iso mount_dir
Для того, чтобы облегчить управление установленными программами в системе, изготовителями дистрибутивов были созданы специальные утилиты, которые значительно облегчают пользователям жизнь. В дистрибутивах созданных Red Hat и производных от них, используется менеджер пакетов rpm - Red Hat Package Manager (менеджер пакетов Red Hat). С помощью утилиты rpm можно выполнять множество различных операций, таких как устанавливать, удалять, обновлять, опрашивать, проверять установленные пакеты в системе. Рассмотрим более подробно, какие операции можно выполнять с его помощью.
Для того, чтобы поглядеть список всех установленных в системе пакетов, следует выполнить следующую команду:
rpm -qa
например,
# rpm -qa | grep yum
yum-2.3.2-7
# rpm -qa | grep nginx
nginx-0.6.32-1.EL5
Чтобы инсталлировать необходимый пакет, выполните следующую команду:
rpm -ivh yum-2.3.2-7.noarch.rpm
Если на машине настроена сеть, то установку можно выполнить по сети, не выкачивая предварительно пакет на машину:
rpm -ivh ftp://ftp.redhat.com/pub/yum-2.3.2-7.noarch.rpm
rpm -ivh http://www.redhat.com/files/yum-2.3.2-7.noarch.rpm
Для удаления установленного пакета, следует воспользоваться командой:
#rpm -e yum-2.3.2-7
Обратите внимание, что для удаления можно указать короткое имя установленного пакета.
Для обновления уже установленных пакетов, следует воспользоваться командой:
rpm -Uvh yum-2.3.3.noarch.rpm
rpm -Uvh ftp://ftp.redhat.com/pub/yum-2.3.3.noarch.rpm
rpm -Uvh http://www.redhat.com/files/yum-2.3.3.noarch.rpm
Используя эту команду, менеджер пакетов rpm, автоматически удалит старую версию пакета yum-2.3.2-7.noarch.rpm и установит новую. Рекомендуется всегда, для обновления и установки новых пакетов использовать команду rpm -Uvh, так как она сама выполнит все необходимые проверки перед установкой и обновлением.
Для того, чтобы проверить установлен нужный пакет или нет, можно воспользоваться командой rpm -q <имя пакета>, она даёт возможность проверить список установленных пакетов не прибегая к помощи внешних утилит:
# rpm -q nginx
nginx-0.6.32-1.EL5
Для просмотра файлов, которые были установлены пакетом, приведённую выше команду, следует немного модифицировать:
# rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/ssl.conf
/etc/nginx/conf.d/upstream-fair.conf
/etc/nginx/conf.d/virtual.conf
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/win-utf
/etc/rc.d/init.d/nginx
/etc/sysconfig/nginx
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/nginx
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/auto/nginx/nginx.so
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/nginx.pm
/usr/sbin/nginx
/usr/share/doc/nginx-0.6.32
/usr/share/doc/nginx-0.6.32/CHANGES
/usr/share/doc/nginx-0.6.32/LICENSE
/usr/share/doc/nginx-0.6.32/README
/usr/share/doc/nginx-0.6.32/README.nginx-upstream-fair
/usr/share/man/man3/nginx.3pm.gz
/usr/share/nginx
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/var/lib/nginx
/var/log/nginx
/var/tmp/nginx
Для того, чтобы проверить, какому пакету принадлежит тот или иной файл, следует выполнить следующую команду:
# rpm -qf /usr/sbin/nginx
nginx-0.6.32-1.EL5
Также, время от времени может возникнуть необходимость проверить корректность файлов, которые были установлены пакетом.Например:
# rpm -V nginx
S.5….T c /etc/nginx/nginx.conf
Вывод данной команды сообщает, что для файла /etc/nginx/nginx.conf изменился размер (S), по сравнению с тем, который был после установки пакета, изменилась контрольная сумма высчитываемая по алгоритму md5 (5), и время модификации файла (T), отличается от первоначального. Команда rpm с ключом -V выводит список файлов у которых изменился какой-либо параметр, по сравнению с теми, которые записаны в пакете. Полный список проверяемых параметров следующий:
S - размер файла
M - права доступа и тип файла
5 - контрольная сумма по алгоритму MD5
L - символическая ссылка
D - устройство
U - владелец
G - группа владельца
T - время модификации
Ссылка на исходник: http://www.baf.ru/archives/20