|
|
| (19 intermediate revisions by 2 users not shown) |
| Line 1: |
Line 1: |
| − | <!-- page was renamed from ToshioKuratomi/SOPTemplate
| + | {{header|infra}} |
| − | -->
| + | {{shortcut|ISOP:PKGDB}} |
| − | = Package Database - SOP =
| + | |
| | | | |
| − | == Contact Information ==
| |
| − | Owner: Fedora Infrastructure Team
| |
| | | | |
| − | Contact: #fedora-admin
| + | This SOP has moved to the fedora Infrastructure SOP git repo. Please see the current document at: http://infrastructure.fedoraproject.org/infra/docs/packagedatabase.txt |
| | | | |
| − | Persons: abadger1999
| + | For changes, questions or comments, please contact anyone in the Fedora Infrastructure team. |
| | | | |
| − | Location: Phoenix
| |
| | | | |
| − | Servers: admin.fedoraproject.org -- app3 app4
| + | [[Category:Infrastructure SOPs]] |
| − | | + | |
| − | Purpose: Manage package ownership
| + | |
| − | | + | |
| − | == Description ==
| + | |
| − | | + | |
| − | The PackageDB is used by Fedora developers to manage package ownership and acls. It controls who is allowed to commit to a package and who gets notification of changes to packages.
| + | |
| − | | + | |
| − | PackageDB project Trac: https://fedorahosted.org/packagedb/
| + | |
| − | | + | |
| − | == Troubleshooting and Resolution ==
| + | |
| − | | + | |
| − | === Adding a new Pseudo User as a package owner ===
| + | |
| − | Sometimes you want to have a mailing list own a package so that bugzilla email is assigned to the mailing list. Doing this requires adding a new pseudo user to the account system and assigning that person as the package maintainer.
| + | |
| − | | + | |
| − | {{Admon/tip | In the following examples, replace ("xen", "kernel-xen-2.6") with the packages you are assigning to the new user and 9902 to the userid you select in step 2}}
| + | |
| − | * Log into a box that can access db2.
| + | |
| − | * Log into the db as a user that can make changes
| + | |
| − | <pre>
| + | |
| − | $ psql -U apache -h db2 fedorausers
| + | |
| − | fedorausers>
| + | |
| − | </pre>
| + | |
| − | * Find the current pseudo-users
| + | |
| − | <pre>
| + | |
| − | fedorausers> select id, username from person where id < 10000 order by id;
| + | |
| − | id | username
| + | |
| − | ------+------------------
| + | |
| − | 9900 | orphan
| + | |
| − | 9901 | anaconda-maint
| + | |
| − | </pre>
| + | |
| − | * Create a new account with the next available id after 9900
| + | |
| − | <pre>
| + | |
| − | fedorausers> insert into person (id, username, email, human_name, password, creation,
| + | |
| − | approval_status, otrs_orgid) values (9902, 'xen-maint', 'xen-maint@redhat.com',
| + | |
| − | 'Xen Maintainers', '', now(), 'approved', 'Fedora');
| + | |
| − | </pre>
| + | |
| − | * Connect to the pkgdb as a user that can make changes
| + | |
| − | <pre>
| + | |
| − | $ psql -U pkgdbadmin -h db2 pkgdb
| + | |
| − | pkgdb>
| + | |
| − | </pre>
| + | |
| − | * Add the current package owner as a comaintainer of the package. If this user is not currently on he acls for the package you can use the following database queries:
| + | |
| − | <pre>
| + | |
| − | insert into personpackagelisting (userid, packagelistingid)
| + | |
| − | select pl.owner, pl.id from packagelisting as pl, package as p
| + | |
| − | where p.id = pl.packageid and p.name in ('xen', 'kernel-xen-2.6');
| + | |
| − | insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
| + | |
| − | select ppl.id, 'build', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
| + | |
| − | where p.id = pl.packageid and pl.id = ppl.packagelistingid and pl.owner = ppl.userid
| + | |
| − | and p.name in ('xen', 'kernel-xen-2.6');
| + | |
| − | insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
| + | |
| − | select ppl.id, 'commit', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
| + | |
| − | where p.id = pl.packageid and pl.id = ppl.packagelistingid
| + | |
| − | and pl.owner = ppl.userid
| + | |
| − | and p.name in ('xen', 'kernel-xen-2.6');
| + | |
| − | insert into personpackagelistingacl (personpackagelistingid, acl, statuscode)
| + | |
| − | select ppl.id, 'approveacls', 3 from personpackagelisting as ppl, packagelisting as pl, package as p
| + | |
| − | where p.id = pl.packageid and pl.id = ppl.packagelistingid
| + | |
| − | and pl.owner = ppl.userid
| + | |
| − | and p.name in ('xen', 'kernel-xen-2.6');
| + | |
| − | | + | |
| − | </pre>
| + | |
| − | If the owner is in the acls, you will need to figure out which packages already acls and only add the new acls for that one.
| + | |
| − | * Reassign the pseudo-user to be the new owner
| + | |
| − | <pre>
| + | |
| − | update packagelisting set owner = 9902 from package as p
| + | |
| − | where packagelisting.packageid = p.id and p.name in ('xen', 'kernel-xen-2.6');
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | === Renaming a package ===
| + | |
| − | | + | |
| − | On db2:
| + | |
| − | <pre>
| + | |
| − | sudo -u postgres psql pkgdb
| + | |
| − | select * from package where name = 'OLDNAME';
| + | |
| − | [Make sure only the package you want is selected]
| + | |
| − | update package set name = 'NEWNAME' where name = 'OLDNAME';
| + | |
| − | </pre>
| + | |
| − | | + | |
| − | On cvs-int:
| + | |
| − | <pre>
| + | |
| − | CVSROOT=/cvs/pkgs cvs co CVSROOT
| + | |
| − | sed -i 's/OLDNAME/NEWNAME/' CVSROOT/modules
| + | |
| − | cvs commit -m 'Rename OLDNAME => NEWNAME'
| + | |
| − | cd /cvs/pkgs/rpms
| + | |
| − | mv OLDNAME NEWNAME
| + | |
| − | cd NEWNAME
| + | |
| − | find . -name 'Makefile,v' -exec sed -i 's/NAME := OLDNAME/NAME := NEWNAME/' \{\} \;
| + | |
| − | cd ../../devel
| + | |
| − | rm OLDNAME
| + | |
| − | ln -s ../rpms/NEWNAME .
| + | |
| − | </pre>
| + | |
For changes, questions or comments, please contact anyone in the Fedora Infrastructure team.