zlobul
zlobul

Reputation: 375

symlink not created on the second install of an rpm

Something very odd is heppaning here . I'm building an rpm package and here is my spec file :

[root@localhost rpmbuild]# cat SPECS/generated.spec 
# The name of your package
Name: sotoolkit

# A short summary of your package
Summary: Toolkit

# The version of your package
Version: 1.5

# The release number of your package
Release: 1

#URL 
URL: https://github.blah blah blah 

# Any license you wish to list
License: GPLv2

# What group this RPM would typically reside in
Group: Development/Tools

# Who packaged this RPM
Packager: Me

# The build architecture of this RPM (noarch/x86_64/i386/etc)
Buildarch: noarch

# You generally should not need to mess with this setting
Buildroot: %{_tmppath}/%{name}

# Change this extension to change the compression level in your RPM
#  tar / tar.gz / tar.bz2
Source0: %{name}.tar.gz

# If you are having trouble building a package and need to disable
#  automatic dependency/provides checking, uncomment this:
AutoReqProv: no

# If this package has prerequisites, uncomment this line and
#  list them here - examples are already listed
#Requires: bash, python >= 2.7

# A more verbose description of your package
%description
Toolkit v.1.5

# You probably do not need to change this
%define debug_package %{nil}

%prep
%setup -q -c

%build

%install
rsync -a . %{buildroot}/
ln -sf /integration/scripts/sotoolkit1.5/start.sh /usr/bin/sotoolkit

%clean
rm -rf %{buildroot}

#%pre

#%post

#%preun

%postun
unlink /usr/bin/sotoolkit

#%trigger

#%triggerin

#%triggerun

%changelog
* Tue Jul 18 2017 L.Popovski <[email protected]> 
- 1.5-1 

%files
%attr(0644, root, root) "/README"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/changelog"
%attr(0644, root, root) "/integration/scripts/sotoolkit1.5/changelog/fixes1.5.txt"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/check_if_single_or_multinode.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/log"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/multinode"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/firmware_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/fm_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/fs_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/functions_multi"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/multinode/log_tools"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools/collectl_perf.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools/crashdump.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools/timediff.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/log_tools/vsp_collect.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/menu.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/node_tools.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/multinode/other_tools"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/other_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/other_tools/b6200_missing_cluster.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/other_tools/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/other_tools/relaxhw.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/other_tools/syscheck.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/sset_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/multinode/sys_tools.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/multinode/tmp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/replay_last_session.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/singlenode"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/firmware_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/fm_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/fs_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/functions_single"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/guideme.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/singlenode/log_tools"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/log_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/log_tools/crashdump.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/log_tools/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/menu.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/node_tools.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/singlenode/other_tools"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/other_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/other_tools/exp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/other_tools/relaxhw.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/other_tools/syscheck.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/sset_tools.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/singlenode/sys_tools.sh"
%attr(0755, root, root) %dir "/integration/scripts/sotoolkit1.5/singlenode/tmp"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/sotoolkit.sh"
%attr(0755, root, root) "/integration/scripts/sotoolkit1.5/start.sh"
%doc README

Here comes the strange thing :

  1. On the first install of the RPM everything works fine – symlink is being created in /usr/bin
  2. I uninstall the tool – everything works fine again
  3. I try a second install and this time the symlink is not being created ! Very odd !
  4. If I rebuild the rpm and install it again – it works just fine , I uninstall it and agan it doesn’t create the symlink on the second install .

[root@localhost rpmbuild]# rpm -e sotoolkit-1.5-1.noarch unlink: cannot unlink ‘/usr/bin/sotoolkit’: No such file or directory warning: %postun(sotoolkit-1.5-1.noarch) scriptlet failed, exit status 1 [root@localhost rpmbuild]#

No errors or warnings found with the rpm when checked with rpmlint

any ideas what could cause this ?

Upvotes: 2

Views: 1204

Answers (1)

zlobul
zlobul

Reputation: 375

I have found the problem :

In the %install section I wrongly do :

ln -sf /integration/scripts/sotoolkit1.5/start.sh /usr/bin/sotoolkit

and then in %postun I wrongly do :

unlink /usr/bin/sotoolkit

instead the right thing to do is in %install :

mkdir -p %{buildroot}/usr/bin/
ln -s /integration/scripts/sotoolkit1.5/start.sh %{buildroot}/usr/bin/sotoolkit

then add the link to %files

/usr/bin/sotoolkit

%postun can be removed as the symlink is a part of the files and will be removed if the tool is uninstalled.

Upvotes: 1

Related Questions