Gentoo Linux сборник статей


/usr/portage/media-sound/ncmpc/ncmpc-0.11.1-r1.ebuild



Pdf просмотр
страница66/79
Дата14.11.2016
Размер5.55 Mb.
Просмотров11581
Скачиваний1
1   ...   62   63   64   65   66   67   68   69   ...   79
/usr/portage/media-sound/ncmpc/ncmpc-0.11.1-r1.ebuild
И архив исходных кодов:
/usr/portage/distfiles/ncmpc-0.11.1.tar.gz для этого ebuild-а.
Вы хотите наложить свой патч и добавить ebuild вашего пропатченного пакета в систему. Для этого вы должны скопировать исходный ebuld в ваш новый, но добавить к нему приставку '-rN', где N - номер релиза. Если такая преставка уже есть - изменить её номер:
cp /usr/portage/media-sound/ncmpc/ncmpc-0.11.1-r1.ebuild
/usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild
После этого пропатчите исходные коды пакета, на который ссылается исходный
ebuild /usr/portage/distfiles/ncmpc-0.11.1.tar.gz
и сохраните его в /usr/portage/distfiles/ncmpc-0.11.1-r2.tar.gz
Далее, нам нужно будет поправить наш новый ebuild:
vi /usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild
И изменить строку:
SRC_URI="http://mercury.chem.pitt.edu/
shank/${P}.tar.gz mirror://sourceforge/musicpd/${P}.tar.gz"
На строку:
SRC_URI="http://mercury.chem.pitt.edu/
shank/${P}-r2.tar.gz mirror://sourceforge/musicpd/${P}-r2.tar.gz"
Т.е. добавив наш префикс '-r2', чтобы система знала, какой именно файл с исходными кодами ей необходимо прописать. В данном случае скачать с сайта этот пакет конечно же не удастся, но нам этого и не требуется - нам необходимо установить нами поправленный пакет.
После этого даём команду ebuild /usr/local/portage/media-sound/ncmpc/ncmpc-0.11.1-r2.ebuild digest, после чего emerge будет знать о вашем пакете.
783

Русское WIKI
Установка нового ebuild
Когда вы будете устанавливать пакет используя новый ebuild, скорее всего он будет masked, поэтому надо добавить имя пакета в /etc/portage/package.keywords
Создайте директорию /etc/portage/, если она еще не создана, и затем выполните команду:
echo "/
x86" >>/etc/portage/package.keywords

Теперь этот пакет можно установить как и любой другой:
emerge -p package
emerge package
Дополнительно
Unofficial ebuilds содержит список с коротким описанием сайтов где можно найти неофициальные пакеты Многие, написанные юзерами ebuild'ы, которые еще не попали в официальное дерево, находятся в Bugzill'е Gentoo. Найти нужные ebuild'ы можно с помощью поиска
Экономия трафика с помощью deltup
Что это такое?
Как известно, программы в Gentoo Linux устанавливаются из исходников. Это чистый текст. Однако, такие программы как, например, gcc или openoffice весят непростительно много. А у большинства из нас интернет не позволяет качать файлы больших объемов, а пользователи модемов вообще толком ничего обновить не могут. Для людей, которые экономят свои деньги, и была написана программа deltup. Вместо wget мы заставляем emerge использовать getdelta. Эта программа скачивает со специального сайта не весь архив программы, а только разницу между требуемой версией и тем, что у вас есть. Если у вас нет предыдущей версии программы, то придется качать весь архив.
Установка и настройка
Установка deltup
Теперь установим deltup:
emerge deltup и getdelta: emerge getdelta
Примечание: Если при выполнении emerge deltup выйдет ошибка "!!!All ebuilds that could satisfy "deltup" have been masked." перед командой добавьте
ACCEPT_KEYWORDS="
x86"
784

