Misplaced Pages

dpkg

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

This is an old revision of this page, as edited by Djm-leighpark (talk | contribs) at 12:20, 2 November 2018 (Merged content from Wpkg to here. See Misplaced Pages:Articles for deletion/Wpkg). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Revision as of 12:20, 2 November 2018 by Djm-leighpark (talk | contribs) (Merged content from Wpkg to here. See Misplaced Pages:Articles for deletion/Wpkg)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
This article is actively undergoing a major edit for Merge per AfD discussion from Wpkg until complete per WP:MERGETEXT - intend 2 hours but exceptionally two days if I get a RL interruption. To help avoid edit conflicts, please do not edit this page while this message is displayed.
This message was added at Djm-leighpark (talk) 12:09, 2 November 2018 (UTC). This page was last edited at 12:20, 2 November 2018 (UTC) (6 years ago) – this estimate is cached, update. Please remove this template if this page hasn't been edited for a significant time. If you are the editor who added this template, please be sure to remove it or replace it with {{Under construction}} between editing sessions.
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Dpkg" – news · newspapers · books · scholar · JSTOR (January 2013) (Learn how and when to remove this message)
dpkg
Original author(s)Ian Murdock
Developer(s)Dpkg Developers
Initial releaseJanuary 1994; 31 years ago (1994-01)
Stable release1.18.25 / June 26, 2018; 6 years ago (2018-06-26)
Preview release1.19.2 / October 8, 2018; 6 years ago (2018-10-08)
Repository
Written inC, C++, Perl
Operating systemUnix-like, POSIX
TypePackage management system
LicenseGNU General Public License
Websitewiki.debian.org/Teams/Dpkg

dpkg is the software at the base of the package management system in the free operating system Debian and its numerous derivatives. dpkg is used to install, remove, and provide information about .deb packages.

dpkg (Debian Package) itself is a low level tool. APT (Advanced Package Tool), a higher level tool, is more commonly used than dpkg as it can fetch packages from remote locations and deal with complex package relations, such as dependency resolution. Frontends for APT like aptitude (ncurses) and synaptic (GTK+) are used for their friendlier interfaces.

The Debian package "dpkg" provides the dpkg program, as well as several other programs necessary for run-time functioning of the packaging system, including dpkg-deb, dpkg-split, dpkg-query, dpkg-statoverride, dpkg-divert and dpkg-trigger. It also includes the programs such as update-alternatives and start-stop-daemon. The install-info program used to be included as well, but was later removed as it is now developed and distributed separately. The Debian package "dpkg-dev" includes the numerous build tools described below.

History

dpkg was originally created by Ian Murdock in January 1994 as a Shell script, Matt Welsh, Carl Streeter and Ian Murdock then rewrote it in Perl, and then later the main part was rewritten in C by Ian Jackson in 1994. The name dpkg was originally the short for "Debian package", but the meaning of that phrase has evolved significantly, as dpkg the software is orthogonal to the deb package format as well as the Debian Policy Manual which defines how Debian packages behave in Debian.

Example use

To install a .deb package:

dpkg -i filename.deb

where filename.deb is the name of the Debian package (such as pkgname_0.00-1_amd64.deb).

The list of installed packages can be obtained with:

dpkg -l 

To remove an installed package:

dpkg -r packagename

Development tools

dpkg-dev contains a series of development tools required to unpack, build and upload Debian source packages. These include:

  • dpkg-source packs and unpacks the source files of a Debian package.
  • dpkg-gencontrol reads the information from an unpacked Debian tree source and generates a binary package control package, creating an entry for this in Debian/files.
  • dpkg-shlibdeps calculates the dependencies of runs with respect to libraries.
  • dpkg-genchanges reads the information from an unpacked Debian tree source that once constructed creates a control file (.changes).
  • dpkg-buildpackage is a control script that can be used to construct the package automatically.
  • dpkg-distaddfile adds a file input to debian/files.
  • dpkg-parsechangelog reads the changes file (changelog) of an unpacked Debian tree source and creates a conveniently prepared output with the information for those changes.

Database

The dpkg database is located under /var/lib/dpkg; the "status" file contains the list of installed software on the current system. There is no information about repositories in this database.

wpkg clone for windows

Microsoft Windows Packager
Original author(s)Alexis Wilke
Developer(s)The usys team
Stable release1.0.0 / September 17, 2015; 9 years ago (2015-09-17)
Preview release0.9.2 / September 16, 2013; 11 years ago (2013-09-16)
Repository
Written inC++, C
Operating systemWindows, Unix-like, POSIX
Platformi386, AMD64
Available inEnglish
TypePackage management system
LicenseGNU General Public License
Websitewindowspackager.org/documentation/wpkg

wpkg was created as a clone of dpkg that would run under the Microsoft Windows operating system. dpkg is used to build, install, remove, and provide information about .deb packages.

As time passed, wpkg has evolved to include complex package distribution management similar to the APT suite on the front end side as well as development and repository management on the back end side.

Although a "wpkg" Debian package is provided for Microsoft Windows (and Linux), the main intent was to offer a ready to use executable: wpkg.exe, so one does not have to recompile wpkg before being able to use it to install Debian packages under Microsoft Windows. The different "wpkg" Debian packages will be of interest to programmers who want to painlessly deal with Debian packages as it includes the libdebpackages library. This library includes nearly all the capabilities that the wpkg tool offers.

History

wpkg was created by Alexis Wilke and is based on dpkg and APT. At first it was going to be a port of dpkg that would run under Microsoft Windows. However, dpkg is extremely heavily based on Unix and because of that, it was not possible to do a port that would be acceptable by the dpkg team.

The first few version (0.1 to 0.6) were based on a streaming concept, as used in dpkg, using different features of the Boost (C++ libraries). These versions are now difficult to compile.

Starting with 0.7.0, the streaming concept was dropped. In fact, a lot of the work needs to be done with data viewed as an object in memory instead of a passing stream of data. Also the boost library was completely dropped: for one, basic concepts such as smart pointers are now available in the standard C++ library, but the main reason for the drop: it eliminates a rather heavy dependency from the wpkg environment.

Version 0.7.0 also introduced the concept of repository that previous versions did not have. Version 0.8.0 started to manage the repositories like apt-get (think of the—update and—upgrade command line options). Version 0.9.0 added support for creating source packages and the capability of compiling such or even a complete repository of source packages.

The name wpkg was chosen as the short for "Windows Packager" although the tool perfectly functions (and is generally developed) under Linux and other Unix-like operating systems.

Front end usage

On the front end, wpkg is used to manage an installation environment. It ensures validity of an installation by enforcing package dependencies, matching architectures, and many other parameters.

When used with a list of sources, wpkg becomes as powerful as apt-get and supports commands such as update and upgrade.

Back end usage

On the back end, wpkg is primarily used by the developer although you may have a person dedicated to creating packages and another to administer your package repository.

wpkg can be used to directly create binary packages. However, since version 0.9.0, it is possible to create source packages. A wpkg source package is a .deb file which includes all the source code of your project. When source packages are saved in a repository, wpkg is then capable of recompiling your entire repository of source packages and output the corresponding binary packages in one go.

A repository can later be used by the front end to automatically install any number of packages and their dependencies.

Features

As mentioned earlier, wpkg is based on the Debian tools dpkg and Advanced Packaging Tool (apt) which include many advanced package management features as follow:

  • Verify the MD5 checksum of each file when installing files.
  • Automatic upgrade to the latest version.
  • Grouping of packages by Distribution and Component (area, section, and sub-section).
  • Managed build dependencies, installation dependencies, conflicts, breaks.
  • Dynamic libraries handling made easy with version constrained on dependencies.
  • Configuration files management to avoid overwriting existing user configuration files.
  • Repository support, including binary and source branches, distributions, and components.
  • Upgrade suppression with the hold status.
  • Prevent installation with the reject status.
  • Cascading (also called recursive) package installation and removal.
  • Automatic removal of unused packages.

