From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sun, 30 Nov 2003 09:57:01 +0200 From: Alexander Bokovoy To: community@altlinux.ru Subject: Re: [Comm] =?koi8-r?B?88LP0svBIHJwbSDJ2iDJ?= =?koi8-r?B?08jPxM7Jy8/X?= Message-ID: <20031130075701.GC1991@sam-solutions.net> References: <200311292114.00998.eugine_kosenko@ukr.net> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <200311292114.00998.eugine_kosenko@ukr.net> X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.3 Precedence: list Reply-To: community@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2003 07:57:07 -0000 Archived-At: List-Archive: List-Post: 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/