This is the IPGP-OVS's maintened fork of the Docker+Wine (trm2rinex
) wrapper for Trimble ConvertToRinex
tool π°οΈ π π π·
The original repository made by Matioupi is available at: https://github.com/Matioupi/trm2rinex-docker
(Many thanks to him!)
From now on (September 2024), we must fork the original repository, because it is not maintained anymore and related software has evolved.
Maintainer of this fork: Pierre Sakic (sakic@ipgp.fr)
See also the README of the original repository for more details: readme_original.md
- 2024-10-29: Back to
ConvertToRinex
v3.14.
For some files, v3.15 leads to error:
t01dll assembly:<unknown assembly> type:<unknown type> member:(null)
- 2024-09-07: Change the wine repository for https://gitlab.winehq.org/wine/wine.git
- 2024-09-06: Change for
ConvertToRinex
v3.15
This memo is about installing the trm2rinex
software in a Docker container.
The software is a Windows software, so it is run in a Wine environment.
https://www.simplilearn.com/tutorials/docker-tutorial/how-to-install-docker-on-ubuntu
sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker
cd $HOME/your/favorite/folder
git clone https://github.com/IPGP/trm2rinex-docker-ovs
original repository (for indicative legacy purposes):
git clone https://github.com/Matioupi/trm2rinex-docker
cd trm2rinex-docker-ovs
docker build -t trm2rinex:cli-light .
running it in sudo mode might be better
at the end of the installation
docker image ls
and remove intermediate images
docker image rm 925d947bf045
cd <...>/trm2rinex-docker
docker run --rm -v "$(pwd):/data" trm2rinex:cli-light data/MAGC320b.2021.rt27 -p data/out
In the log, at the step 25/65, you have:
rm: cannot remove '/opt/wine/share/include/windows': Directory not empty
then in the Dockerfile, comment the lines 170-173:
RUN strip -s ${WINE_INSTALL_PREFIX}/lib/wine/i386-windows/* \
&& strip -s ${WINE_INSTALL_PREFIX}/lib/wine/i386-unix/* \
&& strip -s ${WINE_INSTALL_PREFIX}/bin/wine \
${WINE_INSTALL_PREFIX}/bin/wineserver \
${WINE_INSTALL_PREFIX}/bin/wine-preloader
# && rm -rf ${WINE_INSTALL_PREFIX}/include \
# && rm -rf ${WINE_INSTALL_PREFIX}/lib/wine/i386-unix/*.a \
# && rm -rf ${WINE_INSTALL_PREFIX}/lib/wine/i386-windows/*.a \
# && rm -rf ${WINE_INSTALL_PREFIX}/share/man
and lines 232-234:
USER root
COPY clean.sh /home/${USER_NAME}/clean.sh
RUN chmod 755 /home/${USER_NAME}/clean.sh
#RUN rm -rf /home/${USER_NAME}/.wine/drive_c/windows/Installer \
# && rm -rf /tmp/* \
# && /home/${USER_NAME}/clean.sh ${USER_NAME} ${WINE_INSTALL_PREFIX}
klein@zoisite:~/SOFT/trm2rinex-docker$ docker run --rm -v "$(pwd):/data" trm2rinex:cli-light data/MAGC320b.2021.rt27 data/out
Scanning data/MAGC320b.2021.rt27...Complete!
Converting MAGC320b.2021.rt27...Error: CrinexFile - System.UnauthorizedAccessException: Access to the path "Z:\data\MAGC320b.2021.21n" is denied.
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.Boolean anonymous, System.IO.FileOptions options) [0x0019e] in <bee01833bcad4475a5c84b3c3d7e0cd6>:0
at System.IO.FileStream..ctor (System.String path, System.IO.FileMode mode, System.IO.FileAccess access, System.IO.FileShare share, System.Int32 bufferSize, System.IO.FileOptions options) [0x00000] in <bee01833bcad4475a5c84b3c3d7e0cd6>:0
at (wrapper remoting-invoke-with-check) System.IO.FileStream..ctor(string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare,int,System.IO.FileOptions)
at System.IO.StreamWriter..ctor (System.String path, System.Boolean append, System.Text.Encoding encoding, System.Int32 bufferSize) [0x00055] in <bee01833bcad4475a5c84b3c3d7e0cd6>:0
at System.IO.StreamWriter..ctor (System.String path, System.Boolean append) [0x00008] in <bee01833bcad4475a5c84b3c3d7e0cd6>:0
at (wrapper remoting-invoke-with-check) System.IO.StreamWriter..ctor(string,bool)
at System.IO.File.CreateText (System.String path) [0x0000e] in <bee01833bcad4475a5c84b3c3d7e0cd6>:0
at trimble.rinex.CrinexFile..ctor (System.String inputFilePath, System.IO.FileMode mode) [0x00176] in <6b991ac620904a08a4ad53d3cafee6d1>:0 : Z:\data\MAGC320b.2021.21n using mode: Create
The problem occurs because the output file is about to be created in a subfolder out
within the current directory ($(pwd)
), but this out
folder does not exists or is not writable. Thus a simple
mkdir out
within the current/working directory should solve the problem.
You will continue to face this error when you try to mount two volumes, one for the input (inp
), the other for the output (out
), and if one bound folder is included in the other, e.g.:
-v ${PWD}:/inp -v ${PWD}/converted:/out
Then, define your out
bound volume somewhere else:
-v ${PWD}:/inp -v /a/different/place/converted:/out
Give full access right to your out
folder
chmod 777 out