Also in order to help packager maintainers and system administrators, the project includes tools that generate graphical output of packages (in HTML format) or of dependencies (in DOT format). Creating a full dependency tree can be extremely useful to find out problems in an existing installation or a large repository.

File format of packages handled by wpkg

The file format used for binary and source packages is the deb format. It is 100% compatible with the output of the dpkg tool. You can actually use dpkg -c to list the contents of a package created with the wpkg tool.

Cross-platform compatibility

wpkg was primarily created to work under Microsoft Windows. However, it is being developed under Linux and heavily tested under both operating systems.

It also compiles and runs under Cygwin, Mingw32, Mac OS/X, OpenSolaris, FreeBSD, Fedora, and most certainly many other Unices.

Example use

The build command is used to create a .deb package from a directory tree prepared for the operation:

wpkg -b package

where package is the directory with a WPKG sub-directory with the control file information and other sub-directories with data to save in the package being built.

The control file of a package can be viewed with:

wpkg -f debFileName
wpkg -f packageName

where debFileName is the name of a Debian software package and packageName of an installed package.

To install a .deb package:

wpkg -i debFileName

where debFileName is the name of the Debian software package.

To install a .deb package with its dependencies as apt-get is capable of:

wpkg -i debFileName—repository http://www.example.com/wpkg/repository

where http://www.example.com/wpkg/repository is a valid wpkg repository.

To upgrade packages to the latest version on a target installation:

wpkg—upgrade

The list of installed packages can be obtained with:

wpkg -l 

To remove an installed package:

wpkg -r packageName

If you are used to run dpkg and apt-get, you will notice that the wpkg commands are very much the same.

See also

References

  1. ^ "dpkg Shell implementation". Dpkg Developers. Retrieved 2017-08-30.
  2. http://metadata.ftp-master.debian.org/changelogs/main/d/dpkg/stable_changelog
  3. http://metadata.ftp-master.debian.org/changelogs/main/d/dpkg/unstable_changelog
  4. "dpkg on git.dpkg.org". Dpkg Developers. 2018-07-15. Retrieved 2018-07-15.
  5. "dpkg package file list". Debian project. Retrieved 2015-03-09.
  6. Jover, Guillem. "Removal of install-info from dpkg". Debian project. Retrieved 2015-03-09.
  7. "GNU Texinfo project". GNU project. Retrieved 9 March 2015.
  8. "dpkg perl implementation". git (Dpkg Developers). Retrieved 2015-03-09.
  9. "dpkg C implementation". git (Dpkg Developers). Retrieved 2015-03-09.
  10. Akkerman, Wichert. "dpkg history". Archived from the original on 2015-02-07. Retrieved 2017-08-29. {{cite web}}: Unknown parameter |deadurl= ignored (|url-status= suggested) (help)
  11. "dpkg-dev package file list". Debian project. Retrieved 2015-03-09.
  12. "dpkg". Debian. 2012-06-05. Retrieved 2014-06-18.
  13. http://windowspackager.org/news/wpkg-100-available
  14. http://windowspackager.org/news/wpkg-092-available
  15. Fox, Richard (7 October 2014). "13.4.3: APT". Linux with Operating System Concepts. Routledge. p. 544. ISBN 978-1482235890.
  16. "A Build System with wpkg". Alexis Wilke. 2013-11-06. Retrieved 2013-08-28.
  17. "wpkg --repository ..." Alexis Wilke. 2012-12-05. Retrieved 2013-08-28.
  18. "References of the wpkg code". Alexis Wilke. 2013-08-10. Retrieved 2013-08-28.

External links


See also

References

External links

Package managers (format)
Compiled
Embedded OS
Gaming console
Linux
Unix-like
dpkg
Purely functional
RPM
tarball
Other
macOS
z/OS
Mobile OS
Multi-platform
Solarisillumos
Web browsers
Windows
Uncompiled
BSD
C++
Java
JavaScript
Kubernetes
Linux
macOS
.NET
Perl
PHP
Python
Ruby
Rust
Scala
Debian
Software in the Public Interest
General Debian OpenLogo
People
Derivatives
Kernels
Forks
Software
OthersDebian–Mozilla trademark dispute
Categories: