Unix/GNU Windows

By Alexis Wilke
Started in Dec. 2006
   Home       Documentation       Download       Bugs   


Change Log

  • Installing USYS
  • But why USYS?
  • Can I use my existing MSYS/MinGW/GnuWin32?
  • Installing USYS

    At this time, USYS is just wpkg and a copy of the MSYS basic environment.

    First you should download and install the wpkg tool. That will get you the tool you need to install all the .deb packages. Assuming that you do not have anything more than MS-Windows, download the following and put it in any folder:

    • unzip.exe
    • wpkg_0.5_win32-i386.zip

    Decompress the wpkg tool and its documentation from an MS-DOS console with the following commands:

    	cd <path to wpkg_0.5_win32-i386.zip>
    	unzip wpkg_0.5_win32-i386.zip

    Now download the MSYS debian package(1) and put it under the newly extracted bin directory and type the following commands in your still open console:

    	cd bin
    	wpkg --install msys_1.0.11_win32-i386.deb

    After this one command, you will have a valid USYS installation. You can now start your new Unix environment under MS-Windows by double clicking msys.bat in the root directory or on rxvt in the /bin directory.

    Make sure you have the right PATH environment variable so you can access your new tools. This is done with the following command inside the shell you just opened:

    	export PATH=/mingw/bin:/bin

    Of course, feel free to include a path to C:\WinNT\System32 and other MS-Windows directories (but do not add some other versions of MSYS/MinGW/GnuWin32!) And you can always make use of your .profile or .bashrc files, but that may require a global HOME variable which you cannot easilly change (i.e. you can have only one global HOME for Cygwin, MSYS, USYS... but you can change it in the msys.bat to your liking and maybe I will have a post process to automate that at some point!)

    From there on, any .deb package compatible with USYS can be installed with the wpkg.exe tool (see Installing a package.) Note that you can install any package from anywhere, the wpkg tool assumes it is installed under /bin and considers / as being the root. Everything will always be installed under that root path (if not, that's a bug in wpkg!) Thus, you can be in any folder to run wpkg as long as it is in your path or you use the full path to the tool.

    (1) The following is the list of files present in the debian package msys_1.0.11_win32-i386.deb.

    	MSYS-1.0.11-2004.04.30-1.exe		Base
    	MSYS-1.0.11-20060807.tar.bz2		Fixes
    	tar-1.13.19-MSYS-2005.06.08.tar.bz2	Fixes

    But why USYS?

    At first, I would like to transform many of the packages I need to .deb packages. This will very much simplify their installation in this Unix like environment and thus help me in building Made to Order Software Corporation products.

    Second, it will be to have my own version of the gcc suite in order to get the library libusys.a (still to be created!) to auto-link with the different software I build under USYS. This library will offer support to ease the porting of projects to MS-Windows by offering the POSIX API of what is directly available under MS-Windows (at this time, the most problematic function is fork(), most others are relatively simple to implement and some already are available such as the pthread API from RedHat.)

    For instance, USYS will transform the fopen() call in two ways:

    • The mode will always be forced to binary like under Linux (and most other Unices)
    • If the file being opened is a (soft-)link, then the target will be opened instead.

    Some of that functionality is currently available under MSYS, but not under GnuWin32. Also, MSYS makes heavy use of Cygwin source files and thus it cannot directly be used in a commercial project.

    Can I use my existing MSYS/MinGW/GnuWin32?


    However, I suggest you be more careful in that case since you may start mixing up packages you installed with wpkg and packages you just uncompress in your environment. You may not be able to install some packages because some files already exist. And files which get modified cannot be removed without the --force flag and you could end up with packages incompatible between each others.

    This being said, for a little while, it is very likely that you won't be able to find a .deb for a package you need. In that case you will have to install it from its .zip or whatever other archive currently available. The problem here is: you won't be able to uninstall it without going through hoops.