Русское WIKI
Настройка emerge
Теперь нужно предупредить emerge о том что мы хотим использовать getdelta вместо wget. Для этого добавим в /etc/make.conf параметр FETCHCOMMAND:
Файл: File /etc/make.conf
FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}"
Конфигурация getdelta
У getdelta есть свой файл конфигурации:/etc/deltup/getdelta.rc. Рассмотрим некоторые полезные параметры:
DELTUP_SERVER - указывает на используемый deltup сервер. Рекомендуется оставить без изменений, так как deltup-сервера сейчас собраны в сеть обращение к которой идёт через один сервер linux01.gwdg.de.
QUEUERETRY - количество секунд, которые будет ждать getdelta,пока сервер не сделает dtu-файл.
MAXIMUM_ACCEPTABLE_QUEUEPOS - максимальный номер в очереди ожидания. В связи с ростом загруженности deltup-сервера имеет смысл установить число побольше.
REMOVE_OLD - удалять старые версии файлов. Полезно, если вы не хотите складировать дистфайлы.
DO_NOT_REMOVE - путь к файлу, содержащему имена файлов, которые не следует удалять при включенной опции REMOVE_OLD
Дополнительно
Могут возникнуть проблемы если вы скачали часть файла нужного для установки.
Дело в том, что для продолжения докачки emerge использует не
FETCHCOMMAND, а RESUMECOMMAND. Однако не следует менять
RESUMECOMMAND на getdelta, так как getdelta не поддерживает докачку.
Обновление портежей без доступа в интернет
непосредственно из системы
Данное руководство может помочь вам если с доступом в интернет из системы Gentoo проблемы. Однако у вас есть свежий portage-xxxxxxxx.tar.bz2.
Если portage-xxxxxxxx.tar.bz2.md5sum не старше 40 дней(возможно это ограничение можно убрать, но автор этих строк не знает как) тогда проще сделать так :
Создаем папку /var/tmp/emerge-webrsync/ командой:
# mkdir /var/tmp/emerge-webrsync/
Копируем фаилы portage-xxxxxxxx.tar.bz2 и portage-xxxxxxxx.tar.bz2.md5, которые находятся к примеру, в корневом каталоге на CD-ROM диске (/mnt/cdrom/portage- xxxxxxxx.tar.bz2 и /mnt/cdrom/portage-xxxxxxxx.tar.bz2.md5sum), командами:
785

Русское WIKI
# cp /mnt/cdrom/portage-xxxxxxxx.tar.bz2 /var/tmp/emerge-webrsync/
#cp /mnt/cdrom/portage-xxxxxxxx.tar.bz2.md5sum /var/tmp/emerge-webrsync/
и обновляем портежи при помощи
emerge -webrsync: # emerge-webrsync
Теперь мы получили систему портежей по состоянию на xxxxxxxx.
Если же portage-xxxxxxxx.tar.bz2 старше 40 дней тогда:
Первым делом переименовываем каталог /usr/portage например в /usr/portage2:
# mv /usr/portage /usr/portage2
затем создаем переименнованный /usr/portage:
# mkdir /usr/portage
Перемещаем из /usr/portage2/distfiles исходники (если вам они нужны :) ) обратно в
/usr/portage/distfiles:
# cp /usr/portage2/distfiles /usr/portage/distfiles
Теперь можно распаковывать наш новый portage-xxxxxxxx.tar.bz2, который находится, к примеру, в корневом каталоге на CD-ROM диске (/mnt/cdrom/portage- xxxxxxxx.tar.bz2), командой:
# tar -xvjpf /mnt/cdrom/portage-xxxxxxxx.tar.bz2 -C /usr/portage
После достаточно продолжительной распаковки нужно обновить кэш системы портежей:
# emerge metadata
Теперь мы получили систему портежей по состоянию на xxxxxxxx, а в каталоге
/usr/portage2 - её бэкап.
Дополнительно можно прочитать:
HOWTO Обновление пакетов без доступа в интернет непосредственно из системы.
Обновление пакетов без доступа в интернет
непосредственно из системы
В моем случае это понадобилось в следующей (я полагаю довольно распространенной) ситуации: дома - нет интернета (дорогой, медленный - нужное подчеркнуть :) ), а на работе - хороший и бесплатный. Итак для начала необходимо получить список нужных пакетов. В этом примере мы хотим установить/обновить glibc baselayout texinfo gettext zlib binutils gcc ncurses. Список мы сохраняем на устаревший магнитный носитель, но счастливые обладатели более надежных носителей естественно могут пользоваться ими.
Получение списка для скачивания:
(Не забывайте '2' перед '>') Code:
# emerge -fp glibc baselayout gettext zlib binutils gcc ncurses 2> stage1.list
# mount -t vfat /dev/fd0 /mnt/floppy
# cp /mnt/gentoo/stage1.list /mnt/floppy
786

