I am an old System V guy, and I finally got around to setting up a Linux box, using Ubuntu, of course. One of the first things I noticed was missing is the "pg" command. The web tells me that it is available as part of the "util-linux" package. Ubuntu, which I loaded having checked the the boxes to "install everything," tells me that util-linux is installed, but "pg" and other scripting cammands simply aren't there. Can this be fixed?


Solution 1:

Looking at the package changelog (apt-get changelog util-linux) you will see that pg has been deprecated and removed:

util-linux (2.29.2-2) unstable; urgency=medium

  "The big post-release cleanup."

  [ Andreas Henriksson ]
  * Add DEP12 upstream metadata (Closes: #852731)
  * Revert "Add configure flag to make libmount skip /etc/mtab"
  * Drop explicit --disable-silent-rules configure flag
  * Stop shipping the deprecated 'pg' utility
  * Revert "Explicitly (re)enable deprecated pg utility"
  * Stop shipping deprecated 'tunelp' utility
  * Stop shipping the deprecated 'line' utility
  * Drop explicitly passing CC for cross-building
  * Use configure flags to disable utils shipped by bsdmainutils
  * Revert "Attempt to work around debootstrap problems for hwclock.sh"
  * Drop no longer needed lintian overrides for dropped workaround
  * Drop obsolete fdisk reclaim on PPC
  * Revert "Rename libuuid user to uuidd in libuuidd1 postinst as well"
  * Revert "libuuid1: add passwd dependency for user migration"
  * Drop obsolete uuid-runtime user/group migration code
  * Remove 'pg' from being a pager alternative
  * Stop shipping deprecated tailf utility
  * Mention tailf removal in util-linux.NEWS</code></pre>

However the source code for pg is still present in the source package, so you can build and install it manually if you wish. You will need a suitable build environment such as provided by installing the build-essential package, plus relevant dependencies as provided by

sudo apt-get build-dep util-linux

First, make sure you have the deb-src type enabled for your main repository. Then you can download and patch the source in a directory of your choosing (unlike most apt operations, this doesn't need elevated privileges):

apt-get source util-linux

Change to the downloaded directory, and then configure the build to enable pg:

./configure --enable-pg

If it completes successfully,

make pg

Test it from the current directory using ./pg README or the like.

Now instead of the usual "sudo make install" (which will attempt to build all the utilities), just copy the pg binary somewhere appropriate such as ~/bin or /usr/local/bin

mkdir -p ~/bin && cp pg ~/bin/

If you choose ~/bin and didn't previously have a ~/bin directory, then it won't be added to your PATH until you start a new login shell or source the ~/.profile:

. ~/.profile

so that you can execute pg from anywhere.

Alternatively, you could build ALL of the package with --enable-pg, then use checkinstall to install it in place of the Ubuntu provided package - however you will then be responsible for keeping it updated.