User Tools

Site Tools


rpm5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
rpm5 [2012-12-11 23:28]
baggins vserver database upgrade
rpm5 [2012-12-11 23:36]
baggins cosmetics
Line 1: Line 1:
 +====== RPM 5 quick guide ======
  
 +===== General information =====
  
-====== RPM 5.x quick guide ====== 
- 
- 
-===== General information ===== 
 Changes in rpm operation that should interest both users and developers. ​ Changes in rpm operation that should interest both users and developers. ​
  
 +==== Upgrading from rpm4 and/or older BDB ====
  
- 
-==== Upgrading from rpm4 and/or older BDB ==== 
 Rpm database upgrade is done automatically during package installation,​ so there is need to do anything.\\ //But//, in case that upgrade did not happen for some reason, here is the command to do it manually: ​ Rpm database upgrade is done automatically during package installation,​ so there is need to do anything.\\ //But//, in case that upgrade did not happen for some reason, here is the command to do it manually: ​
  
-<file>/​usr/​lib/​rpm/​bin/​dbconvert --rebuilddb +<code> 
-</file> +/​usr/​lib/​rpm/​bin/​dbconvert --rebuilddb 
 +</code>
  
 ==== Fixing database problems ==== ==== Fixing database problems ====
-You can't just do '''​rm -rf /​var/​lib/​rpm/​%%__db*%%'''​ to fix problems anymore, also **--rebuilddb** is largely obsolete in rpm-5.3.x and isn't likely to "​fix"​ anything. Instead: ​ 
  
-<file>cd /​var/​lib/​rpm+You can't just do '''​rm -rf /​var/​lib/​rpm/​%%__db*%%'''​ to fix problems anymore, also **--rebuilddb** is largely obsolete in rpm 5 and isn't likely to "​fix"​ anything. Instead do: 
 + 
 +<code> 
 +cd /​var/​lib/​rpm
 dbX.Y_recover -ev dbX.Y_recover -ev
-</file> +</code>
  
 ==== Querying database ==== ==== Querying database ====
 +
 The semantics of rpm query option **-f** (**--file**) has changed in rpm 5.x; '''​rpm -q -f <​file-with-path>'''​ will **not** resolve all symlinks in queried file's path. So the query (assuming ///​usr/​src/​linux//​ is a symlink to ///​usr/​src/​linux-A.B.C-R//​): ​ The semantics of rpm query option **-f** (**--file**) has changed in rpm 5.x; '''​rpm -q -f <​file-with-path>'''​ will **not** resolve all symlinks in queried file's path. So the query (assuming ///​usr/​src/​linux//​ is a symlink to ///​usr/​src/​linux-A.B.C-R//​): ​
  
-<​code>​rpm -q -f /​usr/​src/​linux/​include/​linux/​fs.h+<​code>​ 
 +rpm -q -f /​usr/​src/​linux/​include/​linux/​fs.h
 </​code>​ </​code>​
  
 That returned //​kernel-headers-A.B.C-R.arch.rpm//​ with old rpm, will return nothing with rpm 5.x. You have to do '''​readlink -f'''​ first, or change to symlinked directory and do relative path query. ​ That returned //​kernel-headers-A.B.C-R.arch.rpm//​ with old rpm, will return nothing with rpm 5.x. You have to do '''​readlink -f'''​ first, or change to symlinked directory and do relative path query. ​
  
 +==== DB_BUFFER_SMALL error messages ====
  
- 
-==== DB_BUFFER_SMALL error messages ==== 
 You may see errors like this:  You may see errors like this: 
  
 +<​code>​
 +db3.c:1443: dbcursor->​pget(-30999):​ BDB0063 DB_BUFFER_SMALL:​ User memory too small for return value
 +</​code>​
  
- 
-<​file>​db3.c:​1443:​ dbcursor->​pget(-30999):​ BDB0063 DB_BUFFER_SMALL:​ User memory too small for return value 
-</​file>​ 
 It appears to be some type of a bug in the BerkleyDB 5.3.x. ​ In an attempt to workaround the problem, when we encounter this situation we attempt to adjust the size of the mmap buffer until the call works, or we end up trying 10 times. ​ It appears to be some type of a bug in the BerkleyDB 5.3.x. ​ In an attempt to workaround the problem, when we encounter this situation we attempt to adjust the size of the mmap buffer until the call works, or we end up trying 10 times. ​
  
 If DBI debugging is enabled, additional diagnostics are printed, otherwise a basic retry and success message is added to show that the failure was resolved. ​ If DBI debugging is enabled, additional diagnostics are printed, otherwise a basic retry and success message is added to show that the failure was resolved. ​
- 
- 
  
 ===== Vserver maintanance ===== ===== Vserver maintanance =====
Line 53: Line 50:
 rpm database for a single vserver: rpm database for a single vserver:
  
-<​code>​vrpm <​vserver>​ --convertdb</​code>​ +<​code>​ 
 +vrpm <​vserver>​ --convertdb 
 +</​code>​
  
 ===== Packaging changes ===== ===== Packaging changes =====
-Below is a list of changes in build system that should interest PLD developers. ​ 
- 
  
 +Below is a list of changes in build system that should interest PLD developers. ​
  
 ==== Build options ==== ==== Build options ====
Line 66: Line 63:
   * **-Wformat -Werror=format-security** options are added to compiler flags, more information about it can be found on [[http://​wiki.mandriva.com/​en/​Development/​Packaging/​Problems#​format_not_a_string_literal_and_no_format_arguments|Mandriva Wiki]] ​   * **-Wformat -Werror=format-security** options are added to compiler flags, more information about it can be found on [[http://​wiki.mandriva.com/​en/​Development/​Packaging/​Problems#​format_not_a_string_literal_and_no_format_arguments|Mandriva Wiki]] ​
   * **Stack Smashing Protector** is also enabled by default, if you really MUST disable SSP then undefine **_ssp_cflags** macro    * **Stack Smashing Protector** is also enabled by default, if you really MUST disable SSP then undefine **_ssp_cflags** macro 
- 
  
 ==== Loading additional macros in .spec files ==== ==== Loading additional macros in .spec files ====
Line 72: Line 68:
 With old rpm 4.x several macro files were loaded in .spec files via **#​include** directive: ​ With old rpm 4.x several macro files were loaded in .spec files via **#​include** directive: ​
  
- +<code rpmspec> 
-<file rpmspec>​%include /​usr/​lib/​rpm/​macros.perl +%include /​usr/​lib/​rpm/​macros.perl 
-</file>+</code>
  
 In rpm 5.x those macro files have been moved to ''/​usr/​lib/​rpm/​macros.d/''​ directory, and must be loaded using %{load:} directive. However the old statement still works, as it contains the same code to load the macros. ​ In rpm 5.x those macro files have been moved to ''/​usr/​lib/​rpm/​macros.d/''​ directory, and must be loaded using %{load:} directive. However the old statement still works, as it contains the same code to load the macros. ​
  
- +<code rpmspec> 
-<file rpmspec>​%{load:/​usr/​lib/​rpm/​macros.d/​perl} +%{load:/​usr/​lib/​rpm/​macros.d/​perl} 
-</file>+</code>
  
 ==== Excluding dependencies ==== ==== Excluding dependencies ====
Line 86: Line 82:
 Regexp patterns for '''​%%_noauto*%%'''​ macros changed slightly, and '​('​ must be escaped now, for example: Regexp patterns for '''​%%_noauto*%%'''​ macros changed slightly, and '​('​ must be escaped now, for example:
  
-<file rpmspec>+<code rpmspec>
 %define _noautoreq '​perl\\(something::​.*\\)'​ %define _noautoreq '​perl\\(something::​.*\\)'​
-</file>+</code>
  
 rpm-build-tools [[http://​git.pld-linux.org/?​p=packages/​rpm-build-macros.git;​a=commitdiff;​h=0a9bb9747529d8f89a74f6db5f317abe1454d8ac|v1.654]] adds handy macros to have same syntax for rpm4/5 .specs: rpm-build-tools [[http://​git.pld-linux.org/?​p=packages/​rpm-build-macros.git;​a=commitdiff;​h=0a9bb9747529d8f89a74f6db5f317abe1454d8ac|v1.654]] adds handy macros to have same syntax for rpm4/5 .specs:
Line 101: Line 97:
 ==== noarch subpackages ==== ==== noarch subpackages ====
  
-Rpm 5.x supports **noarch** subpackages,​ a feature that can save space on ftp server and mirrors and ease use of multiarch packages.+Rpm 5 supports **noarch** subpackages,​ a feature that can save space on ftp server and mirrors and ease use of multiarch packages.
  
 To use it within a package, add in the preamble of a subpackage that should be/is architecture independent:​ To use it within a package, add in the preamble of a subpackage that should be/is architecture independent:​
  
-<file rpmspec>+<code rpmspec>
 # noarch subpackages only when building with rpm5 # noarch subpackages only when building with rpm5
 %if "​%{_rpmversion}"​ >= "​5"​ %if "​%{_rpmversion}"​ >= "​5"​
 BuildArch: ​ noarch BuildArch: ​ noarch
 %endif %endif
-</file>+</code>
  
 ==== changes in triggers ==== ==== changes in triggers ====
  
-currently ​webapp register is [[http://​lists.pld-linux.org/​mailman/​pipermail/​pld-devel-en/​2012-November/​023331.html|broken]] due triggers misbehave. here's quick fix for lighttpd:+Currently ​webapp register is [[http://​lists.pld-linux.org/​mailman/​pipermail/​pld-devel-en/​2012-November/​023331.html|broken]] due triggers misbehave. here's quick fix for lighttpd:
  
 <code sh> <code sh>
 for a in /​etc/​webapps/​*/​lighttpd.conf;​ do a=${a#/​etc/​webapps/​};​ a=${a%/*}; webapp register lighttpd $a; done for a in /​etc/​webapps/​*/​lighttpd.conf;​ do a=${a#/​etc/​webapps/​};​ a=${a%/*}; webapp register lighttpd $a; done
 </​code>​ </​code>​
 +
 +This problem has been identified and fixed rpm package will be released soon.
rpm5.txt · Last modified: 2015-01-13 16:01 by glen