{"id":14128503,"url":"https://github.com/Debian/devscripts","last_synced_at":"2025-08-03T23:31:20.565Z","repository":{"id":33142006,"uuid":"36781733","full_name":"Debian/devscripts","owner":"Debian","description":"Mirror of https://salsa.debian.org/debian/devscripts.git","archived":false,"fork":false,"pushed_at":"2023-02-13T19:12:35.000Z","size":14105,"stargazers_count":33,"open_issues_count":2,"forks_count":14,"subscribers_count":48,"default_branch":"master","last_synced_at":"2024-11-21T14:04:36.574Z","etag":null,"topics":["mirrored-repositories","perl","scripts-collection"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Debian.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2015-06-03T05:21:15.000Z","updated_at":"2024-05-08T19:10:45.000Z","dependencies_parsed_at":"2024-01-31T10:12:49.510Z","dependency_job_id":null,"html_url":"https://github.com/Debian/devscripts","commit_stats":null,"previous_names":[],"tags_count":276,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debian%2Fdevscripts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debian%2Fdevscripts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debian%2Fdevscripts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debian%2Fdevscripts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Debian","download_url":"https://codeload.github.com/Debian/devscripts/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228571844,"owners_count":17938772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mirrored-repositories","perl","scripts-collection"],"created_at":"2024-08-15T16:01:46.593Z","updated_at":"2024-12-07T06:31:21.087Z","avatar_url":"https://github.com/Debian.png","language":"Perl","readme":"README for Debian devscripts package\n====================================\n\nDevscripts provides several scripts which may be of use to Debian\ndevelopers.  The following gives a summary of the available scripts --\nplease read the manpages for full details about the use of these\nscripts.  They are contributed by multiple developers; for details of\nthe authors, please see the code or manpages.\n\nAlso, many of these scripts have dependencies on other packages, but\nrather than burden the package with a large number of dependencies,\nmost of which will not be needed by most people, the individual\ndependencies are listed as \"Recommends\" in the control file; lastly,\nscripts that are unlikely to be used by many people have their dependencies\ncategorized as \"Suggests\" in the control file.  This\nensures that the packages will be installed by default but allows\nusers to remove them if desired.  The dependencies and recommendations\nare listed in square brackets in the description below, as well as in\nthe Description field in the control file.\nThe scripts marked with an asterisk ('*') are considered \"core\", and as\nsuch have their dependencies all listed as hard \"Depends\".\n\nAnd now, in alphabetical order, the scripts:\n\n- annotate-output: run a command and prepend time and stream (O for stdout,\n  E for stderr) for every line of output.\n\n- archpath: Prints arch (tla/Bazaar) package names. Also supports\n  calculating the package names for other branches. [tla | bazaar]\n\n- bts: A command-line tool for accessing the Debian Bug Tracking System, both\n  to send mails to control@bts.debian.org and to access the web pages and\n  SOAP interface of the BTS. [www-browser, libauthen-sasl-perl,\n  libnet-smtps-perl, libsoap-lite-perl, liburi-perl, libwww-perl,\n  bsd-mailx | mailx]\n\n- build-rdeps: Searches for all packages that build-depend on a given package.\n  [dctrl-tools, dose-extra, libdpkg-perl]\n\n- chdist: tool to easily play with several distributions. [dctrl-tools]\n\n- checkbashisms: check whether a /bin/sh script contains any common\n  bash-specific constructs.\n\n- cowpoke: upload a Debian source package to a cowbuilder host and build it,\n  optionally also signing and uploading the result to an incoming queue.\n  [ssh-client]\n\n- cvs-debi, cvs-debc: wrappers around debi and debc respectively (see below)\n  which allow them to be called from the CVS working directory.\n  [cvs-buildpackage]\n\n- cvs-debrelease: wrapper around debrelease which allows it to be called\n  from the CVS working directory. [cvs-buildpackage, dupload | dput,\n  ssh-client]\n\n- cvs-debuild: A wrapper for cvs-buildpackage to use debuild as its package\n  building program. [cvs-buildpackage, fakeroot, lintian, gnupg |gnupg2]\n\n- dcmd: run a given command replacing the name of a .changes or .dsc file\n  with each of the files referenced therein. *\n\n- dd-list: given a list of packages, pretty-print it ordered by maintainer. *\n\n- debbisect: bisect snapshot.debian.org to find which change in the archive\n  introduced a certain problem. [mmdebstrap, python3-debian]\n\n- debc: List contents of current package.  Do this after a successful\n  \"debuild\" to see if the package looks all right.\n\n- debchange (abbreviation dch): Modifies debian/changelog and manages version\n  numbers for you.  It will either increment the version number or add an\n  entry for the current version, depending upon the options given to it.\n  [libdistro-info-perl, libsoap-lite-perl]*\n\n- debcheckout: checkout the development repository of a Debian package. *\n\n- debclean: Clean a Debian source tree.  Debclean will clean all Debian\n  source trees below the current directory, and if requested, also remove\n  all files that were generated from these source trees (that is .deb, .dsc\n  and .changes files).  It will keep the .diffs and original files, though,\n  so that the binaries and other files can be rebuilt if necessary.\n  [fakeroot]*\n\n- debcommit: Commits changes to cvs, darcs, svn, svk, tla, bzr, git, or hg,\n  using new entries in debian/changelog as the commit message. Also supports\n  tagging Debian package releases. [cvs | darcs | subversion | svk | tla |\n  bzr | git-core | mercurial, libtimedate-perl]\n\n- debdiff: A program which examines two .deb files or two .changes files and\n  reports on any difference found in their file lists.  Useful for ensuring\n  that no files were inadvertently lost between versions.  Can also examine\n  two .dsc files and report on the changes between source versions.\n  For a deeper comparison one can use the diffoscope package.\n  [wdiff, patchutils]*\n\n- debdiff-apply: Apply unified diffs of two Debian source packages, such as\n  those generated by debdiff, to a target Debian source package. Any changes\n  to debian/changelog are dealt with specially, to avoid the conflicts that\n  changelog diffs typically produce when applied naively. May be used to check\n  that old patches still apply to newer versions of those packages.\n  [python3-debian, python3-unidiff, quilt]\n\n- debi: Installs the current package by using the setuid root debpkg\n  script described below.  It assumes that the current package has\n  just been built (for example by debuild), and the .deb lives in the\n  parent directory, and will effectively run dpkg -i on the .deb.  The\n  ability to install the package with a very short command is very\n  useful when troubleshooting packages.\n\n- debootsnap: Combines debootstrap and snapshot.debian.org to create a chroot\n  containing exactly the requested selection of packages. This can be used\n  to re-create a chroot from the past, for example to reproduce a bug. The\n  tool is also used by debrebuild to build a package in a chroot with build\n  dependencies in the same version as recorded in the buildinfo file.\n  [python3-pycurl, mmdebstrap]\n\n- debpkg: A wrapper for dpkg used by debi to allow convenient testing\n  of packages.  For debpkg to work, it needs to be made setuid root,\n  and this needs to be performed by the sysadmin -- it is not\n  installed as setuid root by default.  (Note that being able to run a\n  setuid root debpkg is effectively the same as having root access to\n  the system, so this should be done with caution.)  Having debpkg as\n  a wrapper for dpkg can be a Good Thing (TM), as it decreases the\n  potential for damage by accidental wrong use of commands in\n  superuser mode (e.g., an inadvertent rm -rf * in the wrong directory\n  is disastrous as many can attest to).\n\n- debrelease: A wrapper around dupload or dput which figures out which\n  version to upload, and then calls dupload or dput to actually perform\n  the upload. [dupload | dput, ssh-client]\n\n- debrebuild: A script that provided a .buildinfo file reports the\n  instructions on how to try to reproduce the reported build.\n  [sbuild | mmdebstrap, python3-pycurl, libdpkg-perl]\n\n- debrepro: A script that tests reproducibility of Debian packages. It will\n  build a given source directory twice, with a set of variation between the\n  first and second build, and compare the binary packages produced. If\n  diffoscope is installed, it is used to compare non-matching binaries. If\n  disorderfs is installed, it is used during the build to inject\n  non-determinism in filesystem listing operations.\n  [faketime, diffoscope, disorderfs]\n\n- debrsign: This transfers a .changes/.dsc pair to a remote machine for\n  signing, and runs debsign on the remote machine over an SSH connection.\n  [gnupg | gnupg2, debian-keyring, ssh-client]\n\n- debsign: Use GNU Privacy Guard to sign the changes (and possibly dsc)\n  files created by running dpkg-buildpackage with no-sign options.  Useful\n  if you are building a package on a remote machine and wish to sign it on\n  a local one.  This script is capable of automatically downloading the\n  .changes and .dsc files from a remote machine. [gnupg |gnupg2,\n  debian-keyring, ssh-client]*\n\n- debsnap: grab packages from https://snapshot.debian.org [libwww-perl,\n  libjson-perl]\n\n- debuild: A wrapper for building a package (i.e., dpkg-buildpackage) to\n  avoid problems with insufficient permissions and wrong paths etc.\n  Debuild will set up the proper environment for building a package.\n  Debuild will use the fakeroot program to build the package by default, but\n  can be instructed to use any other gain-root command, or can even be\n  installed setuid root.  Debuild can also be used to run various of\n  the debian/rules operations with the same root-gaining procedure.\n  Debuild will also run lintian to check that the package does not\n  have any major policy violations. [fakeroot, lintian, gnupg | gnupg2]*\n\n- deb-janitor: command-line client for interacting with the Debian Janitor.\n\n- deb-reversion: increases a binary package version number and repacks the\n  package, useful for porters and the like.\n\n- deb-why-removed: shows the reason a package was removed from the archive.\n  [libdpkg-perl]\n\n- dep3changelog: generate a changelog entry from a DEP3-style patch header.\n\n- desktop2menu: given a freedesktop.org desktop file, generate a skeleton\n  for a menu file. [libfile-desktopentry-perl]\n\n- dget: Downloads Debian source and binary packages. Point at a .changes or\n  .dsc to download all references files. Specify a package name to download\n  it from the configured apt repository. [wget | curl]\n\n- diff2patches: extracts patches from a .diff.gz file placing them under\n  debian/ or, if present, debian/patches. [patchutils]\n\n- dpkg-depcheck, dpkg-genbuilddeps: Runs a specified command (such as\n  debian/rules build) or dpkg-buildpackage, respectively, to determine the\n  packages used during the build process.  This information can be helpful\n  when trying to determine the packages needed in the Build-Depends etc.\n  lines in the debian/control file. [build-essential, strace]\n\n- dscextract: extract a single file from a Debian source package. [patchutils]\n\n- dscverify: check the signature and MD5 sums of a dsc file against the most\n  current Debian keyring on your system. [gnupg | gnupg2, debian-keyring]\n\n- edit-patch: add/edit a patch for a source package and commit the changes.\n  [quilt | dpatch | cdbs]\n\n- getbuildlog: download package build logs from Debian auto-builders. [wget]\n\n- git-deborig: try to produce Debian orig.tar using git-archive(1).\n  [libdpkg-perl, libgit-wrapper-perl, liblist-compare-perl,\n  libstring-shellquote-perl, libtry-tiny-perl]\n\n- grep-excuses: grep britney's excuses to find out what is happening to your\n  packages. [libdbd-pg-perl, libterm-size-perl, libyaml-syck-perl, wget, w3m]\n\n- hardening-check: report the hardening characteristics of a set of binaries.\n\n- list-unreleased: searches for packages marked UNRELEASED in their\n  changelog.\n\n- ltnu (Long Time No Upload): List all uploads of packages by the\n  given uploader or maintainer and display them ordered by the last\n  upload of that package, oldest uploads first.\n\n- manpage-alert: locate binaries without corresponding manpages. [man-db]\n\n- mass-bug: mass-file bug reports. [bsd-mailx | mailx]\n\n- mergechanges: merge .changes files from the same release but built\n  on different architectures.\n\n- mk-build-deps: Given a package name and/or control file, generate a binary\n  package which may be installed to satisfy the build-dependencies of the\n  given package. [equivs]\n\n- mk-origtargz: Rename upstream tarball, optionally changing the compression\n  and removing unwanted files.\n  [libfile-which-perl, unzip, xz-utils, file]\n\n- namecheck: Check project names are not already taken.\n\n- nmudiff: prepare a diff of this version (presumably an NMU against the\n  previously released version (as per the changelog) and submit the diff\n  to the BTS. [patchutils, mutt]\n\n- origtargz: fetch the orig tarball of a Debian package from various sources,\n  and unpack it. [pristine-tar, pristine-lfs]\n\n- plotchangelog: display information from a changelog graphically using\n  gnuplot. [libtimedate-perl, gnuplot]\n\n- pts-subscribe: subscribe to the PTS (Package Tracking System) for a\n  limited period of time. [bsd-mailx | mailx, at]\n\n- rc-alert: list installed packages which have release-critical bugs.\n  [wget | curl]\n\n- reproducible-check: reports on the reproducible status of installed\n  packages. For more details please see \u003chttps://reproducible-builds.org\u003e.\n\n- rmadison: remotely query the Debian archive database about packages.\n  [liburi-perl, wget | curl]\n\n- sadt: run DEP-8 tests. [python3-debian]\n\n- salsa: manipulates salsa.debian.org repositories and users\n  [libgitlab-api-v4-perl]\n\n- suspicious-source: output a list of files which are not common source\n  files. [python3-magic]\n\n- svnpath: Prints the path to the Subversion repository of a Subversion\n  checkout. Also supports calculating the paths for branches and\n  tags in a repository independent fashion. Used by debcommit to generate\n  svn tags. [subversion]\n\n- tagpending: runs from a Debian source tree and tags bugs that are to be\n  closed in the latest changelog as pending. [libsoap-lite-perl]\n\n- transition-check: Check a list of source packages for involvement in\n  transitions for which uploads to unstable are currently blocked.\n  [libwww-perl, libyaml-syck-perl]\n\n- uscan: Automatically scan for and download upstream updates.  Uscan can\n  also call a program such as uupdate to attempt to update the Debianised\n  version based on the new update.  Whilst uscan could be used to release\n  the updated version automatically, it is probably better not to without\n  testing it first.  Uscan can also verify detached OpenPGP signatures if\n  upstream's signing key is known. [file, gpgv | gpgv2, gnupg | gnupg2,\n  libfile-dirlist-perl, libfile-touch-perl, libfile-which-perl,\n  liblwp-protocol-https-perl, libmoo-perl, libwww-perl, unzip, xz-utils]*\n\n- uupdate: Update the package with an archive or patches from\n  an upstream author.  This will be of help if you have to update your\n  package.  It will try to apply the latest diffs to your package and\n  tell you how successful it was. [patch]\n\n- what-patch: determine what patch system, if any, a source package is using.\n  [patchutils]\n\n- whodepends: check which maintainers' packages depend on a package.\n\n- who-permits-upload: Retrieve information about Debian Maintainer access\n  control lists. [gnupg | gnupg2, libencode-locale-perl, libwww-perl,\n  debian-keyring]\n\n- who-uploads: determine the most recent uploaders of a package to the Debian\n  archive. [gnupg | gnupg2, debian-keyring, debian-maintainers, wget]\n\n- wnpp-alert: list installed packages which are orphaned or up for adoption.\n  [wget | curl]\n\n- wnpp-check: check whether there is an open request for packaging or\n  intention to package bug for a package. [wget | curl]\n\n- wrap-and-sort: wrap long lines and sort items in packaging files.\n  [python3-debian]\n\n- /usr/share/doc/devscripts/examples: This directory contains examples of\n  procmail and exim scripts for sorting mail arriving to Debian\n  mailing lists.\n\nTypical Maintenance cycle with devscripts\n-----------------------------------------\n\n1. cd \u003csource directory of package\u003e\n\n2. Editing of files\n\n3. Log the changes with: dch -i \"I changed this\"\n   If desired, use debcommit to commit changes to cvs, svn, arch or git.\n\n4. Run debuild to compile it.  If it fails, return to 2.  (You could\n   also just test the compilation by running the appropriate part of\n   debian/rules.)\n\n5. Check if package contents appear to be ok with \"debc\"\n\n6. Install the package with \"debi\" and test the functionality it\n   should provide.  (Note that this step requires debpkg to be setuid\n   root, or you to be logged in as root or similar.)\n\n7. If all is ok release it by running debrelease.\n\n8. Optionally, use debcommit --release to commit and tag the release\n   in revision control.\n\n\nWrapper scripts\n---------------\n\nDevscripts includes two wrappers (the above mentioned \"debuild\" and\n\"debpkg\") that are intended to make life easier for Debian developers.\nThese wrappers unset most environment variables for security reasons,\nset a secure PATH and then run the appropriate program (such as dpkg).\nProcessing Makefiles is inherently dangerous though, since any UNIX\ncommand can be executed.  The fakeroot command makes it possible to\nbuild a package in a secure way: it does not require any genuine root\naccess, but rather pretends that it has it.  It is strongly\nrecommended that you install the \"fakeroot\" package!  Installation of\na package with dpkg always requires superuser mode and is therefore\ninherently dangerous.  Debi aims to reduce the possibility of typos\nby only performing a dpkg -i as root.  This does not, however, do\nanything for security, as there is no problem creating a package with\na setuid-root shell using fakeroot and then installing it with debpkg.\nSo only allow trusted users access to a setuid root debpkg, if at all!\n\nThe wrappers have to be manually equipped to gain the necessary\nprivileges to do their jobs because of security concerns.  You have to\nequip \"debpkg\" with superuser privileges.  \"debuild\" needs superuser\nprivileges only if fakeroot or another gain-root command is not\navailable.\n\nYou can either:\n\n(a) invoke these wrappers from \"sudo\" or \"super\" or any other way you\n    have to control superuser access, or\n\n(b) you can set them up to be accessible only to a group of users.\n    (Some people suggest that this is highly dangerous since it\n    creates another executable that runs with the setuid root bit set\n    and which won't ever ask you for a password!)  If you choose this\n    method, it can be done by issuing the following command:\n\n      dpkg-statoverride --update --add root root_group 4754 /usr/bin/debpkg\n\n    once (and similarly for debuild if you really need it).  This will\n    enable access to debpkg for all users who are members of the group\n    \"root_group\".  Remember that you are in effect giving those users\n    superuser access to your system!  This information will be stored\n    in the dpkg database and remembered across upgrades.\n\n    Because of the security implications, only do this on your home\n    Linux box, NOT on a busy internet server (and possibly not even\n    there).\n\nOriginally by Christoph Lameter \u003cclameter@waterf.org\u003e\nModified extensively by Julian Gilbey \u003cjdg@debian.org\u003e\n","funding_links":[],"categories":["Perl"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDebian%2Fdevscripts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDebian%2Fdevscripts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDebian%2Fdevscripts/lists"}