to clean up your installed macports and remove cruft you need to uninstall them in the correct order – according to their dependencies.
A graphical visualisation might help doing so:
Call
$ ./port-deps2dot.rb | dot -Tpdf -o port-deps.pdf ; open port-deps.pdf
with the ruby script port-deps2dot.rb (github gist) as follows:
#!/usr/bin/ruby -w # visualize macports dependencies. # pipe the result through graphviz, e.g. # $ ./port-deps2dot.rb | dot -Tpdf -o port-deps.pdf ; open port-deps.pdf def scan_deps pat = /^([^:]+):(.+)$/ name = '' deps = [] IO.popen('port info --name --pretty --depends installed') do |f| f.each_line do |l| case l when /^--$/ yield name, deps name = '' deps = [] when /^([^:]+):(.+)$/ if 'name' == "#$1" name = "#$2".strip else deps.concat("#$2".split(/\s*,\s*/)) end else raise "Fall-through for '#{l}'" end end end end all = {} scan_deps do |name,deps| d = all[name] all[name] = d = [] if d.nil? deps.collect! {|i| i.strip} d.concat deps d.sort! d.uniq! end head = < <END_OF_STRING #!/usr/bin/dot -Tpdf -o port-deps.pdf /* See http://www.graphviz.org/Documentation.php */ digraph "port deps" { rankdir=LR; label="port deps"; node [style=filled,fillcolor=lightblue,shape=ellipse]; top_level [shape=point]; END_OF_STRING puts head all.keys.sort.each do |name| deps = all[name] if deps.count > 0 deps.each {|d| puts "\t\"#{name}\" -> \"#{d}\";" } else puts "\t\"#{name}\";" end end foot = < <END_OF_STRING } END_OF_STRING puts foot

Comments 3
See also http://www.puredarwin.org/developers/macports/macports-dependencies-overview
Posted 16 Aug 2010 at 11:35 am ¶I can’t run the code, can’t code in ruby either to solve the problem:
./port-deps2dot.rb:45: syntax error, unexpected ‘{‘, expecting $end
Posted 24 Jan 2011 at 1:32 pm ¶Thx, I added a github gist because wordpress messes up angle brackets.
Posted 25 Jan 2011 at 10:40 am ¶Post a Comment