Can RPM and INSTALLP work side-by-side? PDF Print E-mail
User Rating: / 1
PoorBest 
Written by Michael Felt   

INSTALLP and RPM - can they co-exist?

Historically - common practice would seem indicate the answer is yes. However, I would say history has proven they cannot for short or long term.

Found my examples!

Visiting a customer this week - I rediscovered examples of why I starting "rolling my own", i.e., downloading, configuring and installing OSS independently.

At this customer the command rpm -qa returns a list of about 20 rpm packages installed. Most of these have never been updated since being installed between 2010 and 2012.

Note: RPM packages are not part of the standard TL-SP updates - the exception being the occaisional update to the fileset rpm.rte

OpenSSL

rpm -qa shows openssl-0.9.7-something installed. Fortunately this is not the true situation because openssl.base.1.0.1.517 is also installed (which has overwritten the files installed years ago by the rpm packaging).

This is an easy example of why I abhor mixing rpm and installp - installp does not know about rpm files - and vice versa. Obviously, the rpm openssl packaging should be "erased" - but when that happens (if it can happen! rpm -e openssl might just say "cannot be done!") it will remove files it no longer actually controls - as many of the files are now part of the installp package openssl.base.

bzip2

Another example - smaller impact perhaps - is bzip2. This program is installed by default on AIX (as part of rpm.rte). There is also an rpm for bzip2. Why install the rpm version? Maybe because the IBM provided version is ancient - e.g., on AIX 5.3 TL7 the version of bzip2 is 1.0.2 (from rpm.rte.3.0.5.41) The version installed by the customer - if it is following the rpm is version 1.0.5 - but maybe it is an updated version from AIX at version 1.0.6 (rpm.rte.3.0.5.52). And again, if it is the version 1.0.6 (from rpm.rte) - what happens when rpm -e bzip2 is run?

Mixing installp and RPM

Personally - I emphasize personally, I feel mixing RPM and installp packaging a disaster waiting to happen. And above - I give just two examples I have seen - and felt - several times.

