ALT Linux Community general discussions
 help / color / mirror / Atom feed
From: Alexander Bokovoy <a.bokovoy@sam-solutions.net>
To: community@altlinux.ru
Subject: Re: [Comm] Сборка rpm из исходников
Date: Sun, 30 Nov 2003 09:57:01 +0200
Message-ID: <20031130075701.GC1991@sam-solutions.net> (raw)
In-Reply-To: <200311292114.00998.eugine_kosenko@ukr.net>

On Sat, Nov 29, 2003 at 09:14:00PM +0200, Евгений Косенко wrote:
> Вот, собрался опробовать свои силы в сборке rpm-пакетов из исходников. Как мне 
> и рекомендовали, посмотрел статью 
> 
> http://atmsk.ru/indexe98c.html?option=articles&task=viewarticle&artid=40&Itemid=3 
> 
> и попробовал сделать так же. Могу сказать, что статья явно не для новичков. 
> Во-первых, в тексте нигде не упомянуто, что "непривилегированный" 
> пользователь должен входить в группу rpm. Во-вторых, каталог /usr/src, куда 
> рекомендуется ставить исходники, доступен только для "привилегированного" 
> пользователя root. Как он может быть доступен другим при установке из коробки 
> -- ума не приложу. А в-третьих, совершенно неясно, из каких каталогов 
> выполнять указанные команды. Впрочем, обо всем по порядку. Итак,
1. Он действительно не обязан входить в группу rpm для обычной сборки.
2. При запуске rpm -i some-package.src.rpm произойдет создание дерева RPM
для сборки в Вашем домашнем каталоге (~/RPM, если не указано другое в
~/.rpmmacros) -- так сделано у нас, начиная с М2.2.

