Translation updates from Transifex
[aur.git] / UPGRADING
blobc39330b2a93ff8da5571096baca8327855776512
1 Upgrading
2 =========
4 From 2.0.0 to 2.1.0
5 -------------------
7 1. Update your aurblup setup to match configuration changes. See commit
8 6dc61e7d9e87ad6821869dab61e5f005af2e0252 for details.
10 From 1.9.1 to 2.0.0
11 -------------------
13 1. Add new "Users" table login date and PGP key columns:
15 ----
16 ALTER TABLE Users ADD COLUMN LastLogin BIGINT NOT NULL DEFAULT 0;
17 ALTER TABLE Users ADD COLUMN PGPKey VARCHAR(40) NULL DEFAULT NULL;
18 ----
20 2. Merge "web/lib/config.inc.php.proto" with "web/lib/config.inc.php".
22 3. Enable the PDO MySQL extension (pdo_mysql.so) in "php.ini".
24 4. Upgrade to PHP>=5.4.0 or enable "short_open_tag" in "php.ini".
26 5. Install translations by running `make install` in "po/".
28 From 1.9.0 to 1.9.1
29 -------------------
31 1. Merge "web/lib/config.inc.php.proto" with "web/lib/config.inc.php".
33 2. Install translations by running `make install` in "po/".
35 From 1.8.2 to 1.9.0
36 -------------------
38 1. Translation files are now gettext compatible and need to be compiled after
39 each AUR upgrade by running `make install` in the "po/" directory.
41 2. Remove the "NewPkgNotify" column from the "Users" table:
43 ALTER TABLE Users DROP COLUMN NewPkgNotify;
45 3. Fix up issues with depends performance on large dataset.
47 ALTER TABLE PackageDepends ADD INDEX (DepName);
49 4. Rename "web/lib/config.inc" to "web/lib/config.inc.php".
51 5. Merge "web/lib/config.inc.php.proto" with "web/lib/config.inc.php".
53 6. Run the upload directory transform script ("scripts/uploadbuckets.sh") and
54 rotate the converted directory structure into place.
56 7. In order to to provide backward compatible package URLs, enable mod_rewrite
57 and add the following to your Apache configuration (inside the "VirtualHost"
58 container or optionally create a ".htaccess" file in the upload directory):
60 ----
61 RewriteEngine on
62 RewriteRule ^/packages/([^/]{1,2})([^/]*/(PKGBUILD|[^/]*\.tar\.gz|))$ /packages/$1/$1$2
63 ----
65 The following equivalent rule can be used for lighttpd setups:
67 ----
68 url.rewrite-once = ( "^/packages/([^/]{1,2})([^/]*/(PKGBUILD|[^/]*\.tar\.gz|))$" => "/packages/$1/$1$2" )
69 ----
71 If you use a non-standard URL_DIR, slight modifications might be necessary.
73 8. Merge "scripts/aurblup/config.h.proto" with "scripts/aurblup/config.h".
75 From 1.8.1 to 1.8.2
76 -------------------
78 1. Update the modified package timestamp for new packages.
80 UPDATE Packages SET ModifiedTS = SubmittedTS WHERE ModifiedTS = 0;
82 2. Move to new method of storing package depends.
84 ----
85 ALTER TABLE PackageDepends ADD COLUMN DepName VARCHAR(64) NOT NULL DEFAULT '' AFTER PackageID;
86 UPDATE PackageDepends SET DepName = (SELECT Name FROM Packages WHERE ID = DepPkgID);
87 ALTER TABLE PackageDepends MODIFY DepName VARCHAR(64) NOT NULL;
88 ALTER TABLE PackageDepends DROP FOREIGN KEY `PackageDepends_ibfk_2`;
89 ALTER TABLE PackageDepends DROP COLUMN DepPkgID;
90 DELETE FROM Packages WHERE DummyPkg = 1;
91 ALTER TABLE Packages DROP COLUMN DummyPkg;
92 ----
94 3. The File_Find PEAR module is no longer required. You can safely uninstall it
95 if nothing else depends on it.
97 From 1.8.0 to 1.8.1
98 -------------------
100 1. Drop foreign keys from the "Sessions" table:
102 `ALTER TABLE Sessions DROP FOREIGN KEY Sessions_ibfk_1;` should work in most
103 cases. Otherwise, check the output of `SHOW CREATE TABLE Sessions;` and use the
104 foreign key name shown there.
106 2. Run the following MySQL statements:
108 ----
109 ALTER TABLE Sessions
110         ADD FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE;
111 ALTER TABLE PackageDepends
112         ADD FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE,
113         ADD FOREIGN KEY (DepPkgID) REFERENCES Packages(ID) ON DELETE CASCADE;
114 ALTER TABLE PackageSources
115         ADD FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE;
116 ALTER TABLE TU_VoteInfo
117         ADD FOREIGN KEY (SubmitterID) REFERENCES Users(ID) ON DELETE CASCADE;
118 ALTER TABLE TU_Votes
119         ADD FOREIGN KEY (VoteID) REFERENCES TU_VoteInfo(ID) ON DELETE CASCADE,
120         ADD FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE;
121 ALTER TABLE PackageComments
122         MODIFY DelUsersID INTEGER UNSIGNED NULL DEFAULT NULL;
123 UPDATE PackageComments SET DelUsersID = NULL WHERE DelUsersID = 0;
124 ALTER TABLE Packages
125         MODIFY SubmitterUID INTEGER UNSIGNED NULL DEFAULT NULL,
126         MODIFY MaintainerUID INTEGER UNSIGNED NULL DEFAULT NULL;
127 UPDATE Packages SET SubmitterUID = NULL WHERE SubmitterUID = 0;
128 UPDATE Packages SET MaintainerUID = NULL WHERE MaintainerUID = 0;
129 ----
131 3. (optional) If you converted your database from MyISAM to InnoDB during the
132 upgrade process from 1.7.0 to 1.8.0 or from 1.8.0 to 1.8.1 without completely
133 rebuilding the database from the MySQL schema, you should additionally run the
134 following MySQL statements to add missing foreign keys:
136 ----
137 ALTER TABLE Users
138         ADD FOREIGN KEY (AccountTypeID) REFERENCES AccountTypes(ID) ON DELETE NO ACTION;
139 ALTER TABLE Packages
140         ADD FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION,
141         ADD FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE NO ACTION,
142         ADD FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE NO ACTION;
143 ALTER TABLE PackageVotes
144         ADD FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
145         ADD FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE;
146 ALTER TABLE PackageComments
147         ADD FOREIGN KEY (UsersID) REFERENCES Users(ID) ON DELETE CASCADE,
148         ADD FOREIGN KEY (DelUsersID) REFERENCES Users(ID) ON DELETE CASCADE,
149         ADD FOREIGN KEY (PackageID) REFERENCES Packages(ID) ON DELETE CASCADE;
150 ALTER TABLE CommentNotify
151         ADD FOREIGN KEY (PkgID) REFERENCES Packages(ID) ON DELETE CASCADE,
152         ADD FOREIGN KEY (UserID) REFERENCES Users(ID) ON DELETE CASCADE;
153 ----
155 4. Merge "web/lib/config.inc.proto" with "web/lib/config.inc".
157 From 1.7.0 to 1.8.0
158 -------------------
160 1. Run the following MySQL statements:
162 ----
163 ALTER TABLE Packages ADD OutOfDateTS BIGINT UNSIGNED NULL DEFAULT NULL;
164 UPDATE Packages SET OutOfDateTS = UNIX_TIMESTAMP() WHERE OutOfDate = 1;
165 ALTER TABLE Packages DROP OutOfDate, DROP FSPath, DROP URLPath, DROP LocationID;
166 DROP TABLE PackageLocations, PackageContents;
167 ALTER TABLE AccountTypes MODIFY AccountType VARCHAR(32) NOT NULL DEFAULT '';
168 ALTER TABLE Users MODIFY Username VARCHAR(32) NOT NULL,
169         MODIFY Email VARCHAR(64) NOT NULL,
170         MODIFY RealName VARCHAR(64) NOT NULL DEFAULT '',
171         MODIFY LangPreference VARCHAR(5) NOT NULL DEFAULT 'en',
172         MODIFY IRCNick VARCHAR(32) NOT NULL DEFAULT '';
173 ALTER TABLE PackageCategories MODIFY Category VARCHAR(32) NOT NULL;
174 ALTER TABLE Packages MODIFY Name VARCHAR(64) NOT NULL,
175         MODIFY Version VARCHAR(32) NOT NULL DEFAULT '',
176         MODIFY Description VARCHAR(255) NOT NULL DEFAULT "An Arch Package",
177         MODIFY URL VARCHAR(255) NOT NULL DEFAULT "https://www.archlinux.org",
178         MODIFY License VARCHAR(40) NOT NULL DEFAULT '';
179 ALTER TABLE PackageSources
180         MODIFY Source VARCHAR(255) NOT NULL DEFAULT "/dev/null";
181 ALTER TABLE TU_VoteInfo
182         MODIFY User VARCHAR(32) collate latin1_general_ci NOT NULL;
183 CREATE TABLE PackageBlacklist (
184         ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
185         Name VARCHAR(64) NOT NULL,
186         PRIMARY KEY (ID),
187         UNIQUE (Name)
189 ----
191 2. Drop all fulltext indexes from the "Packages" table:
193 Please do this with care. `ALTER TABLE Packages DROP INDEX Name;` will work in
194 most cases but might remove the wrong index if your indexes have been created
195 in a non-standard order (e.g. during some update process). You'd better run
196 `SHOW INDEX FROM Packages;` before to ensure that your setup doesn't use a
197 different naming.
199 3. You will need to update all packages which are stored in the incoming dir as
200 in 1.8.0, source tarballs are no longer extracted automatically and PKGBUILDs
201 are from now on located in the same subdirectories as the tarballs themselves.
202 The following script will do the conversion automatically when being run inside
203 "$INCOMING_DIR":
205 ----
206 #!/bin/bash
208 for pkg in *; do
209         if [ -d "${pkg}" -a ! -f "${pkg}/PKGBUILD" ]; then
210                 pkgbuild_file=$(find -P "${pkg}" -name PKGBUILD)
211                 [ -n "${pkgbuild_file}" ] && \
212                         cp "${pkgbuild_file}" "${pkg}/PKGBUILD"
213         fi
214 done
215 ----
217 4. (optional): 1.8.0 includes a helper utility called "aurblup" that can be
218 used to prevent users from uploading source packages with names identical to
219 packages in predefined binary repos, e.g. the official repositories of your
220 distribution. In order to build and install aurblup, enter the following
221 commands:
223         cd scripts/aurblup/
224         make config.h
225         $EDITOR config.h
226         make install  # as root
228 Add something like "0 * * * * /usr/local/bin/aurblup" to root's crontab to make
229 aurblup update the package blacklist every hour.
231 NOTE: You can run aurblup as non-privileged user as well. Make sure that the
232 user has read-write access to "/var/lib/aurblup/" (or whatever you defined with
233 "ALPM_DBPATH") tho.
235 5. (optional): As of 1.8.0, all MySQL tables should be InnoDB compatible. To
236 convert a table, you can use this statement: `ALTER TABLE $foo ENGINE=InnoDB;`.
237 If you want to stick with MyISAM or another storage engine that doesn't support
238 transactions, you will need to disable the "MYSQL_USE_TRANSACTIONS" setting in
239 "config.h" when setting up aurblup.
241 From 1.6.0 to 1.7.0
242 -------------------
243 ALTER TABLE Users ADD Salt CHAR(32) NOT NULL DEFAULT '';
244 ALTER TABLE Users ADD ResetKey CHAR(32) NOT NULL DEFAULT '';
245 ALTER TABLE Users MODIFY LangPreference CHAR(5) NOT NULL DEFAULT 'en';
248 From 1.5.2 to 1.5.3
249 -------------------
250 1. Ensure this appears in config.inc:
251    define("DEFAULT_LANG", "en");
254 From 1.5.1 to 1.5.2
255 -------------------
256 1. Ensure Pear and File/Find.php are in the path. See web/README.txt.
258 2. Update your running copy of support/scripts/newpackage-notify.
260 3. Run this in web/lib:
261 <?php
263 # Run the script from within lib
264 include('config.inc');
265 include('aur.inc');
267 $query = "UPDATE Packages SET " .
268          "FSPath = CONCAT('" . INCOMING_DIR . "', Name, '/', Name,
269 '.tar.gz'), " .
270          "URLPath = CONCAT('" . URL_DIR . "', Name, '/', Name, '.tar.gz') " .
271          "WHERE DummyPKG = 0 AND LocationID = 2;";
273 $dbh = db_connect();
274 db_query($query, $dbh);
276 $query = "ALTER TABLE Packages DROP COLUMN AURMaintainerUID;";
277 db_query($query, $dbh);
280 1.3.0
281 -----
282 ALTER TABLE PackageDepends ADD COLUMN DepCondition VARCHAR(20) AFTER DepPkgID;
283 ALTER TABLE Packages ADD License CHAR(40) NOT NULL DEFAULT '';
286 1.2.10
287 ------
288 ALTER TABLE Packages MODIFY Description CHAR(255) NOT NULL DEFAULT "An Arch Package";
291 longerpkgname
292 -------------
293 ALTER TABLE Packages MODIFY Name CHAR(64) NOT NULL;