LINUX.ORG.RU

История изменений

Исправление justAmoment, (текущая версия) :

По мотивам

https://wiki.russianfedora.pro/index.php?title=Как_пересобрать_RPM-пакет

Команды 
# — от суперпользователя
$ — от обычного пользователя

  1. Первоначальная подготовка:
    1. # dnf install rpmdevtools dnf-plugins-core
      
    2. $ rpmdev-setuptree
      
  2. Исходники:
    1. $ cd ~/rpmbuild/SRPMS
      $ dnf download --source mc
      
    2. $ rpm -ivh mc-4.8.19-7.fc27.src.rpm
      
    3. Результат:
      $ tree ~/rpmbuild 
      /home/user/rpmbuild
      ├── BUILD
      ├── RPMS
      ├── SOURCES
      │   ├── Extends-TMPDIR_DEFAULT-to-mc-wrapper-scripts.patch
      │   ├── mc-4.8.19.tar.xz
      │   └── mc-tmpdir.patch
      ├── SPECS
      │   └── mc.spec
      └── SRPMS
          └── mc-4.8.19-7.fc27.src.rpm
      
      5 directories, 5 files
      
    4. Подготовка зависимостей
      # dnf builddep /home/user/rpmbuild/SPECS/mc.spec
      
    5. Развернём исходники
      $ rpmbuild -bp ~/rpmbuild/SPECS/mc.spec
      
    6. Делаем копию оригинала (нужно для подготовки патчей)
      $ mv ~/rpmbuild/BUILD/mc-4.8.19 ~/rpmbuild/BUILD/mc-4.8.19.orig
      
      Делаем рабочую копию
      $ cp -rp ~/rpmbuild/BUILD/mc-4.8.19.orig ~/rpmbuild/BUILD/mc-4.8.19-\(2018-03-10\)
      
  3. Работа:
    1. Правим исходники в рабочей копии mc-4.8.19-(2018-03-10)
    2. Формируем патч
      $ cd ${HOME}/rpmbuild/BUILD/mc-4.8.19-\(2018-03-10\)
      $ diff -u ../mc-4.8.19.orig/src/filemanager/midnight.c src/filemanager/midnight.c  > "${HOME}/rpmbuild/SOURCES/mc-2panels.patch"
      
    3. Корректируем ~/rpmbuild/SPECS/mc.spec
      1. Добавляем наши патчи в список
        Patch2:		%{name}-2panels.patch
        Patch3:		%{name}-fix-filter-hotkey.patch
        
      2. По желанию, исправляем Release: 7%{?dist} на Release: 7.20180310%{?dist}
      3. По желанию, добавляем строчки в секцию %changelog
    4. Сборка нового пакета
      rpmbuild -ba ~/rpmbuild/SPECS/mc.spec
  4. Оптимизация сборки:
    1. Пишем 2 bash скрипта примерно с таким содержимым
      $ cat ~/rpmbuild/BUILD/make_patch_build_mc.sh
      #!/bin/bash
      
      ./make_patch_mc.sh
      
      cd ../SPECS
      rpmbuild -ba mc.spec
      и
      $ cat ~/rpmbuild/BUILD/make_patch_mc.sh
      #!/bin/bash
      
      # file patch name
      fpn1="${HOME}/rpmbuild/SOURCES/mc-2panels.patch"
      fpn2="${HOME}/rpmbuild/SOURCES/mc-fix-filter-hotkey.patch"
      
      cd mc-4.8.19-\(2018-03-10\)
      
      diff -u ../mc-4.8.19.orig/src/setup.h			src/setup.h			  > "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/setup.c			src/setup.c			 >> "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/main.c			src/main.c			 >> "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/filemanager/midnight.c	src/filemanager/midnight.c	 >> "${fpn1}"
      
      diff -u ../mc-4.8.19.orig/lib/global.h			lib/global.h			  > "${fpn2}"
      diff -u ../mc-4.8.19.orig/lib/global.c			lib/global.c			 >> "${fpn2}"
      diff -u ../mc-4.8.19.orig/lib/widget/menu.c		lib/widget/menu.c		 >> "${fpn2}"
      diff -u ../mc-4.8.19.orig/src/filemanager/cmd.c		src/filemanager/cmd.c		 >> "${fpn2}"
  5. Рекурсия до достижения нужного результата: работаем с 3.1 потом запускаем скрипт сборки 4.1.
  6. Результат сборки:
    $ tree ~/rpmbuild/RPMS
    /home/user/rpmbuild/RPMS
    └── x86_64
        ├── mc-4.8.19-7.20180310.fc27.x86_64.rpm
        ├── mc-debuginfo-4.8.19-7.20180310.fc27.x86_64.rpm
        └── mc-debugsource-4.8.19-7.20180310.fc27.x86_64.rpm
    

