1 (2012-06-11 08:20:34 отредактировано WildPile)

Собственно сабж smile
Устранил несколько недочетов найденных Mageiafriend и выложил на своем сервачке более свежий архив с mageia для сборки пакетов в chroot (два корня - i586 и x86_64) для тех, кому так удобнее (например из Gentoo x86_64). Объём небольшой. Можно сразу распаковать и собирать пакеты.  Для включения сhroot надо будет запустить bash-скрипт для нужной архитектуры (Скрипты для запуска прилагаются).
Предустановлены:

  • openssh-clients

  • nano

  • mc

  • rpmrebuild (как через vim так и через nano в виде rpmrebuild-nano )

  • rpm-build

  • fortunes-ru (это же русское сообщество? smile  )

+ .rpmmacros[
%_topdir                %(echo $HOME)/rpmbuild
   %_tmppath               %(echo $HOME)/rpmbuild/tmp

   %packager               Имя Фамилия <ваша@почта>
   %distribution           Mageia
   %vendor                 Mageia Russian Community

   %distsuffix             .mrc.mga
+ Свежеисправленный bash-скрипт для запуска mageia2  i586 в chroot
#/bin/bash!

# На всякий случай
xhost +

# Пробрасываем интернет в chroot
cp /etc/resolv.conf mageia2i586/etc/resolv.conf

# Копируем свежий rpmmacros в chroot
cp rpmmacros mageia2i586/root/.rpmmacros

# Копируем свежий bashrc в chroot
cp bashrc mageia2i586/root/.bashrc

# Даём имя нашему chroot
chroot mageia2i586 hostname chroot-mga2-i586

# Подключаем файловые системы (Подправляйте под себя) 
mount --bind /dev/ mageia2i586/dev
mount --bind rpmbuild mageia2i586/root/rpmbuild
mount --bind /home mageia2i586/home
mount --bind /media mageia2i586/media
chroot mageia2i586 mount -t proc proc /proc
chroot mageia2i586 mount none -t sysfs /sys
chroot mageia2i586 mount none -t devpts /dev/pts

# Заходим в chroot
clear
chroot mageia2i586 /bin/bash

#Покидаем chroot
chroot mageia2i586 umount -lf /sys
chroot mageia2i586 umount -lf /dev/pts
umount mageia2i586/root/rpmbuild
umount mageia2i586/home
umount mageia2i586/media
umount -lf mageia2i586/dev
chroot mageia2i586 umount -lf /proc
+ Свежеисправленный bash-скрипт для запуска mageia2  x86_64 в chroot
#/bin/bash!

# На всякий случай
xhost +

# Пробрасываем интернет в chroot
cp /etc/resolv.conf mageia2x86_64/etc/resolv.conf

# Копируем свежий rpmmacros в chroot
cp rpmmacros mageia2x86_64/root/.rpmmacros

# Копируем свежий bashrc в chroot
cp bashrc mageia2x86_64/root/.bashrc

# Даём имя нашему chroot
chroot mageia2x86_64 hostname chroot-mga2-x86_64

# Подключаем файловые системы (Подправляйте под себя) 
mount --bind /dev/ mageia2x86_64/dev
mount --bind rpmbuild mageia2x86_64/root/rpmbuild
mount --bind /home mageia2x86_64/home
mount --bind /media mageia2x86_64/media
chroot mageia2x86_64 mount -t proc proc /proc
chroot mageia2x86_64 mount none -t sysfs /sys
chroot mageia2x86_64 mount none -t devpts /dev/pts


# Заходим в chroot
clear
chroot mageia2x86_64 /bin/bash

#Покидаем chroot
chroot mageia2x86_64 umount -lf /sys
chroot mageia2x86_64 umount -lf /dev/pts
umount mageia2x86_64/root/rpmbuild
umount mageia2x86_64/home
umount mageia2x86_64/media
umount -lf mageia2x86_64/dev
chroot mageia2x86_64 umount -lf /proc

Выдвигайте свои идеи.

Сомневайся в ком угодно, но только не в себе.
Спасибо сказали: xxblx, Gnom, Vagulo3

2 (2012-06-23 11:19:29 отредактировано WildPile)

Внимание: Готовый chroot Mageia2 для сборки пакетов
md5  7e7da894db7a933220ca2a4cf25af5e4  chroot-mga2.squashfs
Системные требования:

  • Любой дистрибутив с современным 64-битным ядром! С 32-битным ядром будет работать только 32-битный chroot!

  • Прямые руки и понимание зачем это нужно.

+ Особенности
  • Squashfs вместо архива (для вашего же блага!)

  • Работает только под root

  • При запуске становятся доступны /dev/ /home/ /media Будьте внимательны и осторожны

  • Единая папка rpmbuild

  • Единые rpmmacros и bashrc в корне этого набора для быстрого развёртывания

  • Работает ssh

  • В mc одиночный Esc, тема darkfar, настройки панелей запоминаются

+ Инструкция по установке!

Скачайте файл chroot-mga2.squashfs и откройте консоль в папке с этим файлом.

Залогиньтесь под root-ом
su (либо sudo su)

Далее все действия выполняются под root-ом! Будьте бдительны!

+  Еcли не установлен squashfs-tools - установите. Пригодится!

Mageia/Mandriva
        urpmi squashfs-tools

Debian/Ubuntu
        apt-get install squashfs-tools

RHEL/Fedora
        yum install squashfs-tools

SLES/SLED OpenSUSE
        zypper install squashfs

Gentoo (в ядре по умолчанию поддержка есть)
        emerge -av squashfs-tools

Распакуйте squashfs в необходимую папку, например в /home/user/chroot-mga2

unsquashfs -d /home/user/chroot-mga2 chroot-mga2.squashfs

Распаковывать надо на разделе где достаточно свободного места!
Подойдет любая файловая система Linux (ext3/ext4/reiserfs.... NTFS и FAT32 не подойдут!)

Перейдите в папку с распакованным архивом.
cd /home/user/chroot-mga2

Отредактируйте файл rpmmacros (точку  в имени не добавлять!) Напишите кто вы, укажите почту, и.т.п.
При желании можете отредактировать по вкусу файл bashrc, который тоже не нужно переименовывать.

Теперь всё готово. Можете пользоваться!
Для запуска просто зайдите под root-ом в папку и запустите:
        Для 32-x битного chroot:
./chroot_mageia2i586
        Для 64-битного:
./chroot_mageia2x86_64

+ Опытным путём проверена работоспособность этого набора на следующих дистрибутивах
  • Mageia/Mandriva/Rosa

  • Fedora

  • OpenSUSE

  • Debian(Aptosid)/Ubuntu

  • Gentoo/Calculate/Sabayon

Сомневайся в ком угодно, но только не в себе.

3

Эта штука у меня в кальке 32битной работает.
Пакеты собирать так проще и удобней.

Спасибо большое!

4

Тему прикрепляю, т.к. наверняка скрипт и позже сборка mageia'и пригодится и другим сборщикам пакетов.
WildPile'у спасибо за проделанный (и еще предстоящий) труд

Fedora & GNOME
Спасибо сказали: WildPile1

5

Однако!... Сборка в chroot имеет ряд особенностей. Первым проблему заметил Mageiafriend.
В общем дело вот в чём...
Если у Вас в chroot не собирается пакет, который собирался в обычной системе - проблема в spec-файле, а не в chroot!!! Исправляйте spec big_smile
P.S.  Сижу,  лечу спеки... smile

Сомневайся в ком угодно, но только не в себе.

6 (2012-06-23 10:24:43 отредактировано olelukoie)

Замечание к инструкции во втором посте: в openSUSE 12.1 пакета с названием squashfs-tools нет. Утилита unsquashfs находится в пакете squashfs (без -tools).

Добавлено: при попытке распаковать Squashfs в openSUSE unsquashfs дает следующее:

$ unsquashfs chroot-mga2.squashfs 
Filesystem uses xz compression, this is unsupported by this version                                                 
Decompressors available:                                                                                            
        gzip

7 (2012-06-23 11:18:53 отредактировано WildPile)

olelukoie пишет:

Замечание к инструкции во втором посте: в openSUSE 12.1 пакета с названием squashfs-tools нет. Утилита unsquashfs находится в пакете squashfs (без -tools).

Добавлено: при попытке распаковать Squashfs в openSUSE unsquashfs дает следующее:

$ unsquashfs chroot-mga2.squashfs 
Filesystem uses xz compression, this is unsupported by this version                                                 
Decompressors available:                                                                                            
        gzip

Может этот пакет подойдет? Какой версии стоит squashfs?

Сомневайся в ком угодно, но только не в себе.

8 (2012-06-23 11:36:26 отредактировано olelukoie)

WildPile пишет:
olelukoie пишет:

Замечание к инструкции во втором посте: в openSUSE 12.1 пакета с названием squashfs-tools нет. Утилита unsquashfs находится в пакете squashfs (без -tools).

Добавлено: при попытке распаковать Squashfs в openSUSE unsquashfs дает следующее:

$ unsquashfs chroot-mga2.squashfs 
Filesystem uses xz compression, this is unsupported by this version                                                 
Decompressors available:                                                                                            
        gzip

Может этот пакет подойдет? Какой версии стоит squashfs?

Нет, это как раз "стоковый" официальный squashfs, он только gzip понимает. Для поддержки xz надо подключить неофициальную репу Filesystems (http://download.opensuse.org/repositories/filesystems/openSUSE_12.1/) и ставить squashfs из нее "со сменой поставщика". Думаю, надо добавить пару слов на эту тему в инструкцию.

9

А кто-нибудь собирает пакеты с помощью iurt?

10

omerta13 пишет:

А кто-нибудь собирает пакеты с помощью iurt?

если в вики будет инструкция, то может кто-то и будет

Аккаунт отключен по просьбе пользователя. (28.12.2014)

11

romkaromka пишет:
omerta13 пишет:

А кто-нибудь собирает пакеты с помощью iurt?

если в вики будет инструкция, то может кто-то и будет

Есть инструкция на англоязычной вики https://wiki.mageia.org/en/Packagers_Me … Howto#iurt

12

Добавил всё это в вики с картинками Сборка rpm-пакета в chroot

Аккаунт отключен по просьбе пользователя. (28.12.2014)

13 (2012-08-01 16:15:13 отредактировано romkaromka)

Образ chroot слабоват, он должен соответствовать полному CD дистрибутиву магеи иначе чтобы собрать что-либо более или менее стоящее, то надо выкачать из интернета более чем, что неприемлемо, трафик не резиновый. Иксовые вещи собирать так вообще ой как сложно. Еще у меня дистрибутив 32битный, как собирать пакеты для 64бит? В данном случае говорится, что никак. И что делать?

Аккаунт отключен по просьбе пользователя. (28.12.2014)

14 (2012-08-01 18:34:13 отредактировано omerta13)

romkaromka пишет:

Образ chroot слабоват, он должен соответствовать полному CD дистрибутиву магеи иначе чтобы собрать что-либо более или менее стоящее, то надо выкачать из интернета более чем, что неприемлемо, трафик не резиновый. Иксовые вещи собирать так вообще ой как сложно. Еще у меня дистрибутив 32битный, как собирать пакеты для 64бит? В данном случае говорится, что никак. И что делать?

Это относится к genchroot-tarball (aum) или к образу, который WildPie собирал? Если к genchroot-tarball, то пользователь может сам собрать chroot с любыми пакетами. Только в этом случае нарушается сам принцип чистоты chroot. Система действительно должна быть минимальной, т. к. это позволяет проверить зависимости. Если chroot слабоват, лучше решить эту проблему не расширением chroot, а созданием локальной копии репозитория. И собираться будет всё быстро.

15 (2012-08-01 18:59:53 отредактировано romkaromka)

К образу, который WildPile собирал.
С плохим интернетом копию репозитория - хи-хи.
Имеющийся вариант готового chroot годится, естественно, просто можно было бы еще один сделать - побольше.
Собирал в нем руссифицированный kdesvn - пришлось выкачать больше самого размера файла chroot-mga2.squashfs, правда, kdesvn нигде не собирался, а тут собрался.
Еще непонятно различие:
chroot-mga2.squashfs
chroot-mga2-new.squashfs
chroot-mga2-old.squashfs
И было бы здорово если бы был готовый chroot, который позволил бы собирать 64битные пакеты в 32битном дистрибутиве - это сейчас актуально.
Как решается вопрос чистого chroot? При новом его запуске остается всё, что было поставлено до этого. Не решен вопрос обновления информации о пакетах в репозиториях - надо скрипт какой-то добавить в образ чтобы можно было обновлять официальные репозитории и наш (а он вообще не подключен).

Аккаунт отключен по просьбе пользователя. (28.12.2014)

16 (2012-08-01 20:16:45 отредактировано omerta13)

romkaromka пишет:

С плохим интернетом копию репозитория - хи-хи.
Как решается вопрос чистого chroot? При новом его запуске остается всё, что было поставлено до этого. Не решен вопрос обновления информации о пакетах в репозиториях - надо скрипт какой-то добавить в образ чтобы можно было обновлять официальные репозитории и наш (а он вообще не подключен).

Если канал плохой, тогда надо работать со сборочной. Я понимаю, что сейчас этого сделать нельзя, но это на будущее.
"Чистый" в смысле ещё и минимальный. Скажем chroot на 1000 пакетов это совсем не хорошо. На таком chroot нельзя отладить пакетные зависимости. Например, минимальный chroot для Mageia это 240 пакетов (скорее всего, даже эти 240 пакетов на самом деле можно ещё урезать).
Я приведу один простой пример. Собираемый пакет требует наличия пакета X, в "жирном" chroot этот пакет есть, а в реальной системе его может и не быть. Тогда какой смысл собирать в chroot, если с его помощью не получается разрешить пакетные зависимости.
Или вот ещё пример. Пакет в таком chroot соберётся, а потом вы будете предлагать свои пакеты в Mageia, а на их сборочной они не будут собираться. Будете снова ковыряться, ставить пакет в очередь, пытаясь собрать корректно пакет и разрешить зависимости (а очередь до нового задания может дойти ой как не скоро). В общем "жирный" chroot для сборки весьма не хорош.

17

Вчера решил одну из проблем со сборкой пакетов в chroot. Проблема проявляется при сборке пакетов, для которых необходима работа с консолью, например, python в chroot не пересобирался. В общем, что нужно исправить в скрипте WildPie:

ln -s /dev/pts/ptmx chroot/dev/ptmx
ln -s /dev/ptmx chroot/dev/tty
mount -n -t devpts -o gid=5,mode=620,ptmxmode=0666,newinstance chroot_devpts chroot/dev/pts

18

А у меня из chroot вообще не выходит, походу не отмонтируется, типа занято. Но даже если не занято, то всё равно. Еще ни разу не удалось выйти из chroot.

Аккаунт отключен по просьбе пользователя. (28.12.2014)

19

bash: xhost: команда не найдена
Аккаунт отключен по просьбе пользователя. (28.12.2014)