> /home/user
> $ apt-get source gnome-mlview
Вот для работы этой команды, пользователь *должен* входить в группу rpm.
Связано это с тем, что ему (точнее, apt'у в этом режиме) нужен доступ к
/var/cache/apt/*, который имеет права доступа только владельцу (root) и
группе (rpm) -- не все же в системе обязаны иметь доступ к общесистемной
службе установки пакетов.

> Чтение списков пакетов... Завершено
> Построение дерева зависимостей... Завершено
> Необходимо получить 451kB исходных архивов.
> Получено: 1 ftp://ftp.linux.kiev.ua i586/classic gnome-mlview 0.6.0-alt1 
> (srpm) [451kB]
> Получено 26,4kB за 19s (1324B/s).
> gnome-mlview                 
> ##################################################
> $
> 
> Мнэ... Он, оказывается, не только тянет файл, как сказано в статье, он еще его 
> и ставит! Ладно,
> 
> $ ls -l /usr/src
> итого 2
> drwxr-xr-x    3 root     root           72 Ноя  8 21:37 kernel
> drwxr-xr-x   14 root     root          792 Ноя  8 21:37 linux
> $ ls -l
> ...
> drwxr-xr-x    4 user   user         96 Ноя 29 20:10 RPM
> ...
> 
> Похоже, что подкаталог RPM ставится в тот же каталог... Ладно, может ему нужно 
> указывать установку явно:
> 
> $ rm -rf RPM
> $ rpm -i gnome-mlview-0.6.0-alt1.src.rpm
> $ ls -l /usr/src
> итого 2
> drwxr-xr-x    3 root     root           72 Ноя  8 21:37 kernel
> drwxr-xr-x   14 root     root          792 Ноя  8 21:37 linux
> $ ls -l
> ...
> drwxr-xr-x    4 user   user         96 Ноя 29 20:10 RPM
> ...
> 
> Весело? Мне не очень. Проверял и от обычного пользователя и от 
> суперпользователя, во всех домашних каталогах и в /usr/src, результат всегда 
> один и тот же -- файлы ставятся в домашний каталог. На этом фоне фраза типа 
Все правильно. Файлы и должны ставиться в домашний каталог.

> 
> > Теперь необходимо положить исходники программы *.tar.gz и патчи *.patch.gz в
> > папочку с /usr/src/RPM/SOURCES, файл описания процесса сборки *.spec
> > положить в папку /usr/src/RPM/SPECS и можно приступать к сборке. Не спешите
> > хвататься за MC и раскладывать файлы вручную, я всего лишь описал процесс,
> > чтобы вы знали, где искать концы после этой операции. В реальности все
> > вышеперечисленное делает команда 
>  
> > $rpm -i ваша_программа.src.rpm 
>  
> выглядит как особо изощренное издевательство. После трехлетней жизни в Линукс 
> у меня выработалось устойчивое мнение, что результаты сборки не должны 
> зависеть от положения рабочего каталога так же, как и от фаз Луны. Неужели 
> каталог /usr/src обладает особой магией?
Я думаю, что в данном случае материал на atmsk.ru устарел.

> 
> Ладно, идем дальше... Допустим, вопреки рекомендациям, имея особо продвинутые 
> права, выполняем следующее:
> 
> $ su -
> ...
> # mv ~user/RPM /usr/src
> # chgrp -R rpm /usr/src/RPM
> # ls -lR /usr/src/RPM
> /usr/src/RPM:
> total 1
> drwxr-xr-x    2 user   rpm           248 Nov 29 21:02 SOURCES
> drwxr-xr-x    2 user   rpm            88 Nov 29 21:02 SPECS
> 
> /usr/src/RPM/SOURCES:
> total 464
> -rw-r--r--    1 eugine   rpm         22753 Sep 24 01:22 
> gnome-mlview-0.6.0.ru.po
> -rw-rw-r--    1 user   rpm           753 Sep 11 22:34 gnome-mlview-16.png
> -rw-rw-r--    1 user   rpm          2087 Sep 11 22:34 gnome-mlview-32.png
> -rw-rw-r--    1 user   rpm          4859 Sep 11 22:34 gnome-mlview-48.png
> -rw-rw-r--    1 user   rpm        432144 Sep 11 09:45 mlview-0.6.0.tar.bz2
> 
> /usr/src/RPM/SPECS:
> total 4
> -rw-r--r--    1 user   rpm          2652 Sep 24 01:22 gnome-mlview.spec
> # cd /usr/src/RPM/SPECS
> # rpm -ba gnome-mlview.spec
> gnome-mlview.spec: No such file or directory
> # exit
> $ pwd
> /home/user
> $ rpm -ba gnome-mlview.spec
> gnome-mlview.spec: No such file or directory
> $ cd /usr/src/RPM/SPECS
> $ rpm -ba gnome-mlview.spec
> gnome-mlview.spec: No such file or directory
> $
> 
> И так далее в разных позах с одним и тем же результатом. Цитирую статью:
> 
> > Обратите внимание! в отличии от обычных операций установки через RPM - эта
> > операция выполняется от пользователя! иначе RPM скажет вам, что сборка
> > разрешена только непривилегированным пользователям и собирать ничего не
> > будет.
> 
> Не знаю, насколько нужно быть "непривилигированным" пользователем, но если 
> приведенные сообщения обозначают, "что сборка разрешена только 
> непривилегированным пользователям", то я испанский летчик.
> 
> Ладно, это все мелочи и придирки в плохом настроении. Главный вопрос: что я 
> делаю не так? Или я такой счастливый, что для первого знакомства мне попался 
> кривой пакет из Сизифа?
Все, что Вам нужно было сделать:
0. rpm -i some-package.src.rpm
1. Поставить все необходимые для сборки пакета зависимости
2. cd ~/RPM/SPECS
3. rpmbuild -ba some-package.spec

Пример. foobar -- только что созданный пользователь, я ничего не
модифицировал в его окружении.

[foobar@boids foobar]$ rpm -i /home/common/Sisyphus/files/SRPMS/samba3-3.0-alt46.1.src.rpm  
[foobar@boids foobar]$ ls
Documents  RPM  tmp
[foobar@boids foobar]$ cd ~/RPM/SPECS/
[foobar@boids SPECS]$ ls
samba3.spec
[foobar@boids SPECS]$ rpmbuild -ba samba3.spec 
ошибка: неудовлетворенные зависимости сборки:
        automake_1.6   нужен для samba3-3.0-alt46.1
        libattr-devel нужен для samba3-3.0-alt46.1
        libpopt-devel нужен для samba3-3.0-alt46.1
        libreadline-devel нужен для samba3-3.0-alt46.1
        libssl-devel нужен для samba3-3.0-alt46.1
        libacl-devel нужен для samba3-3.0-alt46.1
        libcups-devel нужен для	samba3-3.0-alt46.1
        latex2html нужен для samba3-3.0-alt46.1
        libMySQL-devel нужен для samba3-3.0-alt46.1
[foobar@boids SPECS]$

Теперь мне надо установить недостающие сборочные зависимости, чтобы
собрать этот пакет, но это уже за пределами рассматриваемой "проблемы".
-- 
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/


  parent reply	other threads:[~2003-11-30  7:57 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-29 19:14 Евгений Косенко
2003-11-30  7:47 ` Немос
2003-11-30  7:57 ` Alexander Bokovoy [this message]
2003-11-30 12:11   ` Евгений Косенко
2003-11-30 12:46     ` Sergey Degtyaryov
2003-11-30 18:44       ` Евгений Косенко
2003-11-30 19:57         ` Sergey Degtyaryov
2003-11-30 23:12           ` Евгений Косенко
2003-11-30 12:53     ` Alexander Bokovoy
2003-11-30  8:11 ` [Comm] " Konstantin Lepikhov
2003-11-30 12:11   ` Евгений Косенко
2003-11-30 15:27     ` Konstantin Lepikhov
2003-12-01 16:02     ` Alexey Tourbin
2003-11-30 20:25 ` Michael Shigorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031130075701.GC1991@sam-solutions.net \
    --to=a.bokovoy@sam-solutions.net \
    --cc=community@altlinux.ru \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git