Исходная версия justAmoment, :

Памятка по патчингу mc

По мотивам

https://wiki.russianfedora.pro/index.php?title=Как_пересобрать_RPM-пакет

Команды 
# — от суперпользователя
$ — от обычного пользователя

  1. Первоначальная подготовка:
    1. # dnf install rpmdevtools dnf-plugins-core
      
    2. $ rpmdev-setuptree
      
  2. Исходники:
    1. $ cd ~/rpmbuild/SRPMS
      $ dnf download --source mc
      
    2. $ rpm -ivh mc-4.8.19-7.fc27.src.rpm
      
    3. Результат:
      $ tree ~/rpmbuild 
      /home/user/rpmbuild
      ├── BUILD
      ├── RPMS
      ├── SOURCES
      │   ├── Extends-TMPDIR_DEFAULT-to-mc-wrapper-scripts.patch
      │   ├── mc-4.8.19.tar.xz
      │   └── mc-tmpdir.patch
      ├── SPECS
      │   └── mc.spec
      └── SRPMS
          └── mc-4.8.19-7.fc27.src.rpm
      
      5 directories, 5 files
      
    4. Подготовка зависимостей
      # dnf builddep /home/user/rpmbuild/SPECS/mc.spec
      
    5. Развернём исходники
      $ rpmbuild -bp ~/rpmbuild/SPECS/mc.spec
      
    6. Делаем копию оригинала (нужно для подготовки патчей)
      $ mv ~/rpmbuild/BUILD/mc-4.8.19 ~/rpmbuild/BUILD/mc-4.8.19.orig
      
      Делаем рабочую копию
      $ cp -rp ~/rpmbuild/BUILD/mc-4.8.19.orig ~/rpmbuild/BUILD/mc-4.8.19-\(2018-03-10\)
      
  3. Работа:
    1. Правим исходники в рабочей копии mc-4.8.19-(2018-03-10)
    2. Формируем патч
      $ cd ${HOME}/rpmbuild/BUILD/mc-4.8.19-\(2018-03-10\)
      $ diff -u ../mc-4.8.19.orig/src/filemanager/midnight.c src/filemanager/midnight.c  > "${HOME}/rpmbuild/SOURCES/mc-2panels.patch"
      
    3. Корректируем ~/rpmbuild/SPECS/mc.spec
      1. Добавляем наши патчи в список
        Patch2:		%{name}-2panels.patch
        Patch3:		%{name}-fix-filter-hotkey.patch
        
      2. По желанию, исправляем Release: 7%{?dist} на Release: 7.20180310%{?dist}
      3. По желанию, добавляем строчки в секцию %changelog
    4. Сборка нового пакета
      rpmbuild -ba ~/rpmbuild/SPECS/mc.spec
  4. Оптимизация сборки:
    1. Пишем 2 bash скрипта примерно с таким содержимым
      $ cat ~/rpmbuild/BUILD/make_patch_build_mc.sh
      #!/bin/bash
      
      ./make_patch_mc.sh
      
      cd ../SPECS
      rpmbuild -ba mc.spec
      и
      $ cat ~/rpmbuild/BUILD/make_patch_mc.sh
      #!/bin/bash
      
      # file patch name
      fpn1="${HOME}/rpmbuild/SOURCES/mc-2panels.patch"
      fpn2="${HOME}/rpmbuild/SOURCES/mc-fix-filter-hotkey.patch"
      
      cd mc-4.8.19-\(2018-03-10\)
      
      diff -u ../mc-4.8.19.orig/src/setup.h			src/setup.h			  > "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/setup.c			src/setup.c			 >> "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/main.c			src/main.c			 >> "${fpn1}"
      diff -u ../mc-4.8.19.orig/src/filemanager/midnight.c	src/filemanager/midnight.c	 >> "${fpn1}"
      
      diff -u ../mc-4.8.19.orig/lib/global.h			lib/global.h			  > "${fpn2}"
      diff -u ../mc-4.8.19.orig/lib/global.c			lib/global.c			 >> "${fpn2}"
      diff -u ../mc-4.8.19.orig/lib/widget/menu.c		lib/widget/menu.c		 >> "${fpn2}"
      diff -u ../mc-4.8.19.orig/src/filemanager/cmd.c		src/filemanager/cmd.c		 >> "${fpn2}"
  5. Рекурсия до достижения нужного результата: работаем с 3.1 потом запускаем скрипт сборки 4.1.