Русское WIKI
# umount /mnt/floppy
Теперь вставляем дискету в компьютер с хорошим каналом. (В моем случае это рабочий компьютер.) Если заглянуть в файл stage1.list, можно увидеть, что в нем перечисляются несколько ссылок на каждую загрузку. К сожалению, это не совсем то, что нам надо. Сначала список надо почистить от лишнего:
Очистка от лишних ссылок:
Этот скрипт привязан к формату вывода emerge, который может измениться без предварительного предупреждения - используйте с осторожностью! # cut -f 1 -d ' ' stage1.list > stage1.download
Теперь используем wget для загрузки списка пакетов:
# wget -N -i stage1.download
Получив все файлы, переносим их в наш компьютер в
/mnt/gentoo/usr/portage/distfiles. И для проверки запустим
# emerge -pv glibc baselayout gettext zlib binutils gcc ncurses
Если в строке Total Download: указана цифра 0 - значит все было сделано верно.
Можно теперь запускать установку:
# emerge glibc baselayout gettext zlib binutils gcc ncurses
У всего вышеописанного есть один недостаток. В фаиле stage1.download есть все необходимые для установки фаилы. Даже те, которые у вас могут быть в distfiles.
А как вырезать ссылки из stage1.download на имеющиеся в distfiles фаилы я не знаю. Если кто знает - напишите.
Взято с Gentoo.org: http://www.gentoo.org/doc/ru/altinstall.xml
Полное обновление системы
Приведение в порядок /var/lib/portage/world
В world должен быть список программ, которые нужно доустановить к тем, которые уже входят в "system" (т.е. в текущий профайл). в world не должно быть никаких библиотек, и т.д., которые не нужны сами по себе, а нужны только для удовлетворения чьих-то зависимостей (чтобы не продолжать устанавливать/обновлять их, если они уже станут не нужны по какой-то причине) программ, которые уже входят в "system", не должно быть в world. В world нельзя указывать определенную версию софта, это лучше делать в
/etc/portage/package.mask.
Скрипт regenworld может помочь восстановить world путем анализа
/var/log/emerge.log и генерации на его базе файла world (он перезапишет текущий world!).
Скрипт dep -p -w поможет найти избыточные записи в world(которые всё-равно нужны другим записям в world или входят в system).
787

