Conary:conary unpin
From rPath Wiki
| conary unpin | ||
| conary unpin trovename[=version][<flavor>] | ||
| Example> conary unpin kernel=2.6.17.11-1-0.1 | ||
Use conary pin to pin a trove so that it cannot be erased. This means that a conary erase command on the pinned trove will fail and the trove will remain on the system.
Use conary unpin to unpin the trove and allow for the erase.
A trove's pinning status is displayed as part of the output produced by adding the --info option to the conary query command. In the following example, the zile package is not pinned as indicated by the False value beside Pinned:
# conary q zile --info Name : zile Build time: Fri Jun 30 20:20:24 2006 Version : 2.2.14-1-1 Label : contrib.rpath.org@rpl:devel Size : 234766 Pinned : False Flavor : is: x86
The user can pin the zile trove using conary pin:
# conary pin zile # conary q zile --info Name : zile Build time: Fri Jun 30 20:20:24 2006 Version : 2.2.14-1-1 Label : contrib.rpath.org@rpl:devel Size : 234766 Pinned : True Flavor : is: x86
Verify the trove is pinned by querying for the trove info again to confirm the True value beside Pinned.
In the example, the user cannot remove the zile trove because it is pinned:
# conary erase zile Not erasing zile - it is pinned. To erase this zile, run: conary unpin 'zile=/contrib.rpath.org@rpl:devel/2.2.14-1-1[is: x86]' conary erase 'zile=/contrib.rpath.org@rpl:devel/2.2.14-1-1[is: x86]'
Follow the instructions displayed by Conary to erase the trove:
# conary unpin 'zile=/contrib.rpath.org@rpl:devel/2.2.14-1-1[is: x86]'
conary erase 'zile=/contrib.rpath.org@rpl:devel/2.2.14-1-1[is: x86]'
Applying update job:
Erase zile(:data :doc :runtime)=2.2.14-1-1
Although the conary unpin and conary erase commands displayed by Conary include the trove's full version string, you only need to include as much of the version necessary to uniquely identify the trove. In the example above, if there was only one version of zile installed on the system, you would only need conary unpin zile and conary erase zile to unpin and erase the trove. However, if there are two versions of a trove installed at the same time, you will require more than just the ability to pin a trove:
# conary update zile Not removing old zile as part of update - it is pinned. Therefore, the new version cannot be installed. To upgrade zile, run: conary unpin 'zile=/contrib.rpath.org@rpl:devel/2.2.8-1-1[is: x86]' and then repeat your update command
The update failed even though there is a newer version available. The reason for this failure is a result of the nature of the packaged software. The software in our example (zile) is not packaged to support "side-by-side" installation, meaning that any two versions of the package cannot have any files with exactly the same path name. Some ways to make sure there are no path conflicts are:
- Include a version-specific string as part of each filename
- Install files into directories whose filenames include a version-specific string
For the example, the files packaged as part of zile have not used either of these methods to avoid path conflicts. Therefore, it is not possible to have more than one version installed at a time. However, all the files packaged as part of the kernel use these methods, making it possible to have more than one version of the kernel installed simultaneously. Because of this aspect of kernel packages, pinning prevents older kernel troves from being updated while providing the opportunity to remove those older troves after a new kernel package is verified to be running correctly.
See the following resources for more information about updating and erasing kernel troves:
