How to patch or update SuSE Service Packs using Zypper
This topic was created by a BMC Contributor and has not been approved. More information.
BMC highly recommends using the Zypper tool (instead of yum) to upgrade SuSE service packs. BMC Server automation version 8.8 supports Zypper out-of-the-box, however for versions earlier than BMC Server Automation 8.8, you can use the instructions on this page as a workaround.
Note that SuSE only supports migrating from n to n+1 so it's not possible to jump service packs, for example to update directly from SP1 to SP3. The following procedures explain how to set up zypper repositories with TrueSight Server Automation catalogs and run the zypper dup using a Deploy Job.
Best practice for SuSE upgrades
The following procedure represents the best practice for SuSE upgrades, using the example of upgrading from SuSE 11 SP1 to SuSE 11 SP2. As noted in this KB article from SuSE, SuSE 11 SP2 systems need both the SuSE 11 SP1 and the SuSE 11 SP2 repositories. Therefore, if you attempt to run patch analysis using a SuSE 11 SP2 catalog on a SuSE 11 SP1 target, dependency issues can occur, as the required RPM packages are not part of the SuSE 11 SP2 repositories.
- Create the SuSE 11 SP1 repository using the offline downloader.
- Create the SuSE 11 SP2 repository using the offline downloader.
- Combine the RPM packages from the two repositories into a separate folder.
- Run the offline downloader script using the createrepo option, and use the location from step 3 as input.
- Create the offline Patch Catalog using the above payload source location.
- Run the Patch Analysis Job using the Patch Catalog created above.
Run the Update Server Properties Job after the SuSE Upgrade,
Server properties are not automatically reflected after an upgrade, so you must run the USP Job.
You can also refer to the following SuSE article for additional upgrade information: How to upgrade to SLES/SLED 11 SP3.
Create Zypper Repositories
Create online or offline catalogs, one catalog per channel. For example SLES11-SP3-Pool and SLES11-SP3-Updates
NoteIf you are updating from SLES11 SP1 to SP2 you will need SLES11-SP1-Pool, SLES11-SP1-Updates, SLES11-SP2-Core and SLES11-SP2-Updates
- After running the Catalog Update Job, you must pull additional files from SuSE.
- From the Updates repo get: updateinfo.xml.gz, products.xml
- From the Pool (Core for SP2) get: products.xml
An example command to download these files is wget --username=mirrorUser --password=mirrorpass 'https://nu.novell.com/repo/$RCE/<channelName>/sle-11-<arch>/repodata/<fileName>'
For the updateinfo.xml.gz in the SP3 Pool channel that would be wget --username=mirrorUser --password=mirrorpass 'https://nu.novell.com/repo/$RCE/SLES11-SP3-Updates/sle-11-x86_64/repodata/updateinfo.xml.gz'
- These files should go in the repodata folder in their respective channel directory in the patch download location
In each repodata/repomd.xml file, add a section for the downloaded files. The checksum is the checksum of the compressed file (if compressed), the open-checksum is the checksum of the uncompressed file. You can also obtain the xml bits by downloading the repomd.xml from SuSE and copy/pasting the sections into your local repomd.xml.
<data type="updateinfo"> <location href="repodata/updateinfo.xml.gz"/> <checksum type="sha">d43ebb1c2b9cfbfa2bf759d8e2b2b029c64ee439</checksum> <timestamp>1392201684</timestamp> <open-checksum type="sha">e343a4e331572e4095f9cd0bf2160a8e4ecba767</open-checksum> </data> <data type="products"> <location href="repodata/products.xml"/> <checksum type="sha">61a3d4acb8a92ba6136531cbbdfff2e04916ee8f</checksum> <timestamp>1374073843</timestamp> <open-checksum type="sha">61a3d4acb8a92ba6136531cbbdfff2e04916ee8f</open-checksum> </data>
- Using gpg, generate a signing key: gpg -q --gen-key
- Make a detached signature for each repodata/repomd.xml (gpg -a --detach-sign repomd.xml).
- Export the public key to repodata/repomd.xml.key (gpg -a --export <key name> > repomd.xml.key).
- Expose the directories containing the repositories via http or https
Create a BLPackage with the Upgrade Commands
Create some zypper repo definition files. Use the following format and specify the appropriate URL:
[SLES11_SP2_Updates] name=SLES11 SP2 Updates enabled=1 autorefresh=1 baseurl=http://blprov01-82.demodrive.com/patch2/sles11-sp2-updates-x86_64
- Create a BLPackage to deploy these files (SPn-Updates, SPn-Pool, SPn+1 Updates, SPn+1 Pool) into /etc/zypp/repos.d directory on the target server(s).
Add an external command to the BLPackage that runs the following commands. Use the repository names that you specified in your repo files. Replace <n> and <n+1> with the actual Service Pack numbers you are using.
# disable the latest version repos until they are needed. zypper mr --disable "SLES11-SP<n+1>-Pool" "SLES11-SP<n+1>-Updates" zypper -n --gpg-auto-import-keys ref -s zypper -n update -t patch zypper -n update -t patch zypper -n in -t product SUSE_SLES-SP<n+1>-migration zypper -n mr --enable SLES11-SP<n+1>-Core SLES11-SP<n+1>-Updates zypper -n --gpg-auto-import-keys dup -l --from "SLES11-SP<n+1>-Pool" --from "SLES11-SP<n+1>-Updates" zypper -n update -t patch # only for SP3 and higher zypper -n mr --disable SLES11-SP<n>-Pool SLES11-SP<n>-Updates
Run the Service Pack Upgrade
Deploy the BLPackage and a Deploy Job to execute the Deployment.