|
NAMEportscout - A tool to scan for new versions of FreeBSD ports.SYNOPSISportscout build while (lazy) { portscout rebuild portscout check portscout showupdates } DESCRIPTIONPortscout is an automated system designed to search for new versions of software available in the FreeBSD ports tree. It is primarily designed for use by FreeBSD port maintainers, who can avoid trailing around dozens of websites looking for updates. However, I hope that others might find it useful too.The current version of Portscout is also capable of checking OpenBSD's ports, NetBSD's pkgsrc, and also a generic list of software from an XML file. SYSTEM REQUIREMENTSThe following software is required to run Portscout:- PostgreSQL or SQLite - POSIX-compatible system - The FreeBSD ports tree - Berkeley make - Perl 5.6+ Plus we need a few Perl modules: - URI - DBD::Pg or DBD::SQLite - Net::FTP - Proc::Queue - LWP::UserAgent - MIME::Lite - XML::XPath - XML::XPath::XMLParser - JSON SQLite support is currently limited to non-forking mode only. That is, if you decide to use SQLite, Portscout will only check one port at a time; this will severely limit Portscout's speed/efficiency. It is therefore suggested that SQLite only be used for relatively light workloads. INITIAL SET-UPInitialise DatabaseThe recommended database backend is PostgreSQL.Option One: PostgreSQL Create database: # createuser -U pgsql -P portscout # createdb -U pgsql portscout Execute the included pgsql_init.sql script via "psql": # psql portscout portscout < sql/pgsql_init.sql This will create the database tables for you. Option Two: SQLite Create a database file with the included script: # sqlite3 /var/db/portscout.db < sql/sqlite_init.sql Configure PortscoutReview portscout.conf, and check it suits your needs. The defaults should be reasonable for most people. You can reduce "num_children" and "workqueue_size" if you don't want Portscout sucking up all your resources.Please note that Portscout's internal defaults differ from the defaults in portscout.conf - this is because without a config file, Portscout tries to be "portable" and use its own directory for storing things under, whereas if a config file is found, it assumes it is installed and being used "system-wide". Any of the options in portscout.conf can also be set on the fly on the command line. For example: $ portscout --precious_data --num_children=8 Update Ports Tree (FreeBSD Only)Ensure your ports tree is up to date.Populate DatabaseWe need now to populate the database with the software we want to check.Option One: FreeBSD If you're using Portscout to check FreeBSD ports, run: $ portscout build This takes around 70 minutes for me. Basically, Portscout is extracting all the information it needs from the ports tree. Ports (by virtue of make) is slow; the database we're building is much faster. After this initial build, we will do incremental 'builds', only updating what has changed. Option Two: Other Software Repositories If you would like to check another software repository/source, Portscout has several options. Firstly, NetBSD and OpenBSD's ports trees are supported by the standard "Ports" backend. See portscout.conf for details on how to configure this. Make sure you've got the correct "make" at hand for Portscout if you're checking either of these from another operating system (e.g. FreeBSD). Caveat: neither of the above have been well-tested, and support should probably be considered experimental. Secondly, you can use the "XML" backend for a finite list of software that you want to manage by hand. See Portscout::DataSrc::XML for more information. REGULAR OPERATIONUpdate Ports Tree (FreeBSD Only)Ensure your ports tree is up to date.Incremental Database UpdateIf your ports tree / data source was updated since your last build/rebuild, ensure Portscout knows about the changes:$ portscout rebuild Run Version Checks$ portscout check This will instruct Portscout to search for new distfiles for each port in the database. It will take several hours for a complete ports tree scan. View ResultsNow you've got some results, you can view them.Option One: HTML Reports $ portscout generate This will put HTML pages inside "html_data_dir" - existing pages will be deleted. Option Two: E-Mail Reports $ portscout mail This will send out an e-mail message to the maintainers of ports with updates. The e-mail messages are opt-in; you will need to add addresses to the database before any e-mails are sent out. Option Three: Console Summary $ portscout showupdates This will output a summary of software with outstanding updates. It is recommended if you're checking a limited set of software/ports. ADDING E-MAIL ADDRESSESIf you want to send e-mail reports to maintainers of updated of software, the e-mail addresses need to be registered with Portscout. This is a safeguard to ensure no one gets e-mails they don't want.Use the following to manage these e-mail "subscriptions": $ portscout add-mail dave@example.net $ portscout remove-mail john@localhost $ portscout show-mail UPGRADINGWhen upgrading, check the sql directory for any relevant database schema upgrade scripts. If there were multiple schema updates between the previous version of Portscout and the version to which you have upgraded, be sure to run each script in sequence to arrive at the latest database version.CHECKING ALGORITHMFor anyone interested in how Portscout operates, here is a high-level summary of the checking algorithm in use:Test 1: 1) Order master sites using previous reliability data. 2) Attempt to get an FTP listing or web server index from each site. 3) Extract version from files found; compare to current version. 4) Skip other tests if new or current version is found. Test 2: 1) Increment each part of the port's version string and attempt to download file, e.g. for 1.4.2, try 2.0.0, 1.5.0 and 1.4.3 The last test is not yet included in Portscout, but I may add it at some point, depending on the results of testing: Test 3: 1) Locate port's WWW page and spider site in an attempt to find a page that looks like a "download area". Scan page for possible links to new files. BUGS AND LIMITATIONS
COPYRIGHTCopyright (C) 2005-2011, Shaun Amott <shaun@inerd.com>. All rights reserved.
Visit the GSP FreeBSD Man Page Interface. |