Welcome to SUSE's Porting and Migration Resources page.
SUSE Linux Enterprise Application Compatibility
On this page you will find many links to additional resources to help you with all phases of your Porting and Migration efforts. These documents and tutorials may help you plan and execute your Porting and Migration using your own development resources.
General Compatibility Statement and Policy
SUSE strongly recommends that Independent Software Developers follow the Linux Foundation's LSB specification. SUSE's engineering team is mandated as a policy not to break user-level application compatibility between service packs. Most ISVs should be able to consider their certifications are valid throughout the support and maintenance cycle for a major version of SUSE Linux Enterprise. Kernel ISVs (third-party applications that include Linux kernel modules) are required to recertify their applications and kernel modules at every service pack for a major release as there are most likely kernel ABI changes that are introduced at service packs. SUSE tests libraries for compatibility during initial Quality Assurance testing and regression testing at the release of every service pack to guarantee ABI compatibility.
SUSE ISV Update for SLES12
Some key features and options in SLE 12 that can be used by application providers are the following:
- SLE12 is using systemd – new way of managing system services, replacing SysV initd. It's works fine with LSB compatible init scripts but we recommend testing and updating all ISV applications which incorporate init scripts for proper functioning.
- systemctl reload|restart|start|status|stop|... <my_service(s)>.service
- SysV init
- rc<my_service(s)> reload|restart|start|status|stop|...
- SLE12 uses a new network management called wicked. Wicked has backward compatibility to sysconfig style configuration (ifcfg files) and wrapper for ifup, ifdown, etc. are also provided. All previously supported features are still supported. Any existing configuration should continue to work, but please note that there are some differences, for example script output will be different, and dhclient cannot be used when wicked is enabled.
- SLE12 includes GNU gcc version 4.8 and compatible tools for 64bit development. SLE12 provides run-time environment for 32bit x86 applications. If your application depends on older versions or uses 32bit development environment, please plan on porting application to 64bit platforms. We have included some of the required 32bit libraries in SLE12 Legacy Modules to help you with this migration process. Please reach out to SUSE ISV team for help in porting.
- SLES12 adopted modular approach to keep common use packages together to maintain support and lifecycle management easier. If you don't find your packages in SLES12, please check online repository of SLES12 modules for available packages:
- Advanced Systems Management Module
- Public Cloud Module
- Legacy Module
- Web and Scripting Module
- /etc/SUSE-release—getting replaced by /etc/os-release
- Raw devices are deprecated.
- GNOME is default GUI in SLE12. Qt4 is included and supported, but plan on using Qt5 for new projects.
- Java—IBM Java 1.7 is included. If your application depends on Oracle Java, it's available at Oracle web site.
- ksh—ksh package is moved to SLE12 legacy modules.
- If your application checks for package name, then adjust by checking correct names in SLE12 media. Some of the packages are renamed i.e. https -> apache2 or libaio -> libaio1
General syntax for systemd service management commands is as follows:
SLE 10 to SLE 11 (SLES, SLED, SLERT)
SLE 11 is application compatible with SLE 10 with the following differences:
- Application compatible means that the application is completely user space and was built on SLE 10 with the SLE 10 SDK. If this is the case, then the application should run unchanged on SLE 11.
- Applications that include loadable kernel modules will need to rebuild their modules for the Linux kernel 2.6.27 that is included in SLE 11. The Linux kernel in SLERT 11 includes Real Time extensions which may require separate consideration for ISVs.
- SLES 11 does not include the SUN version of Java only the IBM version of Java is included. (Note: SLED 11 does include Sun Java)
SUSE Linux Enterprise Porting Advisories
As you are porting your applications to SUSE Linux Enterprise, or supporting your application on different versions of SUSE Linux Enterprise, there are certain advisories the developer should be aware of.
Linux Kernel Module Porting Information
ISV's that have products that include Linux Kernel Modules should read the article: Developing Software Products for SUSE Linux: Kernel-space Considerations
UNIX to SUSE Linux Porting and Migration
The Open Group is the organization that maintains The Single UNIX® Specification and validates systems as being UNIX. Since the Linux Standard Base is using The Single UNIX Specification as a resource for Linux, it is an excellent resource for making portable UNIX and Linux applications.
Building Applications with the Linux Standard Base
The Linux Foundation is the organization that supports the LSB and they have a book on writing to the Linux Standard Base available online. Building Applications with the Linux Standard Base contains many resources on building portable Linux Applications. It also has a section on porting UNIX and Solaris applications to Linux. The Linux Foundation also as their LSB Developer Network which provides the SDKs and Resources need to build LSB compliant applications. There are also pre-built RPM packages for SUSE Linux Enterprise available from the openSUSE Build Service.
Intel has an article on Porting Applications to Linux Standard Base Made Easy. This document describes how to build and LSB compliant application.
Not certain which version of the LSB Standard to target? Check out the Linux Standard Base Distribution Status
Understanding and Using the Linux Standard Base
If you are a commercial vendor and you are distributing your application in binary only form, you want to have your Linux application target all available Linux distributions. Sometimes, this has not always been achievable due to a difference in one of the Linux distributions. It is the goal of the Linux Standard Base to provide a specification and tools that allow for binary compatibility of applications and distributions.
Understanding the Linux Standard Base (LSB) Tutorial
If you read Understanding and Using the Linux Standard Base then you may want to view this tutorial which takes you through the process of compiling a C program that adheres to LSB. You see both a correct C program and an incorrect C program to help you understand the LSB way to create applications that will run on any LSB-compliant Linux distribution.
Porting apps to Linux and Making Them Support Multiple Distributions
Security, cost-savings, performance and innovation are the primary reasons to move to Linux, says Linux developer Darren R. Davis, stating what is, to him, the obvious. Rather than dillydallying with that question, he'd rather help IT shops and developers get moving to Linux. Read more here.
Supporting Multiple Linux Distributions for software developers
We are often asked what it would take to support SUSE Linux with an application that currently is running and supported on another Linux distribution. In many cases the other Linux distribution is Red Hat. Here are some things to consider.
How To Create RPMs and Init Scripts That Are Compatible On Both SUSE Linux and Red Hat Linux
SUSE by default is LSB compliant. Red Hat is LSB compliant if the lsb.rpm is installed (which is not by default). The best solution is to create LSB compliant rpms and init scripts and require lsb.rpm to be pre-installed on Red Hat systems. However, for various reasons sometimes this requirement cannot be enforced. To create rpms and init scripts that can be installed on default Red Hat and SUSE (LSB) systems requires knowing how to support both environments. This document outlines how to create such init scripts and rpms.
General SUSE Linux Programming
Creating SUSE Linux Device Drivers
With the open nature of Linux and the ever-growing abundance of new devices, driver development is an excellent string to add to your bow. If you're ready to make that step from user application development to "kernel hacking" this paper will point you in the right direction.
Detecting Underlying Linux Distribution
This article will tell you how to determine which Linux distribution is installed where your solution is running.
How-To GNU Tools
The GNU tools from the Free Software Foundation comprise of over 3000 packages and regardless of which Linux distribution used, the GNU tools are omnipresent. This document concentrates on those tools used for software development, explaining the rationale for each, and providing a brief introduction to their use.
Linux Programing HOWTOs
Comprehensive Linux programming resource that provides HOWTO documentation on the following topics: compilers, languages, libraries, interfaces / API / protocols, security, tools, version control, DBMS / Databases and other miscellaneous topics Read More
- UNIX to Linux Porting, Prentice Hall
- Linux Application Development, 2nd Edition
- Linux Kernel Development, 2nd Edition
- Building Applications with the Linux Standard Base
External Linux Resources
If, after researching what you need to do to perform your porting and/or migration you need additional assistance, you can also contact our partner sources. Your next stop should be at HP's Developer and Solution Partner Program technical resources page or IBM Innovation Centers to determine if the facilities and/or resources available will help you.