Русское WIKI
Перед серьёзными обновлениями желательно просмотреть /etc/portage/*, т.к. там могут быть уже не актуальные записи мешающие текущему обновлению.
Обновление profile
Не каждый Gentoo release включает в себя новый profile (например, 2004.1 был без profile). Даже если новый profile есть, то переходить на него не обязательно
(если это будет обязательно, то старый профайл будет deprecated и emerge об этом должен будет громко кричать).
Инструкции по обновлению profile будут выкладываться здесь:
http://www.gentoo.org/doc/en/gentoo-upgrading.xml и как правило сводиться к изменению симлинка /etc/make.profile
USE-флаги
Запустить emerge -uDpv --newuse world и проверить что USE-флаги для всех пакетов выставлены корректно, и при необходимости скорректировать
USE-флаги выставляются в /etc/make.conf и /etc/portage/package.use
Запуск обновления системы (если не нужно обновлять toolchain)
Если
emerge -uDav --newuse world
показывает что будет обновляться пакет входящий в toolchain (linux-headers, glibc, binutils или gcc), то крайне рекомендуется полностью перекомпилировать всю систему - см. следующий пункт - а иначе можно вместо следующего пункта просто запустить:
emerge -uDav --newuse world
Некоторые причины не использовать emerge -U вместо -u
Причина 1: Проблемы со SLOT
Это, к примеру, происходит потому, что некоторые люди хотели gimp-2 вместо gimp-1.2. Представьте ситуацию, где gimp-1.2 помечен stable и находится в SLOT
1, gimp-2 помечен unstable и находится в SLOT 2. Теперь при выполнении
ACCEPT_KEYWORDS=
x86 emerge gimp получите gimp-2.
Позже, когда вы посчитаете, что наступило время обновить свою систему чем- либо похожим на "emerge -U world", эта команда установит gimp-1.2, потому, что gimp находится в world-файле, и флаг "-U" не обрабатывает SLOT должным образом.
Причина 2: Проблемы, в случае удаления ebuild-ов с Portage-дерева.
Допустим, в Portage находятся 2 версии пакетов foo, foo-1.4 (помеченный как stable) и foo-1.6 (помеченный как unstable). Вы хотите вариант unstable и делаете emerge, как с вышеуказанным gimp. Позже обновляете world как было сказано выше, но в промежутке этого времени вышло критическое обновление для foo-1.6
- foo-1.6.1. Теперь появляется несколько возможностей обработки. foo-1.6 был удален из Portage. Будет установлен foo-1.4, несмотря на "снижение"
788

Русское WIKI
версии вместо флага "-U"
Ситуация будет еще хуже, если foo-1.6 не был удалён из Portage по какой-либо причине: foo-1.6 (тот, что с критической уязвимостью) будет оставаться на вашей системе до тех пор, пока не будет помечено stable что-либо выше чем foo-1.6.
Обновление одного из пакетов входящих в toolchain
Если обновляется хотя-бы один из linux-headers, glibc, binutils или gcc, то рекомендуется пересобрать их дважды, после чего весь system, после чего весь world.
Примечание: Цель двойной компиляции toolchain - получить гарантированно стабильный и корректный toolchain не зависящий от предыдущего.
Перекомпилировать system/world после этого жёсткой необходимости нет, по крайней мере если остальной софт продолжает работать (возможно даже используя библиотеки из старого toolchain - см. предыдущие пункты об апгрейде).
Цель перекомпиляции system/world - чтобы весь софт получил потенциальное преимущество от установки нового toolchain. system перекомпилируется перед world из тех-же соображений, т.к. при компиляции программ из world используются утилиты из system.
Если увеличивается первая или вторая цифра версии gcc, то перед второй сборкой нужно переключиться на новую версию через gcc-config - иначе новый gcc просто установится параллельно со старым в "новый слот", но по умолчанию использоваться будет старый.
При сборке system после двойной перекомпиляции toolchain нет необходимости опять компилировать toolchain как часть system. Аналогично при сборке world после system нет небходимости опять компилировать пакеты из system как часть world. Это можно попробовать обойти либо вручную, либо используя скрипты [1], либо через бинарные пакеты и `emerge -k` (я предпочитаю последний вариант).
Итак, рекомендованный набор команд:
# для того, чтобы безопасно использовать `emerge -k` нужно очистить
# каталог с текущими бинарными пакетами
# (напр., переместить его в /tmp/portage-packages)
pkgdir=$(portageq pkgdir)
mv $pkgdir /tmp/portage-packages1
install -d -o portage -g portage $pkgdir
# первая сборка toolchain
emerge linux-headers glibc binutils gcc-config gcc
# выбрать новый gcc если он установился в новый слот
gcc-config имя_или_номер_нового_gcc
# см. `gcc-config -l`
source /etc/profile
# компиляция toolchain с созданием бинарных пакетов
emerge -b glibc binutils gcc portage
# не компилить glibc, binutils и gcc
789

Русское WIKI
emerge -bke system
# не компилить предыдущие пакеты (включая system)
emerge -bke world
Примечание: Чисто теоретически существует пакет binutils-config, который когда- нибудь может потребоваться использовать аналогично gcc-config.
Обновление безопасности.
Примечание: Даже после `emerge -uDav --newuse world` в системе могут оставаться устаревшие пакеты с дырами в безопасности - в слотах!
glsa-check -l | grep '\[N\]'
emerge ... # если нужно
Удаление неиспользуемых пакетов.
После обновления системы в ней могут оказаться пакеты, которые никто не использует. Эти пакеты желательно удалить, т.к. они не будут в дальнейшем обновляться при `emerge -uDav --newuse world`.
emerge -a depclean # очень осторожно!!!
После обновления библиотек может потребоваться перекомпилировать программы, которые эти библиотеки используют:
Примечание: Для glsa-check, revdep-rebuild необходимо установить пакет gentoolkit
rm /root/.revdep-rebuild*.?_*
revdep-rebuild -p
revdep-rebuild
Обновление конфигов.
dispatch-conf
Если используется runit-init и обновлялся пакет baselayout, то нужно восстановить /sbin/init: ls -l /sbin/*init*
if (/sbin/init это бинарник, а не симлинк) {
mv /sbin/init /sbin/init-sysv ln -s runit-init /sbin/init
}
790

Русское WIKI
Отслеживание важных сообщений при установке пакетов.
В процессе emerge world выдаётся очень много сообщений, причём важные комментарии перемешаны с командами компиляции, и отследить их при сборке нескольких пакетов одновременно не возможно.
Но все эти сообщения можно получить из log-файлов после окончания установки
emerge world. Для этого нужно использовать либо enotice, либо portlog-info.
Сборка на другом компьютере
Существует много методов добиться этого, но мы используем самый удобный - тот, что работает с портежами.
Другие методы могут быть более подходящими для других ситуаций, когда главная проблема не только медленный процессор и долгое время сборки, например, если надо перенести Gentoo на систему, которая не может загружаться с CD или сети.
Скомпилировать Gentoo для старых систем x86 (например, Pentium Pro 200MHz с небольшим количеством RAM) можно на x86_64-системе с работающей Gentoo.
Обратный трюк, собрать 64-битную систему на 32-битном компьютере, невозможен.
Я собирал систему в chroot-окружении согласно Gentoo-handbook, используя мою
64bit-Gentoo вместо "живого" CD:
# mkdir /your/new/gentoo
# tar xjvpf stage3-x86-*.tar.bz2 -C /your/new/gentoo
Отредактируйте переменные CHOST и CFLAGS, соответствующие вашей целевой системе (не изменяйте CHOST, если используете стадию 2 или 3 - возмите стадию для соответствующей платформы). У меня было:
# CHOST="i686-pc-linux-gnu"
# CFLAGS="-march=pentiumpro -Os -momit-frame-pointer -pipe"
# CXXFLAGS="$CFLAGS"
Далее переходим в chroot-окружение и выполняем все шаги, описанные в
Руководстве Gentoo по установке
Чтобы собрать ядро для i386 на x86_64-машине добавьте ARCH=i386 при конфигурации и компиляции ядра.
# make menuconfig ARCH=i386
# make clean dep modules modules_install bzImage ARCH=i386
# cp arch/i386/boot/bzImage /boot/vmlinuz
Размечать диск и создавать файловые системы на старом компьютере вам
791

Русское WIKI
придется с помощью "живого" CD или другой системы Linux.
Переносим готовую систему на старый компьютер:
# cd /your/new/gentoo
# echo "/sys/*" >> tar_exclusions
# echo "/var/run/*" >> tar_exclusions
# echo "/tmp/*" >> tar_exclusions
# echo "/proc/*" >> tar_exclusions
#
# tar -C /your/new/gentoo -X tar_exclusions --preserve -cf ../gentoo.tar .
## можете добавить -v для подробного вывода или -j / -z для компрессии
# scp [-P ssh_port] ../gentoo.tar user@dest_pc:
На старой машине подготавливаем диски и распаковываем систему:
# tar -C /your/new/system --preserve -xf user/gentoo.tar
Теперь вы можете войти в chroot-окружение. Сконфигурируйте системный загрузчик и перегрузитесь. Теперь вы находитесь в новой, с иголочки, Gentoo.
Система теперь должна работать, но я заметил проблему - я не могу ничего скомпилировать. Похоже, что не работает ни C-препроцессор, ни gcc (обычно configure говорит, что /lib/cpp fails sanity check). Не знаю почему, но копирование
/usr/include из chroot-каталога с исходной машины на старый компьютер эту проблему решило.
Удачи!
Оригинал на http://gentoo-wiki.com/HOWTO_Compile_on_another_computer
Перевод Poor Fred
Прочее
Разделы MS Windows по-русски
Введение
Достаточно часто возникает необходимость подмонтировать раздел с установленным M$ Windows.
Ядро
792

Русское WIKI
Для того, чтобы система могла работать с разделами FAT или NTFS, необходимо включить их поддержку в ядре.
Linux Kernel Configuration: Filesystems
File systems ->
DOS/FAT/NT Filesystems ->
(M) DOS FAT fs support
(M) MSDOS fs support
(M) VFAT (Windows-95) fs support
(M) NTFS file system support
Также надо включить поддержку следующих кодировок:
Linux Kernel Configuration: Native Language Support
File systems ->
Native Language Support ->
Windows CP1251 (Bulgarian, Belarusian)
Codepage 866 (Cyrillic/Russian)
Монтирование
Теперь можно примонтировать любой windows-раздел программой mount. mount -t file_system /dev/device /mnt/dir В нашем случае в качестве file_system необходимо указывать vfat или ntfs, в зависимости от файловой системы раздела с windows.
Монтирование FAT
Для монтирования разделов FAT нужно использовать следующую команду:
mount -t vfat -o codepage=866,iocharset=koi8-r,quiet,umask=000 /dev/hdd2 /mnt/win1
Для украинских символов:
mount -t vfat -o codepage=866,iocharset=koi8-u,quiet,umask=000 /dev/hdd2 /mnt/win1
Мы использовали дополнительные опции iocharset, codepage, quiet и umask.
Рассмотрим их внимательнее:

codepage - это кодовая страница используемая на монтируемой ФС. Так как мы из России,то нужно писать codepage=866. Эта опция нужна для перекодировки имен файлов.

iocharset
- указывает какую кодировку использовать для ввода/вывода.Нужно указать свою системную локаль. Локаль можно узнать командой locale. (Здесь под вводом/выводом понимается ввод с и вывод на терминал. Иммено поэтому нужно указывать кодировку локали, т.е. кодировку которую используют программы запущенные в терминале.)

quiet - при копировании на файловую систему FAT программа попытается записать права доступа, владельца и т.д., но на FAT их сохранить нельзя и будет выведено сообщение об ошибке ( хотя файл скопируется ). Чтобы
793

Русское WIKI
ошибки не появлялись мы просим смонтировать в "молчаливом" режиме

umask - в некоторых случаях у простого пользователя может не хватить прав на чтение или запись файлов из-за неправильно установленных прав на файлы и директории. Поскольку у файловой системы FAT нет прав доступа, они выставляются операционной системой ( в данном случае Linux
) на лету в соответствии с указанным значением umask. Про umask смотрите в umask(2)
Параметры codepage и iocharset можно задать прямо в ядре. Тогда не нужно будет писать их каждый раз:
Linux Kernel Configuration: FAT
File systems ->
DOS/FAT/NT Filesystems ->
(utf8) Default iocharset for FAT
(866) Default codepage for FAT
То есть вместо
mount -t vfat -o codepage=866,iocharset=utf8,quiet,umask=000 /dev/hdd2
/mnt/win1 можно писать
mount -t vfat -o quiet,umask=000 /dev/hdd2 /mnt/win1
Монтирование NTFS
Для монтирования NTFS разделов опции mount немного изменяться. Делаем это так:
mount -t ntfs -o nls=koi8-r,umask=0,ro /dev/hdd2 /mnt/win1
Для украинских символов:
mount -t ntfs -o nls=koi8-u,umask=0,ro /dev/hdd2 /mnt/win1
Вот что они значат:
nls - указывает на вашу системную локаль. Отсутствие опций codepage и iocharset связано с тем,что NTFS разделы используют юникод для хранения имен файла.
umask - указывает на то что читать файлы с этого раздела могут все. А вот писать не разрешает опция ro. Мы рекомендуем ее поставить,так как функция записи на разделы NTFS еще не отлажена.
В случае если вы в качестве системной кодировки используете utf-8, то опции mount должны быть следующими:


Поделитесь с Вашими друзьями:
1   ...   62   63   64   65   66   67   68   69   ...   79


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал