Saturday, January 22, 2011

Continuation of the RPM-Writing Lab

I finished my "nano" RPM package successfully and without errors. I researched a lot on the Internet and Fedora Project website. Also, Special thanks to Chris Tyler and my friends in IRC for their advice that help me a lot to solve the errors. If you remember from my last blog, I ended up with these errors when I was running rpmlint command:

nano.x86_64: E: info-dir-file /usr/share/info/dir
nano.x86_64: E: info-files-without-install-info-postin /usr/share/info/dir
nano.x86_64: E: info-files-without-install-info-postun /usr/share/info/dir

nano.x86_64: E: info-files-without-install-info-postin /usr/share/info/
nano.x86_64: E: info-files-without-install-info-postun /usr/share/info/

As you see here, these errors are related to info files. According to under Texinfo section, "the GNU project and many other programs use the texinfo file format for much of its documentation. These info files are usually located in /usr/share/info/. When installing or removing a package, install-info from the info package takes care of adding the newly installed files to the main info index and removing them again on deinstallation." 

Also, it suggests a nice solution like this (I just added the below lines in my Specfile):
Requires(post): info
Requires(preun): info
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :

if [ $1 = 0 ] ; then
  /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :

These two scriptlets tell install-info to add entries for the info pages to the main index file on installation and remove them at erase time. The "|| :" in this case prevents failures that would typically affect systems that have been configured not to install any %doc files, or have read-only mounted, %_netsharedpath /usr/share.

I added these two scriptlets in my specfile and 4 errors were solved. The only error that left was "  nano.x86_64: E: info-dir-file /usr/share/info/dir". If you use rpmlint command with -i option, it gives you a description of error. According to that description, I included "dir" file to my package which means I included the info file for all packages to my package. In order to solve the problem, I added this line under %install section in specfile(last command):
                 rm %{buildroot}/%{_datadir}/info/dir
It removes dir file after installation. And the problem solved. Finally, I could solve the problem and get an output (RPM package) without any errors and warning.
Regards to all.

1 comment: