Packages

From Things and Stuff Wiki
Revision as of 22:10, 22 November 2020 by Milk (talk | contribs) (→‎Helpers)
Jump to navigation Jump to search


General

See also Apple#Package management

  • https://en.wikipedia.org/wiki/Package_manager - a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer's operating system in a consistent manner.

A package manager deals with packages, distributions of software and data in archive files. Packages contain metadata, such as the software's name, description of its purpose, version number, vendor, checksum, and a list of dependencies necessary for the software to run properly. Upon installation, metadata is stored in a local package database. Package managers typically maintain a database of software dependencies and version information to prevent software mismatches and missing prerequisites. They work closely with software repositories, binary repository managers, and app stores.

Package managers are designed to eliminate the need for manual installs and updates. This can be particularly useful for large enterprises whose operating systems are based on Linux and other Unix-like systems, typically consisting of hundreds or even tens of thousands of distinct software packages.



  • pkg-config - a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use gcc -o test test.c `pkg-config --libs --cflags glib-2.0` for instance, rather than hard-coding values on where to find glib (or other libraries). It is language-agnostic, so it can be used for defining the location of documentation tools, for instance. The program is free software and licensed under the GPL version 2 or any later version (at your option). pkg-config works on multiple platforms: Linux and other UNIX-like operating systems, Mac OS X and Windows. It does not require anything but a reasonably well working C compiler and a C library, but can use an installed glib if that is present. (A copy of recent glib2 is shipped together with pkg-config versions since 0.27, and this is sufficient for pkg-config to compile and work properly.)



  • pkgdiff - Package Changes Analyzer is a tool for visualizing changes in Linux software packages (RPM, DEB, TAR.GZ, etc). The tool is intended for Linux maintainers who are interested in ensuring compatibility of old and new versions of packages.


  • checkinstall - Installs a compiled program from the program's source directory using "make install" or any other command supplied on checkinstall's command line. checkinstall will create a Slackware, RPM or Debian compatible package and install it using your distribution's standard package administration utilities.


  • Repology - analyzes a lot of package repositories and other sources* comparing packages versions across them and gathering other information. Repology shows you in which repositories a given project is packaged, which version is the latest and which needs updating, who maintains the package, and other related information. Repology might be useful
  • pkgs.org - Linux Software Catalog and Packages Search. RPM, DEB, TGZ, TXZ packages from well-known repositories of the Archlinux, Fedora, CentOS, RHEL, Scientific Linux, Debian, Ubuntu, openSUSE, Mandriva, Mageia and Slackware distributions; packages search by name, filename, summary, description, requires, provides, files and directories; pPowerful packages browser (summary, description, files, requires, provides, changelog, etc.)


Arch

pacman

pacman -Sh
  # display help for -S commands
pacman -Syu
  # update repository lists and upgrade system
pacman -Ss packagename
  # search respoitories for packagename

pacman -S packagename
  # install packagename


pacman -Qo [application/filepath]
  # query what package owns an application/file

pacman -Qi
  # query returning info on all installed programmes

pacman -Qi packagename
  # query returning info of packagename

pacman -Ql packagename
  # query returning list all files owned by packagename
pacman -Qqtd
  # check whether there are any orphaned packages


pacman -R packagename
  # remove package

pacman -Rsn packagename
  # remove package and it's deps (unless they are required by another program) and its related config files packages

pacman -Rc packagename
  # remove package and deps ('cascade')
pacaur -Rsn `pacaur -Qqtd`
  # remove all orphaned packages

for i in `pacman -Qdt | awk '{print $1}'`; do pacman -R $i ;  done
   # scriplet for if you don't know about -q
pacman -Rdd qt
  # remove qt, ignoring the fact that other programs depend on it
pacman -Syuuu
  # when qt4 replaced qt, but qt had deps.


pacman -Qkk
  # check system for incorrect permissions and altered files

pacman -Qkk package
  # check package for incorrect permissions and altered files


pacman -Qdt
  # list all orphan packages

pacman -Rsn $(pacman -Qdtq)
  # remove all orphan packages


sudo pacman-key --refresh-keys
pacman-key --recv-keys keyid
  or
pacman-key --add /path/to/downloaded/keyfile
  then
pacman-key --finger keyid
pacman-key --lsign-key keyid

Packages



Templates:

/usr/share/pacman/PKGBUILD.proto
/usr/share/pacman/PKGBUILD-split.proto
/usr/share/pacman/PKGBUILD-vcs.proto
/usr/share/pacman/proto.install




makepkg

  • https://wiki.archlinux.org/index.php/makepkg - a script to automate the building of packages. The requirements for using the script are a build-capable Unix platform and a PKGBUILD. makepkg is provided by the pacman package.
makepkg -g >> PKGBUILD && makepkg
makepkg -si
  # install dependencies(, generate package), install generated package

makepkg --noextract
  # generated package but don't extract (from local archive file or vcs). for developing.

updpkgsums
  # update md3 sums for package assets


makepkg --printsrcinfo > .SRCINFO
  # regenerate .SRCINFO for new PKGBUILD content


"ERROR: PKGBUILD contains CRLF characters and cannot be sourced." Solution:

sed -i 's/^M//' PKGBUILD

[ctrl+v][ctrl+m] for the ^M symbol.


makepkg -Afris --noconfirm
  # noninteractice

mkchrootpkg


Repositories





  • suruatoel.xyz/arch - unofficial Arch Linux repositories with packages from the AUR built on a regular basis.There are no changes to the original PKGBUILDs and no alterations to the sourcecode of these packages. All packages come with no warranty. No responsibility is taken for how they are used. coderkun-aur-audio repo includes linux-rt and linux-rt-lts.



  • https://www.suruatoel.xyz/arch - unofficial Arch Linux repositories with binary packages from the AUR built on a regular basis. There are no changes to the original PKGBUILDs and no alterations to the sourcecode of these packages.


Tools


  • aurutils - a collection of scripts to automate usage of the Arch User Repository, with different tasks such as package searching, update checks, or computing dependencies kept separate. The chosen approach for managing packages is local pacman repositories, rather than foreign (installed by pacman -U) packages.



  • https://github.com/seblu/aurbot - a AUR (Arch Linux Repository) automatic builder of packages. Its goal is to track updates of AUR packages to build new versions, send mail report and push the new package inside a binary repository. Aurbot is piloted by its command line tools aurbot and timed action, like rebuild or mail report should be done via cron. Aurbot is written in Python 3.2.



  • https://meta.sh/aur - will download every package from the AUR specified as a parameter, and will run makepkg on it with any hyphen-prefixed options. Package files will be downloaded to $BUILDDIR, or the working directory if $BUILDDIR has no value.


pacrepairfile
  # repair permissions





  • pkgcacheclean - clear all but last two versions of archived package files


  • PacVis - visualize pacman local database


  • gist: unused.sh - finds unused package on your Arch Linux box


  • pkg-list-linked-libraries - Check a package to see what libraries it links against. Alternatively check against a specific library. If PACKAGE is not an existing file, pacman will resolve it as a package name and attempt to download it to the cache. This respects repo/pkgname syntax.


  • https://github.com/Foxboron/pacreport.d - an extensive list of known ghost files on Arch Linux systems. The intention is to enable users to keep a tight check on the unowned files on their system and to which package they are tied.

AUR




Helpers


  • yaourt = doesn't handle local repos nicely
  • pacaur = good but unmaintained
  • trizen = featurful, active development
  • yay = better experience
pacaur -Syuk
  # update db, install new packages, check aur packages






  • https://github.com/Morganamilo/paru - an AUR helper written in Rust and based on the design of yay. It aims to be your standard pacman wrapping AUR helper with minimal interaction.

