Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Mar 2000 21:32:24 -0600
From:      David Kelly <dkelly@hiwaay.net>
To:        "John Daniels" <jmd526@hotmail.com>
Cc:        bduk@earthlink.net, freebsd-questions@FreeBSD.ORG, freebsd-ports@FreeBSD.ORG
Subject:   Re: Ports questions 
Message-ID:  <200003240332.VAA19729@nospam.hiwaay.net>
In-Reply-To: Message from "John Daniels" <jmd526@hotmail.com>  of "Thu, 23 Mar 2000 11:49:58 EST." <20000323164958.68173.qmail@hotmail.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
"John Daniels" writes:
> Hi:
> Thanks for the reply.
> 
> I am trying to get a better handle on how ports functions.  I still don't 
> quite 'get it.'  If I use pkg_delete, then only that specific package is 
> deleted?

Correct.

> None of the additional packages that were added as dependencies 
> will be deleted?  So I have to delete each of these dependent applications 
> individually?  Does ports keep a list of the dependent applications 
> somewhere so I know what was installed (and thus, what I would need to 
> delete)?

Yes, but the ports system stores this information outside of the port. 
Just for kicks try, "more /var/db/pkg/XFree86-3.3.6/+REQUIRED_BY" 
(assuming you have installed X, and that particular version) and you'll 
see a listing of all the ports who have declared that they depend on 
XFree86 to function. Pkg_delete won't delete until this list is empty 
unless you force it with -f.

So, if you are determined to completely clean up after a pkg_delete, 
then, "cd /var/db/pkg; ls -lt | more" look for the ports who recently 
changed their directory's "modified" date. Those ports are candidates 
for removal because their "+REQUIRED_BY" file was removed by your 
removal of a port.

Lets say on a new FreeBSD system w/o XFree86 you decide to install
Netscape which depends on XFree86. The install of Netscape casues
XFRee86 to be installed too. Later you decide exmh2 is a better email
client so it installs tcl and tk (and lots of other things), and tk
indicates it depends on XFree86. Then if you decide to pkg_delete
Netscape you wouldn't want to pkg_delete XFree86 too because other
packages have come to depend on it. Not to mention *you* might happen 
to be using XFree86 directly.

When the last package to depend on another package is deleted, the 
+REQUIRED_BY file is deleted from that other package. This alters the 
directory modify time in /var/db/pkg/<whatever_package_it_was>

> If I wanted to delete an application which another application 
> depends on, would I get a warning/option to discontinue?, or would ports 
> just rebuild the app the next time I started the xyz port which depends on 
> the deleted app?

Yes, you are warned, no, missing ports are not automatically 
re-installed.

# pkg_delete XFree86-3.3.6
pkg_delete: package `XFree86-3.3.6' is required by these other packages
and may not be deinstalled:
xpm-3.4k
fvwm-2.2.2
netscape-communicator-4.7.us
tk-8.2.3
xloadimage-4.1
metamail-2.7
[...its a big list]

> Wouldn't it seem that if ports were really 'smart' that it would have an 
> associated database that kept track of dependencies so that when a 
> port/package is deleted it would prompt the user for permission to delete 
> each of the dependent apps that are not needed by other apps on the system?  
> This might be only a minor issue for experienced users but it would give 
> newbies more confidence in using ports.

Just how is it supposed to know you only use XFree86 with Netscape? If 
you are determined to delete "unneeded" ports simply visit /var/db/pkg 
and pkg_delete everything you don't know what it does. If somebody 
needs it then it will tell you exactly who (see above) and you can 
decide to pkg_delete them too or not.

Speaking of smart, I want a button on my keyboard labeled, DWIM NWIT, 
Do What I Meant Not What I Typed.

> Where can I find good/comprehensive documentation on ports?

man ports

Also Greg Lehey's FreeBSD book.

FreeBSD Handbook, file:///usr/share/doc/handbook/handbook.html

Also might install /usr/ports/sysutils/pib (Port Index Browser) which is
a GUI to the ports system. Pib is the best way I know of to play 
/usr/ports/* against /usr/ports/distfiles/* to find out what ports have
been updated since I last downloaded (and presumably installed) them.


--
David Kelly N4HHE, dkelly@hiwaay.net
=====================================================================
The human mind ordinarily operates at only ten percent of its
capacity -- the rest is overhead for the operating system.




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003240332.VAA19729>