From owner-freebsd-ports@FreeBSD.ORG Fri May 18 22:04:57 2007 Return-Path: X-Original-To: ports@freebsd.org Delivered-To: freebsd-ports@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EB3C116A403 for ; Fri, 18 May 2007 22:04:57 +0000 (UTC) (envelope-from kris@obsecurity.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id D6D5413C45A for ; Fri, 18 May 2007 22:04:57 +0000 (UTC) (envelope-from kris@obsecurity.org) Received: from obsecurity.dyndns.org (elvis.mu.org [192.203.228.196]) by elvis.mu.org (Postfix) with ESMTP id 770F41A3C19; Fri, 18 May 2007 15:05:52 -0700 (PDT) Received: by obsecurity.dyndns.org (Postfix, from userid 1000) id 1491A51453; Fri, 18 May 2007 18:04:57 -0400 (EDT) Date: Fri, 18 May 2007 18:04:56 -0400 From: Kris Kennaway To: Peter Jeremy Message-ID: <20070518220456.GA52494@xor.obsecurity.org> References: <20070507201448.GA52651@xor.obsecurity.org> <20070507204414.GA53358@xor.obsecurity.org> <20070507205850.GA34916@lor.one-eyed-alien.net> <20070507220659.GC78665@graf.pompo.net> <20070507222146.GA57768@xor.obsecurity.org> <464CB5AA.7040304@FreeBSD.org> <1179437517.8912.5.camel@ikaros.oook.cz> <20070518075058.GB1164@turion.vk2pj.dyndns.org> <20070518214729.GA29623@turion.vk2pj.dyndns.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070518214729.GA29623@turion.vk2pj.dyndns.org> User-Agent: Mutt/1.4.2.2i Cc: ports@freebsd.org Subject: Re: Specs for saving old shared libs X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 May 2007 22:04:58 -0000 On Sat, May 19, 2007 at 07:47:30AM +1000, Peter Jeremy wrote: > On 2007-May-18 17:50:58 +1000, Peter Jeremy wrote: > >Ideally, you also need some way to identify (and remove) old .so files > >that are no longer referenced by anything. This is not as easy > >because there's no record of what ports use what .so's (and no way to > >track apps outside the ports system). > > OK, my offering to assist with this scans a specified set of file > trees and reports any executables that reference shared libraries in > compat or that can't be found: > > #!/bin/sh > # > # Find executables using compat libraries > > find -x "$@" -type f -perm +0100 -print0 |\ > ( xargs -0 ldd 2>&1 >&3 | \ > egrep -v "not a dynamic executable|can't read program header|Exec format error" >&2 ) 3>&1 |\ > awk '/^[^ ]/ { exe = $0; next } > NF != 4 || $3 ~ /\/compat\// || $4 !~ /^\(0x[0-9a-f]*[1-9a-f]/ { print exe, $0}' For portupgrade users there is the libchk port which also looks for references to libraries that are not installed. Unfortunately thesedays there are a lot of false positives on typical installations because lots of ports set a non-default library search path at runtime. Kris