HOWTO: cre­at­ing your own up­dated linux RPM for the FreeBSD linuxu­lat­or

Back­ground info

The FreeBSD linux com­pat­ib­il­ity en­vir­on­ment cur­rently uses RPMs from Fe­dora 10. Un­for­tu­nately Fe­dora 10 is end of life since a while. For one of the RPMs (the pango one) we where aware of a se­cur­ity vul­ner­ab­il­ity. As we do not know if it is feas­ible to up­date the linuxu­lat­or ports to some­thing more re­cent, I de­cided to setup a VM with Fe­dora 10 and gen­er­ate a new RPM for the linux-​f10-​pango port. Thanks to Luchesar V. ILIEV for ex­plain­ing me how to do this.

Setup of the VM

I used Vir­tu­al­Box 4.0.4 on a Sol­ar­is 10 x86 ma­chine. I con­figured a fixed size disk of 16 GB and kept the de­fault net­work setup (after in­stalling the guest tools /​ ker­nel mod­ules I switched to vir­tio, as I was not able to do any­thing use­ful be­sides a ping) and RAM size. The CD/​DVD drive was con­figured to use the im­age of the full Fe­dora 10 DVD for i386 sys­tems.

Setup of Fe­dora 10

Boot­ing the VM from the DVD leads to the graph­ic­al Fe­dora 10 in­stall soft­ware (after chos­ing to in­stall a new sys­tem on the con­sole). There I ac­cep­ted all the de­faults, ex­cept for the soft­ware to in­stall. I deselec­ted the Of­fice and Pro­ductiv­ity group and se­lec­ted the Soft­ware De­vel­op­ment group. When I was asked if I want to in­stall some ad­di­tion­al RPMs I had a look at the com­plete list and in­stalled some I thought are ne­ces­sary. I do not re­mem­ber any­more which ones I chose, but everything which looks re­lated to RPM build­ing is a good can­did­ate.

After a while the in­stall will be fin­ished and you can boot in­to the new sys­tem (eject the DVD from the drive be­fore re­boot). After re­boot chose to in­stall the Guest Ad­di­tions in the menu of the VM. This should mount the ISO im­age in the VM. As root ex­ecute the file for Linux. This will build some ker­nel mod­ules for bet­ter in­teg­ra­tion (e.g. seam­less in­teg­ra­tion of the mouse between your desktop and the VM). At this point I re­booted and con­figured vir­tio as the NIC. I also had to con­fig­ure the net­work set­tings by hand, as the GUI tool did not safe all the set­tings cor­rectly.

Up­date and in­stall of re­quired RPMs

After the VM was up and the net­work con­figured, I up­dated the en­tire sys­tem (chose Sys­tem Up­date in the menu). To up­date the pango port, I had to in­stall the libthai-​devel RPM. I had the RPM for it (and all the files I need to build a new pango RPM) already down­loaded, so I did a “yum in­stall /​path/​to/​rpm”. At this point I was ready to cre­ate the RPM build en­vir­on­ment.

The RPM build en­vir­on­ment

As a nor­mal user I ex­ecuted the com­mand rpmdev-​setuptree which cre­ates the dir­ect­ory rpm­build and pop­u­lates it with some dir­ect­or­ies. Now you just need to find a suit­able .spec file and put it in­to rpmbuild/​SPECS, put the sources (and maybe patches ref­er­enced in the .spec file) in­to rpmbuild/​SOURCES, and you are ready to go (I patched pango.spec for a more re­cent pango ver­sion, ba­sic­ally just chan­ging the ver­sion num­bers). If you want to have a cus­tom pack­ager and vendor at­trib­ute in the RPM, you can add a line for each to ~/.rpmmacros, e.g. %pack­ager your­name­here and %vendor whatever­is­ap­pro­pri­ate. I used my EMail ad­dress as the pack­ager, and FreeBSD as the vendor.

Build­ing a RPM

