WinRPM is an installer for RPM packages provided by an RPM-md build system. The default RPM-md provider is the OpenSUSE build service, which builds 32- and 64-bit DLLs for libraries used by several Julia packages (note: builds are cross-compiled).
To install WinRPM via the Julia package manager, use:
To search for a package from within Julia:
using WinRPM WinRPM.search("packagename")
See also: upstream package information for Win64 and Win32
To install a library using WinRPM:
WinRPM.install("gtk2") WinRPM.install("win_iconv","mingw32")
WinRPM will automatically install dependencies declared in the RPM-md package specification.
Please see the OpenSUSE build service packaging guidelines for further information.
WinRPM may be integrated with the BinDeps system by declaring a provides(WinRPM.RPM...
line for each serviceable dependency.
For example, in the Tk.jl package the following lines declare availability of the tcl
and tk
libraries from WinRPM:
if Sys.iswindows() using WinRPM provides(WinRPM.RPM, "tk", tk, os=:Windows) provides(WinRPM.RPM, "tcl", tcl, os=:Windows) end
These lines must be preceded by BinDeps.library_dependency
declarations; please see the BinDeps documentation for more information.
It may also be helpful to review usage examples in Tk.jl or other existing packages (see deps/build.jl
): Nettle.jl Cairo.jl
For stand-alone use, add the following lines to your %APPDATA%/julia/.juliarc.jl
file:
RPMbindir = Pkg.dir("WinRPM","deps","usr","$(Sys.ARCH)-w64-mingw32","sys-root","mingw","bin") push!(Libdl.DL_LOAD_PATH,RPMbindir) ENV["PATH"]=ENV["PATH"]*";"*RPMbindir
RPM-md provides the following functions for general usage: update
, whatprovides
, search
, lookup
, and install
update()
-- download the new metadata from the hosts. Additional hosts can be added by editing the file sources.list
.
whatprovides(file)
-- given a part of a filename or file-path, returns a list of packages that include
search(string)
-- search for a string in the package description, summary, or name fields and returns a list of matching packages
lookup(name)
-- search for a package by name
install(pkg)
-- install a package (by name or package identifier), including dependencies, into the deps
folder
The functions typically take a second parameter "arch" specifying the package architecture for search, defaulting to the current operating system. It also offers the keyword argument yes
which should be set to true
if no prompt is desired.
Package lists can be further filtered and analyzed, as the following example demonstrates:
julia> using WinRPM julia> gtk3_candidates = WinRPM.search("gtk3", "mingw32") 1. webkitgtk3-debug (mingw32) - Debug information for package mingw32-webkitgtk3 2. webkitgtk3-lang (mingw32) - Languages for package mingw32-webkitgtk3 3. webkitgtk3-tools (mingw32) - Library for rendering web content, GTK+ 3 Port (tools) 4. gtk3-data (mingw32) - The GTK+ toolkit library (version 3) -- Data Files 5. gtk3-lang (mingw32) - Languages for package mingw32-gtk3 6. gtk3 (mingw32) - The GTK+ toolkit library (version 3) 7. gtk3-devel (mingw32) - The GTK+ toolkit library (version 3) -- Development Files 8. gtk3-debug (mingw32) - Debug information for package mingw32-gtk3 9. gtk3-tools (mingw32) - The GTK+ toolkit library (version 3) -- Tools 10. libwebkitgtk3 (mingw32) - Library for rendering web content, GTK+ 3 Port 11. libwebkitgtk3-devel (mingw32) - Library for rendering web content, GTK+ 3 Port (development files) julia> gtk3_pkg = gtk3_candidates[6] Name: gtk3 Summary: The GTK+ toolkit library (version 3) Version: 3.8.1 (rel 1.31) Arch: mingw32 URL: http://www.gtk.org/ License: LGPL-2.0+ Description: GTK+ is a multi-platform toolkit for creating graphical user interfaces. Offering a complete set of widgets, GTK+ is suitable for projects ranging from small one-off projects to complete application suites. julia> WinRPM.install(gtk3_pkg) MESSAGE: Installing: libxml2, atk, gdk-pixbuf, liblzma, zlib, libpng, libtiff, pixman, freetype, libffi, glib2-lang, atk-lang, libjpeg, gdk-pixbuf-lang, libharfbuzz, glib2, fontconfig, libcairo2, libjasper, libgcc, libintl, gtk3 MESSAGE: Downloading: libxml2 MESSAGE: Extracting: libxml2 2286 blocks MESSAGE: Downloading: atk MESSAGE: Extracting: atk 263 blocks ... MESSAGE: Downloading: gtk3 MESSAGE: Extracting: gtk3 9614 blocks MESSAGE: Success julia> # or we can just install it directly julia> WinRPM.install("gtk3")
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4