Package formats like RPM and DPKG have the concept of 'replaces' or 'obsoletes', which can be used when merging one package into another.
Do Solaris SVR4 packages support a similar concept? The closest I can find is the 'depend' file, which allows me to define a conflict, but not how to resolve it.
No. The Solaris installer kept track of these separately from the package system itself in order to do Solaris upgrades, and only for the packages that were part of the OS. The provided SVR4 package commands have no notion of upgrades, nor of dependency resolution, only install & remove of the exact versions specified of the exact packages specified.
These are among the many features added by the IPS package system that replaced SVR4 packages in Solaris 11.
Related
I have a list of DLLs and I would like to know the versions of all other DLLs, used by those files. In UNIX this is very simple:
ldd *.dll
But in Windows this does not work (I tried using my Ubuntu WSL).
Does anybody know a commandline command for this? (Powershell is good, too)
dumpbin.exe /imports will list the immediate static load dependencies, but not attempt to resolve them (which implies no version numbers nor transitive dependencies)
depends.exe will resolve dependencies (including dynamic load ones if you run in "profiler" mode which supports a variety of different methods for hooking LoadLibrary(Ex) and GetProcAddress) but is not a command-line tool. For each dependency it lists the path and version number, along with a lot of other information such as link date and required OS version -- you should be able to save this list to a file for command-line processing.
Neither of these is included in the OS distribution, you'll need a Windows SDK tools package.
I am not using go modules. Have a bunch of packages present in my company's toolchain (i.e. I didn't install the packages and thus can't check my bash history for package version).
So the packages are present in $TOOLCHAIN_PATH/go/src. Is there any way I can find the version of a particular package.
If it helps, I want to find out the package version of crypto/tls.
I am not using go modules
So you are doing it wrong. It's 2021, you must use modules. Use modules.
I want to find out the package version of crypto/tls
This is a package of the stdlib which is shipped with your compiler and it is "unversioned" as a package. Run go version to see the version of your compiler/stdlib combination as a whole.
I am trying to compile some open source libraries in MinGW+MSYS. During the configure phase, I kept seeing some 3rd party libraries are missing.
For now, my solution is to download the source of the missing libraries and follow the GNU build process to compile and install them into my MinGW environment.
Is there any package management system for MinGW+MSYS to install packages easily? Just like apt-get.
I tried the mingw-get for the missing package. But it reports the error below.
mingw-get is the (closest equivalent to apt-get) package manager for MinGW and MSYS. However, it can only manage packages which are actually available for MinGW and/or MSYS, (either because a MinGW developer has built and packaged them, or a member of the MinGW user community has contributed them).
Arbitrarily guessing what packages may be available, and even what their correct package names may be, is unlikely to be productive. Run mingw-get in its GUI mode, (if it's properly installed, just running mingw-get without arguments should start it in this mode), to see a list of packages which are actually available; if you don't see any likely candidates for what you are looking for, then it doesn't (yet) exist. In that case, you will need to either find a non-MinGW alternative build, or build it yourself, from source. (If you choose the latter option, and your build is successful, then you may wish to consider contributing it to MinGW.org).
This works for me as a "package manager".
Install MSYS2. It comes with a package manager called pacman.
I currently have an installation bash script (INSTALL) and a bunch of files that are the program itself. I would like to pack the files and the script in one file, maybe tar (?) and make it executable so that when it is called INSTALL will run.
Any ideas of how I can do it? What's the common method, if there is one, to do to?
Thanks
You can use a shar archive. shar archives are self-contained executable shell scripts that are self-unpacking, and you can execute whatever code you want after the script unpacks.
In the Linux world, the expectation is that programs come in the form of packages. The most common package formats are rpm (used by Red Hat, CentOS, Fedora, SuSE, …) and deb (used by Debian, Ubuntu, …). You'll often need to make separate versions of your package (linking to different libraries) for different releases of these distributions.
Compared with the Windows world (pre-Market), you have more work to do, because the programmer or distributor is expected to do the bulk of the work of tracking program dependencies. The end user experience is simpler: all package installation and subsequent maintenance (including tracking new versions, upgrading, uninstalling, etc.) is done through a single tool (APT on Debian/Ubuntu, Yum on Red Hat/Fedora, etc.). As a programmer, you can gain the benefit of standard tools to build packages, to track dependencies (no need to package libraries: the build tool will add the necessary dependencies). Many distributions provide a standard channel to install packages, such as PPAs for Ubuntu.
You can package it to rpm.
Rpm packages allow you to use scripts before and after unpacking process.
I'm trying to install something with the following command:
make world
It takes a long time, and usually it ends up with an error saying that I'm missing some kind of package. I found out what the package is, install it, and run the thing again, only to find out after a long time that I'm missing another package. Is there a way to find out all the packages I need to install without having to go through this process?
This is generally what the configure script does. If the project you're building doesn't have one, you should write one.
The best way to deal with dependencies is with a package manager such as:
On Ubuntu: apt-get
On Red Hat / Fedora: yum
On Mac OS X: port
On Windows: cygwin
If you install software with a package manager, it will automatically fetch, download, and install any dependencies as necessary. These package managers support a huge number of popular open source projects, but not all projects are supported. Some of these package managers support creating custom package repositories, which allows them to be used for dependency management in-house, as well.
Unfortunately, there is no general way to get all the library dependencies of a Makefile (short of grepping for "lib", ".so", and "-l" which may give you spurious results); however, if you are installing an open source project, chances are that it is supported by a package manager on your system.