I used rpm­build -ba –tar­get i386-​redhat-​linux-​gnu –clean rpmbuild/SPECS/pango.spec to build the new pango RPM. If everything is OK, the res­ult­ing RPMs (a source RPM, a de­vel RPM, a de­bu­ginfo RPM and the RPM for the bin­ar­ies) are in rpmbuild/​RPMS and rpmbuild/​SRPMS. For a FreeBSD port we just need the source RPM (to com­ply to the (L)GPL) and the RPM for the bin­ar­ies.

Ad­di­tion­al info

The i386-​redhat-​linux-​gnu string which is used for the –tar­get op­tion of the rpm­build com­mand is what seems to be used to build the Fe­dora 10 RPMs. After build­ing pango, the RPM has i686-​pc-​linux-​gnu in some fi­le­names in­stead (the de­fault value for this setup). The bin­ar­ies seem to be com­piled for i386, so there should be no prob­lem even for old sys­tems.

A new linux-​f10-​pango port is ready

In the last days I took (and even had) the time to in­stall a VM with Fe­dora 10, up­dated all the pack­ages after in­stall­a­tion, and cre­ated a new linux-f10-​pango port (v 1.28.3). I did this be­cause the port has a se­cur­ity vul­ner­ab­il­ity ac­cord­ing to our VuXML DB and there where more and more re­ports in the last months from users which had a prob­lem with this.

Dur­ing the up­date of the port I no­ticed that the port does not con­tain a FORBIDDEN entry, just portaudit com­plains about it be­cause there is an entry in the VuXML. That is not nice. I was told that the ports slush will be lif­ted soon (I need to bump some PORT­RE­VI­SIONs), this means that I can com­mit the up­date prob­ably to­mor­row, just in time when the new RPM should hit the FreeBSD dis­tri­bu­tion in­fra­struc­ture (MASTER_​SITE_​LOCAL is up­dated once a day from a spe­cif­ic folder in our home dir­ect­or­ies).

Thanks to Luchesar V. ILIEV for the nice writeup of what to in­stall in Fe­dora 10 to be able to build RPMs, and the de­scrip­tion of how to build your own RPM.

Ad­di­tion­al FEATURE mac­ros on the way

It seems I have a bit of free time now to take care about some FreeBSD re­lated things.

As part of this I already com­mit­ted the UFS/​FFS re­lated FEATURE mac­ros which where de­veloped by kibab@ dur­ing the Google Sum­mer of Code 2010. The net­work/​ALTQ re­lated FEATURE mac­ros are in the hands of bz@, he already re­viewed them and wants to com­mit them (with some changes) as part of his im­prove­ments of parts of the net­work re­lated code.

The GEOM re­lated FEATURE mac­ros I just send some minutes ago to geom@ for re­view. All the rest went out to hackers@ for re­view. The rest in this case is re­lated to AUDIT, CAM, IPC, KTR, MAC, NFS, NTP, PMC, SYSV and a few oth­er things.

If everything is com­mit­ted, it should look a bit like this if quer­ied from user­land (not all fea­tures are shown, those are just the ones which are en­abled in the ker­nel in one of my ma­chines):

kern.features.scbus: 1
kern.features.geom_vol: 1
kern.features.geom_part_bsd: 1
kern.features.geom_part_ebr_compat: 1
kern.features.geom_part_ebr: 1
kern.features.geom_part_mbr: 1
kern.features.kposix_priority_scheduling: 1
kern.features.kdtrace_hooks: 1
kern.features.ktrace: 1
kern.features.invariant_support: 1
kern.features.compat_freebsd7: 1
kern.features.compat_freebsd6: 1
kern.features.pps_sync: 1
kern.features.stack: 1
kern.features.sysv_msg: 1
kern.features.sysv_sem: 1
kern.features.sysv_shm: 1
kern.features.posix_shm: 1
kern.features.ffs_snapshot: 1
kern.features.softupdates: 1
kern.features.ufs_acl: 1

