как создать перемещаемый пакет RPM, без компиляции - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь создать «перемещаемую RPM» из набора скриптов и файлов .png. Нет сборки / компиляции. Я написал


    Name:       utp
    Version:    1.0
    Release:    1%{?dist}
    Summary:    some summary

    Group:      Applications/Engineering
    License:    Proprietary
    URL:        http://www.example.com
    Source0:    %{name}-%{version}.tgz
    BuildArch:  noarch
    Prefix:     /opt

    %description
    A very nice description

    %prep
    echo "=== prep ... done"

    %setup -n utp
    echo "=== setup ... done"

    # %files -f %{_tmppath}/files.list
    %files

и получил


    medi@medi:~/work> rpm -qi -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm 
    Name        : utp
    Version     : 1.0
    Release     : 1.el8
    Architecture: noarch
    Install Date: (not installed)
    Group       : Applications/Engineering
    Size        : 0
    License     : Proprietary
    Signature   : (none)
    Source RPM  : utp-1.0-1.el8.src.rpm
    Build Date  : Mon 17 Feb 2020 03:44:00 PM PST
    Build Host  : medi.example.com
    Relocations : /opt 
    URL         : http://www.example.com
    Summary     : some summary
    Description :
    A very nice description

и

    medi@medi:~/work> rpm -ql -p rpmbuild/RPMS/noarch/utp-1.0-1.el8.noarch.rpm 
    (contains no files)
    medi@medi:~/work> 

Скорее всего, проблема связана с '% files'. Я попытался указать список (закомментированный сейчас), но я столкнулся со следующим

    Processing files: utp-1.0-1.el8.noarch
    error: Directory not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp
    error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg
    error: File not found: /home/medi/work/rpmbuild/BUILDROOT/utp-1.0-1.el8.x86_64/opt/utp/utg/UserGuide.txt

, где мой file.list выглядит как


    /opt/utp/
    /opt/utp/utg
    /opt/utp/utg/UserGuide.txt
    /opt/utp/utg/install.txt

Так как я хочу сделать это перемещаемый (см. Префикс: / opt), я добавил «/opt». * 10101

В целом, я в замешательстве. Да, я прочитал do c, но мне его не хватает.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Причина, по которой pkg не имеет содержимого, заключается в том, что директива% file была пуста, и с -f нужно быть осторожным с тем, где находятся файлы. После многих чтений я решил, что% files ищет файлы в% {buildroot} по умолчанию, поэтому эта комбинация решила это

%install 
cp -r ./* %{buildroot}

%files
/%{name}

Итак, теперь у меня есть контент, но потом я столкнулся с некоторой shebang_mangling, где пришлось отключить это.

0 голосов
/ 20 февраля 2020

Ваши %build и %install строфы должны все еще существовать; один распаковывает ваш источник изображений, а другой копирует их в последние места в сборке root.

...