Yes, there was a logical reason back in 1999-2000 to start supporting RPM as an install method - Project Montery (Linux) was working on a 64-bit version and it was to run on 64-bit POWER(3) and Intel IA64. Besides 64-bit Linux the IA64 processor was also going to be a target processor for AIX (this was actually available in AIX 5.0 (early adopter version) but never in a GA (generally available) release. And it seemed fitting and logical that AIX/Linux on POWER/IA64 would need support for multiple package managers.

Futher - my humble opinion here - is that RPM packaging helped distinguish between IBM product supported software and open-source-software (OSS) provided by various parties - ASIS.

My bad - and learning mkinstallp

Unfortunately, anno 2005-2006 I kept running into issues when updating AIX when I had also installed many RPM packages - which was quite common at the time. I did not understand why or how (as clearly as I do now). The pain was frequent enough that I started learning how to use the AIX command mkinstallp. In the last 10+ years I have done a lot of experimenting with packaging software using mkinstallp. After having made what I consider "a better mousetrap" I started a second portal "AIXTOOLS" where I put mainly software I am using to support ROOTVG. I also put software that people have requested.

The key message is:

Be careful with mixing RPM and installp. When the contents of the .spec file do not conflict with any files - now (see bzip2 above for an example of "the conflict is now" or in the future (see openssl above for what can happen when the conflict is later) - then no harm done. But without careful and exact scrunity you - as a system admin - will never get a message about a package that has "taken control" of a file.

There is nothing wrong with RPM, but...

Nothing wrong with the technology itself, but RPM (and yum that uses RPM) mixes poorly with installp - in both short and long term - when the goal is comprehensive software management.

 
< Prev   Next >
109 queries executed
1
SET sql_mode = 'MYSQL40'
2 SELECT folder, element, published, params FROM jos_mambots WHERE published >= 1 AND access <= 0 AND folder = 'system' ORDER BY ordering
3 SELECT template FROM jos_templates_menu WHERE client_id = 0 AND ( menuid = 0 OR menuid = 169 ) ORDER BY menuid DESC LIMIT 1
4 DELETE FROM jos_session WHERE ( ( time < '1544643193' ) AND guest = 0 AND gid > 0 ) OR ( ( time < '1544643193' ) AND guest = 1 AND userid = 0 )
5 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 0
6 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 0
7 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'Unknown' AND type = 1
8 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'Unknown' AND type = 1
9 SELECT COUNT(*) FROM jos_stats_agents WHERE agent = 'com' AND type = 2
10 UPDATE jos_stats_agents SET hits = ( hits + 1 ) WHERE agent = 'com' AND type = 2
11 SELECT * FROM jos_menu WHERE id = 169
12 SELECT a.*, u.name AS author, u.usertype, cc.name AS category, s.name AS section, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access, s.id AS sec_id, cc.id as cat_id FROM jos_content AS a LEFT JOIN jos_categories AS cc ON cc.id = a.catid LEFT JOIN jos_sections AS s ON s.id = cc.section AND s.scope = 'content' LEFT JOIN jos_users AS u ON u.id = a.created_by LEFT JOIN jos_groups AS g ON a.access = g.id WHERE a.id = 798 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:48' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:48' ) AND a.access <= 0
13 SELECT a.id FROM jos_content AS a WHERE a.catid = 51 AND a.state = 1 AND a.access <= 0 AND ( a.state = 1 OR a.state = -1 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:48' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:48' ) ORDER BY a.ordering
14 SELECT ROUND( v.rating_sum / v.rating_count ) AS rating, v.rating_count FROM jos_content AS a LEFT JOIN jos_content_rating AS v ON a.id = v.content_id WHERE a.id = 798
15 UPDATE jos_content SET hits = ( hits + 1 ) WHERE id = '798'
16 SELECT hits FROM jos_core_log_items WHERE time_stamp = '2018-12-12' AND item_table = '#__content' AND item_id = '798'
17 UPDATE jos_core_log_items SET hits = ( hits + 1 ) WHERE time_stamp = '2018-12-12' AND item_table = '#__content' AND item_id = '798'
18 SELECT folder, element, published, params FROM jos_mambots WHERE access <= 0 AND folder = 'content' ORDER BY ordering
19 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'urlkey'
20 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotactiv'
21 SELECT value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' AND name = 'snapshotother'
22 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
23 SELECT * FROM jos_mambots WHERE id = '32'
24 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
25 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
26 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
27 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
28 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
29 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
30 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
31 SELECT * FROM jos_mambots WHERE id = '27'
32 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
33 SELECT * FROM jos_mambots WHERE id = '27'
34 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
35 SELECT * FROM jos_mambots WHERE id = '27'
36 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
37 SELECT * FROM jos_mambots WHERE id = '27'
38 SELECT a.* FROM jos_components AS a WHERE ( a.admin_menu_link = 'option=com_syndicate' OR a.admin_menu_link = 'option=com_syndicate&hidemainmenu=1' ) AND a.option = 'com_syndicate'
39 SELECT m.id FROM jos_modules AS m WHERE m.module = 'mod_rssfeed' AND m.published = 1
40 SELECT id, title, module, position, content, showtitle, params FROM jos_modules AS m INNER JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id != 1 AND ( mm.menuid = 0 OR mm.menuid = 169 ) ORDER BY ordering
41 SELECT a.id, a.introtext, a.fulltext , a.images, a.attribs, a.title, a.state FROM jos_content AS a INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE a.state = 1 AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND (a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:48' ) AND (a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:48' ) AND a.catid = 44 AND cc.published = 1 AND s.published = 1 ORDER BY a.ordering LIMIT 15
42 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
43 SELECT * FROM jos_mambots WHERE id = '32'
44 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
45 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
46 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
47 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
48 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
49 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
50 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
51 SELECT * FROM jos_mambots WHERE id = '27'
52 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
53 SELECT * FROM jos_mambots WHERE id = '27'
54 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
55 SELECT * FROM jos_mambots WHERE id = '27'
56 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
57 SELECT * FROM jos_mambots WHERE id = '27'
58 SELECT id FROM jos_menu WHERE link = 'index.php?option=com_search' AND published = 1
59 SELECT m.*, sum(case when p.published=1 then 1 else 0 end) as cnt FROM jos_menu AS m LEFT JOIN jos_menu AS p ON p.parent = m.id WHERE m.menutype='rt_splitSuckerFish' AND m.published='1' AND m.access <= '0' GROUP BY m.id ORDER BY m.parent, m.ordering
60 SELECT m.* FROM jos_menu AS m WHERE menutype='rt_splitSuckerFish' AND m.published='1'
61 SELECT * FROM jos_banner WHERE showBanner=1
62 SELECT id FROM jos_mambots WHERE element = 'mosbookmarks' AND folder = 'content'
63 SELECT * FROM jos_mambots WHERE id = '32'
64 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
65 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
66 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
67 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
68 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
69 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
70 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
71 SELECT * FROM jos_mambots WHERE id = '27'
72 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
73 SELECT * FROM jos_mambots WHERE id = '27'
74 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
75 SELECT * FROM jos_mambots WHERE id = '27'
76 SELECT id FROM jos_mambots WHERE element = 'plugin_jw_allvideos' AND folder = 'content'
77 SELECT * FROM jos_mambots WHERE id = '27'
78 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
79 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
80 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
81 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
82 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
83 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
84 SELECT DISTINCT b.*, u.name AS username FROM jos_bookmarks_itemcat AS i LEFT JOIN jos_bookmarks AS b ON b.id = i.itemid LEFT JOIN jos_bookmarks_categories AS bc ON bc.id = i.catid LEFT JOIN jos_users AS u ON u.id = b.created_by WHERE ((b.published=1 AND b.approved=1) OR b.id IS NULL) AND i.catid IN (4) AND b.access <= '0' AND bc.published = '1' AND bc.access <= '0' AND ((b.private = 0) OR (b.private = 1 AND b.created_by = '0')) ORDER BY b.title ASC
85 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 298) ORDER BY bc.name ASC
86 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 265) ORDER BY bc.name ASC
87 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 297) ORDER BY bc.name ASC
88 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 296) ORDER BY bc.name ASC
89 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 248) ORDER BY bc.name ASC
90 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 246) ORDER BY bc.name ASC
91 SELECT name, value FROM jos_bookmarks_prefs WHERE userid = '-1' AND category = 'params' ORDER BY name
92 SELECT c.id, c.parent FROM jos_bookmarks_categories as c WHERE c.id = -1
93 SELECT * FROM jos_bookmarks_columns WHERE category='' AND custom='0'
94 SELECT * FROM jos_bookmarks_columns WHERE category='' ORDER BY ordering
95 SELECT * FROM jos_bookmarks_columns WHERE category='admin'
96 SELECT * FROM jos_bookmarks_columns WHERE category='admin' ORDER BY ordering
97 SELECT DISTINCT b.*, u.name AS username FROM jos_bookmarks_itemcat AS i LEFT JOIN jos_bookmarks AS b ON b.id = i.itemid LEFT JOIN jos_bookmarks_categories AS bc ON bc.id = i.catid LEFT JOIN jos_users AS u ON u.id = b.created_by WHERE ((b.published=1 AND b.approved=1) OR b.id IS NULL) AND i.catid IN (34) AND b.access <= '0' AND bc.published = '1' AND bc.access <= '0' AND ((b.private = 0) OR (b.private = 1 AND b.created_by = '0')) ORDER BY b.title ASC LIMIT 6
98 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 142) ORDER BY bc.name ASC
99 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 289) ORDER BY bc.name ASC
100 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 242) ORDER BY bc.name ASC
101 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 294) ORDER BY bc.name ASC
102 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 284) ORDER BY bc.name ASC
103 SELECT bc.name as category FROM jos_bookmarks_itemcat i LEFT OUTER JOIN jos_bookmarks_categories bc ON (i.catid = bc.id) WHERE (i.itemid = 293) ORDER BY bc.name ASC
104 SELECT a.id, a.title, a.sectionid, a.catid, a.created, a.hits FROM jos_content AS a LEFT JOIN jos_content_frontpage AS f ON f.content_id = a.id INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE ( a.state = 1 AND a.sectionid > 0 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:48' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:48' ) AND ((TO_DAYS('2018-12-12') - TO_DAYS(a.created)) <= '60') AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND s.published = 1 AND cc.published = 1 ORDER BY a.hits DESC LIMIT 3
105 SELECT m.* FROM jos_menu AS m WHERE menutype = 'Products' AND published = 1 AND access <= 0 ORDER BY parent, ordering
106 SELECT a.id, a.title, a.sectionid, a.catid FROM jos_content AS a LEFT JOIN jos_content_frontpage AS f ON f.content_id = a.id INNER JOIN jos_categories AS cc ON cc.id = a.catid INNER JOIN jos_sections AS s ON s.id = a.sectionid WHERE ( a.state = 1 AND a.sectionid > 0 ) AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2018-12-12 20:48' ) AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2018-12-12 20:48' ) AND a.access <= 0 AND cc.access <= 0 AND s.access <= 0 AND s.published = 1 AND cc.published = 1 ORDER BY a.hits DESC LIMIT 3
107 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 174 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id
108 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 281 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id
109 SELECT ms.id AS sid, ms.type AS stype, mc.id AS cid, mc.type AS ctype, i.id as sectionid, i.id As catid, ms.published AS spub, mc.published AS cpub FROM jos_content AS i LEFT JOIN jos_sections AS s ON i.sectionid = s.id LEFT JOIN jos_menu AS ms ON ms.componentid = s.id LEFT JOIN jos_categories AS c ON i.catid = c.id LEFT JOIN jos_menu AS mc ON mc.componentid = c.id WHERE ( ms.type IN ( 'content_section', 'content_blog_section' ) OR mc.type IN ( 'content_blog_category', 'content_category' ) ) AND i.id = 431 ORDER BY ms.type DESC, mc.type DESC, ms.id, mc.id