OCP: Or­acle Sol­ar­is 10 Sys­tem Ad­min­is­trat­or

After work­ing a long time with Sol­ar­is (I star­ted with 2.5.1 at about the time when Sol­ar­is 7 was re­leased in 1998), my cur­rent boss de­cided that it is time that I do a cer­ti­fic­a­tion for it (cli­ents like it). Two ex­ams later I have it now:

Oracle Certified Professional, Oracle Solaris 10 System Administrator

Since yes­ter­day I am of­fi­cially an Or­acle Cer­ti­fied Pro­fes­sion­al, Or­acle Sol­ar­is 10 Sys­tem Ad­min­is­trat­or.

The ex­am ques­tions where a bit strange. I asked my­self if a real ad­min was proof read­ing them or not, but most prob­ably someone without much know­ledge about Sol­ar­is ad­min­is­tra­tion just took the study guides and tried to make some ques­tions out of it.

Any­way, my boss should be happy now, and I have some­thing to add to my CV.

My cur­rent list of ac­tiv­ated WP-​plugins

Here is the list of the Word­Press plu­gins I have ac­tiv­ated since a long time. Some of them I could maybe de­ac­tiv­ate (maybe 4 – 5) but some­how I was too lazy so far to make some time to have a look at this. All in all I re­gard most of them as es­sen­tial in some way for my blog.

  • Ad­dToAny: Share/​Bookmark/​Email But­ton
    Help people share, book­mark, and email your posts & pages us­ing any ser­vice, such as Face­book, Twit­ter, Google Buzz, Digg and many more.
  • Ad­dToAny: Sub­scribe But­ton
    Help read­ers sub­scribe to your blog us­ing any feed read­er or feed ser­vice.
  • After The Dead­line
    Adds a con­tex­tu­al spell, style, and gram­mar check­er to Word­Press. Write bet­ter and spend less time edit­ing. Vis­it your pro­file to con­fig­ure. See the Proofread­ing Sup­port page for help.
  • Akismet
    Akismet checks your com­ments against the Akismet web ser­vice to see if they look like spam or not. You need an API key to use it. You can re­view the spam it catches un­der “Com­ments.” To show off your Akismet stats just put <?php akismet_​counter(); ?> in your tem­plate. See also: WP Stats plu­gin.
  • aLinks
    A Word­Press plu­gin that auto­mat­ic­ally links keywords in your blog post.
  • All in One SEO Pack
    Out-​of-​the-​box SEO for your Word­Press blog.
  • AskA­pache Re­writeR­ules View­er
    Dis­plays the In­tern­al Word­Press Re­write Rules in De­tailed Glory.
  • Bet­ter Plu­gin Com­pat­ib­il­ity Con­trol
    Adds ver­sion com­pat­ib­il­ity info to the plu­gins page to in­form the ad­min at a glance if a plu­gin is com­pat­ible with the cur­rent WP ver­sion.
  • Bet­ter Search
    Re­place the de­fault Word­Press search with a con­tex­tu­al search. Search res­ults are sor­ted by rel­ev­ancy en­sur­ing a bet­ter vis­it­or search ex­per­i­ence.
  • Broken Link Check­er
    Checks your blog for broken links and miss­ing im­ages and no­ti­fies you on the dash­board if any are found.
  • Change Ad­min User­name
    Lets you change your user­name to some­thing oth­er than “ad­min”.
  • Con­tex­tu­al Re­lated Posts
    Show user defined num­ber of con­tex­tu­ally re­lated posts.
  • Cute Pro­files
    Cute Pro­files adds all your So­cial Pro­file icons ver­tic­ally on left or right side of your pages, which will re­main vis­ible all the time though the page is scrolled and without con­sum­ing the side­bar space.
  • Dash­board: Latest Spam
    Dis­plays the latest spam on your Word­Press 2.5+ dash­board so you can make sure there were no false pos­it­ives. Uses De­fensio to hide ob­vi­ous spam if you have it in­stalled.
  • Easy Chart Build­er
    Cre­ates a chart dir­ectly in your post or page via short­cut. Man­ages siz­ing of chart to sup­port wptouch and oth­er mo­bile themes.
  • Ex­ploit Scan­ner
    Scans your Word­Press site for pos­sible ex­ploits.
  • FD Word Stat­ist­ics
    Com­putes Gunning-​Fog, Flesch, and Flesch-​Kincaid read­ab­il­ity in­dexes about posts as they are ed­ited for the pur­pose of im­prov­ing their read­ab­il­ity.
  • GD Press Tools
    GD Press Tools is a col­lec­tion of vari­ous ad­min­is­tra­tion, seo, main­ten­ance and se­cur­ity re­lated tools that can help with every­day blog tasks and blog op­tim­iz­a­tions.
  • GD Simple Wid­gets
    Col­lec­tion of power­ful, easy to use wid­gets that ex­pand de­fault wid­gets. Plu­gin also adds few more must-​have wid­gets for posts, au­thors and com­ments.
  • GD Star Rat­ing
    GD Star Rat­ing plu­gin al­lows you to set up ad­vanced rat­ing and re­view sys­tem for posts, pages and com­ments in your blog us­ing single, multi and thumbs rat­ings.
  • GeoSmart
    GeoSmart auto­mat­ic­ally adds city-​precise loc­a­tion in­form­a­tion for com­ment au­thors to com­ment metadata. GeoSmart can also dis­play a Google map show­ing com­ment au­thor dis­tri­bu­tion across the globe. In ad­di­tion, GeoSmart ships with a mul­tiple in­stance cap­able side­bar wid­get that dis­plays a map show­ing the loc­a­tions of the most re­cent vis­it­ors to your blog. Re­quires PHP 5 and Word­Press 2.8+. Map dis­play re­quires a Google Maps API Key.
  • Glob­al Trans­lat­or
    Auto­mat­ic­ally trans­lates a blog in 48 dif­fer­ent lan­guages by wrap­ping four dif­fer­ent on­line trans­la­tion en­gines (Google Trans­la­tion En­gine, Ba­belfish Trans­la­tion En­gine, FreeTrans​la​tions​.com, Promt). After up­load­ing this plu­gin click „Ac­tiv­ate“ and then af­ter­wards you must vis­it the op­tions page and enter your blog lan­guage to en­able the trans­lat­or.
  • Google XML Sitemaps
    This plu­gin will gen­er­ate a spe­cial XML sitemap which will help search en­gines like Google, Ya­hoo, Bing and Ask​.com to bet­ter in­dex your blog.
  • Gravatar Signup En­cour­age­ment
    Dis­plays mes­sage to users without gravatar that they don’t have one with link to Gravatar’s sign-​up page (e-​mail in­cluded).
  • Health Check
    Checks the health of your Word­Press in­stall
  • http:BL Word­Press Plu­gin
    http:BL Word­Press Plu­gin al­lows you to veri­fy IP ad­dresses of cli­ents con­nect­ing to your blog against the Pro­ject Honey Pot data­base.
  • Im­port HTML Pages
    Im­ports well-​formed stat­ic HTML pages in­to Word­Press posts or pages. Re­quires PHP5. Now with Dream­weaver tem­plate sup­port and Word HTML cleanup.
  • In­foLink
    Adds a but­ton to the Ed­it­or, easy link­ing to Wiki­pe­dia, IMDB or add a link with google search.
  • Lim­it Lo­gin At­tempts
    Lim­it rate of lo­gin at­tempts, in­clud­ing by way of cook­ies, for each IP.
  • One-​Time Pass­word
    One-​Time Pass­word Sys­tem con­form­ing to RFC 2289 to pro­tect your web­log in less trust­worthy en­vir­on­ments, like in­ter­net cafés.
  • Plu­gin Man­ager
    Plu­gin Man­ager lets you to view, down­load and in­stall plu­gins from word​press​.org from an AJAX’ed in­ter­face, in­stead of manu­ally down­load­ing, ex­tract­ing and up­load­ing each plu­gin.
  • Plu­gins Garbage Col­lect­or
    It scans your Word­Press data­base and shows what vari­ous things old plu­gins which were de­ac­tiv­ated, un­in­stalled) left in it. The list of ad­di­tion­al data­base tables used by plu­gins with quant of re­cords, size, and plu­gin name is shown.
  • Quick Stats
    Logs hits with re­fer­rer, ip, host, cli­ent and url in­form­a­tion. RSS track­er fea­ture lets you track­er your vis­it­ors in near re­al­time us­ing an RSS read­er soft­ware.
  • Search Meter
    Keeps track of what your vis­it­ors are search­ing for. After you have ac­tiv­ated this plu­gin, you can check the Search Meter sec­tion in the Dash­board to see what your vis­it­ors are search­ing for on your blog.
  • SEO Smart Links
    SEO Smart Links provides auto­mat­ic SEO be­ne­fits for your site in ad­di­tion to cus­tom keyword lists, no­fol­low and much more.
  • Simple Track­back Val­id­a­tion
    Elim­in­ates spam track­backs by (1) check­ing if the IP ad­dress of the track­back sender is equal to the IP ad­dress of the web­serv­er the track­back URL is re­fer­ring to and (2) by re­triev­ing the web page loc­ated at the URL used in the track­back and check­ing if the page con­tains a link to your blog.
  • Smart­linker
    Smart­linker is a tool­bar on the Word­Press TinyMCE ed­it­or that en­ables you to hy­per­link words and phrases in your blog. A word/​phrase can be the name of a per­son, place or thing.
  • Table of Con­tents Cre­at­or
    Table of Con­tents Cre­at­or (TOCC) auto­mat­ic­ally gen­er­ates a dy­nam­ic site wide table of con­tents that is al­ways up-​to-​date. All entries are nav­ig­able mak­ing your site very SEO friendly. TOCC can be con­figured to dis­play stat­ic pages, blog entries and for­um com­ments. An­oth­er great fea­ture of TOCC is the abil­ity to in­clude an­chor tags on any page marked with a spe­cial class. This fea­ture al­lows links to art­icles, down­loads or even oth­er sites to ap­pear with­in the table of con­tents as if they are part of your site’s nav­ig­a­tion. To gen­er­ate a table of con­tents, simply in­clude the <!– toc-​creator –> tag on any page, or use the handy page cre­ation fea­ture loc­ated on the plu­gin ad­min page.
  • TinyMCE Ad­vanced
    En­ables ad­vanced fea­tures and plu­gins in TinyMCE, the visu­al ed­it­or in Word­Press.
  • Up­date No­ti­fi­er
    Sends email no­ti­fic­a­tions to the ad­min if a new ver­sion of Word­Press avail­able. No­ti­fic­a­tions about up­dates for plu­gins and themes can also be sent.
  • Weasel’s No HTTP Au­thor
    Checks to see if the au­thor name in your com­ments con­tains “HTTP:” to help fil­ter out spam. This only sets the “spam” flag on the com­ment; Akismet does the dirty work and ac­tu­ally re­moves and re­ports the com­ment.
  • Where did they go from here
    Show “Read­ers who viewed this page, also viewed” links on your page. Much like’s product pages. Based on the plu­gin by Mark Ghosh.
  • Who is On­line
    Dis­plays who is cur­rently on your blog and for how long.
  • Word​Press​.com Stats
    Tracks views, post/​page views, re­fer­rers, and clicks. Re­quires a Word​Press​.com API key.
  • WP-​Polls
    Adds an AJAX poll sys­tem to your Word­Press blog. You can eas­ily in­clude a poll in­to your WordPress’s blog post/​page. WP-​Polls is ex­tremely cus­tom­iz­able via tem­plates and css styles and there are tons of op­tions for you to choose to en­sure that WP-​Polls runs the way you wanted. It now sup­ports mul­tiple se­lec­tion of an­swers.
  • WP-​Print
    Dis­plays a print­able ver­sion of your Word­Press blog’s post/​page.
  • WP-​Stats-​Dashboard
    Dis­plays the Word​Press​.com stats graph, your traffic and so­cial met­rics mon­it­or­ing on your dash­board.
  • wp-​Typography
    Im­prove your web ty­po­graphy with: (1) hy­phen­a­tion — over 40 lan­guages sup­por­ted, (2) Space con­trol, in­cludes: wid­ow pro­tec­tion, glu­ing val­ues to units, and forced in­tern­al wrap­ping of long URLs & email ad­dresses, (3) In­tel­li­gent char­ac­ter re­place­ment, in­clud­ing smart hand­ling of: quote marks, dashes, el­lipses, trade­marks, math sym­bols, frac­tions, and or­din­al suf­fixes, and (4) CSS hooks for styl­ing: am­persands, up­per­case words, num­bers, ini­tial quotes & guille­mets.
  • WP Ajax Edit Com­ments
    The most power­ful comment-​editing solu­tion for Word­Press. Users can edit their own com­ments for a lim­ited time, while ad­mins can edit all com­ments.
  • WP Math Pub­lish­er
    Dis­play math­em­at­ic­al equa­tions with­in your posts and com­ments. Put your plain text math­mat­ic­al ex­pres­sions between [pmath size=xx]…[/pmath] tags. The op­tion­al size at­trib­ute con­trols how large the im­ages will be dis­played. Use­ful xx in­teger val­ues range from 8 to 24. Size de­faults to 12 when at­trib­ute omit­ted. Pas­cal Brachet’s PHP Math Pub­lish­er lib­rary is in­cluded.
  • WP Mini­fy
    This plu­gin uses the Mini­fy en­gine to com­bine and com­press JS and CSS files to im­prove page load time.
  • WP Se­cur­ity Scan
    Per­form se­cur­ity scan of Word­Press in­stall­a­tion.
  • WP Su­per Cache
    Very fast cach­ing plu­gin for Word­Press.
  • WP Up­date Mes­sage
    Add an up­date mes­sage to your pages or posts to let your read­ers know what has been up­dated.