GUI frontends


  • tkPacman - a lightweight graphical user interface for 'pacman', the package manager of Arch Linux. It is built with Tcl/Tk. As such it is compatible with all window managers and desktop environments. It only interacts with the package database via the CLI of 'pacman'. So, installing and removing packages with tkPacman or with pacman leads to exactly the same result. tkPacman is started using your normal (unprivileged) user account. You can browse through available and installed packages as a normal user. Anytime, you perform an action that requires 'root' privileges, you are asked to authenticate. tkPacman can use 'su', 'sudo', 'gksu' or 'kdesu'.


  • PkgBrowser - A utility for browsing pacman databases and the AUR





Debian

Including Ubuntu, Linux Mint, and other Debian based distributions




dpkg

  • http://en.wikipedia.org/wiki/dpkg - 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 --get-selections > installed-software
  create list of installed software

dpkg --set-selections < installed-software
dselect
  reinstall from list
dpkg --list


Apt

apt-get install package
etc.  
apt-cache search 'web server'
etc.
apt-find show python
 show files installed by package


Aptitude

Other

  • https://github.com/ilikenwf/apt-fast - a shellscript wrapper for apt-get and aptitude that can drastically improve apt download times by downloading packages in parallel, with multiple connections per package.


  • apt-gentoo - enhances the Debian package installation experience to make it fully competitive with newly-popular source-based distributions. As packages are installed, apt-gentoo automatically downloads their build logs from the buildd network. The logs are then slowly scrolled past on the user's terminal to simulate building the software on the local machine.


  • https://github.com/icy/pacapt - an Arch's pacman-like wrapper for many package managers (system package managers, software package managers like npm, gem, conda). For example, the command pacapt -S htop works any supported Linux or BSD machines, and that will install htop package. You only need to work with the same set of command options on any OSs and/or any software package managers. Arch's pacman is chosen, because its set of operations are simple and divided into three memorable major groups: Synchronize, Query and Remove/Clean up.


Tasksel

  • https://help.ubuntu.com/community/Tasksel - a Debian/Ubuntu tool that installs multiple related packages as a co-ordinated "task" onto your system. This function is similar to that of meta-packages, and, in fact, most of the tasks available from tasksel are also available as meta-packages from the Ubuntu package managers (such as Synaptic Package Manager or KPackageKit).

GUI

Red Hat

RPM

7z also extracts rpm to cpio, and cpio to files.



Yum

  • Yum is an automatic updater and package installer/remover for rpm systems. It automatically computes dependencies and figures out what things should occur to install packages. It makes it easier to maintain groups of machines without having to manually update each one using rpm. Yum has a plugin interface for adding simple features. Yum can also be used from other python programs via its module inteface.


dnf

Void Linux

Slackware

Ports Collection (BSD)


pkgsrc

  • pkgsrc - a framework for building third-party software on NetBSD and other UNIX-like systems, currently containing over 22,500 packages. It is used to enable freely available software to be configured and built easily on our 23 supported platforms. The binary packages that are produced by pkgsrc can be used without having to compile everything from source. NetBSD already contains the necessary tools for managing binary packages; on other platforms you need to bootstrap pkgsrc to get the package management tools installed.


Oracle



Gentoo Portage

Guix

Nix

  • Nix - a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. It provides atomic upgrades and rollbacks, side-by-side installation of multiple versions of a package, multi-user package management and easy setup of build environments.

Snaps

  • https://en.wikipedia.org/wiki/Snappy_(package_manager) - a software deployment and package management system originally designed and built by Canonical for the Ubuntu phone operating system. The packages, called 'snaps' and the tool for using them 'snapd', work across a range of Linux distributions and allow therefore distro-agnostic upstream software deployment. The system is designed to work for phone, cloud, internet of things and desktop computing. The snap format is a single compressed filesystem that is mounted dynamically by the host operating system, together with declarative metadata that is interpreted by the snap system to set up an appropriately shaped secure sandbox or container for that application. File format extension is .snap




