Skip to main content

Installing SL Products without a Package Manager

The update tool for the SL products copies an installation package (.deb or .ipk) to the target device in the background and then installs it. This requires a package manager (dpkg or ipkg) to be installed on the target device. If a package manager is not installed, then the update tool cannot install a runtime system.

However, it is still possible to manually install the package if desired. For the generic products, this is explained below using CODESYS Control​ for Linux V4.7.0.0 as an example:

Important

CODESYS Control does not support devices with a (partially) write-protected file system.

If your device has a write-protected file system and you have problems when installing or starting a product, then check if the problems still occur after disabling the write protection.

Manual installation of the runtime system on the target device

  1. After the installation of the CODESYS Control​ for Linux package, the required files are located on the Windows PC:

    • <user>/CODESYS Control for Linux SL/Delivery/codesyscontrol_linux_4.7.0.0-b.trunk.39_amd64.deb or

      <user>/CODESYS Control for Linux SL/Delivery/codesyscontrol_linux_4.7.0.0-b.trunk.39_amd64.ipk

    • <user>/CODESYS Control for Linux SL/Dependency/codemeter-lite_<Version>.deb (for licensing)

    Copy these files to the target device.

  2. Unpack the package:

    $ ar -x codesyscontrol_linux_<Version>

    The following files are created:

    • control.tar.gz: Contains the scripts which the package manager runs before and after installation or uninstallation. This is not relevant for manual installation.

    • data.tar.gz: Contains runtime system binaries, libraries, startup scripts, and configurations

    • debian-binary: Specifies the version of the .deb package. This is not relevant for manual installation.

  3. Unpack the data.tar.gz file. Create a new folder for this beforehand:

    $ mkdir data
    $ tar -xf data.tar.gz -C data

    In data/, you will now find the files which are important for the operation of the runtime system:

    data
    ├── etc
    │   ├── default
    │   │   └── codesyscontrol
    │   ├── init.d
    │   │   └── codesyscontrol
    │   └── codesyscontrol
    │       ├── 3S.dat
    │       ├── CODESYSControl.cfg
    │       └── CODESYSControl_User.cfg
    ├── opt
    │   └── codesys
    │       ├── bin
    │       │   └── codesyscontrol.bin
    │       ├── lib
    │       │   ├── libCmpHilscherCIFX.so
    │       │   └── libSysPci.so
    │       └── scripts
    │           ├── init-functions
    │           ├── init-vars
    │           ├── PlcWink.sh
    │           └── rts_set_baud.sh
    ├── usr
    │   └── share
    │       └── doc
    │           └── codesyscontrol
    │               └── copyright
    └── var
        └── opt
            └── codesys
                ├── bacstac.ini
                ├── cmact_licenses
                └── .SoftContainer_CmRuntime.wbb 
  4. Now the package manager (dpkg or ipkg) would normally copy this directory structure to the root directory of the system. This has to be done manually without a package manager:

    Change to the data/ directory where the data.tar.gz file was unpacked:

    $ cd data/
  5. Copy the individual directories to the respective root directories of the target:

    Important

    If you make a mistake, then this step can make your target device unusable and you will have to reset it.

    $ sudo cp -r etc/* /etc
    $ sudo cp -r opt/* /opt
    $ sudo cp -r usr/* /usr
    $ sudo cp -r var/* /var
  6. Now the package manager would perform some post-installation steps to complete the installation. Perform these steps manually:

    $ sudo chmod a+rw /etc/codesyscontrol/CODESYSControl.cfg
    $ sudo chmod a+rw /etc/codesyscontrol/CODESYSControl_User.cfg

    If the codesysuser group does not already exist on the target device, then add it.

    $ groupadd codesysuser

    This group is used for the Extension API. For more information, see: Security Mechanisms

The runtime system is now installed. However, it still needs the Codemeter runtime environment.

Manual installation of the Codemeter runtime environment on the target device

  1. After the installation of the CODESYS Control SL package, the .deb package is saved in <User>/CODESYS Control für Linux SL/Dependency/codemeter-lite_<Version>.deb .

    Also copy this .deb package to a newly created empty folder on the target system.

  2. Unpack the Debian package.

    $ ar -x codemeter-lite_<Version>.deb

    The control.tar.gz, data.tar.gz, debian-binary, and also _gpgorigin files are extracted.

  3. Unpack the data.tar.gz file into a newly created folder.

    $ mkdir data
    $ tar -xf data.tar.gz -C data

    After that, the binaries and other files such as libraries and scripts are available under data/:

    data
    ├── etc
    │   ├── init.d
    │   │   ├── codemeter
    │   │   └── codemeter-webadmin
    │   └── wibu
    │       └── CodeMeter
    │           └── Server.ini
    ├── lib
    │   ├── systemd
    │   │   └── system
    │   │       ├── codemeter.service
    │   │       └── codemeter-webadmin.service
    │   └── udev
    │       └── rules.d
    │           └── 60-codemeter-lite.rules
    ├── usr
    │   ├── bin
    │   │   ├── cmu
    │   │   └── codemeter-info
    │   ├── lib
    │   │   └── x86_64-linux-gnu
    │   │       ├── jni
    │   │       │   ├── libwibucmJNI64.so -> libwibucmJNI.so
    │   │       │   └── libwibucmJNI.so
    │   │       ├── libwibucmlin64-4.so -> libwibucm.so
    │   │       ├── libwibucmlin64.so -> libwibucm.so
    │   │       ├── libwibucmlin.so -> libwibucm.so
    │   │       └── libwibucm.so
    │   ├── sbin
    │   │   ├── CmWebAdmin
    │   │   └── CodeMeterLin
    │   └── share
    │       ├── bash-completion
    │       │   └── completions
    │       │       └── cmu
    │       ├── doc
    │       │   ├── CodeMeter
    │       │   │   ├── OpenSource_en.pdf
    │       │   │   └── README
    │       │   └── codemeter-lite
    │       │       ├── changelog.gz
    │       │       └── copyright
    │       └── man
    │           └── man1
    │               └── codemeter-info.1.gz
    └── var
        ├── lib
        │   └── CodeMeter
        │       ├── Backup
        │       ├── CmAct
        │       ├── CmCloud
        │       ├── NamedUser
        │       └── WebAdmin
        └── log
            └── CodeMeter
  4. Change to the data/ directory where the data.tar.gz file was unpacked:

    $ cd data/
  5. Now copy the entire directory to the root directory of the target device:

    Important

    If you make a mistake, then this step can make your target device unusable and you will have to reset it.

    $ sudo cp -r etc/* /etc
    $ sudo cp -r lib/* /lib
    $ sudo cp -r usr/* /usr
    $ sudo cp -r var/* /var
  6. Now the Codemeter package would perform some post-installation steps to complete the installation. Perform these steps manually:

    $ sudo udevadm trigger -vn --subsystem-match=usb --attr-match=idVendor=064f | xargs -rn1 -d\\n udevadm trigger -b
    $ sudo mkdir -p "/etc/systemd/system/multi-user.target.wants/"
    $ sudo ln -sT /lib/systemd/system/codemeter.service /etc/systemd/system/multi-user.target.wants/codemeter.service
  7. Now you need to set up the Codemeter service with the following command (start as root):

    CodemeterLin -x
    

The installation of Codemeter Lite and the runtime system is now complete.

Manual installation of the edge gateway

You can install the edge gateway in the same way as the runtime system and Codemeter.

  1. On the Windows PC, the package is stored in <user>/CODESYS Edge Gateway for Linux/Delivery/codesysedge_edgeamd64_<Version>.deb.

    Copy the Debian package to a new, empty folder on the target device.

  2. Unpack the Debian package:

    $ ar -x codesysedge_edgeamd64_<Version>.deb

    The files control.tar.gz, data.tar.gz and debian-binary are extracted.

  3. Unpack the data.tar.gz file into a newly created folder:

    $ mkdir data
    $ tar -xf data.tar.gz -C data

    After that, the binaries and other files such as libraries and scripts are available under data/:

    data
    ├── etc
    │   ├── default
    │   │   └── codesysedge
    │   ├── init.d
    │   │   └── codesysedge
    │   └── codesysedge
    │       ├── Gateway.cfg
    │       ├── GatewayvControl.cfg
    │       └── Gateway_User.cfg
    ├── opt
    │   └── codesysedge
    │       ├── bin
    │       │   └── codesysedge.bin
    │       ├── lib
    │       └── scripts
    │           ├── rts_set_baud.sh
    │           └── startup.sh
    ├── usr
    │   └── share
    
    │       └── doc
    │           └── codesysedge
    │               └── copyright
    └── var
        └── opt
            └── codesysedge
  4. Change to the data/ directory where the data.tar.gz file was unpacked:

    $ cd data/
  5. Now copy the entire directory to the root directory of the target device:

    Important

    If you make a mistake, then this step can make your target device unusable and you will have to reset it.

    $ sudo cp -r etc/* /etc
    $ sudo cp -r opt/* /opt
    $ sudo cp -r usr/* /usr
    $ sudo cp -r var/* /var
  6. Perform the post-processing steps of the package manager again:

    $ chmod a+rw /etc/codesysedge/Gateway.cfg
    $ chmod a+rw /etc/codesysedge/Gateway_User.cfg

The edge gateway is now installed.

Starting Codemeter, the runtime system, and the Edge Gateway

The installed packages can now be started:

  • Codemeter

    $ sudo /usr/sbin/CodeMeterLin

    Note

    You can start Codemeter with the -v flag to get extended output.

    With the input of -Help, you get help about more functions.

  • Runtime system and edge gateway

    $ sudo /etc/init.d/codesyscontrol start
    $ sudo /etc/init.d/codesysedge start