1PACMAN.CONF(5) Pacman Manual PACMAN.CONF(5)
2
3
4
6 pacman.conf - pacman package manager configuration file
7
9 /etc/pacman.conf
10
12 Pacman, using libalpm(3), will attempt to read pacman.conf each time it
13 is invoked. This configuration file is divided into sections or
14 repositories. Each section defines a package repository that pacman can
15 use when searching for packages in --sync mode. The exception to this
16 is the options section, which defines global options.
17
19 #
20 # pacman.conf
21 #
22 [options]
23 NoUpgrade = etc/passwd etc/group etc/shadow
24 NoUpgrade = etc/fstab
25
26 [core]
27 Include = /etc/pacman.d/core
28
29 [custom]
30 Server = file:///home/pkgs
31
32 Note
33 Each directive must be in CamelCase. If the case isn’t respected,
34 the directive won’t be recognized. For example. noupgrade or
35 NOUPGRADE will not work.
36
38 RootDir = path/to/root
39 Set the default root directory for pacman to install to. This
40 option is used if you want to install a package on a temporary
41 mounted partition which is "owned" by another system, or for a
42 chroot install. NOTE: If database path or log file are not
43 specified on either the command line or in pacman.conf(5), their
44 default location will be inside this root path.
45
46 DBPath = path/to/db/dir
47 Overrides the default location of the toplevel database directory.
48 A typical default is /var/lib/pacman/. Most users will not need to
49 set this option. NOTE: if specified, this is an absolute path and
50 the root path is not automatically prepended.
51
52 CacheDir = path/to/cache/dir
53 Overrides the default location of the package cache directory. A
54 typical default is /var/cache/pacman/pkg/. Multiple cache
55 directories can be specified, and they are tried in the order they
56 are listed in the config file. If a file is not found in any cache
57 directory, it will be downloaded to the first cache directory with
58 write access. NOTE: this is an absolute path, the root path is not
59 automatically prepended.
60
61 HookDir = path/to/hook/dir
62 Add directories to search for alpm hooks in addition to the system
63 hook directory (/usr/share/libalpm/hooks/). A typical default is
64 /etc/pacman.d/hooks. Multiple directories can be specified with
65 hooks in later directories taking precedence over hooks in earlier
66 directories. NOTE: this is an absolute path, the root path is not
67 automatically prepended. For more information on the alpm hooks,
68 see alpm-hooks(5).
69
70 GPGDir = path/to/gpg/dir
71 Overrides the default location of the directory containing
72 configuration files for GnuPG. A typical default is
73 /etc/pacman.d/gnupg/. This directory should contain two files:
74 pubring.gpg and trustdb.gpg. pubring.gpg holds the public keys of
75 all packagers. trustdb.gpg contains a so-called trust database,
76 which specifies that the keys are authentic and trusted. NOTE:
77 this is an absolute path, the root path is not automatically
78 prepended.
79
80 LogFile = /path/to/file
81 Overrides the default location of the pacman log file. A typical
82 default is /var/log/pacman.log. This is an absolute path and the
83 root directory is not prepended.
84
85 HoldPkg = package ...
86 If a user tries to --remove a package that’s listed in HoldPkg,
87 pacman will ask for confirmation before proceeding. Shell-style
88 glob patterns are allowed.
89
90 IgnorePkg = package ...
91 Instructs pacman to ignore any upgrades for this package when
92 performing a --sysupgrade. Shell-style glob patterns are allowed.
93
94 IgnoreGroup = group ...
95 Instructs pacman to ignore any upgrades for all packages in this
96 group when performing a --sysupgrade. Shell-style glob patterns are
97 allowed.
98
99 Include = path
100 Include another configuration file. This file can include
101 repositories or general configuration options. Wildcards in the
102 specified paths will get expanded based on glob(7) rules.
103
104 Architecture = auto | i686 | x86_64 | ...
105 If set, pacman will only allow installation of packages of the
106 given architecture (e.g. i686, x86_64, etc). The special value
107 auto will use the system architecture, provided via “uname -m”. If
108 unset, no architecture checks are made. NOTE: Packages with the
109 special architecture any can always be installed, as they are meant
110 to be architecture independent.
111
112 XferCommand = /path/to/command %u
113 If set, an external program will be used to download all remote
114 files. All instances of %u will be replaced with the download URL.
115 If present, instances of %o will be replaced with the local
116 filename, plus a “.part” extension, which allows programs like wget
117 to do file resumes properly.
118
119 This option is useful for users who experience problems with
120 built-in HTTP/FTP support, or need the more advanced proxy support
121 that comes with utilities like wget.
122
123 NoUpgrade = file ...
124 All files listed with a NoUpgrade directive will never be touched
125 during a package install/upgrade, and the new files will be
126 installed with a .pacnew extension. These files refer to files in
127 the package archive, so do not include the leading slash (the
128 RootDir) when specifying them. Shell-style glob patterns are
129 allowed. It is possible to invert matches by prepending a file with
130 an exclamation mark. Inverted files will result in previously
131 blacklisted files being whitelisted again. Subsequent matches will
132 override previous ones. A leading literal exclamation mark or
133 backslash needs to be escaped.
134
135 NoExtract = file ...
136 All files listed with a NoExtract directive will never be extracted
137 from a package into the filesystem. This can be useful when you
138 don’t want part of a package to be installed. For example, if your
139 httpd root uses an index.php, then you would not want the
140 index.html file to be extracted from the apache package. These
141 files refer to files in the package archive, so do not include the
142 leading slash (the RootDir) when specifying them. Shell-style glob
143 patterns are allowed. It is possible to invert matches by
144 prepending a file with an exclamation mark. Inverted files will
145 result in previously blacklisted files being whitelisted again.
146 Subsequent matches will override previous ones. A leading literal
147 exclamation mark or backslash needs to be escaped.
148
149 CleanMethod = KeepInstalled &| KeepCurrent
150 If set to KeepInstalled (the default), the -Sc operation will clean
151 packages that are no longer installed (not present in the local
152 database). If set to KeepCurrent, -Sc will clean outdated packages
153 (not present in any sync database). The second behavior is useful
154 when the package cache is shared among multiple machines, where the
155 local databases are usually different, but the sync databases in
156 use could be the same. If both values are specified, packages are
157 only cleaned if not installed locally and not present in any known
158 sync database.
159
160 SigLevel = ...
161 Set the default signature verification level. For more information,
162 see Package and Database Signature Checking below.
163
164 LocalFileSigLevel = ...
165 Set the signature verification level for installing packages using
166 the "-U" operation on a local file. Uses the value from SigLevel as
167 the default.
168
169 RemoteFileSigLevel = ...
170 Set the signature verification level for installing packages using
171 the "-U" operation on a remote file URL. Uses the value from
172 SigLevel as the default.
173
174 UseSyslog
175 Log action messages through syslog(). This will insert log entries
176 into /var/log/messages or equivalent.
177
178 Color
179 Automatically enable colors only when pacman’s output is on a tty.
180
181 UseDelta [= ratio]
182 Download delta files instead of complete packages if possible.
183 Requires the xdelta3 program to be installed. If a ratio is
184 specified (e.g., 0.5), then it is used as a cutoff for determining
185 whether to use deltas. Allowed values are between 0.0 and 2.0;
186 sensible values are between 0.2 and 0.9. Using a value above 1.0 is
187 not recommended. The default is 0.7 if left unspecified.
188
189 TotalDownload
190 When downloading, display the amount downloaded, download rate,
191 ETA, and completed percentage of the entire download list rather
192 than the percent of each individual download target. The progress
193 bar is still based solely on the current file download. This option
194 won’t work if XferCommand is used.
195
196 CheckSpace
197 Performs an approximate check for adequate available disk space
198 before installing packages.
199
200 VerbosePkgLists
201 Displays name, version and size of target packages formatted as a
202 table for upgrade, sync and remove operations.
203
205 Each repository section defines a section name and at least one
206 location where the packages can be found. The section name is defined
207 by the string within square brackets (the two above are core and
208 custom). Repository names must be unique and the name local is reserved
209 for the database of installed packages. Locations are defined with the
210 Server directive and follow a URL naming structure. If you want to use
211 a local directory, you can specify the full path with a “file://”
212 prefix, as shown above.
213
214 A common way to define DB locations utilizes the Include directive. For
215 each repository defined in the configuration file, a single Include
216 directive can contain a file that lists the servers for that
217 repository.
218
219 [core]
220 # use this server first
221 Server = ftp://ftp.archlinux.org/$repo/os/$arch
222 # next use servers as defined in the mirrorlist below
223 Include = {sysconfdir}/pacman.d/mirrorlist
224
225 The order of repositories in the configuration files matters;
226 repositories listed first will take precedence over those listed later
227 in the file when packages in two repositories have identical names,
228 regardless of version number.
229
230 Include = path
231 Include another config file. This file can include repositories or
232 general configuration options. Wildcards in the specified paths
233 will get expanded based on glob(7) rules.
234
235 Server = url
236 A full URL to a location where the database, packages, and
237 signatures (if available) for this repository can be found.
238
239 During parsing, pacman will define the $repo variable to the name
240 of the current section. This is often utilized in files specified
241 using the Include directive so all repositories can use the same
242 mirrorfile. pacman also defines the $arch variable to the value of
243 Architecture, so the same mirrorfile can even be used for different
244 architectures.
245
246 SigLevel = ...
247 Set the signature verification level for this repository. For more
248 information, see Package and Database Signature Checking below.
249
250 Usage = ...
251 Set the usage level for this repository. This option takes a list
252 of tokens which must be at least one of the following:
253
254 Sync
255 Enables refreshes for this repository.
256
257 Search
258 Enables searching for this repository.
259
260 Install
261 Enables installation of packages from this repository during a
262 --sync operation.
263
264 Upgrade
265 Allows this repository to be a valid source of packages when
266 performing a --sysupgrade.
267
268 All
269 Enables all of the above features for the repository. This is
270 the default if not specified.
271
272 Note that an enabled repository can be operated on explicitly,
273 regardless of the Usage level set.
274
276 The SigLevel directive is valid in both the [options] and repository
277 sections. If used in [options], it sets a default value for any
278 repository that does not provide the setting.
279
280 · If set to Never, no signature checking will take place.
281
282 · If set to Optional , signatures will be checked when present, but
283 unsigned databases and packages will also be accepted.
284
285 · If set to Required, signatures will be required on all packages and
286 databases.
287
288 Alternatively, you can get more fine-grained control by combining some
289 of the options and prefixes described below. All options in a config
290 file are processed in top-to-bottom, left-to-right fashion, where later
291 options override and/or supplement earlier ones. If SigLevel is
292 specified in a repository section, the starting value is that from the
293 [options] section, or the built-in system default as shown below if not
294 specified.
295
296 The options are split into two main groups, described below. Terms used
297 such as “marginally trusted” are terms used by GnuPG, for more
298 information please consult gpg(1).
299
300 When to Check
301 These options control if and when signature checks should take
302 place.
303
304 Never
305 All signature checking is suppressed, even if signatures are
306 present.
307
308 Optional (default)
309 Signatures are checked if present; absence of a signature is
310 not an error. An invalid signature is a fatal error, as is a
311 signature from a key not in the keyring.
312
313 Required
314 Signatures are required; absence of a signature or an invalid
315 signature is a fatal error, as is a signature from a key not in
316 the keyring.
317
318 What is Allowed
319 These options control what signatures are viewed as permissible.
320 Note that neither of these options allows acceptance of invalid or
321 expired signatures, or those from revoked keys.
322
323 TrustedOnly (default)
324 If a signature is checked, it must be in the keyring and fully
325 trusted; marginal trust does not meet this criteria.
326
327 TrustAll
328 If a signature is checked, it must be in the keyring, but is
329 not required to be assigned a trust level (e.g., unknown or
330 marginal trust).
331
332 Options in both groups can additionally be prefixed with either Package
333 or Database, which will cause it to only take effect on the specified
334 object type. For example, PackageTrustAll would allow marginal and
335 unknown trust level signatures for packages.
336
337 The built-in default is the following:
338
339 SigLevel = Optional TrustedOnly
340
342 If you have numerous custom packages of your own, it is often easier to
343 generate your own custom local repository than install them all with
344 the --upgrade option. All you need to do is generate a compressed
345 package database in the directory with these packages so pacman can
346 find it when run with --refresh.
347
348 repo-add /home/pkgs/custom.db.tar.gz /home/pkgs/*.pkg.tar.gz
349
350 The above command will generate a compressed database named
351 /home/pkgs/custom.db.tar.gz. Note that the database must be of the form
352 defined in the configuration file and {ext} is a valid compression type
353 as documented in repo-add(8). That’s it! Now configure your custom
354 section in the configuration file as shown in the config example above.
355 Pacman will now use your package repository. If you add new packages to
356 the repository, remember to re-generate the database and use pacman’s
357 --refresh option.
358
359 For more information on the repo-add command, see “repo-add --help” or
360 repo-add(8).
361
363 pacman(8), libalpm(3)
364
365 See the pacman website at https://www.archlinux.org/pacman/ for current
366 information on pacman and its related tools.
367
369 Bugs? You must be kidding; there are no bugs in this software. But if
370 we happen to be wrong, send us an email with as much detail as possible
371 to pacman-dev@archlinux.org.
372
374 Current maintainers:
375
376 · Allan McRae <allan@archlinux.org>
377
378 · Andrew Gregory <andrew.gregory.8@gmail.com>
379
380 · Dan McGee <dan@archlinux.org>
381
382 · Dave Reisner <dreisner@archlinux.org>
383
384 Past major contributors:
385
386 · Judd Vinet <jvinet@zeroflux.org>
387
388 · Aurelien Foret <aurelien@archlinux.org>
389
390 · Aaron Griffin <aaron@archlinux.org>
391
392 · Xavier Chantry <shiningxc@gmail.com>
393
394 · Nagy Gabor <ngaba@bibl.u-szeged.hu>
395
396 For additional contributors, use git shortlog -s on the pacman.git
397 repository.
398
399
400
401Pacman 5.0.2 2018-07-14 PACMAN.CONF(5)