Thread

  1. help with rpm script

    Craig Jensen <cjensen@acenet-tech.org> — 2003-07-02T05:20:57Z

    Hello,
    
    I am building an rpm for Mitle SME (a scaled down redhat 7.3) and have all functions working except:
    
    I need to have the rpm when installed create a database and a user with privilege to that database.
    These are the command functions I need to execute within the rpm...
    
    # service postgresql start 
    # su postgres 
    # createdb account 
    # psql account < my1.sql 
    # psql account < my2.sql 
    # exit 
    
    But, I need these functions to be executed when someone installs my rpm. For Mysql, I have the following
    in the %post of my spec file:
    
    -------------------snippet-from-spec-file------------------------- 
    %post 
    # This section creates the database, dbuser, dbpasswd and # data after the package has been installed 
    
    
    pw=`/bin/cat /etc/openldap/ldap.pw` 
    /bin/echo exit | /usr/bin/mysql --password=$pw mydb 2>&1 &> /dev/null 
    if [ "$?" = "1" ; then
    /bin/echo "Creating mydb database..." 
    /usr/bin/mysqladmin --password=$pw create mydb 
    /bin/echo "grant all on mydb.* to dude@localhost identified by 'dudepass';" | /usr/bin/mysql --password=$pw 
    /usr/bin/mysql --password=$pw mydb < /path/to/my.sql 
    /usr/bin/mysqladmin --password=$pw reload 
    fi 
    
    
    --------------end-of-snippet-from-spec-------------------------- 
    What commands could I use to complete similar needs for
    a postgresql database to be created by an rpm?
    
    Thank you for any help.
    
    -- 
    Best regards,
     Craig Jensen                            mailto:cjensen@acenet-tech.org
    
    
    Ace Net-Tech
    http://www.acenet-tech.org/ My computer services site.
    http://www.acenet-tech.org/phpBB2/ My forum, business and otherwise.
                           
    
    
    }}}All ouotgoing messages scanned and verified virus-free by Norton Antivirus
    2003.{{{
    
    
    
    
  2. Re: help with rpm script

    Lamar Owen <lamar.owen@wgcr.org> — 2003-07-02T12:33:51Z

    On Wednesday 02 July 2003 01:20, Craig Jensen wrote:
    > I need to have the rpm when installed create a database and a user with
    > privilege to that database. These are the command functions I need to
    > execute within the rpm...
    
    > # service postgresql start
    > # su postgres
    > # createdb account
    > # psql account < my1.sql
    > # psql account < my2.sql
    > # exit
    
    It is an extremely bad idea to do this.  Scriptlets in RPM run in a weird 
    mode.
    
    Rather, in your spec file, do an initdb in the %install phase, and run a 
    restore of the precreated database (in %install, again, but this might be a 
    little tricky to do, since the postmaster as associated executables are in 
    the buildroot, not in a really runnable position).  Then have this packaged 
    as, say, postgresql-data or somesuch.  Add the precreated dump (if it's a 
    dumpall, it will have the database name and all users as part of the dump).
    
    Or have the initscript in /etc/rc.d/init.d perform the restore immediately 
    after the initdb that the first initscript run will do.
    
    But you really don't want to be doing this in %post.  What if it's an upgrade?  
    RPM upgrades and installs are identical from the scriptlet's point of view 
    (except for the one parameter).  I have a little experience in this regard, 
    having maintained the mainline PostgreSQL RPM's for four years.
    -- 
    Lamar Owen
    WGCR Internet Radio
    1 Peter 4:11