DCUT(1)
π DCUT π
okay bestie, welcome to dcut(1) β Debian archive command file upload tool. yeah the name is giving "cute little command" but it's actually the β¨ tool β¨, so let's get into it π«Ά
πΈ NAME πΈ
dcut β the Debian archive command file upload tool. that's it, that's the name. short, iconic, does what it says on the tin π
β¨ SYNOPSIS β¨
dcut [-h] [-d] [-c FILE] [-m MAINTAINER] [-k KEYID] [-O FILENAME] [-P]
[-s] [-U FILENAME] [-i FILENAME] [-v] [HOST] SUBCOMMAND ...
dcut [OPTIONS] [HOST] SUBCOMMAND [SUB-COMMAND OPTIONS]
two whole ways to call it, and both are valid. pick your fighter π
π¦ DESCRIPTION π¦
so here's the tea: dcut can create and/or upload command files that the debian archive kit β aka "dak" β actually understands. it's built with an extensible interface on purpose, so third party authors can easily bolt on more sub-commands whenever they want. which means your running instance of dcut might understand more commands than the ones written down here. refer to the docs for those respective commands, iykyk π
similar to dput, you can hand it a HOST as the target site for the command file. and yes, the same default host selection criteria apply. it also parses the exact same configuration files described in dput. so if you've done dput stuff, your brain already works here. slay π
β οΈ real talk though β this does not support the same interface as the olddputbinary. so please, please, please double-check any scripts that depend on old-styledput's interface before you go running them. it's giving "works on my machine" and then it very much does not π
π OPTIONS π
-c,--config=FILEβ the configuration file to parse.-d,--debugβ turn on debug messages. repeat it twice to crank the verbosity level up even further π₯-f,--forceβ bypasses all the sanity checks and uploads the commands file as is. use with caution, bestie, this one does not have your back π-m,--maintainer=MAINTAINERβ use MAINTAINER for the uploader field and for GnuPG key selection. give it as a full identity, like in"J Uploader <yourid@example.com>"format. this has no effect when theuploadcommand is used.-k,--keyid=KEYIDβ use KEYID as the key for signing. the default is to useDEBEMAILandDEBFULLNAME, or whatever identity was provided with--maintainer. this has no effect when theuploadcommand is used.-O,--output=FILENAMEβ write the resulting commands file to FILENAME instead of uploading it. do not use this option with theuploadcommand. and the chosen FILENAME won't get overwritten if it already exists β lowkey very helpful for testing that everything works correctly β¨-P,--passiveβ forces FTP passive mode when uploading the package through FTP. heads up: this option is deprecated β use profiles instead.-s,--simulateβ simulate the upload only. it runs all the pre-upload checks, initializes the upload handler, but doesn't actually store any file. vibe check without the consequences π«Ά-i,--input=FILENAMEβ silently ignored. it's just there for compatibility with old-styledputcommand lines. it's doing nothing and it's thriving π-v,--versionβ print version information and exit.HOSTβ the target host to upload a package to. it behaves with the same semantics asdput(1)'s'HOSTargument, and it also uses the same profiles from it.
π SUB-COMMANDS π
so the sub-commands are literally implementing commands that the archive software understands. they can each take their own individual arguments, and those arguments have to come after you specify the actual sub-command you want. order matters, bestie π
π cancel
cancels an upload entirely. the upload in question is referred to by a changes file name that exists remotely, sitting in the incoming or deferred queues.
OPTIONS
Takes one argument.
-f,--file=FILENAMEβ the changes file name that refers to the upload you want cancelled.
π migrate
accepts or rejects an upload from a policy queue into the underlying suite. underneath it all, this issues a .dak-commands file with the command process-upload. the upload gets selected via two arguments that identify the source package name and the source version.
say you're migrating source package foobar in version 1.2.3-4+deb42u1, you'd use:
dcut security-master migrate foobar 1.2.3-4+deb42u1
OPTIONS
--rejectβ instead of accepting (and therefore migrating) the upload, this removes the associated packages from the policy queue without transferring them to the underlying suite. not me rejecting an upload, couldn't be me π
π rm
removes a lost or wrongly uploaded file from the incoming directory. the argument gets interpreted as a path fragment by the archive software. so to delete a filename out of a deferred queue, you refer to it by using the full path.
for example, to delete a broken upload in the DELAYED queue, use the command:
dcut rm -f DELAYED/X-day/foobar.deb
alternatively, the --searchdirs argument tells the archive software to search for a file name in all directories. so this next command is equivalent to the one before it:
dcut rm --searchdirs -f foobar.deb
OPTIONS
Takes at least one argument.
-f,--file=FILENAMEβ the file name to be removed. this argument can be repeated, and it also knows about the shell wildcards*,?, and[]. however, keep your local shell replacements in mind when you're supplying shell meta characters β you may need to escape them or wrap them in quotes π--searchdirsβ search in all directories for the given file. only supported for files in theDELAYEDqueue.
π dm
manages Debian Maintainer (DM) upload permissions. Debian Developers can grant or revoke package upload permissions with this command. it takes the Debian Maintainer and the action to perform as arguments.
β οΈ note:dcutwill not perform any validation for conflicting arguments within--allowand--denybelow. that handling is left to the archive software, which currently processes--allowbefore--denyas an implementation detail. so don't come fordcutabout it π
OPTIONS
--uidβ any searchable, unique identity that identifies an existing Debian Maintainer. this can be a (full) name, an e-mail address, or a GnuPG fingerprint of any existing Debian Maintainer. note that the identity you provide must be known in the DM keyring installed on your local system. that keyring is used to validate the supplied argument and makes sure the identity hint you gave matches exactly one DM. if the user you want to change ACLs on isn't known to the local DM keyring, you can provide the full GPG user ID as the argument and pass--force, which causesdcutto bypass any argument checking/translation. please note, this will generate a commands file that gets uploaded literally as is. use with caution π--allow=PACKAGE--allow PACKAGE LISTβ source package(s) where permissions to upload should be granted. give a space-separated list of packages to apply permissions to more than one package at once. if multiple--allowoptions are given, the last one takes precedence.--deny=PACKAGE--deny PACKAGE LISTβ source package(s) where permissions to upload should be denied. give a space-separated list of packages to apply permissions to more than one package at once. if multiple--denyoptions are given, the last one takes precedence.
π reschedule
reschedules an upload. this command can move a deferred upload to any other deferred queue. main character energy for the queue π
OPTIONS
Takes two arguments.
-f,--file=FILENAMEβ file name to be rescheduled.-d,--days=DAYSβ reschedule the upload to DAYS days. takes a numeric argument from0to15, corresponding to the respective delayed queues. note:0-day is not the same as uploading to incoming straight. they're different, don't get it twisted π
π upload
this is a pseudo-command β that is, it's handled within dcut itself and not forwarded to the archive kit. it uploads a locally existing commands file as is.
β οΈ however, no checks are performed for this file. use with caution. fr fr.
OPTIONS
Takes one argument.
-f,--file=FILENAMEβ a local file name which is uploaded as is to the archive software.
β EXIT STATUS β
0β Success π1β A runtime check returned an error.2β An internal error was detected, for example while loading configuration files.3β An upload error was detected, for example a permission or authentication problem while uploading files.
π BUGS π
found a bug? report them to http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=dput-ng β the devs genuinely want to know π«Ά
π EXAMPLES π
look at these little legends:
$ dcut dm --uid "Paul Tagliamonte" --allow glibc
$ dcut dm --uid 0DEFACED --allow linux --deny kfreebsd9
$ dcut dm --uid paul@example.com --allow eglibc linux
$ dcut rm --searchdirs -f udj-desktop-client_0.5.1-2_amd64.deb
$ dcut cancel -f foo_1.0-2.1_amd64.changes
$ dcut ftp-master rm -f 'linux*.deb'
π AUTHOR π
dput-ng was originally written by Arno TΓΆll <arno(a)debian.org> and Paul Richard I by the Grace of God of the United Kingdom of Debian and Ubuntu and of his other realms and territories King Head of the Fluxbox Window Manager Defender of the Faith Tagliamonte <paultag(a)debian.org>.
^(that second title is not a typo, that is genuinely how it's written, and honestly? iconic. periodt.)
π§ RESOURCES π§
dput(5), dput.cf(5), dcut(1), gpg(1), dirt(1)
π COPYING π
Copyright Β© 2012 dput-ng authors. Free use of this software is granted under the terms of the GNU General Public License (GPL) Version 2 or later.
and that's the whole page, bestie!! πβ¨ this lil cutie is dcut(1), dated 06/23/2026 β go forth and upload responsibly (or at least responsibly-ish), and remember: --force is not a personality trait π
π¦
π¦ where this page comes from
- ubuntu stonking: dput-ng 1.46 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms