LINUX.ORG.RU

Сборка minikube из бинарников в rpm

 , , ,


0

1

Всем привет!
Пытаюсь собрать minikube из бинарников в rpm
Вот репо
https://github.com/patsevanton/minikube-rpm

RPM build errors:
File not found: /home/user/rpmbuild/BUILDROOT/minikube-0.23.0-1.fc27.x86_64/home/user/rpmbuild/BUILDROOT/minikube-0.23.0-1.fc27.x86_64/usr/local/bin/minikube-linux-amd64
Хотя spec вроде нормальный. Где может быть ошибка?

В %{files} не надо buildroot указывать, там имена файлов в том виде как они будут в итоговой системе

alpha ★★★★★ ()

Либо я тебя попросту не понял либо ты хочешь непонятного/неправильного либо одно из двух.

Сперва перечитай внимательно man rpm, man rpmbuild Во первых, насколько я помню, сборка при помощи rpmbuild посредством файла *spec всё-же подразумевает сборку из исходников. Во вторых там сейчас написано:

Not working now

Такие дела.

init_6 ★★★★★ ()
Ответ на: комментарий от init_6

сборка при помощи rpmbuild посредством файла *spec всё-же подразумевает сборку из исходников

rpm - это рецепт раскладывания файлов по системе плюс post/pre-install и т.п. хуки

никто не запрещает тебе работать с бинарником просто как с файлом который куда-то надо положить. Наличие Git/SVN и шаг собственно компиляции совершенно не обязательны.

alpha ★★★★★ ()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от alpha

Во вторых там сейчас написано:

Ссылку открой https://github.com/patsevanton/minikube-rpm

rpm - это рецепт раскладывания файлов по системе плюс post/pre-install и т.п. хуки

Спасибо капитан. Любой пакетный манагер "это рецепт раскладывания файлов по системе плюс post/pre-install и т.п." а во что запаковано и с какими параметрами сжатия это уже детали. А разговор был о другом, если ты не заметил.

init_6 ★★★★★ ()

Помимо buildroot в %{files}

Во-первых, вместо

cp -a %{_sourcedir}/minikube-linux-amd64 %{buildroot}/usr/local/bin/
подразумевалось
cp -a %{source0} %{buildroot}/usr/local/bin/
. Во-вторых, вместо
Source0: https://github.com/kubernetes/minikube/releases/download/v0.23.0/minikube-linux-amd64
подразумевалось
Source0: https://storage.googleapis.com/minikube/releases/%{version}/minikube-linux-amd64
. И в-третьих, пакетировать бинарники, конечно, можно, но идейно правильнее все-таки собрать из исходников.

dexpl ★★★★★ ()
Последнее исправление: dexpl (всего исправлений: 1)
Ответ на: Помимо buildroot в %{files} от dexpl

Ссылка на github
https://github.com/patsevanton/minikube-rpm/blob/master/minikube.spec

%install
%{__rm} -rf %{buildroot}/*
mkdir -p %{buildroot}/usr/local/bin
cp -a %{source0} %{buildroot}/usr/local/bin/

%files
/usr/local/bin/minikube-linux-amd64
Пишет
++ dirname /builddir/build/BUILDROOT/minikube-0.23.0-1.fc27.x86_64
+ mkdir -p /builddir/build/BUILDROOT
+ mkdir /builddir/build/BUILDROOT/minikube-0.23.0-1.fc27.x86_64
+ /usr/bin/rm -rf '/builddir/build/BUILDROOT/minikube-0.23.0-1.fc27.x86_64/*'
+ mkdir -p /builddir/build/BUILDROOT/minikube-0.23.0-1.fc27.x86_64/usr/local/bin
+ cp -a '%{source0}' /builddir/build/BUILDROOT/minikube-0.23.0-1.fc27.x86_64/usr/local/bin/
cp: cannot stat '%{source0}': No such file or directory
Вот полный лог

https://copr-be.cloud.fedoraproject.org/results/antonpatsev/minikube-rpm/fedo...

chemtech ()
Последнее исправление: chemtech (всего исправлений: 3)
Ответ на: комментарий от chemtech

По-моему с source0 это всё не нужно, потому что он разархивируется автоматом и становится рабочим каталогом.

Как-то так должно работать:

%install
%{__rm} -rf %{buildroot}/*
mkdir -p %{buildroot}/usr/local/bin
cp -a minikube-linux-amd64 %{buildroot}/usr/local/bin/

%files
/usr/local/bin/minikube-linux-amd64
alpha ★★★★★ ()
Ответ на: комментарий от chemtech

Вот с таким спеком все собирается:

Name: minikube
Version: 0.23.0
Release: 1%{?dist}
Summary: Run Kubernetes locally

Group: Development Tools
URL: https://github.com/kubernetes/minikube
License: ASL 2.0
Source0: https://storage.googleapis.com/minikube/releases/%{version}/minikube-linux-amd64

%description

%install
%{__rm} -rf %{buildroot}/*
mkdir -p %{buildroot}/usr/local/bin
cp -a %{SOURCE0} %{buildroot}/usr/local/bin/

%files
/usr/local/bin/minikube-linux-amd64

Ivan_qrt прав насчет %{SOURCE0}.

dexpl ★★★★★ ()
Ответ на: комментарий от chemtech

Лучше сделай чтобы бинарник назывался просто minikube, добавь установку bash completion и чтоьбы по зависимостям подтягивались виртуализация и kubectl.

minikube все равно при запуске тащит тебе в систему аж целую виртуальную машину собранную гуглом. Исходники самой утилитки не сделают этот процесс более честным и каноничным.

Так что имхо стоит фокусироваться на удобстве конечного использования.

alpha ★★★★★ ()

Что-то твоя ссылка в SOURCE0 нерабочая https://storage.googleapis.com/minikube/releases/0.23.0/minikube-linux-amd64 ERROR 404: Not Found

Поправил твой spec до рабочего состояния:

%global _prefix /usr/local

Name:    minikube
Version: 0.24.0
Release: 1%{?dist}
Summary: Run Kubernetes locally

Group:   Development Tools
URL:     https://github.com/kubernetes/minikube
License: ASL 2.0
Source0: https://storage.googleapis.com/minikube/releases/latest/%{name}-linux-amd64

%description

%install
rm -rf $RPM_BUILD_ROOT
mkdir -p %{buildroot}/%{_bindir}
%{__install} -m 755 %{SOURCE0} %{buildroot}/%{_bindir}/%{name}

%files
%{_bindir}/%{name}

nvl ★★ ()
Ответ на: комментарий от nvl

Спасибо. Почему то при сборке через copr скачивается какой то архив вместо бинарника minikube. Если качаю source0 через spectool - то скачивается бинарник.

file minikube 
minikube: gzip compressed data, was "minikube-linux-amd64", last modified: Thu Nov 30 11:34:47 2017, max compression

Проверить сборку через copr можно тут: https://copr.fedorainfracloud.org/coprs/antonpatsev/minikube-rpm/

chemtech ()
Последнее исправление: chemtech (всего исправлений: 1)
Ответ на: комментарий от chemtech

copr никогда не пользовался. Не знаю ничего.

А почему в /usr/local нужно?

nvl ★★ ()
Последнее исправление: nvl (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.