1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
Setup on Arch Linux:
====================
1) Install Apache, MySQL, PHP, and git
# pacman -Sy apache mysql php git
2) Set a local 'hostname' of 'aur'
- Edit /etc/hosts and append 'aur' to loopback address
127.0.0.1 localhost aur
3) Configure Apache
- Edit /etc/httpd/conf/httpd.conf and make sure that PHP
support is enabled by uncommenting the LoadModule line
that specifies the PHP module.
- Also append the following snippet to enable the aur
Virtual Host (Replace MYUSER with your username).
<VirtualHost aur:80>
Servername aur
DocumentRoot /home/MYUSER/aur/web/html
ErrorLog /var/log/httpd/aur-error.log
CustomLog /var/log/httpd/aur-access.log combined
<Directory /home/MYUSER/aur/web/html>
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
4) Configure PHP
Make sure you have mysql and json enabled in PHP and
PEAR is properly configured with the File_Find package
(http://pear.php.net/package/File_Find) installed
- Edit php.ini and uncomment/add these lines:
extension=mysql.so
extension=json.so
- Install the File_Find PEAR package:
# pear install File_Find
5) Clone the AUR project (using the MYUSER from above)
$ cd
$ git clone http://projects.archlinux.org/git/aur.git
6) Configure MySQL
- Connect to the mysql client
# mysql -uroot
- Issue the following commands to the mysql client
mysql> CREATE DATABASE AUR;
mysql> GRANT ALL PRIVILEGES ON AUR.* to aur@localhost
> identified by 'aur';
mysql> FLUSH PRIVILEGES;
mysql> quit
- Load the schema file
# mysql -uaur -p AUR < ~/aur/support/schema/aur-schema.sql
(give password 'aur' at the prompt)
- Optionally load some test data for development purposes.
# bzcat ~/aur/support/schema/dummy-data.sql.bz2 | mysql -uaur -p AUR
(give password 'aur' at the prompt)
7) Copy the config.inc.proto file to config.inc. Modify as needed.
cd ~/aur/web/lib/
cp config.inc.profo config.inc
8) Point your browser to http://aur
Web Interface:
==============
Directory Layout:
-----------------
./html - DocumentRoot for AUR, where the PHP scripts live.
./html/css - CSS stylesheets
./html/images - Any AUR images live here.
./lib - Supporting PHP include files. Access denied to Apache.
./template - Where most of the html markup resides and minimal
amount of PHP scripting.
Scripts:
--------
- lib/aur.inc
This is where we can stick functions that can be shared
between the various scripts. Also a good place to put the
MySQL authentication variables since it should live outside
the DocumentRoot.
- html/login.php (probably index.php)
PHP script to handle logging users into the AUR web site. It
authenticates using the email address and a password against
the Users table. Once authenticated, a session id is generated
and stored in the Sessions table and sent as a cookie to the
user's browser.
- html/logout.php
PHP script to logout. It clears the session id from the
Sessions table and unsets the cookie.
- html/account.php
PHP script to handle registering for a new account. It prompts
the visitor for account information: Email, password, real name,
irc nick. The info is recorded in the Users table. Perhaps later,
we can add a preferences field that allows the user to request to
be notified when new packages are submitted so that they can cast
votes for them?
If a TU is logged into the system, they can edit accounts and set
the account type (regular user or TU). If a Dev is logged in, they
can also set the account type to Dev. TUs and Devs are able to
delete accounts. If an account is deleted, all "Unsupported"
packages are orphaned (the MaintainerUID field in the Packages
table is set to Null).
- html/packages.php
PHP script to search the package database. It should support
searching by location ("unsupported", "community", "extra"), name,
category, maintainer, popularity, etc. It should resemble the
packages.php script on archlinux.org. A checkbox should be
included next to each package to allow users to flag a package
out of date, adopt it, and vote for it (and reverse operations).
- html/pkgsubmit.php
This is the PHP script that allows users to upload a new package.
The package format will be a tgz containing the PKGBUILD,
scriptlets, and patches necessary to build the package from
source. Initially, the user submitting the package can select
its category (network, devel, etc) but that can be modified
later by the adopting TU. The script makes appropriate entries
into the database (and perhaps notifies interested users of the
new package).
Terms and Definitions:
======================
AUR - Arch Linux User-Community Repository
Includes:
- the AUR web site,
- the [unsupported] 'repository'
- the [community] repository managed by the TUs
TU - Trusted User
A user that can add binary packages to the [community]
repository and administer AUR.
[unsupported]
The collection of package build files hosted via the AUR web site.
|