I do not need some con­tact man­age­ment plu­gin, if someone wants to con­tact me he can use my EMail ad­dress. I do not have a prob­lem hav­ing my EMail ad­dress in a robot-​readable format, my anti-​SPAM soft­ware is well tuned for my mail­box.

rsync and CVS ex­clude

The CVS ex­clude op­tion of rsync can be harm­ful in some cases.

For ex­ample I use rsync to keep my/​this web­site up­dated. At some point I no­ticed some strange be­ha­vi­or after the up­date of sev­er­al of the Word­Press plu­gins I use. After a bit of in­vest­ig­a­tion I no­ticed that one plu­gin (Broken Link Check­er) has a dir­ect­ory which is named “core”. This is one of the fi­le­names which are in the ex­clude list of the CVS ex­clude fea­ture of rsync. Nor­mally it should only pre­vent the trans­fer of core-​files, but as rsync does not have a look if this is a file or a dir­ect­ory (it is not sup­posed to do this), it also pre­vents the trans­mis­sion of the dir­ect­ory.

After modi­fy­ing the rsync op­tions to manu­ally ex­clude the CVS pat­terns ex­cept for “core”, the site worked cor­rectly again.

It seems this is one of those cases where dif­fer­ent development/​management cul­tures show some little in­com­pat­ib­il­it­ies.