AppStream

  • AppStream - a cross-distribution effort for enhancing the way we interact with the software repositories provided by (Linux) distributions by standardizing software component metadata.It provides the foundation to build software-center applications, by providing metadata necessary for an application-centric view on package repositories. AppStream additionally provides specifications for things like an unified software metadata database, screenshot services and various other things needed to create user-friendly application-centers for (Linux) distributions.


  • https://github.com/ximion/appstream-generator - an effort to provide additional metadata and unique IDs for all software available in a Linux system. This repository contains the server-side of the AppStream infrastructure, a tool to generate metadata from distribution packages. You can find out more about AppStream collection metadata at Freedesktop.The AppStream generator is currently primarily used by Debian, but is written in a distribution agnostic way. Backends only need to implement two interfaces to to be ready.

AppImage

  • AppImage - a format for distributing portable software on Linux without needing superuser permissions to install the application.[1] It tries also to allow Linux distribution-agnostic binary software deployment for application developers,[2] also called Upstream packaging. Released first in 2004 under the name klik, it was continuously developed since then, renamed in 2011 to PortableLinuxApps and 2013 to AppImage.

PackageKit

  • PackageKit is a system designed to make installing and updating software on your computer easier. The primary design goal is to unify all the software graphical tools used in different distributions, and use some of the latest technology like PolicyKit. The actual nuts-and-bolts distro tool (dnf, apt, etc) is used by PackageKit using compiled and scripted helpers. PackageKit isn't meant to replace these tools, instead providing a common set of abstractions that can be used by standard GUI and text mode package managers. PackageKit itself is a system activated daemon called packagekitd. Being system activated means that it's only being run when the user is using a text mode or graphical tool, and quits when it's no longer being used. This means we don't delay the boot sequence or session startup and don't consume memory when not being used.

Flatpak

  • http://flatpak.org Flatpak is the next-generation technology for building and installing desktop applications. It has the power to revolutionize the Linux desktop ecosystem.



https://news.ycombinator.com/item?id=24661126

0install

  • Zero Install - 0install, is a decentralised cross-platform software installation system available under the LGPL. It allows software developers to publish programs directly from their own web-sites, while supporting features familiar from centralised distribution repositories such as shared libraries, automatic updates and digital signatures. It is intended to complement, rather than replace, the operating system's package management. 0install packages never interfere with those provided by the distribution.

Linuxbrew

  • Linuxbrew - a fork of Homebrew, the Mac OS package manager, for Linux. It can be installed in your home directory and does not require root access. The same package manager can be used on both your Linux server and your Mac laptop. Installing a modern version of glibc and gcc in your home directory on an old distribution of Linux takes five minutes.

fpm

apt-catcher-ng

Spack

  • Spack - a package manager for supercomputers, Linux, and macOS. It makes installing scientific software easy. With Spack, you can build a package with multiple versions, configurations, platforms, and compilers, and all of these builds can coexist on the same machine. Spack isn't tied to a particular language; you can build a software stack in Python or R, link to libraries written in C, C++, or Fortran, and easily swap compilers. Use Spack to install in your home directory, to manage shared installations and modules on a cluster, or to build combinatorial versions of software for testing.

Distributed

  • https://github.com/whyrusleeping/gx - a packaging tool built around the distributed, content addressed filesystem IPFS. It aims to be flexible, powerful and simple. gx is Alpha Quality. It's not perfect yet, but it's proven dependable enough for managing dependencies in go-ipfs and ready for pioneering developers early users to try out and explore. [6]

Calamares

to sort



  • https://github.com/skeeto/dotfiles/blob/master/bin/qpkg - "Quick Package", crudely manages user-built and installed software. Package files are tarballs ceated (-C) via DESTDIR installs. These package files can be installed (-I) and uninstalled (-U) at will. The build helper (-B) will run the configure script and fire off make with the appropriate number of jobs. It automatically handles the --prefix=... configure argument. [7]



  • makeself - a small shell script that generates a self-extractable compressed tar archive from a directory. The resulting file appears as a shell script (many of those have a .run suffix), and can be launched as is. The archive will then uncompress itself to a temporary directory and an optional arbitrary command will be executed (for example an installation script). This is pretty similar to archives generated with WinZip Self-Extractor in the Windows world. Makeself archives also include checksums for integrity self-validation (CRC and/or MD5/SHA256 checksums).