1
0
forked from mirrors/pacman

Compare commits

..

134 Commits

Author SHA1 Message Date
Colin Woodbury
a4240a55e4 Restore usage line for -Fh
Unlike the other main commands, -F was missing its top-level usage line in its
help output.

Signed-off-by: Colin Woodbury <colin@fosskers.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-12-03 21:37:30 +10:00
Allan McRae
20f2ae56eb Modify "pacman -h" output for files operations
pacman -F can take both a file(s) or a package(s) as arguments.  Passing a
file is more common, so adjust to show that in the help.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-12-03 21:34:01 +10:00
morganamilo
5c24f7dd11 libalpm: set ret in download files
download_files never set ret on failiure, so even when downloading
fails, the transaction goes on to commit and error out.

:: Retrieving packages...
 python-packaging-20.4-4-any.pkg.tar.zst failed to download
error: failed retrieving file 'python-packaging-20.4-4-any.pkg.tar.zst' from mirror.oldsql.cc : The requested URL returned error: 404
warning: failed to retrieve some files
(1/1) checking keys in keyring
(1/1) checking package integrity
error: failed to commit transaction (wrong or NULL argument passed)
Errors occurred, no packages were upgraded.

Also make the ret checking more consistent.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-12-03 21:31:34 +10:00
Ivy Foster
08f4ae709c Add fossil scm support to makepkg
Signed-off-by: Ivy Foster <escondida@iff.ink>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 21:58:40 +10:00
morganamilo
73e0d7dedc libalpm: add alpm_option_get_parallel_downloads
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 21:10:16 +10:00
morganamilo
66f9f315cf libalpm: set errno when setting parallel downloads with an invalid number
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 21:08:13 +10:00
morganamilo
75cfce9468 libalpm: clarify alpm_download_event_completed_t status
The comment makes it seem that the result itself is an error code. But
all it does is simply return -1 to indicate an error occured;

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 21:07:48 +10:00
morganamilo
4b8c274f7f libalpm: don't call dlcb when not set
Fixes FS#68728:

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 16:31:27 +10:00
morganamilo
9dc29ebf5f libalpm: set parallel_downloads to 1 when creating the handle
Fixes FS#68729

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 16:19:24 +10:00
Anatol Pomozov
db4092e33d Move cursor to the end of the screen at the SIGINT
It requires exposing 'move cursor to the end' function in a pacman
header file. We use it as a chance to make naming of the cursor management
functions more consistent.

Note that there is still possibility of a race condition in the cursor
update logic. 'update cursor index variable' and 'send ASCII control
symbols to console' is not an atomic operation. So if an SIGINT is
received between these two action then cursor position is going to be
screwed.

Fixes FS#67973

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 16:10:26 +10:00
Anatol Pomozov
2859a6eefc Go to the end of screen if 'printonly' mode enabled
At the end of download operation our code makes sure the cursor is moved
to the end of the drawing area. But 'printonly' mode has its own if() branch
that skips this cursor alignment. Add cursor_goto_end() to the 'printonly'
codepath to make sure it does not clobber previous output.

Fixes FS#68355

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 15:47:47 +10:00
Michael Straube
94ac3330dd libmakepkg: compress: fix tar extension
With commit 74aacf4495 creating uncompressed .tar
packages fails.

  -> Compressing package...
/usr/share/makepkg/util/compress.sh: line 70: COMPRESS.TAR[@]: invalid variable name
bsdtar: Write error

Empty the '$ext' variable for the '.tar' extension in get_compress_command() to
fix this. We would fallback to cat for 'tar' anyways.

Signed-off-by: Michael Straube <michael.straubej@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-11-26 15:45:29 +10:00
Michael Straube
4d8f58d3b9 makepkg: emptydirs: fix typo
Fix typo in a comment in tidy_emptydirs().

Signed-off-by: Michael Straube <michael.straubej@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-10-21 11:19:01 +10:00
Eli Schwartz
c99a3cc867 makepkg: properly localize some internal function variables
We leaked fullver and pkgarch all over the place, and only conditionally
unset the other variables. Marking them local is a more proactive
solution.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-10-21 11:18:32 +10:00
Eli Schwartz
f76bd2c6c1 makepkg: fix signing of source packages
In commit c6b04c0465 the signing stage was
moved out of fakeroot, and thus into the main control flow instead of
create_{,src}package

While the function for signing binary packages has logic to build
and gpg-sign multiple filenames, the source package never got this
special treatment. This would be fine, except it uses the standard
variables to set define the filename... like ${fullver}, which is
usually set beforehand, but in this case is not. We don't define fullver
globally as it's an internal implementation detail, except by sheer
coincidence if PKGVERFUNC is false due to improperly guarded code.

Result: source packages didn't end up signed. Instead, we raised a logic
error:

==> WARNING: Failed to sign package file somepackage-.src.tar.gz.

==> ERROR: An unknown error has occurred. Exiting...

Instead, let's just build the version inline, since we only use it once.

Reported-by: GaKu999 <g4ku999@gmail.com>
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-10-21 11:17:14 +10:00
Eli Schwartz
406a37206f makepkg: libprovides: don't provide both versioned and unversioned sonames
If multiple files match the pattern libfoo.so*, we want to check each of
them and see if they are shared libraries, and if so, if they have
versions attached.

But some packages can have both shared libraries and random files which
match the filename pattern. This is true at least for files in
/usr/share/gdb/auto-load/, which must match the filename they are paired
with, followed by "-gdb.py" (or some other gdb scripting ext), but
definitely don't contain a shared library. In this case, we don't want
to double-report the library in the generated provides.

It's also possible (probably) for a package to provide a versioned as
well as an unversioned shared library, but in such cases a single
provides entry is sufficient to cover both cases (and the libdepends
for the depending package would contain an unversioned dependency).

Solve this by keeping track of whether we have added a versioned soname
provides already, and then only adding a maximum of one unversioned
provides *iff* there isn't a versioned one yet.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-23 17:12:01 +10:00
Chih-Hsuan Yen
4533c6a8e0 util.c: table_print_line: properly align texts involving CJK
For printf in C, width is counted as bytes rather than Unicode width. [1]

> If the precision is specified, no more than that many bytes are written.

[1] Section 7.21.6, N2176, final draft for ISO/IEC 9899:2017 (C18)

Thanks Andrew Gregory for suggesting a simpler approach.

Fixes FS#59229

Signed-off-by: Chih-Hsuan Yen <yan12125@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-23 17:12:01 +10:00
Anatol Pomozov
ff7ff3c58d FS#66472: Remove *.sig file if package corrupted
In case if a package corrupted (e.g. signature or hash is invalid)
pacman tries to remove the package file to redownload it anew the next time.
Remove *.sig file as well to make sure no data is left for the invalid
package.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-23 17:12:01 +10:00
Ronan Pigott
d85d9c8c60 Add pacman-conf zsh completions
Signed-off-by: Ronan Pigott <rpigott@berkeley.edu>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-03 12:55:34 +10:00
Eli Schwartz
04b69957c8 remove more autotools files
We forgot to remove m4/ in commit 454ea02438
and now it's tragically reminding me of autotools!

Also take this opportunity to drop some symlinks in lib/libalpm/ for
libcommon source files. In autotools these were built specifically for
libalpm and needed to be available in that directory, but the meson
setup just has libalpm depend on libcommon. So these pseudo source files
aren't needed anymore.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-03 12:49:13 +10:00
Allan McRae
f235cea733 makepkg.conf: Reword "Defaults"
FS#61661 notes that we have a comment "Defaults" value for BUILDENV and OPTIONS
but that does not necessarily correspond to what the example makepkg.conf sets.

Change the comment to "Makepkg defaults" to indicate this is what makepkg will
do unless told otherwise.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-09-03 12:44:24 +10:00
Anatol Pomozov
f53ac85ff6 Enable sha256/md5 hash verification if detached signatures are used
Pacman has multiple ways to verify package content integrity:
 - gpg signature
 - sha256
 - md5

These verification mechanisms overlap each other. gpg signatures already contain
hash value of the package content. So if a package signature is present then
pacman ignored the other 2 hash values. This worked well with signtures
embedded into pacman database.

Recently pacman got an ability to handle detached signatures (*.sig files
located next to the package files). If pacman verifies detached signature only
then one can replace pkg+sig files with some other content and pacman still
processes it as a valid package. To prevent it we need to verify
database<->package integrity using hash values stored in the database.

This commit fixes FS#67232

The new debug output is:
  checking package integrity...
  debug: found cached pkg: /var/cache/pacman/pkg/ruby-2.7.1-2-x86_64.pkg.tar.zst
  debug: sha256sum: 77baf61c62c5570b3a37cf0c3b16c5d9a97dde6fedd1a3528bf0cc5f96dd5e52
  debug: checking sha256sum for /var/cache/pacman/pkg/ruby-2.7.1-2-x86_64.pkg.tar.zst
  debug: sig data: <from .sig>
  debug: checking signature for /var/cache/pacman/pkg/ruby-2.7.1-2-x86_64.pkg.tar.zst
  debug: 1 signatures returned
  debug: fingerprint: B5971F2C5C10A9A08C60030F786C63F330D7CB92

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-08-10 19:25:59 +10:00
Anatol Pomozov
62246b9355 Fix error during keyring checking
With current master version the 'keyring checking' step produces an error:
  debug: returning error 6 from alpm_pkg_get_sig (../lib/libalpm/package.c: 274) : wrong or NULL argument passed

The package signature is still checked later at the integrity verification step though.

This commit fixes keyring checking and now the debug log looks like this:
  debug: found cached pkg: /var/cache/pacman/pkg/ruby-2.7.1-2-x86_64.pkg.tar.zst
  debug: found detached signature /var/cache/pacman/pkg/ruby-2.7.1-2-x86_64.pkg.tar.zst.sig with size 566
  debug: found signature key: 786C63F330D7CB92
  debug: looking up key 786C63F330D7CB92 locally
  debug: key lookup success, key exists

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-08-10 10:02:02 +10:00
Eli Schwartz
2403fc9732 repo-add: use more libmakepkg to handle common compression routines
Currently the list of supported formats for an archive, is maintained in
two places. And repo-add does not actually get updated. :(

In the process, remove some of the logical duplication when calling
bsdtar/compress_as.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-08-10 09:57:37 +10:00
Eli Schwartz
74aacf4495 libmakepkg: extend compress.sh to also permit checking validity
get_compression_command() can now be used to do upfront checks for
whether a given extension is known to do something successfully. This is
useful when writing tools in which an unknown compression type is a
fatal error.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-08-10 09:57:32 +10:00
Morten Linderud
2a352dc059 doc/makepkg.8: Added punctuations.
Signed-off-by: Morten Linderud <morten@linderud.pw>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-14 23:44:16 +10:00
Anatol Pomozov
14c0e53eed Check that destfile_name exists before using it
In some cases (when trust_remote_name is used for a URL without a filename and
no Content-Disposition is provided by the server) destfile_name will be
NULL. In this case payload data will be stored in tempfile_name and no
destfile_name is set.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-14 23:43:10 +10:00
Anatol Pomozov
1fd95939db Do not free payload fields in the middle of this structure use
At the end of payload use it calls _alpm_dload_payload_reset()
that will free() these and other fields anyway.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-14 23:41:45 +10:00
Anatol Pomozov
a8bdc2e10a Build signature remote name based on the main payload name
The main payload final name might be affected by url redirects or
Content-Disposition HTTP header value.

We want to make sure that accompanion *.sig filename always matches the
package filename. So ignore finalname/Content-Disposition for the *.sig file.

It also helps to fix a corner case when the download URL does not contain
a filename and server provides Content-Disposition for the main payload
but not for the signature payload.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-14 23:39:37 +10:00
Anatol Pomozov
b01bcc7d3d Fallback to detached signatures during keyring check
Pacman has a 'key in keyring' verification step that makes sure the signatures
have a valid keyid. Currently pacman parses embedded package signatures only.

Add a fallback to detached signatures. If embedded signature is missing then it
tries to read corresponding *.sig file and get keyid from there.

Verification:
  debug: found cached pkg: /var/cache/pacman/pkg/glib-networking-2.64.3-1-x86_64.pkg.tar.zst
  debug: found detached signature /var/cache/pacman/pkg/glib-networking-2.64.3-1-x86_64.pkg.tar.zst.sig with size 310
  debug: found signature key: A5E9288C4FA415FA
  debug: looking up key A5E9288C4FA415FA locally
  debug: key lookup success, key exists

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-07 21:38:13 +10:00
Anatol Pomozov
f3dfba73d2 FS#33992: force download *.sig file if it does not exist in the cache
In case if *.pkg exists but *.sig file does not we still have to pass
the pkg to multi_download API.

To avoid redownloading *.pkg file we use CURLOPT_TIMECONDITION curl option.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-07 21:38:00 +10:00
Anatol Pomozov
78d6dcec6c Add a utility function to check whether a file exists in the cache
It is similar to _alpm_filecache_find() but does not return a
dynamically allocated memory to user. Thus the user does not need to
free this resource.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-07 21:36:56 +10:00
Anatol Pomozov
34ba8d984d Do not use counter for error tracking
Current code uses an incrementing counter to check whether a function
returned error:

  errors += some_function();
  if(errors) { goto finish }

Replace with a more standard variable
  errors = some_function();
  if(errors) { goto finish }

Rename 'errors' variable to a more typical 'ret'.

Avoid reporting both ALPM_EVENT_PKG_RETRIEVE_FAILED and
ALPM_EVENT_PKG_RETRIEVE_DONE in the error path.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-07 21:35:39 +10:00
Anatol Pomozov
f078c2d3bc Move signature payload creation to download engine
Until now callee of ALPM download functionality has been in charge of
payload creation both for the main file (e.g. *.pkg) and for the accompanied
*.sig file. One advantage of such solution is that all payloads are
independent and can be fetched in parallel thus exploiting the maximum
level of download parallelism.

To build *.sig file url we've been using a simple string concatenation:
$requested_url + ".sig". Unfortunately there are cases when it does not
work. For example an archlinux.org "Download From Mirror" link looks like
this https://www.archlinux.org/packages/core/x86_64/bash/download/ and
it gets redirected to some mirror. But if we append ".sig" to the end of
the link url and try to download it then archlinux.org returns 404 error.

To overcome this issue we need to follow redirects for the main payload
first, find the final url and only then append '.sig' suffix.
This implies 2 things:
 - the signature payload initialization need to be moved to dload.c
 as it is the place where we have access to the resolved url
 - *.sig is downloaded serially with the main payload and this reduces
 level of parallelism

Move *.sig payload creation to dload.c. Once the main payload is fetched
successfully we check if the callee asked to download the accompanied
signature. If yes - create a new payload and add it to mcurl.

*.sig payload does not use server list of the main payload and thus does
not support mirror failover. *.sig file comes from the same server as
the main payload.

Refactor event loop in curl_multi_download_internal() a bit. Instead of
relying on curl_multi_check_finished_download() to return number of new
payloads we simply rerun the loop iteration one more time to check if
there are any active downloads left.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-07-07 21:35:35 +10:00
Denton Liu
6b9c1b4d54 srcinfo.sh: remove trailing newline
When a .SRCINFO file is generated via `makepkg --printsrcinfo`, each
section is concluded with an empty line. This means that at the end of
the file, an empty line remains. This is considered a trailing
whitespace error. In fact, `git diff --check` will warn about this,
saying "new blank line at EOF."

Instead of closing each section off with an empty line, use the empty
line to separate sections, omitting the empty line at the end of the
file.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-26 16:00:26 +10:00
Anatol Pomozov
84723cab5d Cleanup the old sequential download code
All users of _alpm_download() have been refactored to the new API.
It is time to remove the old _alpm_download() functionality now.

This change also removes obsolete SIGPIPE signal handler functionality
(this is a leftover from libfetch days).

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
2020-06-26 15:59:16 +10:00
Anatol Pomozov
16d98d6577 Convert '-U pkg1 pkg2' codepath to parallel download
Installing remote packages using its URL is an interesting case for ALPM
API. Unlike package sync ('pacman -S pkg1 pkg2') '-U' does not deal with
server mirror list. Thus _alpm_multi_download() should be able to
handle file download for payloads that either have 'fileurl' field
or pair of fields ('servers' and 'filepath') set.

Signature for alpm_fetch_pkgurl() has changed and it accepts an
output list that is populated with filepaths to fetched packages.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
2020-06-26 15:59:08 +10:00
Eli Schwartz
59e751f72d doc/pacman.8: fix typo
Fixes FS#67000

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-19 15:38:24 +10:00
Allan McRae
7ba8e5f376 pacman-key: change signing key to RSA4096
RSA2048 may have been fine when this was written many moons ago, but time
this has a bump.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-15 19:17:41 +10:00
Eli Schwartz
02ae97b0da makepkg/repo-add: do not accept public-only keys for signing
If it's not listed by --list-secret-key we don't care if it has been
imported into your keyring, it's unusable. And you might not have a
private key at all in the no-keyid-specified case.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:57:59 +10:00
Eli Schwartz
899d39b635 makepkg/repo-add: handle GPGKEY with spaces
We pass this to gpg -u and this gpg option can accept a number of
different formats, not just the historical hexadecimal fingerprint we
assumed. We should not barf hard if a format is used which happens to
contain spaces.

This also fixes a validation bug. When we initially check if the desired
key is available, we don't quote spaces, so gpg goes ahead and treats
each space-separated string as a *different key* to search for,
returning partial matches, and returning success if at least one key is
found. But gpg --detach-sign -u will certainly not accept multiple keys!

Fixes FS#66949

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:56:30 +10:00
Eli Schwartz
bf458cced7 libmakepkg: fix regression in sending plain() output to stderr
In commit 882e707e40 we changed message
output to go to stdout by default, unless it was an error. The plain()
function doesn't *look* like an error function, but in practice it was
-- it's used to continue multiline messages, and all in-tree uses were
for warning/error.

This is a problem both because we're sending output to the wrong place,
and because in some cases, we were performing error logging from a
function which would otherwise return a value to be captured in a
variable using command substution.

Fix this and straighten out the API by providing two functions: one for
continuing msg output, and one which wraps this by sending output to
stderr, for continuing error output.

Change all callers to use the second function.
2020-06-11 10:54:54 +10:00
Eli Schwartz
381e113755 makepkg: correctly handle missing download clients
This was broken in commit 882e707e40,
which changed 'plain()' messages to go to stdout, which was then
captured as the download client in question: cmdline=("Aborting...").

The result was a very confusing error message e.g.

/usr/share/makepkg/source/file.sh: line 72: $'\E[1m': command not found

or with makepkg --nocolor:

/usr/share/makepkg/source/file.sh: line 72: Aborting...: command not found

The problem here is that we checked to see if an asynchronous subshell,
in our case <(...), failed, by checking if its captured stdout is
non-empty. Which is terrible, and also a limitation of old bash. But
bash 4.4 can use wait $! to retrieve the return value of an asynchronous
subshell. Now we target that as our minimum, we can sanely handle errors
in such functions.

Losing error messages on stdout by capturing them in a variable instead
of printing them, continues to be a problem, but this will be fixed
systematically in a later commit.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:53:24 +10:00
Eli Schwartz
817f9fb715 makepkg: guard against undefined git pinned sources
If something like source=(..."#commit=") is used, e.g. due to failed
variable expansion, we try to check out an empty refspec as nothing at
all, and end up just running "git checkout". This happens because we
fail at variable expansion too -- so let's quote our variables properly
and make sure git sees this as an empty refspec, so it can error out.

Also make sure it is interpreted as a ref instead of a path.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:50:52 +10:00
Eli Schwartz
3bd88821bb build: add libintl dependency to meson and the .pc file
In order to use gettext on systems where it is not part of libc, the
correct linker flags are needed in libalpm.pc (for static compilation).
This has never been the case.

The new meson build system currently only checks for ngettext in libc,
but does not fall back to searching for the existence of -lintl; add it
to the libalpm dependencies.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:47:14 +10:00
Filipe Laíns
e348ba3881 ci: cache packages
Results in ~40s saved in each job.

Signed-off-by: Filipe Laíns <lains@archlinux.org>
2020-06-11 10:30:15 +10:00
Allan McRae
40bbaead44 Revert "makepkg: drop duplicate reporting of missing dependencies"
This removed all information on dependency failures if the --syncdeps
flag was not used.  A better approach is needed.

This reverts commit 4246a4cc4f.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-11 10:27:54 +10:00
Allan McRae
5f6ef895b1 libalpm/signing.c: Fix calculation of packet size in parse_subpacket
Given RFC 4880 provides the code to do this calculation, I am not sure
how I managed to stuff that up!  This bug was only exposed when a
signature made with "include-key-block" was added to the Arch repos,
which provided a subpacket with the required size to hit this issue.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-01 10:59:08 +10:00
Dave Reisner
23b50d60e3 Avoid depending on side effects in assert(...) expressions
When building with -DNDEBUG, assert statements are compiled out to
no-ops. Thus, we can't depend on assignments or other computations
occurring inside the assert().

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-01 10:59:08 +10:00
Eli Schwartz
3674144a74 libmakepkg/strip: don't re-add the same debug source multiple times
It's either a waste of work, or triggers edge cases in some packages
(like coreutils-8.31) where the source file is readonly and cp gets a
permission denied error trying to overwrite it with an identical copy of
itself.

Also while we are at it, make the variable names be something readable,
because I could barely tell what this was doing while editing it.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-06-01 10:59:08 +10:00
Allan McRae
454ea02438 Remove autotools support
This removes support for autotools in favour of meson.
2020-06-01 10:59:08 +10:00
Levente Polyak
8ce142a255 makepkg: deterministic PKGINFO libprovides for multiple library versions
While iterating over the provides array, the find call for locating a
shared library may result in listing multiple entries which by itself
does not produce a stable deterministic order and may vary depending on
the underlying filesystem.
To provide a stable listing and a reproducible .PKGINFO file the result
of find is piped to sort with a static LC_ALL=C localisation.

Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-11 12:19:40 +10:00
Eli Schwartz
8e769ddb8a Log invalid conf settings as an error
This is not a warning, _parse_options() returns failure without even
parsing further lines and the attempted pacman/pacman-conf program
execution immediately aborts. Warnings are for when e.g. later on if we
don't recognize a setting at all, we skip over it and have enough
confidence in this to continue executing the program.

The current implementation results in pacman-conf aborting with:

warning: config file /etc/pacman.conf, line 60: invalid value for 'ParallelDownloads' : '2.5'
error parsing '/etc/pacman.conf'

or pacman -Syu aborting with the entirely more cryptic:

warning: config file /etc/pacman.conf, line 59: invalid value for 'ParallelDownloads' : '2.5'

and this isn't just a problem for the newly added ParallelDownloads
setting, either, you could get the same problem if you specified a
broken XferCommand, but that's harder as it's more accepting of input
and you probably don't hit this except with unbalanced quotes.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-11 12:19:40 +10:00
Eli Schwartz
7423b16604 pacman-conf: fix incomplete support for ILoveCandy
This was only partially implemented in the original implementation.
`pacman-conf | grep ILoveCandy` would tell you if it was set, but
querying directly by name would not.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-11 12:19:40 +10:00
Eli Schwartz
559590256c pacman-conf: add support for new ParallelDownloads config option
This was forgotten in the initial implementation, so it was impossible
to figure out the value from a script, or correctly roundtrip the
config file.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-11 12:19:40 +10:00
Anatol Pomozov
22a58f5420 Swap alpm_db_update() implementation to multiplexed version
Now when all callers of the old alpm_db_update() function are gone we can
remove this implementation. And then rename alpm_dbs_update() function to
alpm_db_update().

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:39 +10:00
Anatol Pomozov
557845bc97 Convert downloading databases to the new multiplexed API
Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:39 +10:00
Anatol Pomozov
0346e0eef2 Convert download packages logic to multiplexed API
Create a list of dload_payloads and pass it to the new _alpm_multi_*
interface.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:39 +10:00
Anatol Pomozov
b96e0df4dc Implement multibar UI
Multiplexed download requires ability to draw UI for multiple active progress
bars. To implement it we use ANSI codes to move cursor up/down and then
redraw the required progress bar.
`pacman_multibar_ui.active_downloads` field represents the list of active
downloads that correspond to progress bars.
`struct pacman_progress_bar` is a data structure for a progress bar.

In some cases (e.g. database downloads) we want to keep progress bars in order.
In some other cases (package downloads) we want to move completed items to the
top of the screen. Function `multibar_move_completed_up` allows to configure
such behavior.

Per discussion in the maillist we do not want to show download progress for
signature files.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:39 +10:00
Anatol Pomozov
c78eb48d91 Extend download callback interface with start/complete events
With the previous download interface the callback uses the first progress
event as 'download has started' signal. Unfortunately it does not work with
up-to-date files that never receive 'download progress' events.
Up-to-date database messages are currently handled in sync_syncdbs()
after the sequential download is completed and a result from ALPM is
received. But this is not going to work with multiplexed download
interface that returns the result only after all files are completed.

Another problem with 'first progress event is the beginning of the
download' is that such events time are unpredictable. Thus the UI progress
bar order might differ from what has been passed by client to
alpm_dbs_update() function. We actually want to keep the dbs progress bars
in a strict order.

To help to solve the given problems extend the download callback to
allow 2 more events - download started and completed. 'Download started'
events appear in the same order as in the list given by a client.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
64c4669f57 Introduce event types for start/end database list download
Multiplexed database/files downloads will use multiple progress bars.
The UI logic is quite complicated and printing error messages while
handling multiple progress bars is going to be challenging.

Instead we are going to save all ALPM error messages to a list and flush
it at the end of the download process. Use on_progress variable that
blocks error messages printing.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
6a331af27f Implement multiplexed download using mCURL
curl_multi_download_internal() is the main loop that creates up to
'ParallelDownloads' easy curl handles, adds them to mcurl and then
performs curl execution. This is when the paralled downloads happens.
Once any of the downloads complete the function checks its result.
In case if the download fails it initiates retry with the next server
from payload->servers list. At the download completion all the payload
resources are cleaned up.

curl_multi_check_finished_download() is essentially refactored version of
curl_download_internal() adopted for multi_curl. Once mcurl porting is
complete curl_download_internal() will be removed.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
1d42a8f954 Implement _alpm_multi_download
It is an equivalent of _alpm_download but accepts a list of payloads.

curl_multi_download_internal() is a stub at this moment and will be
implemented in the later commits of this patch series.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
fa68c33fa8 Inline dload_payload->curlerr field into a local variable
dload_payload->curlerr is a field that is used inside
curl_download_internal() function only. It can be converted to a local
variable.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
dc98d0ea09 Add multi_curl handle to ALPM global context
To be able to run multiple download in parallel efficiently we need to
use curl_multi interface [1]. It introduces a set of APIs over new type
of handler 'CURLM'.

Create CURLM object at the application start and set it to global ALPM
context.

The 'single-download' CURL handle moves to payload struct. A new CURL
handle is created for each payload with intention to be processed by CURLM.

Note that curl_download_internal() is not ported to CURLM interface due
to the fact that the function will go away soon.

[1] https://curl.haxx.se/libcurl/c/libcurl-multi.html

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
a8a1a1bb3e Introduce alpm_dbs_update() function for parallel db updates
This is an equivalent of alpm_db_update but for multiplexed (parallel)
download. The difference is that this function accepts list of
databases to update. And then ALPM internals download it in parallel if
possible.

Add a stub for _alpm_multi_download the function that will do parallel
payloads downloads in the future.

Introduce dload_payload->filepath field that contains url path to the
file we download. It is like fileurl field but does not contain
protocol/server part. The rationale for having this field is that with
the curl multidownload the server retry logic is going to move to a curl
callback. And the callback needs to be able to reconstruct the 'next'
fileurl. One will be able to do it by getting the next server url from
'servers' list and then concat with filepath. Once the 'parallel download'
refactoring is over 'fileurl' field will go away.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Anatol Pomozov
fe8e13341b Add config option to specify amount of parallel download streams
It includes pacman.conf new 'ParallelDownloads' option that
specifies how many concurrent downloads cURL starts in parallel.

Add alpm_option_set_parallel_downloads() ALPM function that
allows to set this config option programmatically.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Eli Schwartz
cffda331ad doc: remove vim modelines from BUILDINFO(5)
We (thought we) removed all modelines from the project in commit
860e4c4943, but apparently this one
sneaked in by virtue of this manpage being added to the project after
the "remove all the modelines" patch was submitted, but before it was
applied.

I must have failed to update the patch to remove it from this file also.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-09 11:58:21 +10:00
Eli Schwartz
411b12d09d editorconfig: set meson indentation style
meson.build gets two-space indents, but our global tabbed default was
overriding this.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-06 13:48:15 +10:00
Eli Schwartz
3a6c9220ff meson: use better check for debug builds
meson 0.48 added the 'debug' and 'optimization' builtin options, which
bidirectionally map to the buildtype, but in some cases where debug is
enabled, the builtype may be custom. Checking the 'debug' option lets us
detect every case currently detected, plus a few more, and does so in a
shorter and more concise manner.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-06 13:48:07 +10:00
Allan McRae
df30f10672 Convert gitlab valgrind runner to meson
Turns out environmental variables do get passed through fakechroot!

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-06 13:48:00 +10:00
Dave Reisner
cebda6d0ee meson: handle XFAIL tests outside of TAP
This change causes expected fail tests to actually fail by eliding the
'# TODO' from the test plan. In turn, we can now properly use
'should_fail' in the meson test() rule and see these expected fail
tests in the output:

Before:
  ...
  320/332 upgrade077.py                   OK 0.12679290771484375 s
  321/332 upgrade078.py                   OK 0.12620115280151367 s
  322/332 upgrade080.py                   OK 0.1252129077911377 s
  ...

  Ok:                 332
  Expected Fail:      0
  Fail:               0
  Unexpected Pass:    0
  Skipped:            0
  Timeout:            0

After:
  ...
  320/332 upgrade077.py                   OK 0.12679290771484375 s
  321/332 upgrade078.py                   EXPECTEDFAIL0.12620115280151367 s
  322/332 upgrade080.py                   OK 0.1252129077911377 s
  ...

  Ok:                 326
  Expected Fail:      6
  Fail:               0
  Unexpected Pass:    0
  Skipped:            0
  Timeout:            0

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-05 09:14:32 +10:00
Allan McRae
0b81fb64d3 Add Gitlab Runner configuration
Arch Linux is setting up a Gitlab instance.  This adds CI for the pacman
project, testing a range of configurations on Arch and basic builds on
Fedora and Debian.

Note that asciidoc is specifically not installed on the Debian run because
it is all sorts of broken...  Also, the defaults have been set to meson, with
two autotools tests that will soon be removed.

Original-file from: Andrew Gregory <andrew.gregory.8@gmail.com>
Altered-to-run-on-Arch-Gitlab by: Sven-Hendrik Haase <svenstaro@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-05-05 09:14:23 +10:00
Ivy Foster
969e1ab996 Add NoProgressbar to pacman.conf options
This is useful for dumb terminals that do not support escape
sequences.

Signed-off-by: Ivy Foster <escondida@iff.ink>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-29 13:57:53 +10:00
Rikard Falkeborn
2439222375 Constify some input pointers
Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-29 13:57:45 +10:00
Allan McRae
3ea7fdd96c pacman.8: Fix typo
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-15 11:05:55 +10:00
Carson Black
b323528491 Dull version colour numbers in summary
Version colour numbers are dulled in the non-verbose transaction summary
when colours are enabled.

To prevent a regression, this patch also adds handling of strings with
ANSI codes to string_length as to not break the transaction summary's
output functions when colour codes are in the package name strings.

Signed-off-by: Carson Black <uhhadd@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-15 11:05:55 +10:00
Allan McRae
6ba250e400 Use GOTO_ERR throughout
The GOTO_ERR define was added in commit 80ae8014 for use in future commits.
There are plenty of places in the code base it can be used, so convert them.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-13 23:44:46 +10:00
Allan McRae
0eda92c5d4 Use STRDUP for error checking in more places
Use STRDUP() over strdup() to catch memory allocation errors.

There are still some instances of strdup left, but these are in functions
that currently have no error path and would require a larger rework.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-13 23:44:46 +10:00
Rikard Falkeborn
1b32897453 Add REALLOC macro to simplify realloc error handling
realloc can fail just like the other memory allocation functions. Add a
macro to simplify handling of realloc failures, similar to the already
existing MALLOC, CALLOC, etc.

Replace the existing realloc uses with the new macro, allowing us to
move tedious error handling to the macro. Also, in be_package and
be_sync, this fixes hypothetical memory leaks (and thereafter null
pointer dereferences) in case realloc fails to shrink the allocated
memory.

Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-13 23:44:46 +10:00
Earnestly
1d39557aa0 Use noextract with pacman-conf NoExtract
Current code accidently uses noupgrade for the NoExtract directive.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-04-13 23:44:46 +10:00
Anatol Pomozov
87b74fcd82 Hide cursor while pacman is running
Use ASCII control codes to hide cursor at the pacman start and then
show the cursor when pacman finishes.

It helps to avoid annoying blinking when progress bars are re-drawn.

Cursor is reenabled if pacman expects user's input.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-13 11:24:01 +10:00
Allan McRae
ddd5b0a462 Add file and line number to RET_ERR{,_VOID}
Following the example of the recently added GOTO_ERR, adding the file and
line number in addition to the function name in our debug messages is
potentially useful.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-13 11:23:36 +10:00
Anatol Pomozov
80ae80149a Add GOTO_ERR() macro to set error and then goto a label
This is a macro similar to RET_ERR but useful in the case when we need
to record an error and then jump to some cleanup section.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-09 16:34:17 +10:00
Allan McRae
0deff63efa Remove unneeded goto cleanup
Since commit 2ee7a8d8, there is no cleanup needed in this function. Just
return instead of jumping to the cleanup label.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-09 14:51:38 +10:00
Anatol Pomozov
e578903b60 Move flushing 'output' list into separate function
'output' is a list of messages that pacman received but delayed printing
to avoid messing with UI.

Such functionality is useful for the upcoming multi-line progress bar
UI. Let's move it to a separate function.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-06 09:28:13 +10:00
Anatol Pomozov
aff69f43b1 Do not download files if find_dl_candidates() fails
One reason why the function returns an error is some repo
does not have any servers.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-03-05 16:15:44 +10:00
Anatol Pomozov
130db5cc9e Simplify construction of payloads in download_files
Currently, download_files() creates payloads for all packages then
iterates over them, calling download_single_file.  This can be
simplified by looping over packages and constructing the payload as needed.

Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-02-24 11:27:23 +10:00
Dave Reisner
4246a4cc4f makepkg: drop duplicate reporting of missing dependencies
When pacman fails to satisfy deps, we might see output like the
following:

==> Making package: spiderfoot 3.0-1 (Thu 06 Feb 2020 12:45:10 PM CET)
==> Checking runtime dependencies...
==> Installing missing dependencies...
error: target not found: python-pygexf
==> ERROR: 'pacman' failed to install missing dependencies.
==> Missing dependencies:
  -> python-dnspython
  -> python-exifread
  -> python-cherrypy
  -> python-beautifulsoup4
  -> python-netaddr
  -> python-pysocks
  -> python-ipwhois
  -> python-ipaddress
  -> python-phonenumbers
  -> python-pypdf2
  -> python-stem
  -> python-whois
  -> python-future
  -> python-pyopenssl
  -> python-docx
  -> python-pptx
  -> python-networkx
  -> python-cryptography
  -> python-secure
  -> python-pygexf
  -> python-adblockparser
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.

This is misleading -- the only truly missing package is python-pygexf,
but we fail to remove sync-able deps from our deplist and report
everything as if it were missing. Simply drop this extra reporting
because pacman already tells us exactly what couldn't be resolved.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-02-12 18:37:44 +10:00
Allan McRae
e76ec94083 build-aux/update-copyright 2019 2020
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-02-10 10:46:03 +10:00
Allan McRae
033405c963 Add pacman-hooks.5 man page symlink
Improve discoverability of the alpm-hooks man page by adding a pacman-hooks
symlink.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-02-10 10:38:38 +10:00
Anatol Pomozov
886a6677a8 Eliminate extra loop over dbs_sync
Current flow looks like
  loop dbs_sync {
    loop pkgs {
      if pkg.db == db then process(pkg, db)
    }
  }

Package sync transaction always has a counterpart in the dbs_sync list
(I cannot come up with a use-case when it is not true). So the loop can
be simplified to:

  loop pkgs {
    process(pkg, pkg.db)
  }

Tested: 'ninja test' & manually by using pacman with this patch for a
week
Signed-off-by: Anatol Pomozov <anatol.pomozov@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-31 00:38:36 +10:00
morganamilo
d0c487d4dc Docs docs docs
libalpm: move docs from .c files into alpm.h And fix/expand some
along the way.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-28 10:46:27 +10:00
morganamilo
0a25548cd0 libalpm: fix alpm_option_set_assumeinstalled
It looks like this function has never actually worked. The current list
is never set to NULL after being freed. So the new deps were just
appended to the already freed list, leading to a segfault.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-28 10:46:27 +10:00
Allan McRae
21af798604 makepkg: add CRC checksums and set these to be the default
Checksums arrays should be filled with values provided by upstream.  We
currently have md5 set as an unsecure default, and are constantly asked to
change it to sha2.  However, just changing the default to a stronger checksum
gives the user the impression that "makepkg -g" checksums are perfect.

Instead, change the default checksum to a CRC, to make it clear that any
checksum generated purely by "makepkg -g" is not ideal.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-28 10:46:26 +10:00
Allan McRae
c3852ff425 Note that checksums from "makepkg -g" are not ideal
Generating checksums with "makepkg -g" only determines that the user of a
PKGBUILD has the same file as the packager (assuming no collision).  This
means an upstream source could be maliciously changed and passed on as valid
by a PKGBUILD.  To avoid this, it is essential that any checksums used in
a PKGBUILD are as provided by upstream.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-28 10:45:42 +10:00
Allan McRae
e54617c7d5 Fix "pacman -U <url>" operations
Commit e6a6d307 detected complete part files by comparing a payload's
max_size to initial_size.  However, these values are also equal when we
use pacman -U on a URL as max_size is set to 0 in that case.  Add a further
condition to avoid that.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-27 17:53:50 +10:00
Eli Schwartz
d626a17ef9 makepkg: make per-package files containing '$pkgname' consistently work
Extracting function variables containing arbitrarily scoped variables of
arbitrary nature is a disaster, but let's at least cover the common case
of using the actual '$pkgname' in an install/changelog file. It's the
odd case of actually being basically justified use of disambiguating
between the same variable used in multiple different split packages...
and also, --printsrcinfo already uses and overwrites the variable
'pkgname' in pkgbuild_extract_to_srcinfo, so this "works" in .SRCINFO
but doesn't work in .src.tar.gz

It doesn't work in lint_pkgbuild either, but in that case the problem is
being too permissive, not too restrictive -- we might end up checking
the same file twice, and printing that it is missing twice.

Fixes FS#64932

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-27 17:53:50 +10:00
Allan McRae
2856a7dea3 Increase maximum database size
We previously has the maximum database size as 25MB.  This was set in the days
before repos had as many packages as they do now, and before we started
distributing files databases.  Increase this limit to 128MB.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-27 17:53:50 +10:00
Allan McRae
2e32d51a26 Remove unneeded ltmain patch
Many moons ago, libtool was bad - I mean worse than today!  It gobbled all
--as-needed and we ended up with an overlinked libalpm.  This was annoying,
particularly when dealing with soname bumps in libraries pacman/libalpm had
no business linking to. Luckily we had a fix, stolen from GNOME I believe.
And with that fix, we lived in harmony with libtool for many years.  Until one
day, unbeknownst to us, libtool was "fixed".  We kept applying our patch,
because it still applied, but it did worse than nothing.  It gobbled up our
other LDFLAGS, and our libalpm started missing out on RELRO and BIND_NOW.
This made the Arch Security Team unhappy. We will make them happy again by
stopping the patch.

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-27 17:53:50 +10:00
Allan McRae
75bf8e887c Increase meson test timeout
Running the testsuite using "PACTEST_VALGRIND=1 ninja test -C build", I ran
into the following failure:

161/332 smoke001.py                             TIMEOUT 30.02 s

I figure an i7 @ 3.10GHz should be enough to run our testsuite... so boost
the meson test timeout to 120 seconds (which should be enough time for
anyone...).

Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-27 17:53:50 +10:00
Allan McRae
0965023fc5 tests: Fix typo in test description 2020-01-27 17:53:50 +10:00
Eli Schwartz
acaed30e24 doc: reformat intro to VCS sources to distinguish the grammar
It's difficult to find it embedded inside a prose paragraph.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-07 11:40:32 +10:00
Eli Schwartz
ee8b4e9283 doc: clarify the format of a PKGBUILD source fragment
Currently, it could be misread to say that a fragment is literally
'commit', rather than 'commit=somehash'. Anecdotally this does not seem
to be obvious to everyone, and rewording it certainly doesn't hurt.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-07 11:40:32 +10:00
Eli Schwartz
435f5fc204 autotools: emit error message when autoconf-archive is missing
Forbid the AX_COMPARE_VERSION macro from being found in the output
configure script. If autoconf-archive is not installed when autoreconf
is run, the following error message is emitted:

configure.ac:231: error: possibly undefined macro: AX_COMPARE_VERSION
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2020-01-07 11:40:32 +10:00
Dave Reisner
9883015be2 Use c99 struct initialization to avoid memset calls
This is guaranteed less error prone than calling memset and hoping the
human gets the argument order correct.
2020-01-07 11:40:32 +10:00
Dave Reisner
ffb69c700a Ensure regex object is always initialized
This avoids a crash in filetarget_free() when regex support isn't
requested in files_search().
2020-01-07 11:40:32 +10:00
Ethan Sommer
56e0763c6d libmakepkg: use readelf instead of file for finding ELF file types
Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-12-11 11:02:15 +10:00
morganamilo
b7f61aa557 pacman: print error when -Fx is given invalid regex
When processing the targets for -Fx, compile all the regex ahead of
time, printing an error for each that failed to compile. Then, if they all
compiled successfully, continue with printing files.

Signed-off-by: morganamilo <morganamilo@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-12-02 13:56:11 +10:00
Eli Schwartz
0428f6213b makepkg: add the $startdir to package .BUILDINFO
This value is needed for reproducible builds. The reason is because
$BUILDDIR changes its behavior depending on whether it is the same as
$startdir, and the result is that we cannot know whether $srcdir (the
path that is potentially embedded into the final package) is actually
"$BUILDDIR/src" or "$BUILDDIR/$pkgbase/src".

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-26 11:49:24 +10:00
Allan McRae
1e23b45851 Fix documentation of alpm_mtree_next and remove libarchive exposure
The documentation of the return types of alpm_mtree_next was incorrect.
This extended into the relevant function in be_local.c.

Also, return explicit integer values, rather than the ARCHIVE_xxx values,
to avoid unnecessarily exposing frontends to libarchive internals (even
though it makes no functional difference).

Original-work-by: morganamilo <morganamilo@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-26 11:37:32 +10:00
Eli Schwartz
3073752bcd pactest: add environment option to run tests with valgrind
In autotools, if we wanted to run tests with valgrind, we used some Make
magic which passed arguments to pactest.py, but that doesn't work in
meson, because all arguments are encoded at configure time. Instead,
let's short-circuit the build runner logic entirely, and teach pactest
to default to running valgrind, when it detects an environment variable
set independent of the build system.

To run the tests with valgrind, we can now use:

PACTEST_VALGRIND=1 meson test -C builddir/

or

PACTEST_VALGRIND=1 make check

It is also possible, but confusing/inconsistent, to use

make check PY_LOG_FLAGS=--valgrind

We *could* add a meson option -Dvalgrind=true, but that is annoying to
reconfigure between test runs, and overall the consensus is it seems
simpler to opt in each time we want to run valgrind, as was already the
case.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-26 11:05:44 +10:00
Eli Schwartz
49a8e90bc7 meson: make non-symlink scripts install for real, and use a better wrapper
We now generate the scripts using their real name, install them using
meson's builtin facility instead of an install_script, and generate the
wrapper scripts in the root of the build directory, instead of a
subdirectory.

This gets us closer to resolving FS#64394.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-26 10:49:57 +10:00
Eli Schwartz
349c22d043 makepkg: fix regression that broke extraction of file:// sources
In commit 9c817b6549 we made these sources
extendable, and heuristically determined the correct extraction
functions to use. But our fallback for protos that didn't have an exact
extract_* function didn't take into account that 'extract_file' matches
an actual proto... so we passed the netfile in while the function
expected a file.

Solution: the function should expect a netfile too, thereby allowing us
to delay an attempted resolution of netfile -> file, to the one case
where it is actually used. This makes us slightly more efficient in the
non-file case, makes our functions a bit more consistent, and makes
file:// extraction work again.

Fixes FS#64648

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-26 10:22:16 +10:00
Allan McRae
55233b69c7 Improved documentation for alpm_db_search() parameters
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-22 09:35:31 +10:00
Allan McRae
8846574eda Fix leak in _alpm_db_search on error condition 2019-11-21 22:42:23 +10:00
Daniel T. Borelli
eaa2770c80 Dereference double pointer before assigning NULL
Daniel T. Borelli <danieltborelli@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-16 15:14:30 +10:00
Allan McRae
6fb233d0ee Add Eli to current maintainers
Also retire Dan into past major contributors.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-16 00:14:34 +10:00
Allan McRae
e6a6d30793 Handle .part files that are the size of the correct package
In rare cases, likely due to a well timed Ctrl+C, but possibly due to a
broken mirror, a ".part" file may have size at least that of the correct
package size.

When encountering this issue, currently pacman fails in different ways
depending on where the package falls in the list to download.  If last,
"wrong or NULL argument passed" error is reported, or a "invalid or
corrupt package" issue if not.

Capture these .part files, and remove the extension. This lets pacman
either use the package if valid, or offer to remove it if it fails checksum
or signature verification.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-15 23:29:20 +10:00
Allan McRae
b9faf65273 pactest: set package tar format to GNU_FORMAT
python-3.8 changed the default tar format to PAX_FORMAT. This caused
issues in our testsuite with package extraction of files with UTF-8
characters as we run the tests under the C locale.

sycn600.py:
error: error while reading package /tmp/pactest-xuhri4xa/var/cache/pacman/pkg/unicodechars-2.0-1.pkg.tar.gz: Pathname can't be converted from UTF-8 to current locale.

Set format back to GNU_FORMAT.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-12 16:14:57 +10:00
Allan McRae
540b19164b libalpm/sync.c: Do not download missing keys multiple times
We now store key structs of our missing key info, so can not search the list
for string matches. This caused missing keys to be downloaded once for every
package they signed.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-12 07:29:52 +10:00
morganamilo
27f354a787 pacman+libalpm: handle search errors
Previously, pacman treated no matches and an error during search the
same.

To fix this, alpm_db_search now returns its status as an int and
instead takes the to be returned list as a param. Allowing front ends to
easily differentiate between errors and no matches.

Signed-off-by: morganamilo <morganamilo@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-08 16:32:55 +10:00
morganamilo
94982d0061 pacman: make exact_file an int
We only ever use it as a bool, no need to pass a char* around.

Signed-off-by: morganamilo <morganamilo@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-07 21:43:15 +10:00
Ethan Sommer
1df22d3242 repo-add: use wc -c on stdin instead of file to avoid use of cut
Redirect file to stdin so wc -c doesn't print a file name that needs to
be stripped.

Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-07 21:40:44 +10:00
Eli Schwartz
7b73c4a75f build: remove use of handcrafted m4 in configuring scripts
Now that library/ is fully gone, we don't need this anymore.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-06 16:11:53 +10:00
Eli Schwartz
8c7043390f scripts/library: remove human_to_size
pkgdelta was the last user, and it is gone now.

Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-06 15:52:21 +10:00
Allan McRae
2dd7725f2a Remove "Generated from ...; do not edit by hand" from scripts
This is a useless piece of information.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-06 15:46:59 +10:00
Ethan Sommer
3a814ee6bc makepkg: replaces sed in-place with built in substitution
Reads PKGBUILD into an array and replaces the pkgver and pkgrel with
bash parameter substitution, then uses shell redirection to write to to
the file. Because shell redirection follows symlinks, this accomplishes
the same thing as the previous default of using the GNU-specific
--follow-symlinks sed flag.

Removes SEDPATH and SEDINPLACEFLAGS from the build systems as they are
not used elsewhere.

Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-06 12:03:38 +10:00
morganamilo
424129e8d1 pacman: clarify error when alpm fails to init
Currently pacman is hard coded to print the dbpath, then the error alpm
returned. Even though the error could really be caused by anything.

So instead just print the arugemnts given to alpm and not assume the
resulting error message is releated to either path.

Fixes FS#59595

Signed-off-by: morganamilo <morganamilo@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-06 10:54:54 +10:00
Allan McRae
27955a0fee Move update-copyright into build-aux
This is a useful function to update all our copyright years. Move
it into build-aux so that it is not lost in the switch to meson.

Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-05 15:25:52 +10:00
Ethan Sommer
1bfae7d14a libmakepkg: fix empty arguments in parseopts
Previously parseopts checked if there was an argument by checking
that the string was non-empty, resulting in empty arguments being
incorrectly considered non-existent. This change makes parseopts check
if arguments exist at all, rather than checking that they are non-empty

Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-05 14:47:15 +10:00
Matthew Sexton
091b244d0f pacman-key: ignore already lsigned/deleted keys
Added two new functions, key_is_lsigned() and key_is_revoked()
that check whether a key has been locally signed or revoked
respectively during --populate. If the key is already signed
or revoked, it is quietly ignored.

Suggested-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Matthew Sexton <wsdmatty@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-05 14:16:31 +10:00
Matthew Sexton
e1f5f21983 pacman-key: hide lsign and revoke output behind --verbose
To cut down on spam during --populate, both locally signing and
revoking keys now hide the specific keys being signed or revoked,
but can be shown with --verbose. A count was added, to show the
number of keys signed/revoked during the process.

Partially Implements:
FS#64142 - pacman-key: make populate less noisy

Signed-off-by: Matthew Sexton <wsdmatty@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-05 14:13:10 +10:00
Ethan Sommer
7be7552329 libmakepkg: add optional argument support to parseopts
Adds a "?" suffix that can be used to indicate that an option's argument is
optional.

This allows options to have a default behaviour when the user doesn't
specify one, e.g.: --color=[when] being able to behave like --color=auto
when only --color is passed

Options with optional arguments given on the command line will be returned
in the form "--opt=optarg" and "-o=optarg". Despite that not being the
syntax for passing an argument with a shortopt (trying to pass -o=foo
would make -o's argument "=foo"), this is done to allow the caller to split
the option and its optarg easily

Signed-off-by: Ethan Sommer <e5ten.arch@gmail.com>
Reviewed-by: Dave Reisner <dreisner@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2019-11-04 10:55:23 +10:00
242 changed files with 11523 additions and 16593 deletions

View File

@@ -16,5 +16,9 @@ indent_style = tab
[{NEWS,HACKING}]
indent_style = space
[meson.build]
indent_style = space
indent_size = 2
[*.py]
indent_style = space

21
.gitignore vendored
View File

@@ -1,24 +1,3 @@
*~
*.o
ABOUT-NLS
aclocal.m4
autom4te.cache
config.h
config.h.in
config.log
config.status
config.status.lineno
configure
configure.lineno
cov-int
cscope.in.out
cscope.out
cscope.po.out
intl
libtool
Makefile
Makefile.in
pacman-*.tar.gz
root
stamp-h1
tags

119
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,119 @@
variables:
MAKEFLAGS: "-j10"
VERBOSE: 1
PACMAN_OPTS: --needed --noconfirm --cachedir .pkg-cache
cache:
key: pkgs-v1
paths:
# For some reason Gitlab CI only supports storing cache/artifacts in a path relative to the build directory
- .pkg-cache
.arch-test:
image: archlinux/base
before_script:
- >
pacman -Syu $PACMAN_OPTS
base-devel git
gpgme libarchive curl
python
fakeroot fakechroot
meson
arch:
extends: .arch-test
script:
- meson build
- ninja -C build
- fakechroot meson test -C build
arch-debug:
extends: .arch-test
script:
- meson --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
arch-docs:
extends: .arch-test
script:
- pacman -Syu $PACMAN_OPTS asciidoc
- meson -Ddoc=enabled build
- ninja -C build
arch-clang:
extends: .arch-test
script:
- pacman -Syu $PACMAN_OPTS clang
- CC=clang meson build
- ninja -C build
- fakechroot meson test -C build
arch-valgrind:
extends: .arch-test
script:
- pacman -Syu --needed --noconfirm valgrind
- meson build
- ninja -C build
- PACTEST_VALGRIND=1 fakechroot meson test -C build
arch-nettle:
extends: .arch-test
script:
- meson -Dcrypto=nettle --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
arch-no-gpg:
extends: .arch-test
script:
- meson -Dgpgme=disabled --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
arch-no-curl:
extends: .arch-test
script:
- meson -Dcurl=disabled --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
arch-no-nls:
extends: .arch-test
script:
- meson -Di18n=false --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
debian:
image: debian:bullseye
cache: {}
before_script:
- apt update
- >
apt -y install --no-install-recommends
git pkg-config meson gcc libtool
libgpgme-dev libarchive-dev libcurl4-openssl-dev libssl-dev curl
gettext python3 python3-setuptools dash gawk ca-certificates
fakeroot fakechroot
script:
- meson --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build
fedora:
image: fedora
cache: {}
before_script:
- >
dnf -y install
git findutils patch sed
meson gcc libtool
gpgme-devel libarchive-devel libcurl-devel openssl-devel gettext-devel
asciidoc python3 dash gawk
fakeroot fakechroot
perl-Module-Load-Conditional
script:
- meson --buildtype=debug build
- ninja -C build
- fakechroot meson test -C build

13
HACKING
View File

@@ -176,16 +176,3 @@ For pacman:
-------------------------------------------
Never directly include config.h. This will always be added via Makefiles.
GDB and Valgrind Usage
~~~~~~~~~~~~~~~~~~~~~~
When using GDB or valgrind on pacman, you will want to run it on the actual
binary rather than the shell script wrapper produced by libtool. The actual
binary lives at `src/pacman/.libs/lt-pacman`, and will exist after running
`./src/pacman/pacman` at least once.
For example, to run valgrind:
./src/pacman/pacman
valgrind --leak-check=full -- src/pacman/.libs/lt-pacman -Syu

370
INSTALL
View File

@@ -1,370 +0,0 @@
Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View File

@@ -1,85 +0,0 @@
SUBDIRS = lib/libalpm src/util src/pacman scripts etc test/pacman test/util test/scripts
if WANT_DOC
SUBDIRS += doc
endif
DIST_SUBDIRS = $(SUBDIRS) src/common
ACLOCAL_AMFLAGS = -I m4 --install
AM_MAKEFLAGS = --no-print-directory
# Make sure we test and build manpages when doing distcheck
DISTCHECK_CONFIGURE_FLAGS = --enable-doc --disable-git-version \
bashcompdir='$${prefix}/share/bash-completion/completions'
# Some files automatically included, so they aren't specified below:
# AUTHORS, COPYING, NEWS, README
EXTRA_DIST = \
HACKING test/tap.sh \
meson.build meson_options.txt \
build-aux/edit-script.sh.in \
build-aux/meson-install-script.sh \
build-aux/meson-make-symlink.sh \
build-aux/script-wrapper.sh.in
# Sample makepkg prototype files
pkgdatadir = ${datadir}/${PACKAGE}
dist_pkgdata_DATA = \
proto/PKGBUILD.proto \
proto/PKGBUILD-split.proto \
proto/PKGBUILD-vcs.proto \
proto/proto.install
$(top_srcdir)/test/pacman/tests/TESTS: $(wildcard test/pacman/tests/*.py)
@printf "TESTS += %s\n" $^ | LC_ALL=C sort -u > "$@"
TESTS = test/scripts/parseopts_test.sh \
test/scripts/human_to_size_test.sh \
test/scripts/makepkg-template_test.sh \
test/scripts/pacman-db-upgrade-v9.py \
test/util/vercmptest.sh
include $(top_srcdir)/test/pacman/tests/TESTS
TEST_SUITE_LOG = test/test-suite.log
TEST_EXTENSIONS = .py
AM_TESTS_ENVIRONMENT = \
PMTEST_UTIL_DIR=$(top_builddir)/src/util/; export PMTEST_UTIL_DIR; \
PMTEST_SCRIPT_DIR=$(top_builddir)/scripts/; export PMTEST_SCRIPT_DIR; \
PMTEST_SCRIPTLIB_DIR=$(top_srcdir)/scripts/library/; export PMTEST_SCRIPTLIB_DIR; \
PMTEST_LIBMAKEPKG_DIR=$(top_builddir)/scripts/libmakepkg/; export PMTEST_LIBMAKEPKG_DIR;
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
$(top_srcdir)/build-aux/tap-driver.sh
PY_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) \
$(top_srcdir)/build-aux/tap-driver.sh
PY_LOG_COMPILER = $(PYTHON) $(top_srcdir)/test/pacman/pactest.py
AM_PY_LOG_FLAGS = \
--scriptlet-shell $(SCRIPTLET_SHELL) \
--ldconfig $(LDCONFIG) \
--bindir $(top_builddir)/src/pacman \
--bindir $(top_builddir)/scripts
if !HAVE_LIBGPGME
AM_PY_LOG_FLAGS += --without-gpg
endif
if !HAVE_LIBCURL
AM_PY_LOG_FLAGS += --without-curl
endif
# create the pacman DB, cache, makepkg-template and system hook directories upon install
install-data-local:
for dir in "$(DESTDIR)$(localstatedir)/lib/pacman" "$(DESTDIR)$(localstatedir)/cache/pacman/pkg" \
"$(DESTDIR)$(datarootdir)/makepkg-template" "$(DESTDIR)$(datarootdir)/libalpm/hooks"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
update-po:
$(MAKE) -C lib/libalpm/po update-po
$(MAKE) -C scripts/po update-po
$(MAKE) -C src/pacman/po update-po
update-copyright:
for file in $(shell sh -c 'git grep -l "Copyright .* Pacman Development" | grep -v "\.po"'); do \
sed -i -e "/Copyright (/s/-$(OLD)/-$(NEW)/" -e "/Copyright (/s/ $(OLD)/ $(OLD)-$(NEW)/" "$$file"; \
done
.PHONY: update-po update-copyright

30
NEWS
View File

@@ -1,35 +1,5 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
5.2.2 - fix pacman test suite under python 3.8
- only prompt to import new keys once in a transaction
- fix handling of fully downloaded .part files
- increase maximum database size (FS#65197)
- fix segfault in alpm_option_set_assumeinstalled
- change config parsing warnings to errors to match actual
behavior
- fix key extraction for signatures with two-octet sub-packet
headers
- fix documentation typos (FS#67000)
- change master signing key to RSA4096
- improve error message when building without autoconf-archive
- pacman-conf:
- allow querying ILoveCandy individually
- fix querying NoExtract individually
- makepkg:
- fix seccmp-related error while stripping binaries (FS#65100)
- fix extraction of file:// sources (FS#64648)
- allow $pkgname in install and changelog file names (FS#64932)
- sort libprovides for reproducibility
- strip: don't re-add the same debug source multiple times
- error on empty refspecs in git sources
- correctly handle missing download clients
- fix splitting multi-line error messages across stdout and
stderr
- handle GPGKEY with spaces (FS#66949)
- do not accept public-only keys for signing
- repo-add:
- handle GPGKEY with spaces (FS#66949)
- do not accept public-only keys for signing
5.2.1 - fix segfault on importing PGP keys for -U operations
- fix distribution of meson files
- fix inode command for darwin/bsd

14
README
View File

@@ -655,3 +655,17 @@ API CHANGES BETWEEN 5.1 AND 5.2
- alpm_errno_t - added member ALPM_ERR_MISSING_CAPABILITY_SIGNATURES
- alpm_sync_newversion() replaced with alpm_sync_get_new_version() which
does not filter on any ALPM_DB_USAGE_*.
API CHANGES BETWEEN 5.2 AND 6.0
===============================
[REMOVED]
- ALPM_EVENT_PKGDOWNLOAD_START, ALPM_EVENT_PKGDOWNLOAD_DONE, ALPM_EVENT_PKGDOWNLOAD_FAILED
[CHANGED]
- alpm_db_update() changed its signature and now accepts a list of databases
rather than a single database. This is need to handle database downloading
in a multiplexed way.
[ADDED]

View File

@@ -1,22 +1,21 @@
The following checklist should be used for making a pacman release.
- Ensure "make distcheck" succeeds
- Ensure "ninja dist" succeeds
- Call a freeze to development.
- Send translation updates to Transifex at least two weeks before a major
release (see below). At this stage, strings can only be changed for a
major issue.
- Update NEWS and README files
- Pull translation updates from Transifex
- Update version in configure.ac as described in file
- Update version in meson.build as described in file
- Update doc/index.asciidoc
- Create a signed git tag (git tag -s vX.Y.Z -m "commit message")
- Create and sign release tarballs (generate with "make distcheck")
- In addition to the standard autotools toolchain, autoconf-archive is needed
- Create and sign release tarballs (generate with "ninja dist")
- Update pacman website
Transifex updates are handled using the transifex client. The basic process is:
- Pull updates from transifex ("tx pull -a -f --minimum-perc 75")
- Update po files ("make update-po")
- Update po files ("./build-aux/update-po")
- Fix all translation errors found
- Add any new locales to the relevant LINGUAS file
- Optional: Make any manual changes needed (e.g. fixing spacing in a string)

View File

@@ -1,5 +0,0 @@
#!/bin/sh -x
autoreconf -i
exit 0

View File

@@ -20,9 +20,6 @@ mode=$3
-e "s|@DEBUGSUFFIX[@]|@DEBUGSUFFIX@|g" \
-e "s|@INODECMD[@]|@INODECMD@|g" \
-e "s|@FILECMD[@]|@FILECMD@|g" \
-e "s|@SEDINPLACEFLAGS[@]|@SEDINPLACEFLAGS@|g" \
-e "s|@SEDPATH[@]|@SEDPATH@|g" \
-e "s|@configure_input[@]|Generated from ${input##*/}; do not edit by hand.|g" \
"$input" >"$output"
if [[ $mode ]]; then

View File

@@ -1,6 +0,0 @@
#!/bin/sh
built_script=$1
dest_path=$2
install -Dm755 "$built_script" "$DESTDIR/$dest_path"

8
build-aux/update-copyright Executable file
View File

@@ -0,0 +1,8 @@
#! /bin/sh
OLD=$1
NEW=$2
for file in $(git grep -l "Copyright .* Pacman Development" | grep -v "\.po"); do \
sed -i -e "/Copyright (/s/-${OLD}/-${NEW}/" -e "/Copyright (/s/ ${OLD}/ ${OLD}-${NEW}/" "$file"
done

View File

@@ -1,605 +0,0 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
# Minimum version of autoconf required
AC_PREREQ(2.64)
# UPDATING VERSION NUMBERS FOR RELEASES
#
# libalpm:
# current
# The most recent interface number that this library implements.
# revision
# The implementation number of the current interface.
# age
# The difference between the newest and oldest interfaces that this library
# implements. In other words, the library implements all the interface
# numbers in the range from number current - age to current.
#
# 1. Start with version information of `0:0:0' for each libtool library.
# 2. Update the version information only immediately before a public release of
# your software. More frequent updates are unnecessary, and only guarantee
# that the current interface number gets larger faster.
# 3. If the library source code has changed at all since the last update, then
# increment revision (`c:r:a' becomes `c:r+1:a').
# 4. If any interfaces have been added, removed, or changed since the last
# update, increment current, and set revision to 0.
# 5. If any interfaces have been added since the last public release, then
# increment age.
# 6. If any interfaces have been removed since the last public release, then
# set age to 0.
#
# pacman:
# Extreme huge major changes:
# pacman_version_major += 1
# pacman_version_minor = 0
# pacman_version_micro = 0
#
# Real releases:
# pacman_version_minor += 1
# pacman_version_micro = 0
#
# Bugfix releases:
# pacman_version_micro += 1
m4_define([lib_current], [12])
m4_define([lib_revision], [2])
m4_define([lib_age], [0])
m4_define([pacman_version_major], [5])
m4_define([pacman_version_minor], [2])
m4_define([pacman_version_micro], [2])
m4_define([pacman_version],
[pacman_version_major.pacman_version_minor.pacman_version_micro])
# Autoconf initialization
AC_INIT([pacman], [pacman_version], [pacman-dev@archlinux.org])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])
AC_REQUIRE_AUX_FILE([tap-driver.sh])
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([1.11 foreign])
AM_SILENT_RULES([yes])
LT_INIT
LIB_VERSION=`expr lib_current - lib_age`.lib_age.lib_revision
LIB_VERSION_INFO="lib_current:lib_revision:lib_age"
# Respect empty CFLAGS during compiler tests
if test "x$CFLAGS" = "x"; then
CFLAGS=""
fi
# Set substitution values for version stuff in Makefiles and anywhere else,
# and put LIB_VERSION in config.h
AC_SUBST(LIB_VERSION)
AC_SUBST(LIB_VERSION_INFO)
AC_DEFINE_UNQUOTED([LIB_VERSION], ["$LIB_VERSION"], [libalpm version number])
# Help line for root directory
AC_ARG_WITH(root-dir,
AS_HELP_STRING([--with-root-dir=path], [set the location of the root operating directory]),
[ROOTDIR=$withval], [ROOTDIR=/])
# Help line for package extension
AC_ARG_WITH(pkg-ext,
AS_HELP_STRING([--with-pkg-ext=ext], [set the file extension used by packages]),
[PKGEXT=$withval], [PKGEXT=.pkg.tar.gz])
# Help line for source package directory
AC_ARG_WITH(src-ext,
AS_HELP_STRING([--with-src-ext=ext], [set the file extension used by source packages]),
[SRCEXT=$withval], [SRCEXT=.src.tar.gz])
# Help line for buildscript filename
AC_ARG_WITH(buildscript,
AS_HELP_STRING([--with-buildscript=name], [set the build script name used by makepkg]),
[BUILDSCRIPT=$withval], [BUILDSCRIPT=PKGBUILD])
# Help line for buildscript filename
AC_ARG_WITH(makepkg-template-dir,
AS_HELP_STRING([--with-makepkg-template-dir=name], [set the template dir used by makepkg-template]),
[TEMPLATE_DIR=$withval], [TEMPLATE_DIR=${datarootdir}/makepkg-template])
# Help line for debug package suffix
AC_ARG_WITH(debug-suffix,
AS_HELP_STRING([--with-debug-suffix=name], [set the suffix for split debugging symbol packages used by makepkg]),
[DEBUGSUFFIX=$withval], [DEBUGSUFFIX=debug])
# Help line for changing shell used to run install scriptlets
AC_ARG_WITH(scriptlet-shell,
AS_HELP_STRING([--with-scriptlet-shell=shell],
[set the full path to the shell used to run install scriptlets]),
[SCRIPTLET_SHELL=$withval], [SCRIPTLET_SHELL=/bin/sh])
# Help line for ldconfig path
AC_ARG_WITH(ldconfig,
AS_HELP_STRING([--with-ldconfig=path],
[set the full path to ldconfig]),
[LDCONFIG=$withval], [LDCONFIG=/sbin/ldconfig])
# Help line for determining whether file is seccomp-enabled
AC_ARG_WITH(file-seccomp,
AS_HELP_STRING([--with-file-seccomp={yes|no|auto}],
[determine whether file is seccomp-enabled @<:@default=auto@:>@]),
[with_file_seccomp=$withval], [with_file_seccomp=auto])
# Help line for selecting a crypto library
AC_ARG_WITH(crypto,
AS_HELP_STRING([--with-crypto={openssl|nettle}],
[select crypto implementation @<:@default=openssl@:>@]),
[with_crypto=$withval], [with_crypto=openssl])
# Help line for using gpgme
AC_ARG_WITH(gpgme,
AS_HELP_STRING([--with-gpgme], [use GPGME for PGP signature verification]),
[], [with_gpgme=check])
# Help line for using libcurl
AC_ARG_WITH(libcurl,
AS_HELP_STRING([--with-libcurl], [use libcurl for the internal downloader]),
[], [with_libcurl=check])
# Help line for documentation
AC_ARG_ENABLE(doc,
AS_HELP_STRING([--disable-doc], [prevent make from looking at doc/ dir]),
[wantdoc=$enableval], [wantdoc=yes])
# Help line for doxygen
AC_ARG_ENABLE(doxygen,
AS_HELP_STRING([--enable-doxygen], [build your own API docs via Doxygen]),
[wantdoxygen=$enableval], [wantdoxygen=no])
# Help line for debug
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug], [enable debugging support]),
[debug=$enableval], [debug=no])
# Help line for compiler warning flags
AC_ARG_ENABLE(warningflags,
AS_HELP_STRING([--enable-warningflags], [enable extra compiler warning flags]),
[warningflags=$enableval], [warningflags=no])
# Help line for using git version in pacman version string
AC_ARG_ENABLE(git-version,
AS_HELP_STRING([--enable-git-version],
[enable use of git version in version string if available]),
[wantgitver=$enableval], [wantgitver=no])
# Enable large file support if available (must be enabled before
# testing compilation against gpgme).
AC_SYS_LARGEFILE
# Record large file flags in pkgconfig file
if test "$enable_largefile" != no; then
if test "$ac_cv_sys_file_offset_bits" != 'no'; then
LFS_CFLAGS="-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
fi
fi
AC_SUBST(LFS_CFLAGS)
# Checks for programs.
AC_PROG_AWK
AC_PROG_CC_C99
AC_PROG_INSTALL
AC_CHECK_PROGS([PYTHON], [python3 python], [false])
AC_PATH_PROGS([BASH_SHELL], [bash bash4], [false])
# check for perl 5.10.1 (needed by makepkg-template)
AC_PATH_PROG([PERL],[perl])
AC_DEFUN([AX_PROG_PERL_VERSION],
[AC_CACHE_CHECK([for Perl version $1 or later], [ax_cv_prog_perl_version],
[AS_IF(["$PERL" -e 'require v$1;' >/dev/null 2>&1],
[ax_cv_prog_perl_version=yes],
[ax_cv_prog_perl_version=no])])
AS_IF([test x"$ax_cv_prog_perl_version" = xyes], [$2], [$3])])
AX_PROG_PERL_VERSION([5.10.1], [], [AC_MSG_ERROR([perl is too old])])
AS_IF([test "x$BASH_SHELL" = "xfalse"],
AC_MSG_WARN([*** bash >= 4.4.0 is required for pacman scripts]),
[bash_version_major=`$BASH_SHELL -c 'echo "${BASH_VERSINFO[[0]]}"'`
bash_version_minor=`$BASH_SHELL -c 'echo "${BASH_VERSINFO[[1]]}"'`
ok=yes
if test "$bash_version_major" -lt 4; then
ok=no
fi
if test "$bash_version_major" -eq 4 && test "$bash_version_minor" -lt 4; then
ok=no
fi
if test "$ok" = "no"; then
AC_MSG_ERROR([*** bash >= 4.4.0 is required for pacman scripts])
fi
unset bash_version_major bash_version_minor ok])
# find installed gettext
AM_GNU_GETTEXT([external], [need-ngettext])
AM_GNU_GETTEXT_VERSION(0.13.1)
AC_CHECK_LIB([m], [fabs], ,
AC_MSG_ERROR([libm is needed to compile pacman!]))
PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir], ,
bashcompdir="${datarootdir}/bash-completion/completions")
# Check for libarchive
PKG_CHECK_MODULES(LIBARCHIVE, [libarchive >= 3.0.0], ,
AC_MSG_ERROR([*** libarchive >= 3.0.0 is needed to compile pacman!]))
m4_pattern_forbid([^AX_COMPARE_VERSION$])
# Check file for seccomp
if test "x$with_file_seccomp" = "xauto"; then
file_version="$(file --version| sed -n 's/^file-\(.*\)/\1/p')"
AX_COMPARE_VERSION([$file_version], [ge], [5.38], [with_file_seccomp=yes])
fi
if test "x$with_file_seccomp" = "xyes"; then
FILECMD="file -S"
else
FILECMD="file"
fi
AC_SUBST(FILECMD)
# Check for OpenSSL
have_openssl=no
have_nettle=no
if test "x$with_crypto" = "xnettle"; then
AC_SUBST(pc_crypto, [nettle])
PKG_CHECK_MODULES(NETTLE, [nettle],
[AC_DEFINE(HAVE_LIBNETTLE, 1, [Define whether to use nettle]) have_nettle=yes], have_nettle=no)
if test "x$have_nettle" = xno -a "x$with_crypto" = xnettle; then
AC_MSG_ERROR([*** nettle support requested but libraries not found])
fi
else if test "x$with_crypto" = "xopenssl"; then
AC_SUBST(pc_crypto, [libcrypto])
PKG_CHECK_MODULES(LIBSSL, [libcrypto],
[AC_DEFINE(HAVE_LIBSSL, 1, [Define if libcrypto is available]) have_openssl=yes], have_openssl=no)
if test "x$have_openssl" = xno; then
AC_MSG_ERROR([*** openssl support requested but libraries not found])
fi
else
AC_MSG_ERROR([*** unknown crypto support library requested - $with_crypto])
fi
fi
AM_CONDITIONAL(HAVE_LIBSSL, [test "$have_openssl" = "yes"])
AM_CONDITIONAL(HAVE_LIBNETTLE, [test "$have_nettle" = "yes"])
# Check for libcurl
have_libcurl=no
if test "x$with_libcurl" != "xno"; then
PKG_CHECK_MODULES(LIBCURL, [libcurl >= 7.32.0],
[AC_DEFINE(HAVE_LIBCURL, 1, [Define if libcurl is available]) have_libcurl=yes], have_libcurl=no)
if test "x$have_libcurl" = xno -a "x$with_libcurl" = xyes; then
AC_MSG_ERROR([*** libcurl >= 7.32.0 is required for internal downloader support])
fi
fi
AM_CONDITIONAL(HAVE_LIBCURL, [test "$have_libcurl" = "yes"])
# used to generate libalpm.pc
if test "x$have_libcurl" = xyes; then
AC_SUBST(pc_libcurl, [libcurl])
fi
# Check for gpgme
AC_MSG_CHECKING(whether to link with libgpgme)
AS_IF([test "x$with_gpgme" != "xno"],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
have_gpgme=no
if test "x$with_gpgme" != "xno"; then
PKG_CHECK_MODULES(GPGME, [gpgme],
[AC_DEFINE([HAVE_LIBGPGME], [1], [Define if gpgme should be used to provide GPG signature support.])
AC_SUBST(pc_gpgme, [gpgme])
have_gpgme=yes],
[AM_PATH_GPGME([1.3.0],
[LIBS_save="$LIBS"
CPPFLAGS_save="$CPPFLAGS"
CFLAGS_save="$CFLAGS"
LIBS="$LIBS $GPGME_LIBS"
CPPFLAGS="$CPPFLAGS $GPGME_CPPFLAGS"
CFLAGS="$CFLAGS $GPGME_CFLAGS"
AC_MSG_CHECKING([for sane gpgme])
AC_LINK_IFELSE(
[AC_LANG_PROGRAM(
[[#include <gpgme.h>]],
[[return gpgme_check_version("1.3.0");]])],
[AC_MSG_RESULT([yes])
have_gpgme=yes
AC_DEFINE([HAVE_LIBGPGME], [1], [Define if gpgme should be used to provide GPG signature support.])
AC_SUBST(pc_gpgme_libs, ["$GPGME_LIBS"])],
[AC_MSG_RESULT([no])
have_gpgme=no
unset GPGME_LIBS
unset GPGME_CFLAGS]
AS_IF([test "x$with_gpgme" = "xyes"],
[AC_MSG_FAILURE([*** gpgme >= 1.3.0 is needed for GPG signature support])])
)
LIBS="$LIBS_save"
CPPFLAGS="$CPPFLAGS_save"
CFLAGS="$CFLAGS_save"
unset CPPFLAGS_save
unset CFLAGS_save],)])
fi
AS_IF([test "x$have_gpgme" = xno -a "x$with_gpgme" = xyes],
[AC_MSG_FAILURE([--with-gpgme was given, but gpgme was not found])])
AM_CONDITIONAL([HAVE_LIBGPGME], [test "x$have_gpgme" = "xyes"])
# Checks for header files.
AC_CHECK_HEADERS([fcntl.h float.h glob.h langinfo.h libintl.h limits.h \
locale.h mntent.h netinet/in.h netinet/tcp.h \
stddef.h string.h sys/ioctl.h \
sys/mnttab.h sys/mount.h \
sys/param.h sys/statvfs.h sys/time.h sys/types.h \
sys/ucred.h syslog.h termios.h wchar.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_TYPE_INT64_T
AC_TYPE_MODE_T
AC_TYPE_OFF_T
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_STRUCT_TM
AC_TYPE_UID_T
AC_STRUCT_DIRENT_D_TYPE
PATH_MAX_DEFINED
# Checks for library functions.
AC_FUNC_FORK
AC_FUNC_GETMNTENT
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
AC_CHECK_FUNCS([dup2 getcwd getmntinfo gettimeofday memmove memset \
mkdir realpath regcomp rmdir setenv setlocale strcasecmp \
strchr strcspn strdup strerror strndup strnlen strrchr \
strsep strstr strtol swprintf tcflush wcwidth uname])
AC_CHECK_MEMBERS([struct stat.st_blksize],,,[[#include <sys/stat.h>]])
# For the diskspace code
FS_STATS_TYPE
AC_CHECK_MEMBERS([struct statvfs.f_flag],,,[[#include <sys/statvfs.h>]])
AC_CHECK_MEMBERS([struct statfs.f_flags],,,[[#include <sys/param.h>
#include <sys/mount.h>]])
# Check if we can use symbol visibility support in GCC
GCC_VISIBILITY_CC
# Host-dependant definitions
DEFAULT_SEDINPLACEFLAGS=" --follow-symlinks -i"
INODECMD="stat -c '%i %n'"
STRIP_BINARIES="--strip-all"
STRIP_SHARED="--strip-unneeded"
STRIP_STATIC="--strip-debug"
case "${host_os}" in
*bsd*)
INODECMD="stat -f '%i %N'"
DEFAULT_SEDINPLACEFLAGS=" -i \"\""
;;
darwin*)
host_os_darwin=yes
INODECMD="/usr/bin/stat -f '%i %N'"
DEFAULT_SEDINPLACEFLAGS=" -i ''"
STRIP_BINARIES=""
STRIP_SHARED="-S"
STRIP_STATIC="-S"
;;
esac
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
AC_PATH_PROGS([SEDPATH], [sed], [sed], [/usr/bin$PATH_SEPARATOR/bin] )
AC_SUBST(INODECMD)
AC_SUBST(STRIP_BINARIES)
AC_SUBST(STRIP_SHARED)
AC_SUBST(STRIP_STATIC)
# Flags for sed in place
if test "${SEDINPLACEFLAGS+set}" != "set"; then
SEDINPLACEFLAGS="${DEFAULT_SEDINPLACEFLAGS}"
fi
AC_ARG_VAR(SEDINPLACEFLAGS, [flags for sed, overriding the default])
# Variables plugged into makepkg.conf
CARCH="${host%%-*}"
CHOST="${host}"
AC_SUBST(CARCH)
AC_SUBST(CHOST)
# Check for documentation support and status
AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
AC_MSG_CHECKING([for building documentation])
if test "x$wantdoc" = "xyes" ; then
if test $ASCIIDOC ; then
AC_MSG_RESULT([yes, enabled by configure])
else
asciidoc="(warning : asciidoc not installed)"
AC_MSG_RESULT([yes $asciidoc])
fi
wantdoc=yes
else
AC_MSG_RESULT([no, disabled by configure])
wantdoc=no
fi
AM_CONDITIONAL(WANT_DOC, test "x$wantdoc" = "xyes")
# Check for doxygen support and status
AC_CHECK_PROGS([DOXYGEN], [doxygen])
AC_MSG_CHECKING([for doxygen])
if test "x$wantdoxygen" = "xyes" ; then
if test $DOXYGEN ; then
AC_MSG_RESULT([yes])
usedoxygen=yes
else
AC_MSG_RESULT([no, doxygen missing])
usedoxygen=no
fi
else
AC_MSG_RESULT([no, disabled by configure])
usedoxygen=no
fi
AM_CONDITIONAL(USE_DOXYGEN, test "x$usedoxygen" = "xyes")
# Enable or disable debug code
AC_MSG_CHECKING(for debug mode request)
if test "x$debug" = "xyes" ; then
AC_MSG_RESULT(yes)
AC_DEFINE([PACMAN_DEBUG], , [Enable debug code])
# Check for -fstack-protector availability
GCC_STACK_PROTECT_LIB
GCC_STACK_PROTECT_CC
GCC_STACK_CLASH_PROTECTION
GCC_FORTIFY_SOURCE_CC
WARNING_CFLAGS="-g -Wall -Werror"
else
AC_MSG_RESULT(no)
WARNING_CFLAGS="-Wall"
fi
# Enable or disable compiler warning flags
AC_MSG_CHECKING(for excessive compiler warning flags)
if test "x$warningflags" = "xyes" ; then
AC_MSG_RESULT(yes)
CFLAGS_ADD([-Wcast-align], [WARNING_CFLAGS])
CFLAGS_ADD([-Wclobbered], [WARNING_CFLAGS])
CFLAGS_ADD([-Wempty-body], [WARNING_CFLAGS])
CFLAGS_ADD([-Wfloat-equal], [WARNING_CFLAGS])
CFLAGS_ADD([-Wformat-nonliteral], [WARNING_CFLAGS])
CFLAGS_ADD([-Wformat-security], [WARNING_CFLAGS])
CFLAGS_ADD([-Wignored-qualifiers], [WARNING_CFLAGS])
CFLAGS_ADD([-Wimplicit-fallthrough], [WARNING_CFLAGS])
CFLAGS_ADD([-Winit-self], [WARNING_CFLAGS])
CFLAGS_ADD([-Wlogical-op], [WARNING_CFLAGS])
CFLAGS_ADD([-Wmissing-declarations], [WARNING_CFLAGS])
CFLAGS_ADD([-Wmissing-field-initializers], [WARNING_CFLAGS])
CFLAGS_ADD([-Wmissing-parameter-type], [WARNING_CFLAGS])
CFLAGS_ADD([-Wmissing-prototypes], [WARNING_CFLAGS])
CFLAGS_ADD([-Wold-style-declaration], [WARNING_CFLAGS])
CFLAGS_ADD([-Woverride-init], [WARNING_CFLAGS])
CFLAGS_ADD([-Wpointer-arith], [WARNING_CFLAGS])
CFLAGS_ADD([-Wredundant-decls], [WARNING_CFLAGS])
CFLAGS_ADD([-Wshadow], [WARNING_CFLAGS])
CFLAGS_ADD([-Wsign-compare], [WARNING_CFLAGS])
CFLAGS_ADD([-Wstrict-aliasing], [WARNING_CFLAGS])
CFLAGS_ADD([-Wstrict-overflow=5], [WARNING_CFLAGS])
CFLAGS_ADD([-Wstrict-prototypes], [WARNING_CFLAGS])
CFLAGS_ADD([-Wtype-limits], [WARNING_CFLAGS])
CFLAGS_ADD([-Wuninitialized], [WARNING_CFLAGS])
CFLAGS_ADD([-Wunused-but-set-parameter], [WARNING_CFLAGS])
CFLAGS_ADD([-Wunused-parameter], [WARNING_CFLAGS])
CFLAGS_ADD([-Wwrite-strings], [WARNING_CFLAGS])
else
AC_MSG_RESULT(no)
fi
# Enable or disable use of git version in pacman version string
AC_MSG_CHECKING(whether to use git version if available)
if test "x$wantgitver" = "xyes" ; then
AC_CHECK_PROGS([GIT], [git])
AC_CHECK_FILE([.git/], hasgitdir=yes)
usegitver=$ac_cv_file__git_
if test $GIT -a "x$hasgitdir" = "xyes"; then
AC_DEFINE([USE_GIT_VERSION], , [Use GIT version in version string])
fi
else
AC_MSG_RESULT([no, disabled by configure])
usegitver=no
fi
AM_CONDITIONAL(USE_GIT_VERSION, test "x$usegitver" = "xyes")
# Set root directory
AC_SUBST(ROOTDIR)
AC_DEFINE_UNQUOTED([ROOTDIR], "$ROOTDIR", [The location of the root operating directory])
# Set package file extension
AC_SUBST(PKGEXT)
AC_DEFINE_UNQUOTED([PKGEXT], "$PKGEXT", [The file extension used by pacman packages])
# Set source package file extension
AC_SUBST(SRCEXT)
AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman source packages])
# Set makepkg build script name
AC_SUBST(BUILDSCRIPT)
AC_DEFINE_UNQUOTED([BUILDSCRIPT], "$BUILDSCRIPT", [The build script name used by makepkg])
# Set makepkg-template template directory
AC_SUBST(TEMPLATE_DIR)
AC_DEFINE_UNQUOTED([TEMPLATE_DIR], "$TEMPLATE_DIR", [The template directory used by makepkg-teplate])
# Set makepkg split debugging symbol package suffix
AC_SUBST(DEBUGSUFFIX)
AC_DEFINE_UNQUOTED([DEBUGSUFFIX], "$DEBUGSUFFIX", [The suffix for debugging symbol packages used by makepkg])
# Set shell used by install scriptlets
AC_SUBST(SCRIPTLET_SHELL)
AC_DEFINE_UNQUOTED([SCRIPTLET_SHELL], "$SCRIPTLET_SHELL", [The full path of the shell used to run install scriptlets])
# Set ldconfig path
AC_SUBST(LDCONFIG)
AC_DEFINE_UNQUOTED([LDCONFIG], "$LDCONFIG", [The full path to ldconfig])
# Configuration files
AC_CONFIG_FILES([
lib/libalpm/Makefile
lib/libalpm/po/Makefile.in
lib/libalpm/libalpm.pc
src/common/Makefile
src/pacman/Makefile
src/pacman/po/Makefile.in
src/util/Makefile
scripts/Makefile
scripts/po/Makefile.in
doc/Makefile
etc/Makefile
test/pacman/Makefile
test/pacman/tests/Makefile
test/scripts/Makefile
test/util/Makefile
Makefile
])
AC_OUTPUT
echo "
${PACKAGE_NAME}:
Build information:
source code location : ${srcdir}
prefix : ${prefix}
sysconfdir : $(eval echo ${sysconfdir})
conf file : $(eval echo ${sysconfdir})/pacman.conf
localstatedir : $(eval echo ${localstatedir})
database dir : $(eval echo ${localstatedir})/lib/pacman/
cache dir : $(eval echo ${localstatedir})/cache/pacman/pkg/
compiler : ${CC}
preprocessor flags : ${CPPFLAGS}
compiler flags : ${WARNING_CFLAGS} ${CFLAGS}
library flags : ${LIBS} ${LIBSSL_LIBS} ${NETTLE_LIBS} ${LIBARCHIVE_LIBS} ${LIBCURL_LIBS} ${GPGME_LIBS}
linker flags : ${LDFLAGS}
Architecture : ${CARCH}
Host Type : ${CHOST}
File inode command : ${INODECMD}
In-place sed command : ${SEDPATH} ${SEDINPLACEFLAGS}
File seccomp command : ${FILECMD}
libalpm version : ${LIB_VERSION}
libalpm version info : ${LIB_VERSION_INFO}
pacman version : ${PACKAGE_VERSION}
using git version : ${usegitver}
Directory and file information:
root working directory : ${ROOTDIR}
package extension : ${PKGEXT}
source pkg extension : ${SRCEXT}
build script name : ${BUILDSCRIPT}
template directory : ${TEMPLATE_DIR}
Compilation options:
Use libcurl : ${have_libcurl}
Use GPGME : ${have_gpgme}
Use OpenSSL : ${have_openssl}
Use nettle : ${have_nettle}
Run make in doc/ dir : ${wantdoc} ${asciidoc}
Doxygen support : ${usedoxygen}
debug support : ${debug}
extra warning flags : ${warningflags}
use git version : ${wantgitver}
"

View File

@@ -1,6 +1,3 @@
/////
vim:set ts=4 sw=4 syntax=asciidoc noet spell spelllang=en_us:
/////
BUILDINFO(5)
============
@@ -53,6 +50,9 @@ BUILDINFO file format.
*builddir*::
The directory where the package was built.
*startdir*::
The directory from which makepkg was executed.
*buildenv (array)*::
The build environment specified in makepkg.conf.

View File

@@ -1,151 +0,0 @@
# We have to do some funny stuff here with the manpages. In order to ensure
# a dist tarball doesn't get put out there without manpages, we keep those
# files listed in EXTRA_DIST no matter what. However, we only add them to
# man_MANS if --enable-asciidoc and/or --enable-doxygen are used.
MANPAGES = \
alpm-hooks.5 \
pacman.8 \
makepkg.8 \
makepkg-template.1 \
repo-add.8 \
vercmp.8 \
pacman-key.8 \
PKGBUILD.5 \
makepkg.conf.5 \
pacman.conf.5 \
libalpm.3 \
BUILDINFO.5 \
pacman-conf.8
DOXYGEN_MANS = $(wildcard man3/*.3)
HTML_MANPAGES = $(addsuffix .html,$(MANPAGES))
ASCIIDOC_MANPAGES = $(addsuffix .asciidoc,$(MANPAGES))
HTML_OTHER = \
index.html \
submitting-patches.html \
translation-help.html \
HACKING.html
HTML_DOCS = \
$(HTML_MANPAGES) \
$(HTML_OTHER)
EXTRA_DIST = \
meson.build \
asciidoc.conf \
asciidoc-override.css \
PKGBUILD-example.txt \
footer.asciidoc \
index.asciidoc \
submitting-patches.asciidoc \
translation-help.asciidoc \
$(ASCIIDOC_MANPAGES) \
$(MANPAGES) \
$(DOXYGEN_MANS)
# Files that should be removed, but which Automake does not know.
MOSTLYCLEANFILES = *.xml $(MANPAGES) $(HTML_DOCS) repo-remove.8 website.tar.gz
# Ensure manpages are fresh when building a dist tarball
dist-hook:
$(MAKE) $(AM_MAKEFLAGS) clean
$(MAKE) $(AM_MAKEFLAGS) all
if USE_GIT_VERSION
GIT_VERSION := $(shell sh -c 'git describe --abbrev=4 --dirty | sed s/^v//')
REAL_PACKAGE_VERSION = $(GIT_VERSION)
else
REAL_PACKAGE_VERSION = $(PACKAGE_VERSION)
endif
man_MANS =
dist_man_MANS = $(MANPAGES)
if USE_DOXYGEN
man_MANS += $(DOXYGEN_MANS)
all-local: doxygen.in
Doxyfile: Doxyfile.in
sed 's,@OUTPUT_DIRECTORY@,./,' Doxyfile.in >Doxyfile
doxygen.in: Doxyfile
$(DOXYGEN) $(srcdir)/Doxyfile
endif
man: $(MANPAGES)
html: $(HTML_DOCS)
website: website.tar.gz
.PHONY: html website
website.tar.gz: html
$(AM_V_GEN)bsdtar czf $@ $(HTML_DOCS) \
asciidoc-override.css \
-C /etc/asciidoc/stylesheets/ \
asciidoc.css \
-C /etc/asciidoc/javascripts/ \
asciidoc.js \
-C /etc/asciidoc/ \
images
pkgdatadir = ${datadir}/${PACKAGE}
ASCIIDOC_OPTS = \
-f $(srcdir)/asciidoc.conf \
-a pacman_version="$(REAL_PACKAGE_VERSION)" \
-a pacman_date="`date +%Y-%m-%d`" \
-a srcext="$(SRCEXT)" \
-a pkgext="$(PKGEXT)" \
-a pkgdatadir=$(pkgdatadir) \
-a localstatedir=$(localstatedir) \
-a sysconfdir=$(sysconfdir) \
-a datarootdir=$(datarootdir) \
-a rootdir=$(ROOTDIR)
A2X_OPTS = \
--no-xmllint \
-d manpage \
-f manpage \
--xsltproc-opts='-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0'
# Generate manpages
%: %.asciidoc asciidoc.conf footer.asciidoc Makefile.am
$(AM_V_GEN)a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS) --out-file=./$@.xml" $(srcdir)/$@.asciidoc
# Generate HTML pages
%.html: %.asciidoc asciidoc.conf footer.asciidoc Makefile.am
$(AM_V_GEN)asciidoc $(ASCIIDOC_OPTS) -o - $*.asciidoc | \
sed -e 's/\r$$//' > $@
HACKING.html: ../HACKING
$(AM_V_GEN)asciidoc $(ASCIIDOC_OPTS) -o - ../HACKING | \
sed -e 's/\r$$//' > $@
# Customizations for certain HTML docs
%.html: ASCIIDOC_OPTS += -a linkcss -a toc -a icons -a max-width=960px -a stylesheet=asciidoc-override.css
%.8.html: ASCIIDOC_OPTS += -d manpage
%.5.html: ASCIIDOC_OPTS += -d manpage
%.3.html: ASCIIDOC_OPTS += -d manpage
# Custom dependency rules
PKGBUILD.5 PKGBUILD.5.html: PKGBUILD.5.asciidoc PKGBUILD-example.txt
# Manpages as symlinks
repo-remove.8: repo-add.8
$(RM) repo-remove.8
$(LN_S) repo-add.8 repo-remove.8
install-data-hook:
cd $(DESTDIR)$(mandir)/man8 && \
$(RM) repo-remove.8 && \
( $(LN_S) repo-add.8 repo-remove.8 || \
ln repo-add.8 repo-remove.8 || \
cp repo-add.8 repo-remove.8 )
uninstall-hook:
$(RM) $(DESTDIR)$(mandir)/man8/repo-remove.8

View File

@@ -118,7 +118,7 @@ systems (see below).
+
Additional architecture-specific sources can be added by appending an
underscore and the architecture name e.g., 'source_x86_64=()'. There must be a
corresponding integrity array with checksums, e.g. 'md5sums_x86_64=()'.
corresponding integrity array with checksums, e.g. 'cksums_x86_64=()'.
+
It is also possible to change the name of the downloaded file, which is helpful
with weird URLs and for handling multiple source files with the same
@@ -146,17 +146,19 @@ contain whitespace characters.
listed here will not be extracted with the rest of the source files. This
is useful for packages that use compressed data directly.
*md5sums (array)*::
This array contains an MD5 hash for every source file specified in the
*cksums (array)*::
This array contains CRC checksums for every source file specified in the
source array (in the same order). makepkg will use this to verify source
file integrity during subsequent builds. If 'SKIP' is put in the array
in place of a normal hash, the integrity check for that source file will
be skipped. To easily generate md5sums, run ``makepkg -g >> PKGBUILD''.
If desired, move the md5sums line to an appropriate location.
be skipped. To easily generate cksums, run ``makepkg -g >> PKGBUILD''.
If desired, move the cksums line to an appropriate location. Note that
checksums generated by "makepkg -g" should be verified using checksum
values provided by the software developer.
*sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (arrays)*::
*md5sums, sha1sums, sha224sums, sha256sums, sha384sums, sha512sums, b2sums (arrays)*::
Alternative integrity checks that makepkg supports; these all behave
similar to the md5sums option described above. To enable use and generation
similar to the cksums option described above. To enable use and generation
of these checksums, be sure to set up the `INTEGRITY_CHECK` option in
linkman:makepkg.conf[5].
@@ -466,11 +468,13 @@ reference with all of the available functions defined.
Using VCS Sources[[VCS]]
------------------------
Building a developmental version of a package using sources from a version
control system (VCS) is enabled by specifying the source in the form
`source=('directory::url#fragment?query')`. Currently makepkg supports the
Bazaar, Git, Subversion, and Mercurial version control systems. For other
version control systems, manual cloning of upstream repositories must be done
in the `prepare()` function.
control system (VCS) is enabled by specifying the source in the form:
source=('directory::url#fragment?query')
Currently makepkg supports the Bazaar, Git, Subversion, and Mercurial version
control systems. For other version control systems, manual cloning of upstream
repositories must be done in the `prepare()` function.
The source URL is divided into four components:
@@ -488,13 +492,16 @@ The source URL is divided into four components:
*fragment*::
(optional) Allows specifying a revision number or branch for makepkg to checkout
from the VCS. For example, to checkout a given revision, the source line would
have the format `source=(url#revision=123)`. The available fragments depends on
the VCS being used:
from the VCS. A fragment has the form `type=value`, for example to checkout a
given revision the source line would be `source=(url#revision=123)`. The
available types depends on the VCS being used:
*bzr*;;
revision (see `'bzr help revisionspec'` for details)
*fossil*;;
branch, commit, tag
*git*;;
branch, commit, tag

View File

@@ -18,14 +18,15 @@ Current maintainers:
* Allan McRae <allan@archlinux.org>
* Andrew Gregory <andrew.gregory.8@gmail.com>
* Dan McGee <dan@archlinux.org>
* Dave Reisner <dreisner@archlinux.org>
* Eli Schwartz <eschwartz@archlinux.org>
Past major contributors:
* Judd Vinet <jvinet@zeroflux.org>
* Aurelien Foret <aurelien@archlinux.org>
* Aaron Griffin <aaron@archlinux.org>
* Dan McGee <dan@archlinux.org>
* Xavier Chantry <shiningxc@gmail.com>
* Nagy Gabor <ngaba@bibl.u-szeged.hu>

View File

@@ -77,7 +77,6 @@ Releases
[frame="topbot",grid="none",options="header,autowidth"]
!======
!Version !Date
!5.2.2 !2020-06-23
!5.2.1 !2019-11-01
!5.2.0 !2019-10-21
!5.1.3 !2019-03-01
@@ -194,11 +193,11 @@ link:https://sources.archlinux.org/other/pacman/[]. To install, download the new
available source tarball, unpack it in a directory, and run the three magic
commands:
$ ./configure
$ make
# make install
$ meson build
$ ninja -C build
# ninja -C build install
You may wish to read the options presented by `./configure --help` in order to
You may wish to read the options presented by `meson` in order to
set appropriate paths and build options that are correct for your system.
Development

View File

@@ -274,7 +274,7 @@ Environment Variables
**GPGKEY=**"keyid"::
Specify a key to use when signing packages, overriding the GPGKEY setting
in linkman:makepkg.conf[5]
in linkman:makepkg.conf[5].
**SOURCE_DATE_EPOCH=**"<date>"::
Used for link:https://reproducible-builds.org/docs/[Reproducible Builds].
@@ -299,7 +299,7 @@ On exit, makepkg will return one of the following error codes.
Error in configuration file.
3::
User specified an invalid option
User specified an invalid option.
4::
Error in user-supplied function in PKGBUILD.

View File

@@ -192,7 +192,7 @@ Options
**INTEGRITY_CHECK=(**check1 ...**)**::
File integrity checks to use. Multiple checks may be specified; this
affects both generation and checking. The current valid options are:
`md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, and `b2`.
`ck`, `md5`, `sha1`, `sha224`, `sha256`, `sha384`, `sha512`, and `b2`.
**STRIP_BINARIES=**"--strip-all"::
Options to be used when stripping binaries. See linkman:strip[1]

View File

@@ -129,6 +129,10 @@ meson.add_install_script(MESON_MAKE_SYMLINK,
'repo-add.8',
join_paths(MANDIR, 'man8/repo-remove.8'))
meson.add_install_script(MESON_MAKE_SYMLINK,
'alpm-hooks.5',
join_paths(MANDIR, 'man5/pacman-hooks.5'))
doxygen = find_program('doxygen', required : get_option('doxygen'))
if doxygen.found() and not get_option('doxygen').disabled()
doxyconf = configuration_data()

View File

@@ -186,6 +186,10 @@ Options
*Color*::
Automatically enable colors only when pacman's output is on a tty.
*NoProgressBar*::
Disables progress bars. This is useful for terminals which do
not support escape characters.
*TotalDownload*::
When downloading, display the amount downloaded, download rate, ETA,
and completed percentage of the entire download list rather
@@ -205,6 +209,11 @@ Options
Disable defaults for low speed limit and timeout on downloads. Use this
if you have issues downloading files with proxy and/or security gateway.
*ParallelDownloads*::
Specifies number of concurrent download streams. The value needs to be a
positive integer. If this config option is not set then only one download
stream is used (i.e. downloads happen sequentially).
Repository Sections
-------------------

View File

@@ -1,27 +0,0 @@
dist_sysconf_DATA = makepkg.conf pacman.conf
EXTRA_DIST = makepkg.conf.in pacman.conf.in
# Files that should be removed, but which Automake does not know.
MOSTLYCLEANFILES = $(dist_sysconf_DATA)
SED_PROCESS = \
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
$(SED) \
-e 's|@sysconfdir[@]|$(sysconfdir)|g' \
-e 's|@localstatedir[@]|$(localstatedir)|g' \
-e 's|@prefix[@]|$(prefix)|g' \
-e 's|@PACKAGE_VERSION[@]|$(PACKAGE_VERSION)|g' \
-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
-e 's|@PKGEXT[@]|$(PKGEXT)|g' \
-e 's|@SRCEXT[@]|$(SRCEXT)|g' \
-e 's|@STRIP_BINARIES[@]|$(STRIP_BINARIES)|g' \
-e 's|@STRIP_SHARED[@]|$(STRIP_SHARED)|g' \
-e 's|@STRIP_STATIC[@]|$(STRIP_STATIC)|g' \
-e 's|@CARCH[@]|$(CARCH)|g' \
-e 's|@CHOST[@]|$(CHOST)|g' \
-e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \
-e 's|@ROOTDIR[@]|$(ROOTDIR)|g' \
< $< > $@
%.conf: %.conf.in Makefile
$(SED_PROCESS)

View File

@@ -24,6 +24,7 @@ DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
#-- The package required by makepkg to download VCS sources
# Format: 'protocol::package'
VCSCLIENTS=('bzr::bzr'
'fossil::fossil'
'git::git'
'hg::mercurial'
'svn::subversion')
@@ -52,7 +53,7 @@ CHOST="@CHOST@"
# BUILD ENVIRONMENT
#########################################################################
#
# Defaults: BUILDENV=(!distcc !color !ccache check !sign)
# Makepkg defaults: BUILDENV=(!distcc !color !ccache check !sign)
# A negated environment option will do the opposite of the comments below.
#
#-- distcc: Use the Distributed C/C++/ObjC compiler
@@ -75,7 +76,7 @@ BUILDENV=(!distcc color !ccache check !sign)
# These are default values for the options=() settings
#########################################################################
#
# Default: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug)
# Makepkg defaults: OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
@@ -89,8 +90,8 @@ BUILDENV=(!distcc color !ccache check !sign)
#
OPTIONS=(strip docs libtool staticlibs emptydirs zipman purge !debug)
#-- File integrity checks to use. Valid: md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(md5)
#-- File integrity checks to use. Valid: ck, md5, sha1, sha224, sha256, sha384, sha512, b2
INTEGRITY_CHECK=(ck)
#-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="@STRIP_BINARIES@"
#-- Options to be used when stripping shared libraries. See `man strip' for details.

View File

@@ -31,9 +31,11 @@ Architecture = auto
# Misc options
#UseSyslog
#Color
#NoProgressBar
#TotalDownload
CheckSpace
#VerbosePkgLists
ParallelDownloads = 5
# PGP signature checking
#SigLevel = Optional

View File

@@ -1,78 +0,0 @@
AUTOMAKE_OPTIONS = gnu
SUBDIRS = po
EXTRA_DIST = meson.build po/meson.build
lib_LTLIBRARIES = libalpm.la
include_HEADERS = alpm_list.h alpm.h
AM_CPPFLAGS = \
-imacros $(top_builddir)/config.h \
-DSYSHOOKDIR=\"@datarootdir@/libalpm/hooks/\" \
-DLOCALEDIR=\"@localedir@\"
AM_CFLAGS = -pedantic -D_GNU_SOURCE $(WARNING_CFLAGS)
if ENABLE_VISIBILITY_CC
if DARWIN
AM_CFLAGS += -fvisibility=hidden
else
AM_CFLAGS += -fvisibility=internal
endif
endif
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libalpm.pc
libalpm_la_SOURCES = \
add.h add.c \
alpm.h alpm.c \
alpm_list.h alpm_list.c \
backup.h backup.c \
base64.h base64.c \
be_local.c \
be_package.c \
be_sync.c \
conflict.h conflict.c \
db.h db.c \
deps.h deps.c \
diskspace.h diskspace.c \
dload.h dload.c \
error.c \
filelist.h filelist.c \
graph.h graph.c \
group.h group.c \
handle.h handle.c \
hook.h hook.c \
ini.h ini.c \
libarchive-compat.h \
log.h log.c \
package.h package.c \
pkghash.h pkghash.c \
rawstr.c \
remove.h remove.c \
signing.c signing.h \
sync.h sync.c \
trans.h trans.c \
util.h util.c \
util-common.h util-common.c \
version.c
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
libalpm_la_CFLAGS = \
$(AM_CFLAGS) \
$(GPGME_CFLAGS) \
$(LIBARCHIVE_CFLAGS) \
$(LIBCURL_CFLAGS) \
$(LIBSSL_CFLAGS) \
$(NETTLE_CFLAGS)
libalpm_la_LIBADD = \
$(LTLIBINTL) \
$(GPGME_LIBS) \
$(LIBARCHIVE_LIBS) \
$(LIBCURL_LIBS) \
$(LIBSSL_LIBS) \
$(NETTLE_LIBS)

View File

@@ -47,7 +47,6 @@
#include "remove.h"
#include "handle.h"
/** Add a package to the transaction. */
int SYMEXPORT alpm_add_pkg(alpm_handle_t *handle, alpm_pkg_t *pkg)
{
const char *pkgname, *pkgver;
@@ -484,8 +483,7 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
/* set up fake remove transaction */
if(_alpm_remove_single_package(handle, oldpkg, newpkg, 0, 0) == -1) {
handle->pm_errno = ALPM_ERR_TRANS_ABORT;
ret = -1;
goto cleanup;
return -1;
}
}
@@ -496,15 +494,13 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
"error: could not create database entry %s-%s\n",
newpkg->name, newpkg->version);
handle->pm_errno = ALPM_ERR_DB_WRITE;
ret = -1;
goto cleanup;
return -1;
}
fd = _alpm_open_archive(db->handle, pkgfile, &buf,
&archive, ALPM_ERR_PKG_OPEN);
if(fd < 0) {
ret = -1;
goto cleanup;
return -1;
}
/* save the cwd so we can restore it later */
@@ -522,8 +518,7 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
close(cwdfd);
}
close(fd);
ret = -1;
goto cleanup;
return -1;
}
if(trans->flags & ALPM_TRANS_FLAG_DBONLY) {
@@ -607,8 +602,7 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
"error: could not update database entry %s-%s\n",
newpkg->name, newpkg->version);
handle->pm_errno = ALPM_ERR_DB_WRITE;
ret = -1;
goto cleanup;
return -1;
}
if(_alpm_db_add_pkgincache(db, newpkg) == -1) {
@@ -654,7 +648,6 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
event.type = ALPM_EVENT_PACKAGE_OPERATION_DONE;
EVENT(handle, &event);
cleanup:
return ret;
}

View File

@@ -32,19 +32,6 @@
#include "log.h"
#include "util.h"
/** \addtogroup alpm_interface Interface Functions
* @brief Functions to initialize and release libalpm
* @{
*/
/** Initializes the library.
* Creates handle, connects to database and creates lockfile.
* This must be called before any other functions are called.
* @param root the root path for all filesystem operations
* @param dbpath the absolute path to the libalpm database
* @param err an optional variable to hold any error return codes
* @return a context handle on success, NULL on error, err will be set if provided
*/
alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
alpm_errno_t *err)
{
@@ -83,6 +70,13 @@ alpm_handle_t SYMEXPORT *alpm_initialize(const char *root, const char *dbpath,
goto cleanup;
}
#ifdef HAVE_LIBCURL
curl_global_init(CURL_GLOBAL_ALL);
myhandle->curlm = curl_multi_init();
#endif
myhandle->parallel_downloads = 1;
#ifdef ENABLE_NLS
bindtextdomain("libalpm", LOCALEDIR);
#endif
@@ -99,14 +93,6 @@ cleanup:
return NULL;
}
/** Release the library.
* Disconnects from the database, removes handle and lockfile
* This should be the last alpm call you make.
* After this returns, handle should be considered invalid and cannot be reused
* in any way.
* @param myhandle the context handle
* @return 0 on success, -1 on error
*/
int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
{
int ret = 0;
@@ -125,33 +111,22 @@ int SYMEXPORT alpm_release(alpm_handle_t *myhandle)
ret = -1;
}
_alpm_handle_unlock(myhandle);
_alpm_handle_free(myhandle);
#ifdef HAVE_LIBCURL
curl_multi_cleanup(myhandle->curlm);
curl_global_cleanup();
#endif
_alpm_handle_unlock(myhandle);
_alpm_handle_free(myhandle);
return ret;
}
/** @} */
/** @defgroup alpm_misc Miscellaneous Functions
* @brief Various libalpm functions
*/
/** Get the version of library.
* @return the library version, e.g. "6.0.4"
* */
const char SYMEXPORT *alpm_version(void)
{
return LIB_VERSION;
}
/** Get the capabilities of the library.
* @return a bitmask of the capabilities
* */
int SYMEXPORT alpm_capabilities(void)
{
return 0

View File

@@ -335,6 +335,11 @@ typedef enum _alpm_hook_when_t {
* Logging facilities
*/
/** \addtogroup alpm_log Logging Functions
* @brief Functions to log using libalpm
* @{
*/
/** Logging Levels */
typedef enum _alpm_loglevel_t {
ALPM_LOG_ERROR = 1,
@@ -345,9 +350,17 @@ typedef enum _alpm_loglevel_t {
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
/** A printf-like function for logging.
* @param handle the context handle
* @param prefix caller-specific prefix for the log
* @param fmt output format
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int alpm_logaction(alpm_handle_t *handle, const char *prefix,
const char *fmt, ...) __attribute__((format(printf, 3, 4)));
/** @} */
/**
* Type of events.
*/
@@ -389,21 +402,18 @@ typedef enum _alpm_event_type_t {
/** Scriptlet has printed information; See alpm_event_scriptlet_info_t for
* arguments. */
ALPM_EVENT_SCRIPTLET_INFO,
/** Files will be downloaded from a repository. */
ALPM_EVENT_RETRIEVE_START,
/** Files were downloaded from a repository. */
ALPM_EVENT_RETRIEVE_DONE,
/** Not all files were successfully downloaded from a repository. */
ALPM_EVENT_RETRIEVE_FAILED,
/** A file will be downloaded from a repository; See alpm_event_pkgdownload_t
* for arguments */
ALPM_EVENT_PKGDOWNLOAD_START,
/** A file was downloaded from a repository; See alpm_event_pkgdownload_t
* for arguments */
ALPM_EVENT_PKGDOWNLOAD_DONE,
/** A file failed to be downloaded from a repository; See
* alpm_event_pkgdownload_t for arguments */
ALPM_EVENT_PKGDOWNLOAD_FAILED,
/** Database files will be downloaded from a repository. */
ALPM_EVENT_DB_RETRIEVE_START,
/** Database files were downloaded from a repository. */
ALPM_EVENT_DB_RETRIEVE_DONE,
/** Not all database files were successfully downloaded from a repository. */
ALPM_EVENT_DB_RETRIEVE_FAILED,
/** Package files will be downloaded from a repository. */
ALPM_EVENT_PKG_RETRIEVE_START,
/** Package files were downloaded from a repository. */
ALPM_EVENT_PKG_RETRIEVE_DONE,
/** Not all package files were successfully downloaded from a repository. */
ALPM_EVENT_PKG_RETRIEVE_FAILED,
/** Disk space usage will be computed for a package. */
ALPM_EVENT_DISKSPACE_START,
/** Disk space usage was computed for a package. */
@@ -696,13 +706,42 @@ typedef void (*alpm_cb_progress)(alpm_progress_t, const char *, int, size_t, siz
* Downloading
*/
/* File download events.
* These events are reported by ALPM via download callback.
*/
typedef enum {
ALPM_DOWNLOAD_INIT, /* alpm initializes file download logic */
ALPM_DOWNLOAD_PROGRESS, /* download progress reported */
ALPM_DOWNLOAD_COMPLETED /* alpm is about to release data related to the file */
} alpm_download_event_type_t;
typedef struct {
int optional; /* whether this file is optional and thus the errors could be ignored */
} alpm_download_event_init_t;
typedef struct {
off_t downloaded; /* amount of data downloaded */
off_t total; /* total amount need to be downloaded */
} alpm_download_event_progress_t;
typedef struct {
/* total bytes in file */
off_t total;
/* download result code:
* 0 - download completed successfully
* 1 - the file is up-to-date
* -1 - error
*/
int result;
} alpm_download_event_completed_t;
/** Type of download progress callbacks.
* @param filename the name of the file being downloaded
* @param xfered the number of transferred bytes
* @param total the total number of bytes to transfer
* @param event the event type
* @param data the event data of type alpm_download_event_*_t
*/
typedef void (*alpm_cb_download)(const char *filename,
off_t xfered, off_t total);
alpm_download_event_type_t event, void *data);
typedef void (*alpm_cb_totaldl)(off_t total);
@@ -716,12 +755,17 @@ typedef void (*alpm_cb_totaldl)(off_t total);
typedef int (*alpm_cb_fetch)(const char *url, const char *localpath,
int force);
/** Fetch a remote pkg.
/** Fetch a list of remote packages.
* @param handle the context handle
* @param url URL of the package to download
* @return the downloaded filepath on success, NULL on error
* @param urls list of package URLs to download
* @param fetched list of filepaths to the fetched packages, each item
* corresponds to one in `urls` list. This is an output parameter,
* the caller should provide a pointer to an empty list
* (*fetched === NULL) and the callee fills the list with data.
* @return 0 on success or -1 on failure
*/
char *alpm_fetch_pkgurl(alpm_handle_t *handle, const char *url);
int alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
alpm_list_t **fetched);
/** @addtogroup alpm_api_options Options
* Libalpm option getters and setters
@@ -890,6 +934,17 @@ int alpm_option_set_remote_file_siglevel(alpm_handle_t *handle, int level);
int alpm_option_set_disable_dl_timeout(alpm_handle_t *handle, unsigned short disable_dl_timeout);
int alpm_option_get_parallel_downloads(alpm_handle_t *handle);
/** Sets number of parallel streams to download database and package files.
* If the function is not called then the default value of '1' stream
* (i.e. sequential download) is used.
* @param handle the context handle
* @param num_streams number of parallel download streams
* @return 0 on success, -1 on error
*/
int alpm_option_set_parallel_downloads(alpm_handle_t *handle, unsigned int num_streams);
/** @} */
/** @addtogroup alpm_api_databases Database Functions
@@ -960,13 +1015,65 @@ int alpm_db_get_valid(alpm_db_t *db);
/** @name Accessors to the list of servers for a database.
* @{
*/
/** Get the list of servers assigned to this db.
* @param db pointer to the database to get the servers from
* @return a char* list of servers
*/
alpm_list_t *alpm_db_get_servers(const alpm_db_t *db);
/** Sets the list of servers for the database to use.
* @param db the database to set the servers
* @param a char* list of servers. Note: the database will
* take ownership of the list and it should no longer be
* freed by the caller
*/
int alpm_db_set_servers(alpm_db_t *db, alpm_list_t *servers);
/** Add a download server to a database.
* @param db database pointer
* @param url url of the server
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int alpm_db_add_server(alpm_db_t *db, const char *url);
/** Remove a download server from a database.
* @param db database pointer
* @param url url of the server
* @return 0 on success, 1 on server not present,
* -1 on error (pm_errno is set accordingly)
*/
int alpm_db_remove_server(alpm_db_t *db, const char *url);
/** @} */
int alpm_db_update(int force, alpm_db_t *db);
/** Update package databases
*
* An update of the package databases in the list \a dbs will be attempted.
* Unless \a force is true, the update will only be performed if the remote
* databases were modified since the last update.
*
* This operation requires a database lock, and will return an applicable error
* if the lock could not be obtained.
*
* Example:
* @code
* alpm_list_t *dbs = alpm_get_syncdbs();
* ret = alpm_db_update(config->handle, dbs, force);
* if(ret < 0) {
* pm_printf(ALPM_LOG_ERROR, _("failed to synchronize all databases (%s)\n"),
* alpm_strerror(alpm_errno(config->handle)));
* }
* @endcode
*
* @note After a successful update, the \link alpm_db_get_pkgcache()
* package cache \endlink will be invalidated
* @param handle the context handle
* @param dbs list of package databases to update
* @param force if true, then forces the update, otherwise update only in case
* the databases aren't up to date
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int alpm_db_update(alpm_handle_t *handle, alpm_list_t *dbs, int force);
/** Get a package entry from a package database.
* @param db pointer to the package database to get the package from
@@ -997,9 +1104,12 @@ alpm_list_t *alpm_db_get_groupcache(alpm_db_t *db);
/** Searches a database with regular expressions.
* @param db pointer to the package database to search in
* @param needles a list of regular expressions to search for
* @return the list of packages matching all regular expressions on success, NULL on error
* @param ret pointer to list for storing packages matching all
* regular expressions - must point to an empty (NULL) alpm_list_t *.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
alpm_list_t *alpm_db_search(alpm_db_t *db, const alpm_list_t *needles);
int alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
alpm_list_t **ret);
typedef enum _alpm_db_usage_t {
ALPM_DB_USAGE_SYNC = 1,
@@ -1066,7 +1176,20 @@ int alpm_pkg_free(alpm_pkg_t *pkg);
*/
int alpm_pkg_checkmd5sum(alpm_pkg_t *pkg);
/** Compare two version strings and determine which one is 'newer'. */
/** Compare two version strings and determine which one is 'newer'.
* Returns a value comparable to the way strcmp works. Returns 1
* if a is newer than b, 0 if a and b are the same version, or -1
* if b is newer than a.
*
* Different epoch values for version strings will override any further
* comparison. If no epoch is provided, 0 is assumed.
*
* Keep in mind that the pkgrel is only compared if it is available
* on both versions handed to this function. For example, comparing
* 1.5-1 and 1.5 will yield 0; comparing 1.5-1 and 1.5-2 will yield
* -1 as expected. This is mainly for supporting versioned dependencies
* that do not include the pkgrel.
*/
int alpm_pkg_vercmp(const char *a, const char *b);
/** Computes the list of packages requiring a given package.
@@ -1284,6 +1407,17 @@ alpm_db_t *alpm_pkg_get_db(alpm_pkg_t *pkg);
*/
const char *alpm_pkg_get_base64_sig(alpm_pkg_t *pkg);
/** Extracts package signature either from embedded package signature
* or if it is absent then reads data from detached signature file.
* @param pkg a pointer to package.
* @param sig output parameter for signature data. Callee function allocates
* a buffer needed for the signature data. Caller is responsible for
* freeing this buffer.
* @param sig_len output parameter for the signature data length.
* @return 0 on success, negative number on error.
*/
int alpm_pkg_get_sig(alpm_pkg_t *pkg, unsigned char **sig, size_t *sig_len);
/** Returns the method used to validate a package during install.
* @param pkg a pointer to package
* @return an enum member giving the validation method
@@ -1314,11 +1448,15 @@ void *alpm_pkg_changelog_open(alpm_pkg_t *pkg);
size_t alpm_pkg_changelog_read(void *ptr, size_t size,
const alpm_pkg_t *pkg, void *fp);
/** Close a package changelog for reading.
* @param pkg the package to close the changelog of (either file or db)
* @return 0 on success, -1 on error
*/
int alpm_pkg_changelog_close(const alpm_pkg_t *pkg, void *fp);
/** Open a package mtree file for reading.
* @param pkg the local package to read the changelog of
* @return a archive structure for the package mtree file
* @param pkg the local package to read the mtree of
* @return an archive structure for the package mtree file
*/
struct archive *alpm_pkg_mtree_open(alpm_pkg_t *pkg);
@@ -1326,11 +1464,15 @@ struct archive *alpm_pkg_mtree_open(alpm_pkg_t *pkg);
* @param pkg the package that the mtree file is being read from
* @param archive the archive structure reading from the mtree file
* @param entry an archive_entry to store the entry header information
* @return 0 if end of archive is reached, non-zero otherwise.
* @return 0 on success, 1 if end of archive is reached, -1 otherwise.
*/
int alpm_pkg_mtree_next(const alpm_pkg_t *pkg, struct archive *archive,
struct archive_entry **entry);
/** Close a package mtree file.
* @param pkg the local package to close the mtree of
* @param the archive to close
*/
int alpm_pkg_mtree_close(const alpm_pkg_t *pkg, struct archive *archive);
/** Returns whether the package has an install scriptlet.
@@ -1338,8 +1480,7 @@ int alpm_pkg_mtree_close(const alpm_pkg_t *pkg, struct archive *archive);
*/
int alpm_pkg_has_scriptlet(alpm_pkg_t *pkg);
/** Returns the size of download.
* Returns the size of the files that will be downloaded to install a
/** Returns the size of the files that will be downloaded to install a
* package.
* @param newpkg the new package to upgrade to
* @return the size of the download
@@ -1377,15 +1518,48 @@ alpm_file_t *alpm_filelist_contains(alpm_filelist_t *filelist, const char *path)
* Signatures
*/
/**
* Check the PGP signature for the given package file.
* @param pkg the package to check
* @param siglist a pointer to storage for signature results
* @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
*/
int alpm_pkg_check_pgp_signature(alpm_pkg_t *pkg, alpm_siglist_t *siglist);
/**
* Check the PGP signature for the given database.
* @param db the database to check
* @param siglist a pointer to storage for signature results
* @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
*/
int alpm_db_check_pgp_signature(alpm_db_t *db, alpm_siglist_t *siglist);
/**
* Clean up and free a signature result list.
* Note that this does not free the siglist object itself in case that
* was allocated on the stack; this is the responsibility of the caller.
* @param siglist a pointer to storage for signature results
* @return 0 on success, -1 on error
*/
int alpm_siglist_cleanup(alpm_siglist_t *siglist);
/**
* Decode a loaded signature in base64 form.
* @param base64_data the signature to attempt to decode
* @param data the decoded data; must be freed by the caller
* @param data_len the length of the returned data
* @return 0 on success, -1 on failure to properly decode
*/
int alpm_decode_signature(const char *base64_data,
unsigned char **data, size_t *data_len);
/**
* Extract the Issuer Key ID from a signature
* @param sig PGP signature
* @param len length of signature
* @param keys a pointer to storage for key IDs
* @return 0 on success, -1 on error
*/
int alpm_extract_keyid(alpm_handle_t *handle, const char *identifier,
const unsigned char *sig, const size_t len, alpm_list_t **keys);
@@ -1393,12 +1567,22 @@ int alpm_extract_keyid(alpm_handle_t *handle, const char *identifier,
* Groups
*/
/** Find group members across a list of databases.
* If a member exists in several databases, only the first database is used.
* IgnorePkg is also handled.
* @param dbs the list of alpm_db_t *
* @param name the name of the group
* @return the list of alpm_pkg_t * (caller is responsible for alpm_list_free)
*/
alpm_list_t *alpm_find_group_pkgs(alpm_list_t *dbs, const char *name);
/*
* Sync
*/
/** Check for new version of pkg in sync repos
* (only the first occurrence is considered in sync)
*/
alpm_pkg_t *alpm_sync_get_new_version(alpm_pkg_t *pkg, alpm_list_t *dbs_sync);
/** @addtogroup alpm_api_trans Transaction Functions
@@ -1531,12 +1715,49 @@ int alpm_remove_pkg(alpm_handle_t *handle, alpm_pkg_t *pkg);
* @{
*/
/** Checks dependencies and returns missing ones in a list.
* Dependencies can include versions with depmod operators.
* @param handle the context handle
* @param pkglist the list of local packages
* @param remove an alpm_list_t* of packages to be removed
* @param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade)
* @param reversedeps handles the backward dependencies
* @return an alpm_list_t* of alpm_depmissing_t pointers.
*/
alpm_list_t *alpm_checkdeps(alpm_handle_t *handle, alpm_list_t *pkglist,
alpm_list_t *remove, alpm_list_t *upgrade, int reversedeps);
/** Find a package satisfying a specified dependency.
* The dependency can include versions with depmod operators.
* @param pkgs an alpm_list_t* of alpm_pkg_t where the satisfier will be searched
* @param depstring package or provision name, versioned or not
* @return a alpm_pkg_t* satisfying depstring
*/
alpm_pkg_t *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstring);
/** Find a package satisfying a specified dependency.
* First look for a literal, going through each db one by one. Then look for
* providers. The first satisfier that belongs to an installed package is
* returned. If no providers belong to an installed package then an
* alpm_question_select_provider_t is created to select the provider.
* The dependency can include versions with depmod operators.
*
* @param handle the context handle
* @param dbs an alpm_list_t* of alpm_db_t where the satisfier will be searched
* @param depstring package or provision name, versioned or not
* @return a alpm_pkg_t* satisfying depstring
*/
alpm_pkg_t *alpm_find_dbs_satisfier(alpm_handle_t *handle,
alpm_list_t *dbs, const char *depstring);
/**
* @brief Check the package conflicts in a database
*
* @param handle the context handle
* @param pkglist the list of packages to check
*
* @return an alpm_list_t of alpm_conflict_t
*/
alpm_list_t *alpm_checkconflicts(alpm_handle_t *handle, alpm_list_t *pkglist);
/** Returns a newly allocated string representing the dependency information.
@@ -1565,12 +1786,60 @@ void alpm_dep_free(alpm_depend_t *dep);
*/
/* checksums */
/** \addtogroup alpm_misc Miscellaneous Functions
* @brief Various libalpm functions
* @{
*/
/** Get the md5 sum of file.
* @param filename name of the file
* @return the checksum on success, NULL on error
*/
char *alpm_compute_md5sum(const char *filename);
/** Get the sha256 sum of file.
* @param filename name of the file
* @return the checksum on success, NULL on error
*/
char *alpm_compute_sha256sum(const char *filename);
/** @} */
/** \addtogroup alpm_interface Interface Functions
* @brief Functions to initialize and release libalpm
* @{
*/
/** Initializes the library.
* Creates handle, connects to database and creates lockfile.
* This must be called before any other functions are called.
* @param root the root path for all filesystem operations
* @param dbpath the absolute path to the libalpm database
* @param err an optional variable to hold any error return codes
* @return a context handle on success, NULL on error, err will be set if provided
*/
alpm_handle_t *alpm_initialize(const char *root, const char *dbpath,
alpm_errno_t *err);
/** Release the library.
* Disconnects from the database, removes handle and lockfile
* This should be the last alpm call you make.
* After this returns, handle should be considered invalid and cannot be reused
* in any way.
* @param myhandle the context handle
* @return 0 on success, -1 on error
*/
int alpm_release(alpm_handle_t *handle);
/** @} */
/** Remove the database lock file
* @param handle the context handle
* @return 0 on success, -1 on error
*
* @note Safe to call from inside signal handlers.
*/
int alpm_unlock(alpm_handle_t *handle);
enum alpm_caps {
@@ -1579,12 +1848,27 @@ enum alpm_caps {
ALPM_CAPABILITY_SIGNATURES = (1 << 2)
};
/** Get the version of library.
* @return the library version, e.g. "6.0.4"
* */
const char *alpm_version(void);
/* Return a bitfield of capabilities using values from 'enum alpm_caps' */
/** Get the capabilities of the library.
* @return a bitmask of the capabilities
* */
int alpm_capabilities(void);
/**
* Free a fileconflict and its members.
* @param conflict the fileconflict to free
*/
void alpm_fileconflict_free(alpm_fileconflict_t *conflict);
void alpm_depmissing_free(alpm_depmissing_t *miss);
/**
* Free a conflict and its members.
* @param conflict the conflict to free
*/
void alpm_conflict_free(alpm_conflict_t *conflict);
/* End of alpm_api */

View File

@@ -256,8 +256,7 @@ static struct archive *_cache_mtree_open(alpm_pkg_t *pkg)
}
if((mtree = archive_read_new()) == NULL) {
pkg->handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(pkg->handle, ALPM_ERR_LIBARCHIVE, error);
}
_alpm_archive_read_support_filter_all(mtree);
@@ -266,9 +265,8 @@ static struct archive *_cache_mtree_open(alpm_pkg_t *pkg)
if((r = _alpm_archive_read_open_file(mtree, mtfile, ALPM_BUFFER_SIZE))) {
_alpm_log(pkg->handle, ALPM_LOG_ERROR, _("error while reading file %s: %s\n"),
mtfile, archive_error_string(mtree));
pkg->handle->pm_errno = ALPM_ERR_LIBARCHIVE;
_alpm_archive_read_free(mtree);
goto error;
GOTO_ERR(pkg->handle, ALPM_ERR_LIBARCHIVE, error);
}
free(mtfile);
@@ -284,12 +282,26 @@ error:
* @param pkg the package that the mtree file is being read from
* @param archive the archive structure reading from the mtree file
* @param entry an archive_entry to store the entry header information
* @return 0 if end of archive is reached, non-zero otherwise.
* @return 0 on success, 1 if end of archive is reached, -1 otherwise.
*/
static int _cache_mtree_next(const alpm_pkg_t UNUSED *pkg,
struct archive *mtree, struct archive_entry **entry)
{
return archive_read_next_header(mtree, entry);
int ret;
ret = archive_read_next_header(mtree, entry);
switch(ret) {
case ARCHIVE_OK:
return 0;
break;
case ARCHIVE_EOF:
return 1;
break;
default:
break;
}
return -1;
}
/**
@@ -680,7 +692,7 @@ char *_alpm_local_db_pkgpath(alpm_db_t *db, alpm_pkg_t *info,
static int local_db_read(alpm_pkg_t *info, int inforeq)
{
FILE *fp = NULL;
char line[1024];
char line[1024] = {0};
alpm_db_t *db = info->origin_data.db;
/* bitmask logic here:
@@ -703,9 +715,6 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
"loading package data for %s : level=0x%x\n",
info->name, inforeq);
/* clear out 'line', to be certain - and to make valgrind happy */
memset(line, 0, sizeof(line));
/* DESC */
if(inforeq & INFRQ_DESC && !(info->infolevel & INFRQ_DESC)) {
char *path = _alpm_local_db_pkgpath(db, info, "desc");
@@ -832,12 +841,7 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
}
/* attempt to hand back any memory we don't need */
if(files_count > 0) {
alpm_file_t *newfiles;
newfiles = realloc(files, sizeof(alpm_file_t) * files_count);
if(newfiles != NULL) {
files = newfiles;
}
REALLOC(files, sizeof(alpm_file_t) * files_count, (void)0);
} else {
FREE(files);
}

View File

@@ -164,9 +164,8 @@ static int parse_descfile(alpm_handle_t *handle, struct archive *a, alpm_pkg_t *
char *ptr = NULL;
char *key = NULL;
int ret, linenum = 0;
struct archive_read_buffer buf;
struct archive_read_buffer buf = {0};
memset(&buf, 0, sizeof(buf));
/* 512K for a line length seems reasonable */
buf.max_line_size = 512 * 1024;
@@ -202,11 +201,15 @@ static int parse_descfile(alpm_handle_t *handle, struct archive *a, alpm_pkg_t *
} else if(strcmp(key, "pkgdesc") == 0) {
STRDUP(newpkg->desc, ptr, return -1);
} else if(strcmp(key, "group") == 0) {
newpkg->groups = alpm_list_add(newpkg->groups, strdup(ptr));
char *tmp = NULL;
STRDUP(tmp, ptr, return -1);
newpkg->groups = alpm_list_add(newpkg->groups, tmp);
} else if(strcmp(key, "url") == 0) {
STRDUP(newpkg->url, ptr, return -1);
} else if(strcmp(key, "license") == 0) {
newpkg->licenses = alpm_list_add(newpkg->licenses, strdup(ptr));
char *tmp = NULL;
STRDUP(tmp, ptr, return -1);
newpkg->licenses = alpm_list_add(newpkg->licenses, tmp);
} else if(strcmp(key, "builddate") == 0) {
newpkg->builddate = _alpm_parsedate(ptr);
} else if(strcmp(key, "packager") == 0) {
@@ -308,7 +311,7 @@ int _alpm_pkg_validate_internal(alpm_handle_t *handle,
}
}
if(syncpkg && !has_sig) {
if(syncpkg && (!has_sig || !syncpkg->base64_sig)) {
if(syncpkg->md5sum && !syncpkg->sha256sum) {
_alpm_log(handle, ALPM_LOG_DEBUG, "md5sum: %s\n", syncpkg->md5sum);
_alpm_log(handle, ALPM_LOG_DEBUG, "checking md5sum for %s\n", pkgfile);
@@ -448,18 +451,15 @@ static int build_filelist_from_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg, str
char *mtree_data = NULL;
struct archive *mtree;
struct archive_entry *mtree_entry = NULL;
alpm_filelist_t filelist;
alpm_filelist_t filelist = {0};
_alpm_log(handle, ALPM_LOG_DEBUG,
"found mtree for package %s, getting file list\n", pkg->filename);
memset(&filelist, 0, sizeof(alpm_filelist_t));
/* create a new archive to parse the mtree and load it from archive into memory */
/* TODO: split this into a function */
if((mtree = archive_read_new()) == NULL) {
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
_alpm_archive_read_support_filter_all(mtree);
@@ -478,8 +478,7 @@ static int build_filelist_from_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg, str
if(size < 0) {
_alpm_log(handle, ALPM_LOG_DEBUG, _("error while reading package %s: %s\n"),
pkg->filename, archive_error_string(archive));
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
if(size == 0) {
break;
@@ -492,8 +491,7 @@ static int build_filelist_from_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg, str
_alpm_log(handle, ALPM_LOG_DEBUG,
_("error while reading mtree of package %s: %s\n"),
pkg->filename, archive_error_string(mtree));
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
while((ret = archive_read_next_header(mtree, &mtree_entry)) == ARCHIVE_OK) {
@@ -516,8 +514,7 @@ static int build_filelist_from_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg, str
if(ret != ARCHIVE_EOF && ret != ARCHIVE_OK) { /* An error occurred */
_alpm_log(handle, ALPM_LOG_DEBUG, _("error while reading mtree of package %s: %s\n"),
pkg->filename, archive_error_string(mtree));
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
/* throw away any files we loaded directly from the archive */
@@ -582,11 +579,9 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
newpkg = _alpm_pkg_new();
if(newpkg == NULL) {
handle->pm_errno = ALPM_ERR_MEMORY;
goto error;
GOTO_ERR(handle, ALPM_ERR_MEMORY, error);
}
STRDUP(newpkg->filename, pkgfile,
handle->pm_errno = ALPM_ERR_MEMORY; goto error);
STRDUP(newpkg->filename, pkgfile, GOTO_ERR(handle, ALPM_ERR_MEMORY, error));
newpkg->size = st.st_size;
_alpm_log(handle, ALPM_LOG_DEBUG, "starting package load for %s\n", pkgfile);
@@ -636,8 +631,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
if(archive_read_data_skip(archive)) {
_alpm_log(handle, ALPM_LOG_ERROR, _("error while reading package %s: %s\n"),
pkgfile, archive_error_string(archive));
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
/* if we are not doing a full read, see if we have all we need */
@@ -649,8 +643,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
if(ret != ARCHIVE_EOF && ret != ARCHIVE_OK) { /* An error occurred */
_alpm_log(handle, ALPM_LOG_ERROR, _("error while reading package %s: %s\n"),
pkgfile, archive_error_string(archive));
handle->pm_errno = ALPM_ERR_LIBARCHIVE;
goto error;
GOTO_ERR(handle, ALPM_ERR_LIBARCHIVE, error);
}
if(!config) {
@@ -663,7 +656,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
/* internal fields for package struct */
newpkg->origin = ALPM_PKG_FROM_FILE;
newpkg->origin_data.file = strdup(pkgfile);
STRDUP(newpkg->origin_data.file, pkgfile, goto error);
newpkg->ops = get_file_pkg_ops();
newpkg->handle = handle;
newpkg->infolevel = INFRQ_BASE | INFRQ_DESC | INFRQ_SCRIPTLET;
@@ -672,8 +665,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
if(full) {
if(newpkg->files.files) {
/* attempt to hand back any memory we don't need */
newpkg->files.files = realloc(newpkg->files.files,
sizeof(alpm_file_t) * newpkg->files.count);
REALLOC(newpkg->files.files, sizeof(alpm_file_t) * newpkg->files.count, (void)0);
/* "checking for conflicts" requires a sorted list, ensure that here */
_alpm_log(handle, ALPM_LOG_DEBUG,
"sorting package filelist for %s\n", pkgfile);

View File

@@ -136,178 +136,86 @@ valid:
return 0;
}
/** Update a package database
*
* An update of the package database \a db will be attempted. Unless
* \a force is true, the update will only be performed if the remote
* database was modified since the last update.
*
* This operation requires a database lock, and will return an applicable error
* if the lock could not be obtained.
*
* Example:
* @code
* alpm_list_t *syncs = alpm_get_syncdbs();
* for(i = syncs; i; i = alpm_list_next(i)) {
* alpm_db_t *db = alpm_list_getdata(i);
* result = alpm_db_update(0, db);
*
* if(result < 0) {
* printf("Unable to update database: %s\n", alpm_strerrorlast());
* } else if(result == 1) {
* printf("Database already up to date\n");
* } else {
* printf("Database updated\n");
* }
* }
* @endcode
*
* @ingroup alpm_databases
* @note After a successful update, the \link alpm_db_get_pkgcache()
* package cache \endlink will be invalidated
* @param force if true, then forces the update, otherwise update only in case
* the database isn't up to date
* @param db pointer to the package database to update
* @return 0 on success, -1 on error (pm_errno is set accordingly), 1 if up to
* to date
*/
int SYMEXPORT alpm_db_update(int force, alpm_db_t *db)
{
int SYMEXPORT alpm_db_update(alpm_handle_t *handle, alpm_list_t *dbs, int force) {
char *syncpath;
const char *dbext;
const char *dbext = handle->dbext;
alpm_list_t *i;
int updated = 0;
int ret = -1;
mode_t oldmask;
alpm_handle_t *handle;
int siglevel;
alpm_list_t *payloads = NULL;
alpm_event_t event;
/* Sanity checks */
ASSERT(db != NULL, return -1);
handle = db->handle;
CHECK_HANDLE(handle, return -1);
ASSERT(dbs != NULL, return -1);
handle->pm_errno = ALPM_ERR_OK;
ASSERT(db != handle->db_local, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
ASSERT(db->servers != NULL, RET_ERR(handle, ALPM_ERR_SERVER_NONE, -1));
if(!(db->usage & ALPM_DB_USAGE_SYNC)) {
return 0;
}
syncpath = get_sync_dir(handle);
if(!syncpath) {
return -1;
}
/* force update of invalid databases to fix potential mismatched database/signature */
if(db->status & DB_STATUS_INVALID) {
force = 1;
}
ASSERT(syncpath != NULL, return -1);
/* make sure we have a sane umask */
oldmask = umask(0022);
siglevel = alpm_db_get_siglevel(db);
/* attempt to grab a lock */
if(_alpm_handle_lock(handle)) {
free(syncpath);
umask(oldmask);
RET_ERR(handle, ALPM_ERR_HANDLE_LOCK, -1);
GOTO_ERR(handle, ALPM_ERR_HANDLE_LOCK, cleanup);
}
dbext = db->handle->dbext;
for(i = db->servers; i; i = i->next) {
const char *server = i->data, *final_db_url = NULL;
struct dload_payload payload;
for(i = dbs; i; i = i->next) {
alpm_db_t *db = i->data;
int dbforce = force;
struct dload_payload *payload = NULL;
size_t len;
int sig_ret = 0;
int siglevel;
memset(&payload, 0, sizeof(struct dload_payload));
if(!(db->usage & ALPM_DB_USAGE_SYNC)) {
continue;
}
/* set hard upper limit of 128MiB */
payload.max_size = 128 * 1024 * 1024;
ASSERT(db != handle->db_local, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
ASSERT(db->servers != NULL, GOTO_ERR(handle, ALPM_ERR_SERVER_NONE, cleanup));
/* force update of invalid databases to fix potential mismatched database/signature */
if(db->status & DB_STATUS_INVALID) {
dbforce = 1;
}
siglevel = alpm_db_get_siglevel(db);
CALLOC(payload, 1, sizeof(*payload), GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
payload->servers = db->servers;
/* print server + filename into a buffer */
len = strlen(server) + strlen(db->treename) + strlen(dbext) + 2;
MALLOC(payload.fileurl, len,
{
free(syncpath);
umask(oldmask);
RET_ERR(handle, ALPM_ERR_MEMORY, -1);
}
);
snprintf(payload.fileurl, len, "%s/%s%s", server, db->treename, dbext);
payload.handle = handle;
payload.force = force;
payload.unlink_on_fail = 1;
ret = _alpm_download(&payload, syncpath, NULL, &final_db_url);
_alpm_dload_payload_reset(&payload);
updated = (updated || ret == 0);
if(ret != -1 && updated && (siglevel & ALPM_SIG_DATABASE)) {
/* an existing sig file is no good at this point */
char *sigpath = _alpm_sigpath(handle, _alpm_db_path(db));
if(!sigpath) {
ret = -1;
break;
}
unlink(sigpath);
free(sigpath);
/* check if the final URL from internal downloader looks reasonable */
if(final_db_url != NULL) {
if(strlen(final_db_url) < 3
|| strcmp(final_db_url + strlen(final_db_url) - strlen(dbext),
dbext) != 0) {
final_db_url = NULL;
}
}
/* if we downloaded a DB, we want the .sig from the same server */
if(final_db_url != NULL) {
/* print final_db_url into a buffer (leave space for .sig) */
len = strlen(final_db_url) + 5;
} else {
/* print server + filename into a buffer (leave space for separator and .sig) */
len = strlen(server) + strlen(db->treename) + strlen(dbext) + 6;
}
MALLOC(payload.fileurl, len,
{
free(syncpath);
umask(oldmask);
RET_ERR(handle, ALPM_ERR_MEMORY, -1);
}
);
if(final_db_url != NULL) {
snprintf(payload.fileurl, len, "%s.sig", final_db_url);
} else {
snprintf(payload.fileurl, len, "%s/%s%s.sig", server, db->treename, dbext);
}
payload.handle = handle;
payload.force = 1;
payload.errors_ok = (siglevel & ALPM_SIG_DATABASE_OPTIONAL);
/* set hard upper limit of 16KiB */
payload.max_size = 16 * 1024;
sig_ret = _alpm_download(&payload, syncpath, NULL, NULL);
/* errors_ok suppresses error messages, but not the return code */
sig_ret = payload.errors_ok ? 0 : sig_ret;
_alpm_dload_payload_reset(&payload);
}
if(ret != -1 && sig_ret != -1) {
break;
}
len = strlen(db->treename) + strlen(dbext) + 1;
MALLOC(payload->filepath, len,
FREE(payload); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
snprintf(payload->filepath, len, "%s%s", db->treename, dbext);
payload->handle = handle;
payload->force = dbforce;
payload->unlink_on_fail = 1;
payload->download_signature = (siglevel & ALPM_SIG_DATABASE);
payload->signature_optional = (siglevel & ALPM_SIG_DATABASE_OPTIONAL);
/* set hard upper limit of 128 MiB */
payload->max_size = 128 * 1024 * 1024;
payloads = alpm_list_add(payloads, payload);
}
if(updated) {
event.type = ALPM_EVENT_DB_RETRIEVE_START;
EVENT(handle, &event);
ret = _alpm_download(handle, payloads, syncpath);
if(ret < 0) {
event.type = ALPM_EVENT_DB_RETRIEVE_FAILED;
EVENT(handle, &event);
goto cleanup;
}
event.type = ALPM_EVENT_DB_RETRIEVE_DONE;
EVENT(handle, &event);
for(i = dbs; i; i = i->next) {
alpm_db_t *db = i->data;
if(!(db->usage & ALPM_DB_USAGE_SYNC)) {
continue;
}
/* Cache needs to be rebuilt */
_alpm_db_free_pkgcache(db);
@@ -318,21 +226,29 @@ int SYMEXPORT alpm_db_update(int force, alpm_db_t *db)
db->status &= ~DB_STATUS_MISSING;
/* if the download failed skip validation to preserve the download error */
if(ret != -1 && sync_db_validate(db) != 0) {
if(sync_db_validate(db) != 0) {
_alpm_log(handle, ALPM_LOG_DEBUG, "failed to validate db: %s\n",
db->treename);
/* pm_errno should be set */
ret = -1;
}
}
cleanup:
_alpm_handle_unlock(handle);
if(ret == -1) {
/* pm_errno was set by the download code */
_alpm_log(handle, ALPM_LOG_DEBUG, "failed to sync db: %s\n",
_alpm_log(handle, ALPM_LOG_DEBUG, "failed to sync dbs: %s\n",
alpm_strerror(handle->pm_errno));
} else {
handle->pm_errno = ALPM_ERR_OK;
}
_alpm_handle_unlock(handle);
if(payloads) {
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads);
}
free(syncpath);
umask(oldmask);
return ret;
@@ -501,9 +417,8 @@ static int sync_db_populate(alpm_db_t *db)
db->pkgcache = _alpm_pkghash_create(est_count);
if(db->pkgcache == NULL) {
db->handle->pm_errno = ALPM_ERR_MEMORY;
ret = -1;
goto cleanup;
GOTO_ERR(db->handle, ALPM_ERR_MEMORY, cleanup);
}
while((archive_ret = archive_read_next_header(archive, &entry)) == ARCHIVE_OK) {
@@ -522,9 +437,8 @@ static int sync_db_populate(alpm_db_t *db)
_alpm_log(db->handle, ALPM_LOG_ERROR, _("could not read db '%s' (%s)\n"),
db->treename, archive_error_string(archive));
_alpm_db_free_pkgcache(db);
db->handle->pm_errno = ALPM_ERR_LIBARCHIVE;
ret = -1;
goto cleanup;
GOTO_ERR(db->handle, ALPM_ERR_LIBARCHIVE, cleanup);
}
count = alpm_list_count(db->pkgcache->list);
@@ -601,7 +515,7 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
{
const char *entryname, *filename;
alpm_pkg_t *pkg;
struct archive_read_buffer buf;
struct archive_read_buffer buf = {0};
entryname = archive_entry_pathname(entry);
if(entryname == NULL) {
@@ -613,7 +527,6 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
_alpm_log(db->handle, ALPM_LOG_FUNCTION, "loading package data from archive entry %s\n",
entryname);
memset(&buf, 0, sizeof(buf));
/* 512K for a line length seems reasonable */
buf.max_line_size = 512 * 1024;
@@ -727,7 +640,7 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
}
/* attempt to hand back any memory we don't need */
if(files_count > 0) {
files = realloc(files, sizeof(alpm_file_t) * files_count);
REALLOC(files, sizeof(alpm_file_t) * files_count, (void)0);
} else {
FREE(files);
}

View File

@@ -63,9 +63,6 @@ error:
return NULL;
}
/**
* @brief Free a conflict and its members.
*/
void SYMEXPORT alpm_conflict_free(alpm_conflict_t *conflict)
{
ASSERT(conflict != NULL, return);
@@ -243,14 +240,6 @@ alpm_list_t *_alpm_outerconflicts(alpm_db_t *db, alpm_list_t *packages)
return baddeps;
}
/**
* @brief Check the package conflicts in a database
*
* @param handle the context handle
* @param pkglist the list of packages to check
*
* @return an alpm_list_t of alpm_conflict_t
*/
alpm_list_t SYMEXPORT *alpm_checkconflicts(alpm_handle_t *handle,
alpm_list_t *pkglist)
{
@@ -300,9 +289,6 @@ error:
RET_ERR(handle, ALPM_ERR_MEMORY, conflicts);
}
/**
* @brief Frees a conflict and its members.
*/
void SYMEXPORT alpm_fileconflict_free(alpm_fileconflict_t *conflict)
{
ASSERT(conflict != NULL, return);

View File

@@ -37,12 +37,6 @@
#include "package.h"
#include "group.h"
/** \addtogroup alpm_databases Database Functions
* @brief Functions to query and manipulate the database of libalpm
* @{
*/
/** Register a sync database of packages. */
alpm_db_t SYMEXPORT *alpm_register_syncdb(alpm_handle_t *handle,
const char *treename, int siglevel)
{
@@ -81,7 +75,6 @@ void _alpm_db_unregister(alpm_db_t *db)
_alpm_db_free(db);
}
/** Unregister all package databases. */
int SYMEXPORT alpm_unregister_all_syncdbs(alpm_handle_t *handle)
{
alpm_list_t *i;
@@ -102,7 +95,6 @@ int SYMEXPORT alpm_unregister_all_syncdbs(alpm_handle_t *handle)
return 0;
}
/** Unregister a package database. */
int SYMEXPORT alpm_db_unregister(alpm_db_t *db)
{
int found = 0;
@@ -139,14 +131,12 @@ int SYMEXPORT alpm_db_unregister(alpm_db_t *db)
return 0;
}
/** Get the serverlist of a database. */
alpm_list_t SYMEXPORT *alpm_db_get_servers(const alpm_db_t *db)
{
ASSERT(db != NULL, return NULL);
return db->servers;
}
/** Set the serverlist of a database. */
int SYMEXPORT alpm_db_set_servers(alpm_db_t *db, alpm_list_t *servers)
{
ASSERT(db != NULL, return -1);
@@ -168,11 +158,6 @@ static char *sanitize_url(const char *url)
return newurl;
}
/** Add a download server to a database.
* @param db database pointer
* @param url url of the server
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_db_add_server(alpm_db_t *db, const char *url)
{
char *newurl;
@@ -193,12 +178,6 @@ int SYMEXPORT alpm_db_add_server(alpm_db_t *db, const char *url)
return 0;
}
/** Remove a download server from a database.
* @param db database pointer
* @param url url of the server
* @return 0 on success, 1 on server not present,
* -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url)
{
char *newurl, *vdata = NULL;
@@ -227,14 +206,12 @@ int SYMEXPORT alpm_db_remove_server(alpm_db_t *db, const char *url)
return ret;
}
/** Get the name of a package database. */
const char SYMEXPORT *alpm_db_get_name(const alpm_db_t *db)
{
ASSERT(db != NULL, return NULL);
return db->treename;
}
/** Get the signature verification level for a database. */
int SYMEXPORT alpm_db_get_siglevel(alpm_db_t *db)
{
ASSERT(db != NULL, return -1);
@@ -245,7 +222,6 @@ int SYMEXPORT alpm_db_get_siglevel(alpm_db_t *db)
}
}
/** Check the validity of a database. */
int SYMEXPORT alpm_db_get_valid(alpm_db_t *db)
{
ASSERT(db != NULL, return -1);
@@ -253,7 +229,6 @@ int SYMEXPORT alpm_db_get_valid(alpm_db_t *db)
return db->ops->validate(db);
}
/** Get a package entry from a package database. */
alpm_pkg_t SYMEXPORT *alpm_db_get_pkg(alpm_db_t *db, const char *name)
{
alpm_pkg_t *pkg;
@@ -269,7 +244,6 @@ alpm_pkg_t SYMEXPORT *alpm_db_get_pkg(alpm_db_t *db, const char *name)
return pkg;
}
/** Get the package cache of a package database. */
alpm_list_t SYMEXPORT *alpm_db_get_pkgcache(alpm_db_t *db)
{
ASSERT(db != NULL, return NULL);
@@ -277,7 +251,6 @@ alpm_list_t SYMEXPORT *alpm_db_get_pkgcache(alpm_db_t *db)
return _alpm_db_get_pkgcache(db);
}
/** Get a group entry from a package database. */
alpm_group_t SYMEXPORT *alpm_db_get_group(alpm_db_t *db, const char *name)
{
ASSERT(db != NULL, return NULL);
@@ -288,7 +261,6 @@ alpm_group_t SYMEXPORT *alpm_db_get_group(alpm_db_t *db, const char *name)
return _alpm_db_get_groupfromcache(db, name);
}
/** Get the group cache of a package database. */
alpm_list_t SYMEXPORT *alpm_db_get_groupcache(alpm_db_t *db)
{
ASSERT(db != NULL, return NULL);
@@ -297,16 +269,16 @@ alpm_list_t SYMEXPORT *alpm_db_get_groupcache(alpm_db_t *db)
return _alpm_db_get_groupcache(db);
}
/** Searches a database. */
alpm_list_t SYMEXPORT *alpm_db_search(alpm_db_t *db, const alpm_list_t *needles)
int SYMEXPORT alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
alpm_list_t **ret)
{
ASSERT(db != NULL, return NULL);
ASSERT(db != NULL && ret != NULL && *ret == NULL,
RET_ERR(db->handle, ALPM_ERR_WRONG_ARGS, -1));
db->handle->pm_errno = ALPM_ERR_OK;
return _alpm_db_search(db, needles);
return _alpm_db_search(db, needles, ret);
}
/** Sets the usage bitmask for a repo */
int SYMEXPORT alpm_db_set_usage(alpm_db_t *db, int usage)
{
ASSERT(db != NULL, return -1);
@@ -314,7 +286,6 @@ int SYMEXPORT alpm_db_set_usage(alpm_db_t *db, int usage)
return 0;
}
/** Gets the usage bitmask for a repo */
int SYMEXPORT alpm_db_get_usage(alpm_db_t *db, int *usage)
{
ASSERT(db != NULL, return -1);
@@ -323,9 +294,6 @@ int SYMEXPORT alpm_db_get_usage(alpm_db_t *db, int *usage)
return 0;
}
/** @} */
alpm_db_t *_alpm_db_new(const char *treename, int is_local)
{
alpm_db_t *db;
@@ -396,13 +364,13 @@ int _alpm_db_cmp(const void *d1, const void *d2)
return strcmp(db1->treename, db2->treename);
}
alpm_list_t *_alpm_db_search(alpm_db_t *db, const alpm_list_t *needles)
int _alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
alpm_list_t **ret)
{
const alpm_list_t *i, *j, *k;
alpm_list_t *ret = NULL;
if(!(db->usage & ALPM_DB_USAGE_SEARCH)) {
return NULL;
return 0;
}
/* copy the pkgcache- we will free the list var after each needle */
@@ -415,12 +383,15 @@ alpm_list_t *_alpm_db_search(alpm_db_t *db, const alpm_list_t *needles)
if(i->data == NULL) {
continue;
}
ret = NULL;
*ret = NULL;
targ = i->data;
_alpm_log(db->handle, ALPM_LOG_DEBUG, "searching for target '%s'\n", targ);
if(regcomp(&reg, targ, REG_EXTENDED | REG_NOSUB | REG_ICASE | REG_NEWLINE) != 0) {
RET_ERR(db->handle, ALPM_ERR_INVALID_REGEX, NULL);
db->handle->pm_errno = ALPM_ERR_INVALID_REGEX;
alpm_list_free(list);
alpm_list_free(*ret);
return -1;
}
for(j = list; j; j = j->next) {
@@ -463,18 +434,18 @@ alpm_list_t *_alpm_db_search(alpm_db_t *db, const alpm_list_t *needles)
_alpm_log(db->handle, ALPM_LOG_DEBUG,
"search target '%s' matched '%s' on package '%s'\n",
targ, matched, name);
ret = alpm_list_add(ret, pkg);
*ret = alpm_list_add(*ret, pkg);
}
}
/* Free the existing search list, and use the returned list for the
* next needle. This allows for AND-based package searching. */
alpm_list_free(list);
list = ret;
list = *ret;
regfree(&reg);
}
return ret;
return 0;
}
/* Returns a new package cache from db.

View File

@@ -87,7 +87,8 @@ alpm_db_t *_alpm_db_new(const char *treename, int is_local);
void _alpm_db_free(alpm_db_t *db);
const char *_alpm_db_path(alpm_db_t *db);
int _alpm_db_cmp(const void *d1, const void *d2);
alpm_list_t *_alpm_db_search(alpm_db_t *db, const alpm_list_t *needles);
int _alpm_db_search(alpm_db_t *db, const alpm_list_t *needles,
alpm_list_t **ret);
alpm_db_t *_alpm_db_register_local(alpm_handle_t *handle);
alpm_db_t *_alpm_db_register_sync(alpm_handle_t *handle, const char *treename,
int level);

View File

@@ -286,12 +286,6 @@ static int no_dep_version(alpm_handle_t *handle)
return (handle->trans->flags & ALPM_TRANS_FLAG_NODEPVERSION);
}
/** Find a package satisfying a specified dependency.
* The dependency can include versions with depmod operators.
* @param pkgs an alpm_list_t* of alpm_pkg_t where the satisfier will be searched
* @param depstring package or provision name, versioned or not
* @return a alpm_pkg_t* satisfying depstring
*/
alpm_pkg_t SYMEXPORT *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstring)
{
alpm_depend_t *dep = alpm_dep_from_string(depstring);
@@ -303,15 +297,6 @@ alpm_pkg_t SYMEXPORT *alpm_find_satisfier(alpm_list_t *pkgs, const char *depstri
return pkg;
}
/** Checks dependencies and returns missing ones in a list.
* Dependencies can include versions with depmod operators.
* @param handle the context handle
* @param pkglist the list of local packages
* @param remove an alpm_list_t* of packages to be removed
* @param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade)
* @param reversedeps handles the backward dependencies
* @return an alpm_list_t* of alpm_depmissing_t pointers.
*/
alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_handle_t *handle,
alpm_list_t *pkglist, alpm_list_t *rem, alpm_list_t *upgrade,
int reversedeps)
@@ -763,18 +748,6 @@ static alpm_pkg_t *resolvedep(alpm_handle_t *handle, alpm_depend_t *dep,
return NULL;
}
/** Find a package satisfying a specified dependency.
* First look for a literal, going through each db one by one. Then look for
* providers. The first satisfier that belongs to an installed package is
* returned. If no providers belong to an installed package then an
* alpm_question_select_provider_t is created to select the provider.
* The dependency can include versions with depmod operators.
*
* @param handle the context handle
* @param dbs an alpm_list_t* of alpm_db_t where the satisfier will be searched
* @param depstring package or provision name, versioned or not
* @return a alpm_pkg_t* satisfying depstring
*/
alpm_pkg_t SYMEXPORT *alpm_find_dbs_satisfier(alpm_handle_t *handle,
alpm_list_t *dbs, const char *depstring)
{
@@ -889,11 +862,6 @@ int _alpm_resolvedeps(alpm_handle_t *handle, alpm_list_t *localpkgs,
return ret;
}
/** Reverse of splitdep; make a dep string from a alpm_depend_t struct.
* The string must be freed!
* @param dep the depend to turn into a string
* @return a string-formatted dependency with operator if necessary
*/
char SYMEXPORT *alpm_dep_compute_string(const alpm_depend_t *dep)
{
const char *name, *opr, *ver, *desc_delim, *desc;

View File

@@ -359,7 +359,7 @@ static int check_mountpoint(alpm_handle_t *handle, alpm_mountpoint_t *mp)
}
int _alpm_check_downloadspace(alpm_handle_t *handle, const char *cachedir,
size_t num_files, off_t *file_sizes)
size_t num_files, const off_t *file_sizes)
{
alpm_list_t *mount_points;
alpm_mountpoint_t *cachedir_mp;

View File

@@ -58,6 +58,6 @@ typedef struct __alpm_mountpoint_t {
int _alpm_check_diskspace(alpm_handle_t *handle);
int _alpm_check_downloadspace(alpm_handle_t *handle, const char *cachedir,
size_t num_files, off_t *file_sizes);
size_t num_files, const off_t *file_sizes);
#endif /* ALPM_DISKSPACE_H */

View File

@@ -18,6 +18,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
@@ -49,6 +50,10 @@
#include "handle.h"
#ifdef HAVE_LIBCURL
static int curl_add_payload(alpm_handle_t *handle, CURLM *curlm,
struct dload_payload *payload, const char *localpath);
static const char *get_filename(const char *url)
{
char *filename = strrchr(url, '/');
@@ -72,31 +77,24 @@ static char *get_fullpath(const char *path, const char *filename,
return filepath;
}
static CURL *get_libcurl_handle(alpm_handle_t *handle)
{
if(!handle->curl) {
curl_global_init(CURL_GLOBAL_SSL);
handle->curl = curl_easy_init();
}
return handle->curl;
}
enum {
ABORT_SIGINT = 1,
ABORT_OVER_MAXFILESIZE
};
static int dload_interrupted;
static void inthandler(int UNUSED signum)
{
dload_interrupted = ABORT_SIGINT;
}
static int dload_progress_cb(void *file, curl_off_t dltotal, curl_off_t dlnow,
curl_off_t UNUSED ultotal, curl_off_t UNUSED ulnow)
{
struct dload_payload *payload = (struct dload_payload *)file;
off_t current_size, total_size;
alpm_download_event_progress_t cb_data = {0};
/* do not print signature files progress bar */
if(payload->signature) {
return 0;
}
/* avoid displaying progress bar for redirects with a body */
if(payload->respcode >= 300) {
@@ -108,6 +106,11 @@ static int dload_progress_cb(void *file, curl_off_t dltotal, curl_off_t dlnow,
return 1;
}
if(dlnow < 0 || dltotal <= 0 || dlnow > dltotal) {
/* bogus values : stop here */
return 0;
}
current_size = payload->initial_size + dlnow;
/* is our filesize still under any set limit? */
@@ -123,30 +126,15 @@ static int dload_progress_cb(void *file, curl_off_t dltotal, curl_off_t dlnow,
total_size = payload->initial_size + dltotal;
if(dltotal == 0 || payload->prevprogress == total_size) {
if(payload->prevprogress == total_size) {
return 0;
}
/* initialize the progress bar here to avoid displaying it when
* a repo is up to date and nothing gets downloaded.
* payload->handle->dlcb will receive the remote_name
* and the following arguments:
* 0, -1: download initialized
* 0, 0: non-download event
* x {x>0}, x: download complete
* x {x>0, x<y}, y {y > 0}: download progress, expected total is known */
if(!payload->cb_initialized) {
payload->handle->dlcb(payload->remote_name, 0, -1);
payload->cb_initialized = 1;
}
if(payload->prevprogress == current_size) {
payload->handle->dlcb(payload->remote_name, 0, 0);
} else {
/* do NOT include initial_size since it wasn't part of the package's
* download_size (nor included in the total download size callback) */
payload->handle->dlcb(payload->remote_name, dlnow, dltotal);
}
cb_data.total = dltotal;
cb_data.downloaded = dlnow;
payload->handle->dlcb(payload->remote_name, ALPM_DOWNLOAD_PROGRESS, &cb_data);
payload->prevprogress = current_size;
return 0;
@@ -195,9 +183,10 @@ static int curl_gethost(const char *url, char *buffer, size_t buf_len)
static int utimes_long(const char *path, long seconds)
{
if(seconds != -1) {
struct timeval tv[2];
memset(&tv, 0, sizeof(tv));
tv[0].tv_sec = tv[1].tv_sec = seconds;
struct timeval tv[2] = {
{ .tv_sec = seconds, },
{ .tv_sec = seconds, },
};
return utimes(path, tv);
}
return 0;
@@ -240,7 +229,7 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, size_t nmemb, void *u
}
}
curl_easy_getinfo(payload->handle->curl, CURLINFO_RESPONSE_CODE, &respcode);
curl_easy_getinfo(payload->curl, CURLINFO_RESPONSE_CODE, &respcode);
if(payload->respcode != respcode) {
payload->respcode = respcode;
}
@@ -248,8 +237,7 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, size_t nmemb, void *u
return realsize;
}
static void curl_set_handle_opts(struct dload_payload *payload,
CURL *curl, char *error_buffer)
static void curl_set_handle_opts(CURL *curl, struct dload_payload *payload)
{
alpm_handle_t *handle = payload->handle;
const char *useragent = getenv("HTTP_USER_AGENT");
@@ -259,7 +247,7 @@ static void curl_set_handle_opts(struct dload_payload *payload,
* to reset the handle's parameters for each time it's used. */
curl_easy_reset(curl);
curl_easy_setopt(curl, CURLOPT_URL, payload->fileurl);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, payload->error_buffer);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 10L);
curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 10L);
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
@@ -278,12 +266,14 @@ static void curl_set_handle_opts(struct dload_payload *payload,
curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 60L);
curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_easy_setopt(curl, CURLOPT_PRIVATE, (void *)payload);
_alpm_log(handle, ALPM_LOG_DEBUG, "url: %s\n", payload->fileurl);
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: url is %s\n",
payload->remote_name, payload->fileurl);
if(payload->max_size) {
_alpm_log(handle, ALPM_LOG_DEBUG, "maxsize: %jd\n",
(intmax_t)payload->max_size);
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: maxsize %jd\n",
payload->remote_name, (intmax_t)payload->max_size);
curl_easy_setopt(curl, CURLOPT_MAXFILESIZE_LARGE,
(curl_off_t)payload->max_size);
}
@@ -292,42 +282,25 @@ static void curl_set_handle_opts(struct dload_payload *payload,
curl_easy_setopt(curl, CURLOPT_USERAGENT, useragent);
}
if(!payload->allow_resume && !payload->force && payload->destfile_name &&
if(!payload->force && payload->destfile_name &&
stat(payload->destfile_name, &st) == 0) {
/* start from scratch, but only download if our local is out of date. */
curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE);
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, (long)st.st_mtime);
_alpm_log(handle, ALPM_LOG_DEBUG,
"using time condition: %ld\n", (long)st.st_mtime);
"%s: using time condition %ld\n",
payload->remote_name, (long)st.st_mtime);
} else if(stat(payload->tempfile_name, &st) == 0 && payload->allow_resume) {
/* a previous partial download exists, resume from end of file. */
payload->tempfile_openmode = "ab";
curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, (curl_off_t)st.st_size);
_alpm_log(handle, ALPM_LOG_DEBUG,
"tempfile found, attempting continuation from %jd bytes\n",
(intmax_t)st.st_size);
"%s: tempfile found, attempting continuation from %jd bytes\n",
payload->remote_name, (intmax_t)st.st_size);
payload->initial_size = st.st_size;
}
}
static void mask_signal(int signum, void (*handler)(int),
struct sigaction *origaction)
{
struct sigaction newaction;
newaction.sa_handler = handler;
sigemptyset(&newaction.sa_mask);
newaction.sa_flags = 0;
sigaction(signum, NULL, origaction);
sigaction(signum, &newaction, NULL);
}
static void unmask_signal(int signum, struct sigaction *sa)
{
sigaction(signum, sa, NULL);
}
static FILE *create_tempfile(struct dload_payload *payload, const char *localpath)
{
int fd;
@@ -362,121 +335,105 @@ static FILE *create_tempfile(struct dload_payload *payload, const char *localpat
/* RFC1123 states applications should support this length */
#define HOSTNAME_SIZE 256
static int curl_download_internal(struct dload_payload *payload,
const char *localpath, char **final_file, const char **final_url)
/* Return 0 if retry was successful, -1 otherwise */
static int curl_retry_next_server(CURLM *curlm, CURL *curl, struct dload_payload *payload)
{
int ret = -1;
FILE *localf = NULL;
char *effective_url;
char hostname[HOSTNAME_SIZE];
char error_buffer[CURL_ERROR_SIZE] = {0};
struct stat st;
long timecond, remote_time = -1;
double remote_size, bytes_dl;
struct sigaction orig_sig_pipe, orig_sig_int;
/* shortcut to our handle within the payload */
const char *server;
size_t len;
alpm_handle_t *handle = payload->handle;
CURL *curl = get_libcurl_handle(handle);
handle->pm_errno = ALPM_ERR_OK;
/* make sure these are NULL */
FREE(payload->tempfile_name);
FREE(payload->destfile_name);
FREE(payload->content_disp_name);
payload->tempfile_openmode = "wb";
if(!payload->remote_name) {
STRDUP(payload->remote_name, get_filename(payload->fileurl),
RET_ERR(handle, ALPM_ERR_MEMORY, -1));
if(payload->servers) {
payload->servers = payload->servers->next;
}
if(curl_gethost(payload->fileurl, hostname, sizeof(hostname)) != 0) {
_alpm_log(handle, ALPM_LOG_ERROR, _("url '%s' is invalid\n"), payload->fileurl);
RET_ERR(handle, ALPM_ERR_SERVER_BAD_URL, -1);
if(!payload->servers) {
_alpm_log(payload->handle, ALPM_LOG_DEBUG,
"%s: no more servers to retry\n", payload->remote_name);
return -1;
}
server = payload->servers->data;
if(payload->remote_name && strlen(payload->remote_name) > 0 &&
strcmp(payload->remote_name, ".sig") != 0) {
payload->destfile_name = get_fullpath(localpath, payload->remote_name, "");
payload->tempfile_name = get_fullpath(localpath, payload->remote_name, ".part");
if(!payload->destfile_name || !payload->tempfile_name) {
goto cleanup;
}
} else {
/* URL doesn't contain a filename, so make a tempfile. We can't support
* resuming this kind of download; partial transfers will be destroyed */
payload->unlink_on_fail = 1;
localf = create_tempfile(payload, localpath);
if(localf == NULL) {
goto cleanup;
/* regenerate a new fileurl */
FREE(payload->fileurl);
len = strlen(server) + strlen(payload->filepath) + 2;
MALLOC(payload->fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
snprintf(payload->fileurl, len, "%s/%s", server, payload->filepath);
if(payload->unlink_on_fail) {
/* we keep the file for a new retry but remove its data if any */
fflush(payload->localf);
if(ftruncate(fileno(payload->localf), 0)) {
RET_ERR(handle, ALPM_ERR_SYSTEM, -1);
}
fseek(payload->localf, 0, SEEK_SET);
}
curl_set_handle_opts(payload, curl, error_buffer);
/* Set curl with the new URL */
curl_easy_setopt(curl, CURLOPT_URL, payload->fileurl);
if(payload->max_size == payload->initial_size && payload->max_size != 0) {
/* .part file is complete */
ret = 0;
goto cleanup;
}
curl_multi_remove_handle(curlm, curl);
curl_multi_add_handle(curlm, curl);
if(localf == NULL) {
localf = fopen(payload->tempfile_name, payload->tempfile_openmode);
if(localf == NULL) {
handle->pm_errno = ALPM_ERR_RETRIEVE;
_alpm_log(handle, ALPM_LOG_ERROR,
_("could not open file %s: %s\n"),
payload->tempfile_name, strerror(errno));
goto cleanup;
}
}
return 0;
}
_alpm_log(handle, ALPM_LOG_DEBUG,
"opened tempfile for download: %s (%s)\n", payload->tempfile_name,
payload->tempfile_openmode);
/* Returns 2 if download retry happened
* Returns 1 if the file is up-to-date
* Returns 0 if current payload is completed successfully
* Returns -1 if an error happened for a required file
* Returns -2 if an error happened for an optional file
*/
static int curl_check_finished_download(CURLM *curlm, CURLMsg *msg,
const char *localpath)
{
alpm_handle_t *handle = NULL;
struct dload_payload *payload = NULL;
CURL *curl = msg->easy_handle;
CURLcode curlerr;
char *effective_url;
long timecond;
double remote_size, bytes_dl = 0;
long remote_time = -1;
struct stat st;
char hostname[HOSTNAME_SIZE];
int ret = -1;
curl_easy_setopt(curl, CURLOPT_WRITEDATA, localf);
curlerr = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &payload);
ASSERT(curlerr == CURLE_OK, RET_ERR(handle, ALPM_ERR_LIBCURL, -1));
handle = payload->handle;
/* Ignore any SIGPIPE signals. With libcurl, these shouldn't be happening,
* but better safe than sorry. Store the old signal handler first. */
mask_signal(SIGPIPE, SIG_IGN, &orig_sig_pipe);
dload_interrupted = 0;
mask_signal(SIGINT, &inthandler, &orig_sig_int);
/* perform transfer */
payload->curlerr = curl_easy_perform(curl);
_alpm_log(handle, ALPM_LOG_DEBUG, "curl returned error %d from transfer\n",
payload->curlerr);
/* disconnect relationships from the curl handle for things that might go out
* of scope, but could still be touched on connection teardown. This really
* only applies to FTP transfers. */
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL);
curl_gethost(payload->fileurl, hostname, sizeof(hostname));
curlerr = msg->data.result;
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: curl returned result %d from transfer\n",
payload->remote_name, curlerr);
/* was it a success? */
switch(payload->curlerr) {
switch(curlerr) {
case CURLE_OK:
/* get http/ftp response code */
_alpm_log(handle, ALPM_LOG_DEBUG, "response code: %ld\n", payload->respcode);
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: response code %ld\n",
payload->remote_name, payload->respcode);
if(payload->respcode >= 400) {
payload->unlink_on_fail = 1;
if(!payload->errors_ok) {
handle->pm_errno = ALPM_ERR_RETRIEVE;
/* non-translated message is same as libcurl */
snprintf(error_buffer, sizeof(error_buffer),
snprintf(payload->error_buffer, sizeof(payload->error_buffer),
"The requested URL returned error: %ld", payload->respcode);
_alpm_log(handle, ALPM_LOG_ERROR,
_("failed retrieving file '%s' from %s : %s\n"),
payload->remote_name, hostname, error_buffer);
payload->remote_name, hostname, payload->error_buffer);
}
if(curl_retry_next_server(curlm, curl, payload) == 0) {
return 2;
} else {
goto cleanup;
}
goto cleanup;
}
break;
case CURLE_ABORTED_BY_CALLBACK:
/* handle the interrupt accordingly */
if(dload_interrupted == ABORT_OVER_MAXFILESIZE) {
payload->curlerr = CURLE_FILESIZE_EXCEEDED;
curlerr = CURLE_FILESIZE_EXCEEDED;
payload->unlink_on_fail = 1;
handle->pm_errno = ALPM_ERR_LIBCURL;
_alpm_log(handle, ALPM_LOG_ERROR,
@@ -489,24 +446,32 @@ static int curl_download_internal(struct dload_payload *payload,
handle->pm_errno = ALPM_ERR_SERVER_BAD_URL;
_alpm_log(handle, ALPM_LOG_ERROR,
_("failed retrieving file '%s' from %s : %s\n"),
payload->remote_name, hostname, error_buffer);
goto cleanup;
payload->remote_name, hostname, payload->error_buffer);
if(curl_retry_next_server(curlm, curl, payload) == 0) {
return 2;
} else {
goto cleanup;
}
default:
/* delete zero length downloads */
if(fstat(fileno(localf), &st) == 0 && st.st_size == 0) {
if(fstat(fileno(payload->localf), &st) == 0 && st.st_size == 0) {
payload->unlink_on_fail = 1;
}
if(!payload->errors_ok) {
handle->pm_errno = ALPM_ERR_LIBCURL;
_alpm_log(handle, ALPM_LOG_ERROR,
_("failed retrieving file '%s' from %s : %s\n"),
payload->remote_name, hostname, error_buffer);
payload->remote_name, hostname, payload->error_buffer);
} else {
_alpm_log(handle, ALPM_LOG_DEBUG,
"failed retrieving file '%s' from %s : %s\n",
payload->remote_name, hostname, error_buffer);
payload->remote_name, hostname, payload->error_buffer);
}
if(curl_retry_next_server(curlm, curl, payload) == 0) {
return 2;
} else {
goto cleanup;
}
goto cleanup;
}
/* retrieve info about the state of the transfer */
@@ -516,30 +481,6 @@ static int curl_download_internal(struct dload_payload *payload,
curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &timecond);
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &effective_url);
if(final_url != NULL) {
*final_url = effective_url;
}
/* time condition was met and we didn't download anything. we need to
* clean up the 0 byte .part file that's left behind. */
if(timecond == 1 && DOUBLE_EQ(bytes_dl, 0)) {
_alpm_log(handle, ALPM_LOG_DEBUG, "file met time condition\n");
ret = 1;
unlink(payload->tempfile_name);
goto cleanup;
}
/* remote_size isn't necessarily the full size of the file, just what the
* server reported as remaining to download. compare it to what curl reported
* as actually being transferred during curl_easy_perform() */
if(!DOUBLE_EQ(remote_size, -1) && !DOUBLE_EQ(bytes_dl, -1) &&
!DOUBLE_EQ(bytes_dl, remote_size)) {
handle->pm_errno = ALPM_ERR_RETRIEVE;
_alpm_log(handle, ALPM_LOG_ERROR, _("%s appears to be truncated: %jd/%jd bytes\n"),
payload->remote_name, (intmax_t)bytes_dl, (intmax_t)remote_size);
goto cleanup;
}
if(payload->trust_remote_name) {
if(payload->content_disp_name) {
/* content-disposition header has a better name for our file */
@@ -548,6 +489,7 @@ static int curl_download_internal(struct dload_payload *payload,
get_filename(payload->content_disp_name), "");
} else {
const char *effective_filename = strrchr(effective_url, '/');
if(effective_filename && strlen(effective_filename) > 2) {
effective_filename++;
@@ -564,28 +506,79 @@ static int curl_download_internal(struct dload_payload *payload,
}
}
/* Let's check if client requested downloading accompanion *.sig file */
if(!payload->signature && payload->download_signature && curlerr == CURLE_OK && payload->respcode < 400) {
struct dload_payload *sig = NULL;
int len = strlen(effective_url) + 5;
CALLOC(sig, 1, sizeof(*sig), GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
MALLOC(sig->fileurl, len, FREE(sig); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
snprintf(sig->fileurl, len, "%s.sig", effective_url);
if(payload->trust_remote_name) {
/* In this case server might provide a new name for the main payload.
* Choose *.sig filename based on this new name.
*/
const char* realname = payload->destfile_name ? payload->destfile_name : payload->tempfile_name;
const char *final_file = get_filename(realname);
int remote_name_len = strlen(final_file) + 5;
MALLOC(sig->remote_name, remote_name_len, FREE(sig->fileurl); FREE(sig); GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
snprintf(sig->remote_name, remote_name_len, "%s.sig", final_file);
}
sig->signature = 1;
sig->handle = handle;
sig->force = payload->force;
sig->unlink_on_fail = payload->unlink_on_fail;
sig->errors_ok = payload->signature_optional;
/* set hard upper limit of 16KiB */
sig->max_size = 16 * 1024;
curl_add_payload(handle, curlm, sig, localpath);
}
/* time condition was met and we didn't download anything. we need to
* clean up the 0 byte .part file that's left behind. */
if(timecond == 1 && DOUBLE_EQ(bytes_dl, 0)) {
_alpm_log(handle, ALPM_LOG_DEBUG, "%s: file met time condition\n",
payload->remote_name);
ret = 1;
unlink(payload->tempfile_name);
goto cleanup;
}
/* remote_size isn't necessarily the full size of the file, just what the
* server reported as remaining to download. compare it to what curl reported
* as actually being transferred during curl_easy_perform() */
if(!DOUBLE_EQ(remote_size, -1) && !DOUBLE_EQ(bytes_dl, -1) &&
!DOUBLE_EQ(bytes_dl, remote_size)) {
_alpm_log(handle, ALPM_LOG_ERROR, _("%s appears to be truncated: %jd/%jd bytes\n"),
payload->remote_name, (intmax_t)bytes_dl, (intmax_t)remote_size);
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, cleanup);
}
ret = 0;
cleanup:
if(localf != NULL) {
fclose(localf);
/* disconnect relationships from the curl handle for things that might go out
* of scope, but could still be touched on connection teardown. This really
* only applies to FTP transfers. */
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, (char *)NULL);
if(payload->localf != NULL) {
fclose(payload->localf);
utimes_long(payload->tempfile_name, remote_time);
}
if(ret == 0) {
const char *realname = payload->tempfile_name;
if(payload->destfile_name) {
realname = payload->destfile_name;
if(rename(payload->tempfile_name, payload->destfile_name)) {
_alpm_log(handle, ALPM_LOG_ERROR, _("could not rename %s to %s (%s)\n"),
payload->tempfile_name, payload->destfile_name, strerror(errno));
ret = -1;
}
}
if(ret != -1 && final_file) {
STRDUP(*final_file, strrchr(realname, '/') + 1,
RET_ERR(handle, ALPM_ERR_MEMORY, -1));
}
}
if((ret == -1 || dload_interrupted) && payload->unlink_on_fail &&
@@ -593,45 +586,245 @@ cleanup:
unlink(payload->tempfile_name);
}
/* restore the old signal handlers */
unmask_signal(SIGINT, &orig_sig_int);
unmask_signal(SIGPIPE, &orig_sig_pipe);
/* if we were interrupted, trip the old handler */
if(dload_interrupted == ABORT_SIGINT) {
raise(SIGINT);
if(handle->dlcb && !payload->signature) {
alpm_download_event_completed_t cb_data = {0};
cb_data.total = bytes_dl;
cb_data.result = ret;
handle->dlcb(payload->remote_name, ALPM_DOWNLOAD_COMPLETED, &cb_data);
}
curl_multi_remove_handle(curlm, curl);
curl_easy_cleanup(curl);
payload->curl = NULL;
FREE(payload->fileurl);
if(ret == -1 && payload->errors_ok) {
ret = -2;
}
if(payload->signature) {
/* free signature payload memory that was allocated earlier in dload.c */
_alpm_dload_payload_reset(payload);
FREE(payload);
}
return ret;
}
/* Returns 0 in case if a new download transaction has been successfully started
* Returns -1 if am error happened while starting a new download
*/
static int curl_add_payload(alpm_handle_t *handle, CURLM *curlm,
struct dload_payload *payload, const char *localpath)
{
size_t len;
CURL *curl = NULL;
char hostname[HOSTNAME_SIZE];
int ret = -1;
curl = curl_easy_init();
payload->curl = curl;
if(payload->fileurl) {
ASSERT(!payload->servers, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
ASSERT(!payload->filepath, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
} else {
const char *server;
ASSERT(payload->servers, GOTO_ERR(handle, ALPM_ERR_SERVER_NONE, cleanup));
ASSERT(payload->filepath, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, cleanup));
server = payload->servers->data;
len = strlen(server) + strlen(payload->filepath) + 2;
MALLOC(payload->fileurl, len, GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
snprintf(payload->fileurl, len, "%s/%s", server, payload->filepath);
}
payload->tempfile_openmode = "wb";
if(!payload->remote_name) {
STRDUP(payload->remote_name, get_filename(payload->fileurl),
GOTO_ERR(handle, ALPM_ERR_MEMORY, cleanup));
}
if(curl_gethost(payload->fileurl, hostname, sizeof(hostname)) != 0) {
_alpm_log(handle, ALPM_LOG_ERROR, _("url '%s' is invalid\n"), payload->fileurl);
GOTO_ERR(handle, ALPM_ERR_SERVER_BAD_URL, cleanup);
}
if(payload->remote_name && strlen(payload->remote_name) > 0) {
payload->destfile_name = get_fullpath(localpath, payload->remote_name, "");
payload->tempfile_name = get_fullpath(localpath, payload->remote_name, ".part");
if(!payload->destfile_name || !payload->tempfile_name) {
goto cleanup;
}
} else {
/* URL doesn't contain a filename, so make a tempfile. We can't support
* resuming this kind of download; partial transfers will be destroyed */
payload->unlink_on_fail = 1;
payload->localf = create_tempfile(payload, localpath);
if(payload->localf == NULL) {
goto cleanup;
}
}
curl_set_handle_opts(curl, payload);
if(payload->max_size == payload->initial_size && payload->max_size != 0) {
/* .part file is complete */
ret = 0;
goto cleanup;
}
if(payload->localf == NULL) {
payload->localf = fopen(payload->tempfile_name, payload->tempfile_openmode);
if(payload->localf == NULL) {
_alpm_log(handle, ALPM_LOG_ERROR,
_("could not open file %s: %s\n"),
payload->tempfile_name, strerror(errno));
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, cleanup);
}
}
_alpm_log(handle, ALPM_LOG_DEBUG,
"%s: opened tempfile for download: %s (%s)\n",
payload->remote_name,
payload->tempfile_name,
payload->tempfile_openmode);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, payload->localf);
curl_multi_add_handle(curlm, curl);
return 0;
cleanup:
curl_easy_cleanup(curl);
return ret;
}
static int curl_download_internal(alpm_handle_t *handle,
alpm_list_t *payloads /* struct dload_payload */,
const char *localpath)
{
int active_downloads_num = 0;
bool recheck_downloads = false;
int err = 0;
int max_streams = handle->parallel_downloads;
CURLM *curlm = handle->curlm;
while(active_downloads_num > 0 || payloads || recheck_downloads) {
CURLMcode mc;
for(; active_downloads_num < max_streams && payloads; active_downloads_num++) {
struct dload_payload *payload = payloads->data;
if(curl_add_payload(handle, curlm, payload, localpath) == 0) {
if(handle->dlcb && !payload->signature) {
alpm_download_event_init_t cb_data = {.optional = payload->errors_ok};
handle->dlcb(payload->remote_name, ALPM_DOWNLOAD_INIT, &cb_data);
}
payloads = payloads->next;
} else {
/* The payload failed to start. Do not start any new downloads.
* Wait until all active downloads complete.
*/
_alpm_log(handle, ALPM_LOG_ERROR, _("failed to setup a download payload for %s\n"), payload->remote_name);
payloads = NULL;
err = -1;
}
}
mc = curl_multi_perform(curlm, &active_downloads_num);
if(mc == CURLM_OK) {
mc = curl_multi_wait(curlm, NULL, 0, 1000, NULL);
}
if(mc != CURLM_OK) {
_alpm_log(handle, ALPM_LOG_ERROR, _("curl returned error %d from transfer\n"), mc);
payloads = NULL;
err = -1;
}
recheck_downloads = false;
while(true) {
int msgs_left = 0;
CURLMsg *msg = curl_multi_info_read(curlm, &msgs_left);
if(!msg) {
break;
}
if(msg->msg == CURLMSG_DONE) {
int ret = curl_check_finished_download(curlm, msg, localpath);
if(ret == -1) {
/* if current payload failed to download then stop adding new payloads but wait for the
* current ones
*/
payloads = NULL;
err = -1;
}
/* curl_multi_check_finished_download() might add more payloads e.g. in case of a retry
* from the next mirror. We need to execute curl_multi_perform() at least one more time
* to make sure new payload requests are processed.
*/
recheck_downloads = true;
} else {
_alpm_log(handle, ALPM_LOG_ERROR, _("curl transfer error: %d\n"), msg->msg);
}
}
}
_alpm_log(handle, ALPM_LOG_DEBUG, "curl_download_internal return code is %d\n", err);
return err;
}
#endif
/** Download a file given by a URL to a local directory.
* Does not overwrite an existing file if the download fails.
* @param payload the payload context
* @param localpath the directory to save the file in
* @param final_file the real name of the downloaded file (may be NULL)
* @return 0 on success, -1 on error (pm_errno is set accordingly if errors_ok == 0)
*/
int _alpm_download(struct dload_payload *payload, const char *localpath,
char **final_file, const char **final_url)
int _alpm_download(alpm_handle_t *handle,
alpm_list_t *payloads /* struct dload_payload */,
const char *localpath)
{
alpm_handle_t *handle = payload->handle;
if(handle->fetchcb == NULL) {
#ifdef HAVE_LIBCURL
return curl_download_internal(payload, localpath, final_file, final_url);
return curl_download_internal(handle, payloads, localpath);
#else
/* work around unused warnings when building without libcurl */
(void)final_file;
(void)final_url;
RET_ERR(handle, ALPM_ERR_EXTERNAL_DOWNLOAD, -1);
#endif
} else {
int ret = handle->fetchcb(payload->fileurl, localpath, payload->force);
if(ret == -1 && !payload->errors_ok) {
RET_ERR(handle, ALPM_ERR_EXTERNAL_DOWNLOAD, -1);
alpm_list_t *p;
for(p = payloads; p; p = p->next) {
struct dload_payload *payload = p->data;
alpm_list_t *s;
int success = 0;
if(payload->fileurl) {
if (handle->fetchcb(payload->fileurl, localpath, payload->force) != -1) {
success = 1;
break;
}
} else {
for(s = payload->servers; s; s = s->next) {
const char *server = s->data;
char *fileurl;
int ret;
size_t len = strlen(server) + strlen(payload->filepath) + 2;
MALLOC(fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
snprintf(fileurl, len, "%s/%s", server, payload->filepath);
ret = handle->fetchcb(fileurl, localpath, payload->force);
free(fileurl);
if (ret != -1) {
success = 1;
break;
}
}
}
if(!success && !payload->errors_ok) {
RET_ERR(handle, ALPM_ERR_EXTERNAL_DOWNLOAD, -1);
}
}
return ret;
return 0;
}
}
@@ -651,84 +844,91 @@ static char *filecache_find_url(alpm_handle_t *handle, const char *url)
return _alpm_filecache_find(handle, filebase);
}
/** Fetch a remote pkg. */
char SYMEXPORT *alpm_fetch_pkgurl(alpm_handle_t *handle, const char *url)
int SYMEXPORT alpm_fetch_pkgurl(alpm_handle_t *handle, const alpm_list_t *urls,
alpm_list_t **fetched)
{
char *filepath;
const char *cachedir, *final_pkg_url = NULL;
char *final_file = NULL;
struct dload_payload payload;
int ret = 0;
const char *cachedir;
alpm_list_t *payloads = NULL;
const alpm_list_t *i;
alpm_event_t event;
CHECK_HANDLE(handle, return NULL);
ASSERT(url, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, NULL));
CHECK_HANDLE(handle, return -1);
ASSERT(*fetched == NULL, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
/* find a valid cache dir to download to */
cachedir = _alpm_filecache_setup(handle);
memset(&payload, 0, sizeof(struct dload_payload));
for(i = urls; i; i = i->next) {
char *url = i->data;
/* attempt to find the file in our pkgcache */
filepath = filecache_find_url(handle, url);
if(filepath == NULL) {
STRDUP(payload.fileurl, url, RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
payload.allow_resume = 1;
payload.handle = handle;
payload.trust_remote_name = 1;
/* attempt to find the file in our pkgcache */
char *filepath = filecache_find_url(handle, url);
if(filepath) {
/* the file is locally cached so add it to the output right away */
alpm_list_append(fetched, filepath);
} else {
struct dload_payload *payload = NULL;
/* download the file */
ret = _alpm_download(&payload, cachedir, &final_file, &final_pkg_url);
_alpm_dload_payload_reset(&payload);
if(ret == -1) {
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to download %s\n"), url);
free(final_file);
return NULL;
ASSERT(url, GOTO_ERR(handle, ALPM_ERR_WRONG_ARGS, err));
CALLOC(payload, 1, sizeof(*payload), GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
STRDUP(payload->fileurl, url, FREE(payload); GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
payload->allow_resume = 1;
payload->handle = handle;
payload->trust_remote_name = 1;
payload->download_signature = (handle->siglevel & ALPM_SIG_PACKAGE);
payload->signature_optional = (handle->siglevel & ALPM_SIG_PACKAGE_OPTIONAL);
payloads = alpm_list_add(payloads, payload);
}
_alpm_log(handle, ALPM_LOG_DEBUG, "successfully downloaded %s\n", url);
}
/* attempt to download the signature */
if(ret == 0 && final_pkg_url && (handle->siglevel & ALPM_SIG_PACKAGE)) {
char *sig_filepath, *sig_final_file = NULL;
size_t len;
if(payloads) {
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
EVENT(handle, &event);
if(_alpm_download(handle, payloads, cachedir) == -1) {
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED;
EVENT(handle, &event);
len = strlen(final_pkg_url) + 5;
MALLOC(payload.fileurl, len, free(final_file); RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
snprintf(payload.fileurl, len, "%s.sig", final_pkg_url);
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err);
} else {
event.type = ALPM_EVENT_PKG_RETRIEVE_DONE;
EVENT(handle, &event);
}
sig_filepath = filecache_find_url(handle, payload.fileurl);
if(sig_filepath == NULL) {
payload.handle = handle;
payload.trust_remote_name = 1;
payload.force = 1;
payload.errors_ok = (handle->siglevel & ALPM_SIG_PACKAGE_OPTIONAL);
for(i = payloads; i; i = i->next) {
struct dload_payload *payload = i->data;
char *filepath;
/* set hard upper limit of 16KiB */
payload.max_size = 16 * 1024;
ret = _alpm_download(&payload, cachedir, &sig_final_file, NULL);
if(ret == -1 && !payload.errors_ok) {
_alpm_log(handle, ALPM_LOG_WARNING,
_("failed to download %s\n"), payload.fileurl);
/* Warn now, but don't return NULL. We will fail later during package
* load time. */
} else if(ret == 0) {
_alpm_log(handle, ALPM_LOG_DEBUG,
"successfully downloaded %s\n", payload.fileurl);
if(payload->signature) {
continue;
}
if(payload->destfile_name) {
const char *filename = mbasename(payload->destfile_name);
filepath = _alpm_filecache_find(handle, filename);
} else {
STRDUP(filepath, payload->tempfile_name, GOTO_ERR(handle, ALPM_ERR_MEMORY, err));
}
if(filepath) {
alpm_list_append(fetched, filepath);
} else {
_alpm_log(handle, ALPM_LOG_WARNING, _("download completed successfully but no file in the cache\n"));
GOTO_ERR(handle, ALPM_ERR_RETRIEVE, err);
}
FREE(sig_final_file);
}
free(sig_filepath);
_alpm_dload_payload_reset(&payload);
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads);
}
/* we should be able to find the file the second time around */
if(filepath == NULL) {
filepath = _alpm_filecache_find(handle, final_file);
}
free(final_file);
return 0;
return filepath;
err:
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads);
FREELIST(*fetched);
return -1;
}
void _alpm_dload_payload_reset(struct dload_payload *payload)
@@ -740,16 +940,6 @@ void _alpm_dload_payload_reset(struct dload_payload *payload)
FREE(payload->destfile_name);
FREE(payload->content_disp_name);
FREE(payload->fileurl);
memset(payload, '\0', sizeof(*payload));
}
void _alpm_dload_payload_reset_for_retry(struct dload_payload *payload)
{
ASSERT(payload, return);
FREE(payload->fileurl);
payload->initial_size += payload->prevprogress;
payload->prevprogress = 0;
payload->unlink_on_fail = 0;
payload->cb_initialized = 0;
FREE(payload->filepath);
*payload = (struct dload_payload){0};
}

View File

@@ -30,7 +30,13 @@ struct dload_payload {
char *tempfile_name;
char *destfile_name;
char *content_disp_name;
/* client has to provide either
* 1) fileurl - full URL to the file
* 2) pair of (servers, filepath), in this case ALPM iterates over the
* server list and tries to download "$server/$filepath"
*/
char *fileurl;
char *filepath; /* download URL path */
alpm_list_t *servers;
long respcode;
off_t initial_size;
@@ -41,16 +47,20 @@ struct dload_payload {
int errors_ok;
int unlink_on_fail;
int trust_remote_name;
int cb_initialized;
int download_signature; /* specifies if an accompanion *.sig file need to be downloaded*/
int signature_optional; /* *.sig file is optional */
#ifdef HAVE_LIBCURL
CURLcode curlerr; /* last error produced by curl */
CURL *curl;
char error_buffer[CURL_ERROR_SIZE];
FILE *localf; /* temp download file */
int signature; /* specifies if this payload is for a signature file */
#endif
};
void _alpm_dload_payload_reset(struct dload_payload *payload);
void _alpm_dload_payload_reset_for_retry(struct dload_payload *payload);
int _alpm_download(struct dload_payload *payload, const char *localpath,
char **final_file, const char **final_url);
int _alpm_download(alpm_handle_t *handle,
alpm_list_t *payloads /* struct dload_payload */,
const char *localpath);
#endif /* ALPM_DLOAD_H */

View File

@@ -64,11 +64,6 @@ void _alpm_handle_free(alpm_handle_t *handle)
closelog();
}
#ifdef HAVE_LIBCURL
/* release curl handle */
curl_easy_cleanup(handle->curl);
#endif
#ifdef HAVE_LIBGPGME
FREELIST(handle->known_keys);
#endif
@@ -105,7 +100,7 @@ int _alpm_handle_lock(alpm_handle_t *handle)
ASSERT(handle->lockfd < 0, return 0);
/* create the dir of the lockfile first */
dir = strdup(handle->lockfile);
STRDUP(dir, handle->lockfile, return -1);
ptr = strrchr(dir, '/');
if(ptr) {
*ptr = '\0';
@@ -123,12 +118,6 @@ int _alpm_handle_lock(alpm_handle_t *handle)
return (handle->lockfd >= 0 ? 0 : -1);
}
/** Remove the database lock file
* @param handle the context handle
* @return 0 on success, -1 on error
*
* @note Safe to call from inside signal handlers.
*/
int SYMEXPORT alpm_unlock(alpm_handle_t *handle)
{
ASSERT(handle != NULL, return -1);
@@ -311,6 +300,16 @@ const char SYMEXPORT *alpm_option_get_dbext(alpm_handle_t *handle)
return handle->dbext;
}
int SYMEXPORT alpm_option_get_parallel_downloads(alpm_handle_t *handle)
{
CHECK_HANDLE(handle, return -1);
#ifdef HAVE_LIBCURL
return handle->parallel_downloads;
#else
return 1;
#endif
}
int SYMEXPORT alpm_option_set_logcb(alpm_handle_t *handle, alpm_cb_log cb)
{
CHECK_HANDLE(handle, return -1);
@@ -862,3 +861,16 @@ int SYMEXPORT alpm_option_set_disable_dl_timeout(alpm_handle_t *handle,
#endif
return 0;
}
int SYMEXPORT alpm_option_set_parallel_downloads(alpm_handle_t *handle,
unsigned int num_streams)
{
CHECK_HANDLE(handle, return -1);
#ifdef HAVE_LIBCURL
ASSERT(num_streams >= 1, RET_ERR(handle, ALPM_ERR_WRONG_ARGS, -1));
handle->parallel_downloads = num_streams;
#else
(void)num_streams; /* silence unused variable warnings */
#endif
return 0;
}

View File

@@ -59,8 +59,9 @@ struct __alpm_handle_t {
#ifdef HAVE_LIBCURL
/* libcurl handle */
CURL *curl; /* reusable curl_easy handle */
CURLM *curlm;
unsigned short disable_dl_timeout;
unsigned int parallel_downloads; /* number of download streams */
#endif
#ifdef HAVE_LIBGPGME

View File

@@ -1 +0,0 @@
../../src/common/ini.c

View File

@@ -1 +0,0 @@
../../src/common/ini.h

View File

@@ -10,4 +10,4 @@ Version: @LIB_VERSION@
Requires.private: libarchive @pc_crypto@ @pc_libcurl@ @pc_gpgme@
Cflags: -I${includedir} @LFS_CFLAGS@
Libs: -L${libdir} -lalpm
Libs.private: @LIBS@ @pc_gpgme_libs@
Libs.private: @LIBS@ @pc_gpgme_libs@ @LIBINTL@

View File

@@ -30,11 +30,6 @@
#include "util.h"
#include "alpm.h"
/** \addtogroup alpm_log Logging Functions
* @brief Functions to log using libalpm
* @{
*/
static int _alpm_log_leader(FILE *f, const char *prefix)
{
time_t t = time(NULL);
@@ -47,12 +42,6 @@ static int _alpm_log_leader(FILE *f, const char *prefix)
return fprintf(f, "[%s] [%s] ", timestamp, prefix);
}
/** A printf-like function for logging.
* @param handle the context handle
* @param prefix caller-specific prefix for the log
* @param fmt output format
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_logaction(alpm_handle_t *handle, const char *prefix,
const char *fmt, ...)
{
@@ -109,8 +98,6 @@ int SYMEXPORT alpm_logaction(alpm_handle_t *handle, const char *prefix,
return ret;
}
/** @} */
void _alpm_log(alpm_handle_t *handle, alpm_loglevel_t flag, const char *fmt, ...)
{
va_list args;

View File

@@ -34,12 +34,6 @@
#include "handle.h"
#include "deps.h"
/** \addtogroup alpm_packages Package Functions
* @brief Functions to manipulate libalpm packages
* @{
*/
/** Free a package. */
int SYMEXPORT alpm_pkg_free(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return -1);
@@ -52,7 +46,6 @@ int SYMEXPORT alpm_pkg_free(alpm_pkg_t *pkg)
return 0;
}
/** Check the integrity (with md5) of a package from the sync cache. */
int SYMEXPORT alpm_pkg_checkmd5sum(alpm_pkg_t *pkg)
{
char *fpath;
@@ -275,6 +268,44 @@ const char SYMEXPORT *alpm_pkg_get_base64_sig(alpm_pkg_t *pkg)
return pkg->base64_sig;
}
int SYMEXPORT alpm_pkg_get_sig(alpm_pkg_t *pkg, unsigned char **sig, size_t *sig_len)
{
ASSERT(pkg != NULL, return -1);
if(pkg->base64_sig) {
int ret = alpm_decode_signature(pkg->base64_sig, sig, sig_len);
if(ret != 0) {
RET_ERR(pkg->handle, ALPM_ERR_SIG_INVALID, -1);
}
return 0;
} else {
char *pkgpath = NULL, *sigpath = NULL;
alpm_errno_t err;
int ret = -1;
pkgpath = _alpm_filecache_find(pkg->handle, pkg->filename);
if(!pkgpath) {
GOTO_ERR(pkg->handle, ALPM_ERR_PKG_NOT_FOUND, cleanup);
}
sigpath = _alpm_sigpath(pkg->handle, pkgpath);
if(!sigpath || _alpm_access(pkg->handle, NULL, sigpath, R_OK)) {
GOTO_ERR(pkg->handle, ALPM_ERR_SIG_MISSING, cleanup);
}
err = _alpm_read_file(sigpath, sig, sig_len);
if(err == ALPM_ERR_OK) {
_alpm_log(pkg->handle, ALPM_LOG_DEBUG, "found detached signature %s with size %ld\n",
sigpath, *sig_len);
} else {
GOTO_ERR(pkg->handle, err, cleanup);
}
ret = 0;
cleanup:
FREE(pkgpath);
FREE(sigpath);
return ret;
}
}
const char SYMEXPORT *alpm_pkg_get_arch(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
@@ -397,7 +428,6 @@ alpm_db_t SYMEXPORT *alpm_pkg_get_db(alpm_pkg_t *pkg)
return pkg->origin_data.db;
}
/** Open a package changelog for reading. */
void SYMEXPORT *alpm_pkg_changelog_open(alpm_pkg_t *pkg)
{
ASSERT(pkg != NULL, return NULL);
@@ -405,7 +435,6 @@ void SYMEXPORT *alpm_pkg_changelog_open(alpm_pkg_t *pkg)
return pkg->ops->changelog_open(pkg);
}
/** Read data from an open changelog 'file stream'. */
size_t SYMEXPORT alpm_pkg_changelog_read(void *ptr, size_t size,
const alpm_pkg_t *pkg, void *fp)
{
@@ -414,7 +443,6 @@ size_t SYMEXPORT alpm_pkg_changelog_read(void *ptr, size_t size,
return pkg->ops->changelog_read(ptr, size, pkg, fp);
}
/** Close a package changelog for reading. */
int SYMEXPORT alpm_pkg_changelog_close(const alpm_pkg_t *pkg, void *fp)
{
ASSERT(pkg != NULL, return -1);
@@ -422,7 +450,6 @@ int SYMEXPORT alpm_pkg_changelog_close(const alpm_pkg_t *pkg, void *fp)
return pkg->ops->changelog_close(pkg, fp);
}
/** Open a package mtree file for reading. */
struct archive SYMEXPORT *alpm_pkg_mtree_open(alpm_pkg_t * pkg)
{
ASSERT(pkg != NULL, return NULL);
@@ -430,7 +457,6 @@ struct archive SYMEXPORT *alpm_pkg_mtree_open(alpm_pkg_t * pkg)
return pkg->ops->mtree_open(pkg);
}
/** Read entry from an open mtree file. */
int SYMEXPORT alpm_pkg_mtree_next(const alpm_pkg_t * pkg, struct archive *archive,
struct archive_entry **entry)
{
@@ -439,7 +465,6 @@ int SYMEXPORT alpm_pkg_mtree_next(const alpm_pkg_t * pkg, struct archive *archiv
return pkg->ops->mtree_next(pkg, archive, entry);
}
/** Close a package mtree file for reading. */
int SYMEXPORT alpm_pkg_mtree_close(const alpm_pkg_t * pkg, struct archive *archive)
{
ASSERT(pkg != NULL, return -1);
@@ -510,21 +535,16 @@ static alpm_list_t *compute_requiredby(alpm_pkg_t *pkg, int optional)
return reqs;
}
/** Compute the packages requiring a given package. */
alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(alpm_pkg_t *pkg)
{
return compute_requiredby(pkg, 0);
}
/** Compute the packages optionally requiring a given package. */
alpm_list_t SYMEXPORT *alpm_pkg_compute_optionalfor(alpm_pkg_t *pkg)
{
return compute_requiredby(pkg, 1);
}
/** @} */
alpm_file_t *_alpm_file_copy(alpm_file_t *dest,
const alpm_file_t *src)
{
@@ -764,16 +784,6 @@ alpm_pkg_t SYMEXPORT *alpm_pkg_find(alpm_list_t *haystack, const char *needle)
return NULL;
}
/** Test if a package should be ignored.
*
* Checks if the package is ignored via IgnorePkg, or if the package is
* in a group ignored via IgnoreGroup.
*
* @param handle the context handle
* @param pkg the package to test
*
* @return 1 if the package should be ignored, 0 otherwise
*/
int SYMEXPORT alpm_pkg_should_ignore(alpm_handle_t *handle, alpm_pkg_t *pkg)
{
alpm_list_t *groups = NULL;

View File

@@ -17,7 +17,6 @@ eu_ES
fi
fr
gl
hi
hr
hu
id

View File

@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Arabic (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -59,7 +59,7 @@ msgstr "تحذير عند الاستخراج %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "تعذّر استخراج %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "تعذر إعادة تسمية %s إلى %s (%s)\n"
@@ -170,7 +170,7 @@ msgstr "مدخل قاعدة بيانات معطوب '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -232,7 +232,7 @@ msgstr "معلومات الحزمة مفقودة في %s\n"
msgid "failed to read signature file: %s\n"
msgstr "فشل في قراءة ملف التّوقيع: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "مفتاح ضروري غير موجود في حلقة المفاتيح\n"
@@ -362,22 +362,22 @@ msgstr "غير قادر على إنشاء ملف مؤقت للتحميل\n"
msgid "url '%s' is invalid\n"
msgstr "العنوان '%s' غير صالح\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "فشل في استقبال الملف '%s' من %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "فشل في استقبال الملف '%s' من %s : تم تجاوز حجم التحميل\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s يبدو غير موثوقًا: %jd/%jd بايت\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "tag td jpldg %s\n"
@@ -831,7 +831,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "التوقيع المطلوب مفقود :%s\n"
@@ -923,27 +923,27 @@ msgstr "حدثت تعارضات حزميّة تعذّر تحليلها\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr " يجري حذف '%s' من قائمة الأهداف بسبب تعارضها مع '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "تعذّر استقبال بعض الملفات\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "لا توجد مساحة خالية كافية على القرص\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "تعذّر بدء مُبادلة الإزالة\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "فشل في بدء المُبادلة\n"

View File

@@ -4,14 +4,14 @@
#
# Translators:
# enolp <enolp@softastur.org>, 2015-2016,2018-2019
# Ḷḷumex03, 2014
# Ḷḷumex03, 2014
# Ḷḷumex03, 2014-2015
# Ḷḷumex03 <tornes@opmbx.org>, 2014
# Ḷḷumex03 <tornes@opmbx.org>, 2014
# Ḷḷumex03 <tornes@opmbx.org>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Asturian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -52,7 +52,7 @@ msgstr "alvertencia dada al estrayer el paquete %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nun pudo estrayese %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nun pudo renomase %s a %s (%s)\n"
@@ -165,7 +165,7 @@ msgstr "entrada de base de datos toyida '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -229,7 +229,7 @@ msgstr "datos meta de paquete faltantes en %s\n"
msgid "failed to read signature file: %s\n"
msgstr "fallu al lleer el ficheru de robla: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "clave riquida del aniellu claves faltante\n"
@@ -363,22 +363,22 @@ msgstr "fallu al crear el ficheru temporal pa la descarga\n"
msgid "url '%s' is invalid\n"
msgstr "l'enllaz '%s' ye inválidu\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "fallu recibiendo'l ficheru '%s' de %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "fallu recibiendo'l ficheru '%s' de %s: tamañu de descarga superáu\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr ""
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "fallu al lleer %s\n"
@@ -830,7 +830,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: falta la robla riquida\n"
@@ -923,27 +923,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"desaniciando '%s' de la llista d'oxetivos porque ta en conflictu con '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "fallu al recuperar dellos ficheros\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nun hai espaciu llibre abondu\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nun pudo unviase la transaición de desaniciu\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nun pudo unviase la transaición\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-11 13:05+0000\n"
"Last-Translator: Galin Iskrenov <loot270@abv.bg>\n"
"Language-Team: Bulgarian (http://www.transifex.com/toofishes/archlinux-"
@@ -50,7 +50,7 @@ msgstr "има предупреждение при извличане %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "не може да се извлече %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "не може да се преименува %s на %s (%s)\n"
@@ -163,7 +163,7 @@ msgstr "повреден запис в базата '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -225,7 +225,7 @@ msgstr "липсват метаданни за пакета %s\n"
msgid "failed to read signature file: %s\n"
msgstr "не се чете подписващият файл: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "нужния ключ липсва от keyring\n"
@@ -357,24 +357,24 @@ msgstr "не може да се създаде временен файл за с
msgid "url '%s' is invalid\n"
msgstr "url '%s' е невалиден\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "неуспех при извличане на файл '%s' от %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"неуспех при получаването на файл '%s' от %s : очакваният размер за сваляне е "
"надвишен\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s изглежда частичен: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "неуспех при сваляне на %s\n"
@@ -826,7 +826,7 @@ msgstr "ключ \"%s\" не може да се внесе\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "ключ \"%s\" не може да се прегледа отдалечено\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: липсва изискващ се подпис\n"
@@ -918,27 +918,27 @@ msgstr "засечени нерешени пакетни конфликти\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "премахване '%s' от целевия списък заради конфликт с '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "неуспех при извличане на файлове\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "не успя да се прочете файла %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "няма достатъчно свободно място на диска\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "не се потвърждава транзакцията по премахване\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "не се потвърждава транзакцията\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Breton (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -54,7 +54,7 @@ msgstr "ur galv diwall a zo bet roet en ur eztennañ %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "n'haller ket eztennañ %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "n'haller ket adenvel %s e %s (%s)\n"
@@ -167,7 +167,7 @@ msgstr "enankad stlennvon kontronet '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -230,7 +230,7 @@ msgstr "mankout a ra metaroadennoù ar pakad e %s\n"
msgid "failed to read signature file: %s\n"
msgstr "fazi en ul lenn ar restr sinadur : %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "mankout a ra an alc'hwez goulennet en droñsell\n"
@@ -363,24 +363,24 @@ msgstr "fazi en ur c'hrouiñ ar restr padennek evit ar pellgargañ\n"
msgid "url '%s' is invalid\n"
msgstr "direizh eo an url '%s'\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "fazi en ur adkavout ar restr '%s' adalek %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"fazi en ur adkavout ar restr '%s' adalek %s : re vras eo ment ar "
"pellgargadur\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "krennet e seblant bezañ %s : %jd/%jd eizhbit\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "fazi en ur pellgargañ %s\n"
@@ -833,7 +833,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s : mankout a ra ar sinadur dleet\n"
@@ -925,27 +925,27 @@ msgstr "tabutoù n'haller ket diskoulmañ a zo bet dinoet\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "o dilemel '%s' eus ar roll bukenn dre m'en deus un tabut gant '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "c'hwitadenn war atoradur restroù 'zo\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "n'eus ket plas dieub a-walc'h war ar bladenn\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "n'haller ket erounit an treuzkas dilemel\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "n'haller ket erounit an treuzkas\n"

View File

@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 14:57+0000\n"
"Last-Translator: Davidmp <medipas@gmail.com>\n"
"Language-Team: Catalan (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -57,7 +57,7 @@ msgstr "avís en extreure %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "no s'ha pogut extreure %s (%s).\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "no s'ha pogut canviar el nom %s a %s (%s).\n"
@@ -170,7 +170,7 @@ msgstr "entrada de la base de dades corrupta \"%s'\".\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -235,7 +235,7 @@ msgstr "manquen les metadades del paquet a %s.\n"
msgid "failed to read signature file: %s\n"
msgstr "ha fallat llegir el fitxer de signatures: %s.\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "la clau requerida manca al clauer.\n"
@@ -372,24 +372,24 @@ msgstr "ha fallat crear un fitxer temporal per a la baixada.\n"
msgid "url '%s' is invalid\n"
msgstr "l'url \"%s\" no és vàlid.\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "ha fallat la recuperació del fitxer \"%s\" des de %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"ha fallat recuperar el fitxer \"%s\" des de %s: mida de la baixada superior "
"a l'esperada.\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sembla que està truncat: %jd/%jd bytes.\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "ha fallat baixar %s.\n"
@@ -845,7 +845,7 @@ msgstr "la clau \"%s\" no s'ha pogut importar.\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "la clau \"%s\" no s'ha pogut cercar remotament.\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: manca la signatura requerida.\n"
@@ -939,27 +939,27 @@ msgstr ""
"Se suprimeix \"%s\" de la llista d'objectius perquè té conflictes amb \"%s"
"\".\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "ha fallat la recuperació d'alguns fitxers.\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "ha fallat llegir el fitxer %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "no hi ha prou espai de disc lliure.\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "no s'ha pogut fer la transacció de supressió.\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "no s'ha pogut fer la transacció.\n"

View File

@@ -9,7 +9,6 @@
# IAmNotImportant, 2017
# Jaroslav Lichtblau <jlichtblau@seznam.cz>, 2014-2015
# Jaroslav Lichtblau <jlichtblau@seznam.cz>, 2014
# Lukáš Kucharczyk <lukas@kucharczyk.xyz>, 2020
# mmm <markotahal@gmail.com>, 2013
# mmm <markotahal@gmail.com>, 2011
# IAmNotImportant, 2017
@@ -19,9 +18,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-06-26 07:36+0000\n"
"Last-Translator: Lukáš Kucharczyk <lukas@kucharczyk.xyz>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Czech (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/cs/)\n"
"Language: cs\n"
@@ -61,7 +60,7 @@ msgstr "varování při rozbalování %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nelze rozbalit %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nelze přejmenovat %s na %s (%s)\n"
@@ -173,7 +172,7 @@ msgstr "poškozený záznam v databázi '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -235,7 +234,7 @@ msgstr "chybí metadata balíčku v %s\n"
msgid "failed to read signature file: %s\n"
msgstr "nelze načíst soubor s podpisy: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "požadovaný klíč není v klíčence\n"
@@ -365,24 +364,24 @@ msgstr "nepodařilo se vytvořit dočasný soubor pro stahování\n"
msgid "url '%s' is invalid\n"
msgstr "URL '%s' je chybná\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "selhalo získání souboru '%s' z %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"selhalo získání souboru '%s' z %s : překročení očekávané velikosti "
"stahování\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s se zdá být zkrácen: %jd/%jd bytů\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "selhalo stahování %s\n"
@@ -650,7 +649,7 @@ msgstr "chyba volání externího programu pro stahování souborů"
#: lib/libalpm/error.c:159
#, c-format
msgid "compiled without signature support"
msgstr "zkompilováno bez podpory podepisování"
msgstr ""
#: lib/libalpm/error.c:162
#, c-format
@@ -807,12 +806,12 @@ msgstr "Chyba GPGME: %s\n"
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "vyhledávání klíče %s pomocí WKD\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "chyba gpg: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
@@ -822,7 +821,7 @@ msgstr "do klíčenky nelze zapisovat\n"
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "klíč \"%s\" na serveru\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
@@ -834,7 +833,7 @@ msgstr "klíč \"%s\" se nepodařilo importovat\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "klíč \"%s\" nebylo možné vzdáleně vyhledat\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: chybí vyžadovaný podpis\n"
@@ -926,27 +925,27 @@ msgstr "zjištěn konflikt nerozlišitelných balíčků\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' odstraněn ze seznamu cílů, protože je konfliktní s '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "selhalo získání některých souborů\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "načtení souboru %s se nezdařilo: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "není dostatek volného místa na disku\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nelze provést transakci pro odstranění\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nelze provést transakci\n"

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-14 00:27+0000\n"
"Last-Translator: scootergrisen\n"
"Language-Team: Danish (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -55,7 +55,7 @@ msgstr "advarsel givet under udpakning %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "kunne ikke udpakke %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kunne ikke omdøbe %s til %s (%s)\n"
@@ -167,7 +167,7 @@ msgstr "beskadiget databasepunkt '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -229,7 +229,7 @@ msgstr "manglende pakkemetadata i %s\n"
msgid "failed to read signature file: %s\n"
msgstr "kunne ikke læse underskriftfil: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "krævede nøgle mangler fra nøglering\n"
@@ -359,24 +359,24 @@ msgstr "kunne ikke oprette midlertidig fil til hentning\n"
msgid "url '%s' is invalid\n"
msgstr "adressen '%s' er ugyldig\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "fejlede i indhentning af fil '%s' fra %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"kunne ikke indhente fil '%s' fra %s: forventet downloadstørrelse "
"overskredet\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s ser ud til at være afkortet: %jd/%jd byte\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "kunne ikke hente %s\n"
@@ -828,7 +828,7 @@ msgstr "nøglen \"%s\" kunne ikke importeres\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "nøglen \"%s\" kunne ikke opslås eksternt\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: mangler krævet signatur\n"
@@ -920,27 +920,27 @@ msgstr "pakkekonflikter, der ikke kan løses, er detekteret\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "fjerner »%s« fra målliste da det konflikter med »%s«\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "kunne ikke indhente nogle filer\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "kunne ikke læse filen %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ikke nok ledig diskplads\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kunne ikke indsende (commit) fjernelsestransaktion\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "kunne ikke indsende (commit) transaktion\n"

View File

@@ -4,16 +4,16 @@
#
# Translators:
# Dan McGee <dpmcgee@gmail.com>, 2011
# 21db53640bd6018c4a99700a4cf2ee28_f478df7 <98034cbca98620f1cf39d6ebdfa44311_785827>, 2019-2020
# Dieter S <ptpsmail@web.de>, 2019
# Frank Theile, 2018
# Frank Theile, 2018
# Jakob Gahde <j5lx@fmail.co.uk>, 2014-2015
# 65138391f015e4001c6ef9d675c96796_707a378 <99e420e9f3ea1b91cb2cbbb4cbc7cd27_2862>, 2013
# 65138391f015e4001c6ef9d675c96796_707a378 <99e420e9f3ea1b91cb2cbbb4cbc7cd27_2862>, 2013
# mar77i <inactive+mar77i@transifex.com>, 2013
# mar77i <inactive+mar77i@transifex.com>, 2013
# Martin Kühne <mysatyre@gmail.com>, 2017
# Matthias Gorissen <matthias@archlinux.de>, 2011
# Wieland Hoffmann <themineo+transifex@googlemail.com>, 2013
# 65138391f015e4001c6ef9d675c96796_707a378 <99e420e9f3ea1b91cb2cbbb4cbc7cd27_2862>, 2013
# mar77i <inactive+mar77i@transifex.com>, 2013
# Silvan Jegen <s.jegen@gmail.com>, 2015
# Wieland Hoffmann <themineo+transifex@googlemail.com>, 2013
# Wieland Hoffmann <themineo+transifex@googlemail.com>, 2013
@@ -21,10 +21,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-01-20 13:10+0000\n"
"Last-Translator: 21db53640bd6018c4a99700a4cf2ee28_f478df7 "
"<98034cbca98620f1cf39d6ebdfa44311_785827>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: German (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/de/)\n"
"Language: de\n"
@@ -63,7 +62,7 @@ msgstr "Es erscheint eine Warnung, wenn %s extrahiert wird (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "Konnte %s nicht entpacken (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "Konnte %s nicht in %s umbenennen (%s)\n"
@@ -176,7 +175,7 @@ msgstr "Beschädigter Datenbank-Eintrag '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -242,7 +241,7 @@ msgstr "Fehlende Paket-Metadaten in %s\n"
msgid "failed to read signature file: %s\n"
msgstr "Konnte die Signatur-Datei nicht lesen: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "Erforderlicher Schlüssel fehlt im Schlüsselbund\n"
@@ -379,24 +378,24 @@ msgstr "Konnte temporäre Datei für den Download nicht anlegen\n"
msgid "url '%s' is invalid\n"
msgstr "URL '%s' ist ungültig\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "Konnte Datei '%s' nicht von %s übertragen : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"Konnte Datei '%s' nicht von %s empfangen: Erwartete Downloadgröße "
"überschritten\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s scheint abgeschnitten zu sein: %jd/%jd Bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "Konnte %s nicht herunterladen\n"
@@ -827,7 +826,7 @@ msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "gpg-Fehler: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
@@ -837,7 +836,7 @@ msgstr "Schlüssebund ist nicht schreibbar\n"
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "Schlüssel \"%s\" auf Schlüsselserver\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
@@ -849,7 +848,7 @@ msgstr "Schlüssel \"%s\" konnte nicht importiert werden\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "Schlüssel \"%s\" konnte nicht entfernt abgerufen werden\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: Erforderliche Signatur fehlt\n"
@@ -941,27 +940,27 @@ msgstr "Nicht auflösbare Paketkonflikte gefunden\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "Entferne '%s' aus der Ziel-Liste, da es mit '%s' in Konflikt steht\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "Konnte einige Dateien nicht übertragen\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "konnte die Datei nicht lesen %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "Nicht genug freier Festplattenspeicher\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "Konnte Löschvorgang nicht durchführen\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "Konnte den Vorgang nicht durchführen\n"

View File

@@ -7,19 +7,19 @@
# Achilleas Pipinellis, 2014
# Achilleas Pipinellis, 2013
# Achilleas Pipinellis, 2013
# Christos Nouskas <nous@artixlinux.org>, 2011,2013-2014,2017,2019-2020
# Christos Nouskas <nous@archlinux.us>, 2011,2013-2014,2017,2019
# Dan McGee <dpmcgee@gmail.com>, 2011
# ifaigios <ifaigios@gmail.com>, 2015
# ifaigios <ifaigios@gmail.com>, 2015
# Christos Nouskas <nous@artixlinux.org>, 2011
# Christos Nouskas <nous@archlinux.us>, 2011
# th_ts <tsesmelistheodore@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-04-03 19:45+0000\n"
"Last-Translator: Christos Nouskas <nous@artixlinux.org>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Greek (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/el/)\n"
"Language: el\n"
@@ -58,7 +58,7 @@ msgstr "προειδοποίηση κατά την εξαγωγή του %s (%s)
msgid "could not extract %s (%s)\n"
msgstr "αδυναμία εξαγωγής %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "αδυναμία μετονομασίας %s σε %s (%s)\n"
@@ -171,7 +171,7 @@ msgstr "κατεστραμμένη εγγραφή βάσης '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -233,7 +233,7 @@ msgstr "απόντα μετα-δεδομένα πακέτου στο %s\n"
msgid "failed to read signature file: %s\n"
msgstr "αδυναμία ανάγνωσης αρχείου υπογραφής: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr ""
@@ -368,23 +368,23 @@ msgstr "αποτυχία δημιουργίας προσωρινού αρχεί
msgid "url '%s' is invalid\n"
msgstr "άκυρη διεύθυνση '%s'\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "αποτυχία λήψης αρχείου '%s' από %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"αποτυχία λήψης αρχείου '%s' από %s : υπέρβαση αναμενομένου μεγέθους λήψης\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "το %s δείχνει ημιτελές: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "αποτυχία λήψης %s\n"
@@ -427,12 +427,12 @@ msgstr "ανεπαρκής ελεύθερος χώρος στον δίσκο"
#: lib/libalpm/error.c:55
#, c-format
msgid "library not initialized"
msgstr "βιβλιοθήκη μη προετοιμασμένη"
msgstr "βιβλιοθήκη μη εκκινηθείσα"
#: lib/libalpm/error.c:57
#, c-format
msgid "library already initialized"
msgstr "βιβλιοθήκη ήδη προετοιμασμένη"
msgstr "βιβλιοθήκη ήδη εκκινηθείσα"
#: lib/libalpm/error.c:59
#, c-format
@@ -452,7 +452,7 @@ msgstr "αδυναμία δημιουργίας βάσης"
#: lib/libalpm/error.c:66
#, c-format
msgid "database not initialized"
msgstr "βάση μη προετοιμασμένη"
msgstr "βάση μη εκκινηθείσα"
#: lib/libalpm/error.c:68
#, c-format
@@ -502,12 +502,12 @@ msgstr "αρρύθμιστοι διακομιστές αποθετηρίου"
#: lib/libalpm/error.c:88
#, c-format
msgid "transaction already initialized"
msgstr "διεκπεραίωση ήδη προετοιμασμένη"
msgstr "διεκπεραίωση ήδη εκκινηθείσα"
#: lib/libalpm/error.c:90 lib/libalpm/error.c:94
#, c-format
msgid "transaction not initialized"
msgstr "διεκπεραίωση μη προετοιμασμένη"
msgstr "διεκπεραίωση μη εκκινηθείσα"
#: lib/libalpm/error.c:92
#, c-format
@@ -652,7 +652,7 @@ msgstr "σφάλμα κλήσης προγράμματος λήψης"
#: lib/libalpm/error.c:159
#, c-format
msgid "compiled without signature support"
msgstr "μεταγλώττιση χωρίς υποστήριξη υπογραφής"
msgstr ""
#: lib/libalpm/error.c:162
#, c-format
@@ -809,12 +809,12 @@ msgstr "σφάλμα GPGME: %s\n"
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "αναζήτησή κλειδιού %s με χρήση WKD\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "σφάλμα gpg: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
@@ -824,7 +824,7 @@ msgstr "μη εγγράψιμος κλειδούχος\n"
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "κλειδί \"%s\" στον διακομιστή κλειδιών\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
@@ -836,7 +836,7 @@ msgstr "αδυναμία εισαγωγής κλειδιού \"%s\"\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "αδυναμία απομεμακρυσμένης αναζήτησης κλειδιού \"%s\"\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: απούσα απαιτούμενη υπογραφή\n"
@@ -929,27 +929,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"αφαίρεση του '%s' από την λίστα διεκπεραίωσης λόγω διένεξης με το '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "σφάλμα λήψης μερικών αρχείων\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "αποτυχία ανάγνωσης αρχείου %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "μη αρκετός ελεύθερος χώρος στο δίσκο\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "αδυναμία διεκπεραίωσης διαγραφής\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "αδυναμία διεκπεραίωσης\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:47+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/toofishes/"
@@ -51,7 +51,7 @@ msgstr "warning given when extracting %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "could not extract %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "could not rename %s to %s (%s)\n"
@@ -163,7 +163,7 @@ msgstr "corrupted database entry '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -225,7 +225,7 @@ msgstr "missing package metadata in %s\n"
msgid "failed to read signature file: %s\n"
msgstr "failed to read signature file: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "required key missing from keyring\n"
@@ -355,23 +355,23 @@ msgstr "failed to create temporary file for download\n"
msgid "url '%s' is invalid\n"
msgstr "URL '%s' is invalid\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "failed retrieving file '%s' from %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"failed retrieving file '%s' from %s : expected download size exceeded\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s appears to be truncated: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "failed to download %s\n"
@@ -823,7 +823,7 @@ msgstr "key \"%s\" could not be imported\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "key \"%s\" could not be looked up remotely\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: missing required signature\n"
@@ -915,27 +915,27 @@ msgstr "unresolvable package conflicts detected\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "removing '%s' from target list because it conflicts with '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "failed to retrieve some files\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "failed to read file %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "not enough free disk space\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "could not commit removal transaction\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "could not commit transaction\n"

View File

@@ -3,7 +3,6 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Kinsey Favre <kinseytamsin@tutanota.com>, 2020
# pizzaiolo, 2015
# pizzaiolo, 2015
# pizzaiolo, 2015
@@ -12,9 +11,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-02-17 19:07+0000\n"
"Last-Translator: Kinsey Favre <kinseytamsin@tutanota.com>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Esperanto (http://www.transifex.com/toofishes/archlinux-"
"pacman/language/eo/)\n"
"Language: eo\n"
@@ -26,34 +25,34 @@ msgstr ""
#: lib/libalpm/add.c:91 lib/libalpm/sync.c:290
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s estas ĝisdata -- preterpasado\n"
msgstr "%s-%s estas ĝisdata -- preterpasante\n"
#: lib/libalpm/add.c:95
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s estas ĝisdata -- reinstalado\n"
msgstr "%s-%s estas ĝisdata -- reinstalante\n"
#: lib/libalpm/add.c:100
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "malpromociado de pakaĵo %s (%s => %s)\n"
msgstr "malpromociante pakaĵon %s (%s => %s)\n"
#: lib/libalpm/add.c:129
#, c-format
msgid "cannot allocate disk archive object"
msgstr "ne eblas asigni diskarkivan objekton"
msgstr "maleblas disponigi diskarkivaĵon"
#: lib/libalpm/add.c:143 lib/libalpm/util.c:382
#, c-format
msgid "warning given when extracting %s (%s)\n"
msgstr "averto donita dum eltiri %s (%s)\n"
msgstr "averto donita dum eltirado de %s (%s)\n"
#: lib/libalpm/add.c:146 lib/libalpm/util.c:385
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "ne eblis eltiri %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "ne eblis renomi %s al %s (%s)\n"
@@ -62,13 +61,13 @@ msgstr "ne eblis renomi %s al %s (%s)\n"
#, c-format
msgid "file not found in file list for package %s. skipping extraction of %s\n"
msgstr ""
"dosiero ne trovita en la dosierlisto por pakaĵo %s. preterpasado de eltiro "
"dosiero ne trovita en la dosierlisto por pakaĵo %s. preterpasante eltirado "
"de %s\n"
#: lib/libalpm/add.c:219
#, c-format
msgid "unable to extract %s%s: path too long"
msgstr "ne eblas eltiri %s%s: dosierindiko tro longa"
msgstr "ne eblis eltiri %s%s: la dosierindiko estas tro longa"
#: lib/libalpm/add.c:261
#, c-format
@@ -76,8 +75,8 @@ msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"diferencas dosierujaj permesoj de %s\n"
"dosiersistema: %o pakaĵa: %o\n"
"dosierujaj permesoj malsamas en\n"
"dosiersistemo %s: pakaĵo %o: %o\n"
#: lib/libalpm/add.c:276
#, c-format
@@ -85,23 +84,23 @@ msgid ""
"directory ownership differs on %s\n"
"filesystem: %u:%u package: %u:%u\n"
msgstr ""
"diferencas dosieruja posedo de %s\n"
"dosiersistema: %u:%u pakaĵa: %u:%u\n"
"dosieruja posedo malsamas en\n"
"dosiersistemo %s: %u:%u pakaĵo: %u:%u\n"
#: lib/libalpm/add.c:292
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "eltiri: ne superskribas dosierujon per dosiero %s\n"
msgstr "eltiri: ne superskribante dosierujon kun dosiero %s\n"
#: lib/libalpm/add.c:320
#, c-format
msgid "unable to extract %s.pacnew: path too long"
msgstr "ne eblas eltiri %s.pacnew: la dosierindiko tro longa"
msgstr "ne eblis eltiri %s.pacnew: la dosierindiko estas tro longa"
#: lib/libalpm/add.c:513 lib/libalpm/util.c:334 lib/libalpm/util.c:592
#, c-format
msgid "could not get current working directory\n"
msgstr "ne eblis akiri kurantan dosierujon\n"
msgstr "ne eblis akiri nunan funkciantan dosierujon\n"
#: lib/libalpm/add.c:518 lib/libalpm/util.c:339 lib/libalpm/util.c:597
#: lib/libalpm/util.c:650
@@ -112,17 +111,17 @@ msgstr "ne eblis ŝanĝi dosierujon al %s (%s)\n"
#: lib/libalpm/add.c:575 lib/libalpm/util.c:403 lib/libalpm/util.c:766
#, c-format
msgid "could not restore working directory (%s)\n"
msgstr "ne eblis restaŭri kurantan dosierujon (%s)\n"
msgstr "ne eblis restaŭri nunan funkciantan dosierujon (%s)\n"
#: lib/libalpm/add.c:583
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "problemo okazis dum promocii %s\n"
msgstr "problemo okazis dum ĝisdatigo de %s\n"
#: lib/libalpm/add.c:589
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "problemo okazis dum instali %s\n"
msgstr "problemo okazis dum instalo de %s\n"
#: lib/libalpm/add.c:604
#, c-format
@@ -137,12 +136,12 @@ msgstr "ne eblis aldoni enigon '%s' en kaŝmemoro\n"
#: lib/libalpm/be_local.c:267
#, c-format
msgid "error while reading file %s: %s\n"
msgstr "eraro dum legi dosieron %s: %s\n"
msgstr "eraro dum legado de dosiero %s: %s\n"
#: lib/libalpm/be_local.c:364
#, c-format
msgid "removing invalid database: %s\n"
msgstr "forigado de nevalida datumbazo: %s\n"
msgstr "forigante nevalidan datumbazon: %s\n"
#: lib/libalpm/be_local.c:415 lib/libalpm/be_local.c:905
#, c-format
@@ -152,21 +151,21 @@ msgstr "ne eblis krei dosierujon %s: %s\n"
#: lib/libalpm/be_local.c:590 lib/libalpm/be_sync.c:386
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "nevalida nomo por datumbaz-enigo '%s'\n"
msgstr "nevalida nomo por datumbaza enigo '%s'\n"
#: lib/libalpm/be_local.c:598
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "duobligita datumbaz-enigo '%s'\n"
msgstr "duobla datumbaza enigo '%s'\n"
#: lib/libalpm/be_local.c:610
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "difektita datumbaz-enigo '%s'\n"
msgstr "difektita datumbaza enigo '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -175,43 +174,43 @@ msgstr "ne eblis malfermi dosieron %s: %s\n"
#: lib/libalpm/be_local.c:729 lib/libalpm/be_sync.c:650
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "datumbazo %s estas nekohera: noma miskongruo de pakaĵo %s\n"
msgstr "la datumbazo %s estas nekohera: noma malkongruo en la pakaĵo %s\n"
#: lib/libalpm/be_local.c:735 lib/libalpm/be_sync.c:656
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "datumbazo %s estas nekohera: versia miskongruo de pakaĵo %s\n"
msgstr "la datumbazo %s estas nekohera: versia malkongruo en la pakaĵo %s\n"
#: lib/libalpm/be_local.c:776
#, c-format
msgid "unknown validation type for package %s: %s\n"
msgstr "nekonata kontrola speco por pakaĵo %s: %s\n"
msgstr "nekonata validiga tipo por pakaĵo %s: %s\n"
#: lib/libalpm/be_package.c:479 lib/libalpm/be_package.c:637
#: lib/libalpm/be_package.c:650
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "eraro dum legi pakaĵon %s: %s\n"
msgstr "eraro dum legado de pakaĵo %s: %s\n"
#: lib/libalpm/be_package.c:493 lib/libalpm/be_package.c:517
#, c-format
msgid "error while reading mtree of package %s: %s\n"
msgstr "eraro dum legi mtree de pakaĵo %s: %s\n"
msgstr "eraro dum legado de mtree de pakaĵo %s: %s\n"
#: lib/libalpm/be_package.c:603
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "ne eblis analizi pakaĵpriskriban dosieron en %s\n"
msgstr "ne eblis analizi priskriban dosieron de la pakaĵo en %s\n"
#: lib/libalpm/be_package.c:608
#, c-format
msgid "missing package name in %s\n"
msgstr "mankanta pakaĵa nomo en %s\n"
msgstr "mankas pakaĵa nomo en %s\n"
#: lib/libalpm/be_package.c:612
#, c-format
msgid "missing package version in %s\n"
msgstr "mankanta pakaĵa versio en %s\n"
msgstr "mankas pakaĵa versio en %s\n"
#: lib/libalpm/be_package.c:616
#, c-format
@@ -221,43 +220,46 @@ msgstr "nevalida pakaĵa versio en %s\n"
#: lib/libalpm/be_package.c:657
#, c-format
msgid "missing package metadata in %s\n"
msgstr "mankantaj pakaĵaj metadatumoj en %s\n"
msgstr "mankas pakaĵaj metadatumoj en %s\n"
#: lib/libalpm/be_package.c:750
#, c-format
msgid "failed to read signature file: %s\n"
msgstr "malsukcesis legi subskriban dosieron: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "bezonata ŝlosilo mankas de ŝlosilingo\n"
msgstr "bezonata ŝlosilo mankas de la ŝlosilingo\n"
#: lib/libalpm/be_sync.c:61
#, c-format
msgid "removing invalid file: %s\n"
msgstr "forigado de nevalida dosiero: %s\n"
msgstr "forigante nevalidan dosieron: %s\n"
#: lib/libalpm/be_sync.c:515
#, c-format
msgid "could not parse package description file '%s' from db '%s'\n"
msgstr "ne eblis analizi pakaĵpriskriban dosieron '%s' el datumbazo '%s'\n"
msgstr "ne eblis analizi priskriba dosiero de la pakaĵo '%s' el db '%s'\n"
#: lib/libalpm/be_sync.c:522
#, c-format
msgid "could not read db '%s' (%s)\n"
msgstr "ne povis legi datumbazon '%s' (%s)\n"
msgstr ""
#: lib/libalpm/be_sync.c:556 lib/libalpm/be_sync.c:561
#, c-format
msgid "%s database is inconsistent: filename of package %s is illegal\n"
msgstr ""
"datumbazo %s estas nekohera: dosiernomo de pakaĵo %s estas malpermesita\n"
"la datumbazo %s estas malkongrua: la dosiernomo de pakaĵo %s estas "
"malpermesata\n"
#: lib/libalpm/be_sync.c:566
#, c-format
msgid "%s database is inconsistent: filename of package %s is too long\n"
msgstr "datumbazo %s estas nekohera: dosiernomo de pakaĵo %s estas tro longa\n"
msgstr ""
"la datumbazo %s estas malkongrua: la dosiernomo de pakaĵo %s estas tro "
"longa\n"
#: lib/libalpm/be_sync.c:632
#, c-format
@@ -267,37 +269,37 @@ msgstr "nekonata datumbaza dosiero: %s\n"
#: lib/libalpm/db.c:370
#, c-format
msgid "database path is undefined\n"
msgstr "datumbaza dosierindiko estas senvalora\n"
msgstr "la datumbaza vojo estas nedifinita\n"
#: lib/libalpm/deps.c:184
#, c-format
msgid "dependency cycle detected:\n"
msgstr "postula ciklo detektita:\n"
msgstr "dependenca ciklo detektita:\n"
#: lib/libalpm/deps.c:187
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s estos forigita post sia postulataĵo %s\n"
msgstr "oni forigos %s post sia dependenco %s\n"
#: lib/libalpm/deps.c:191
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s estos instalita antaŭ sia postulataĵo %s\n"
msgstr "oni instalos %s antaŭ sia dependenco %s\n"
#: lib/libalpm/deps.c:681 lib/libalpm/deps.c:712
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorado de pakaĵo %s-%s\n"
msgstr "ignorante pakaĵon %s-%s\n"
#: lib/libalpm/deps.c:869
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "ne eblas solvi \"%s\", postulataĵo de \"%s\"\n"
msgstr "ne eblas solvi \"%s\", dependeco de \"%s\"\n"
#: lib/libalpm/diskspace.c:78
#, c-format
msgid "could not get filesystem information for %s: %s\n"
msgstr "ne eblis akiri dosiersistema informo de %s: %s\n"
msgstr "ne eblis akiri dosiersistema informo pri %s: %s\n"
#: lib/libalpm/diskspace.c:108
#, c-format
@@ -312,37 +314,39 @@ msgstr "ne eblis akiri dosiersistemajn informojn\n"
#: lib/libalpm/diskspace.c:242
#, c-format
msgid "could not get file information for %s\n"
msgstr "ne eblis akiri dosierinformon de %s\n"
msgstr "ne eblis akiri dosierinformon pri %s\n"
#: lib/libalpm/diskspace.c:256 lib/libalpm/diskspace.c:315
#, c-format
msgid "could not determine mount point for file %s\n"
msgstr "ne eblis determini surmetingon de dosiero %s\n"
msgstr "ne eblis scii surmetingon pri dosiero %s\n"
#: lib/libalpm/diskspace.c:354
#, c-format
msgid "Partition %s too full: %jd blocks needed, %ju blocks free\n"
msgstr "Subdisko %s tro plena: %jd blokoj bezonataj, %ju blokoj liberaj\n"
msgstr ""
"La subdisko %s estas tro plena: %jd blokoj bezonataj, %ju blokoj "
"malokupataj\n"
#: lib/libalpm/diskspace.c:379 lib/libalpm/diskspace.c:433
#, c-format
msgid "could not determine filesystem mount points\n"
msgstr "ne eblis determini dosiersistemajn surmetingojn\n"
msgstr "ne eblis scii dosiersistemajn surmetingojn\n"
#: lib/libalpm/diskspace.c:385
#, c-format
msgid "could not determine cachedir mount point %s\n"
msgstr "ne eblis determini kaŝmemoro-dosierujan surmetingon %s\n"
msgstr "ne eblis scii surmetingon de cachedir %s\n"
#: lib/libalpm/diskspace.c:438
#, c-format
msgid "could not determine root mount point %s\n"
msgstr "ne eblis determini radikan surmetingon %s\n"
msgstr "ne eblis scii radikan surmetingon %s\n"
#: lib/libalpm/diskspace.c:486
#, c-format
msgid "Partition %s is mounted read only\n"
msgstr "Subdisko %s estas surmetita nurlege\n"
msgstr "La subdisko %s estas surmetita nurlegebla\n"
#: lib/libalpm/dload.c:161
#, c-format
@@ -357,26 +361,26 @@ msgstr "malsukcesis krei provizoran dosieron por elŝuto\n"
#: lib/libalpm/dload.c:393
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' estas nevalida\n"
msgstr "la url '%s' ne estas valida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "malsukcesis ekstrakti dosieron '%s' de %s: %s\n"
msgstr "malsukcesis ricevi dosieron '%s' de %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"malsukcesis ekstrakti dosieron '%s' de %s : atendita elŝuta grando "
"transpaŝita\n"
"malsukcesis ricevi dosieron '%s' de %s: atendita elŝuta grando grandigis\n"
"\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s aspektas trunkite: %jd/%jd bitokoj\n"
msgstr "%s ŝajnas esti trunkita: %jd/%jd bitokoj\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "malsukcesis elŝuti %s\n"
@@ -394,7 +398,7 @@ msgstr "neatendita sistema eraro"
#: lib/libalpm/error.c:44
#, c-format
msgid "permission denied"
msgstr "permeso rifuzita"
msgstr "permeso neita"
#: lib/libalpm/error.c:46
#, c-format
@@ -479,7 +483,7 @@ msgstr "ne eblis ĝisdatigi datumbazon"
#: lib/libalpm/error.c:80
#, c-format
msgid "could not remove database entry"
msgstr "ne povis forigi datumbaz-enigon"
msgstr "ne eblis forigi datumbazan enigon"
#: lib/libalpm/error.c:83
#, c-format
@@ -559,7 +563,7 @@ msgstr "nevalida aŭ difektita pakaĵo (PGP-subskribo)"
#: lib/libalpm/error.c:117
#, c-format
msgid "package missing required signature"
msgstr "mankas al pakaĵo bezonata subskribo"
msgstr "la pakaĵo mankas bezonata subskribo"
#: lib/libalpm/error.c:119
#, c-format
@@ -569,7 +573,7 @@ msgstr "ne eblas malfermi pakaĵan dosieron"
#: lib/libalpm/error.c:121
#, c-format
msgid "cannot remove all files for package"
msgstr "ne povas forigi ĉiujn dosierojn por pakaĵo"
msgstr "ne forviŝeblas ĉiujn dosierojn por la pakaĵo"
#: lib/libalpm/error.c:123
#, c-format
@@ -589,7 +593,7 @@ msgstr "ne eblis trovi deponejon por celo"
#: lib/libalpm/error.c:130
#, c-format
msgid "missing PGP signature"
msgstr "mankanta PGP-subskribo"
msgstr "mankas PGP-subskribo"
#: lib/libalpm/error.c:132
#, c-format
@@ -639,12 +643,12 @@ msgstr "eraro de gpgme"
#: lib/libalpm/error.c:156
#, c-format
msgid "error invoking external downloader"
msgstr "eraro pri alvoko de ekstera elŝutilo"
msgstr "eraro alvokante eksteran elŝutilon"
#: lib/libalpm/error.c:159
#, c-format
msgid "compiled without signature support"
msgstr "programtradukita sen subskriba subteno"
msgstr ""
#: lib/libalpm/error.c:162
#, c-format
@@ -654,79 +658,79 @@ msgstr "neatendita eraro"
#: lib/libalpm/handle.c:153
#, c-format
msgid "lock file missing %s\n"
msgstr "mankas al ŝlosa dosiero %s\n"
msgstr "ŝlosa dosiero mankas %s\n"
#: lib/libalpm/handle.c:159
#, c-format
msgid "could not remove lock file %s\n"
msgstr "ne eblis forigi la ŝlosdosieron %s\n"
msgstr "ne eblis forigi ŝlosan dosieron %s\n"
#: lib/libalpm/hook.c:95
#, c-format
msgid "Missing trigger targets in hook: %s\n"
msgstr "Mankantaj baskulaj celoj en hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:101
#, c-format
msgid "Missing trigger type in hook: %s\n"
msgstr "Mankanta baskula tipo en hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:107
#, c-format
msgid "Missing trigger operation in hook: %s\n"
msgstr "Mankanta baskula operacio en hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:134
#, c-format
msgid "Missing Exec option in hook: %s\n"
msgstr "Mankanta Exec-opcio en hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:140
#, c-format
msgid "Missing When option in hook: %s\n"
msgstr "Mankanta When-opcio en hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:143
#, c-format
msgid "AbortOnFail set for PostTransaction hook: %s\n"
msgstr "AbortOnFail agordita por PostTransaction-hoko: %s\n"
msgstr ""
#: lib/libalpm/hook.c:160
#, c-format
msgid "error while reading hook %s: %s\n"
msgstr "eraro dum legi hokon %s: %s\n"
msgstr ""
#: lib/libalpm/hook.c:162 lib/libalpm/hook.c:206 lib/libalpm/hook.c:248
#, c-format
msgid "hook %s line %d: invalid option %s\n"
msgstr "hoko %s linio %d: nevalida opcio %s\n"
msgstr ""
#: lib/libalpm/hook.c:172
#, c-format
msgid "hook %s line %d: invalid section %s\n"
msgstr "hoko %s linio %d: nevalida sekcio %s\n"
msgstr ""
#: lib/libalpm/hook.c:184 lib/libalpm/hook.c:199 lib/libalpm/hook.c:218
#: lib/libalpm/hook.c:241
#, c-format
msgid "hook %s line %d: invalid value %s\n"
msgstr "hoko %s linio %d: nevalida valoro %s\n"
msgstr ""
#: lib/libalpm/hook.c:188 lib/libalpm/hook.c:211 lib/libalpm/hook.c:222
#: lib/libalpm/hook.c:236
#, c-format
msgid "hook %s line %d: overwriting previous definition of %s\n"
msgstr "hoko %s linio %d: superskribas antaŭan difinon de %s\n"
msgstr ""
#: lib/libalpm/hook.c:243
#, c-format
msgid "hook %s line %d: unable to set option (%s)\n"
msgstr "hoko %s linio %d: ne povas agordi opcion (%s)\n"
msgstr ""
#: lib/libalpm/hook.c:513
#, c-format
msgid "unable to run hook %s: %s\n"
msgstr "ne povas ruli hokon %s: %s\n"
msgstr ""
#: lib/libalpm/hook.c:547 lib/libalpm/hook.c:559 lib/libalpm/remove.c:386
#, c-format
@@ -736,7 +740,7 @@ msgstr "ne eblis malfermi dosierujon: %s: %s\n"
#: lib/libalpm/hook.c:575
#, c-format
msgid "could not open file: %s%s: %s\n"
msgstr "ne povis malfermi dosieron: %s%s: %s\n"
msgstr ""
#: lib/libalpm/hook.c:595 lib/libalpm/util.c:259
#, c-format
@@ -746,7 +750,7 @@ msgstr "ne eblis statikigi dosieron %s: %s\n"
#: lib/libalpm/hook.c:621
#, c-format
msgid "could not read directory: %s: %s\n"
msgstr "ne povis legi dosierujon: %s: %s\n"
msgstr ""
#: lib/libalpm/package.c:578
#, c-format
@@ -756,22 +760,22 @@ msgstr "ne eblis tute ŝarĝi la metadatumojn por la pakaĵo %s-%s\n"
#: lib/libalpm/remove.c:119
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "ne eblis trovi %s en datumbazo -- preterpasado\n"
msgstr "ne eblis trovi %s en la datumbazo -- preterpasante\n"
#: lib/libalpm/remove.c:154
#, c-format
msgid "removing %s from target list\n"
msgstr "forigado de %s de la celolisto\n"
msgstr "forigante %s de la cela listo\n"
#: lib/libalpm/remove.c:346
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "ne povas forigi la dosieron '%s': '%s'\n"
msgstr "ne eblas forigi dosieron '%s': '%s'\n"
#: lib/libalpm/remove.c:411 lib/libalpm/remove.c:420
#, c-format
msgid "could not backup %s due to PATH_MAX overflow\n"
msgstr "ne povis restaŭrkopii %s pro PATH_MAX-troo\n"
msgstr ""
#: lib/libalpm/remove.c:562
#, c-format
@@ -781,119 +785,119 @@ msgstr "ne eblas forigi %s (%s)\n"
#: lib/libalpm/remove.c:735
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "ne povis forigi la datumbaz-enigon %s-%s\n"
msgstr "ne eblis forigi datumbazan enigon %s-%s\n"
#: lib/libalpm/remove.c:740
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "ne povis forigi la enigon '%s' el la kaŝmemoro\n"
msgstr "ne eblis forigi enigon '%s' el la kaŝmemoro\n"
#: lib/libalpm/signing.c:171
#, c-format
msgid "Public keyring not found; have you run '%s'?\n"
msgstr "Publika ŝlosilingo ne trovita; ĉu vi rulis '%s'?\n"
msgstr ""
#: lib/libalpm/signing.c:207 lib/libalpm/signing.c:784
#, c-format
msgid "GPGME error: %s\n"
msgstr "GPGME-eraro: %s\n"
msgstr ""
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "elserĉado de la ŝlosilo %s per WKD\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "gpg-eraro: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
msgid "keyring is not writable\n"
msgstr "ŝlosilingo ne estas skribebla\n"
msgstr ""
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "la ŝlosilo \"%s\" sur ŝlosilservilo\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
msgid "key \"%s\" could not be imported\n"
msgstr "la ŝlosilon \"%s\" ne povis importi\n"
msgstr ""
#: lib/libalpm/signing.c:548
#, c-format
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "la ŝlosilon \"%s\" ne povis elserĉi fore\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: mankanta bezonata subskribo\n"
msgstr "%s: mankas bezonata subskribo\n"
#: lib/libalpm/signing.c:958
#, c-format
msgid "%s: signature from \"%s\" is marginal trust\n"
msgstr "%s: subskribo de \"%s\" estas iometa fido\n"
msgstr ""
#: lib/libalpm/signing.c:966
#, c-format
msgid "%s: signature from \"%s\" is unknown trust\n"
msgstr "%s: subskribo de \"%s\" estas nekonata fido\n"
msgstr ""
#: lib/libalpm/signing.c:973
#, c-format
msgid "%s: signature from \"%s\" should never be trusted\n"
msgstr "%s: subskribon de \"%s\" neniam devas fidi\n"
msgstr ""
#: lib/libalpm/signing.c:985
#, c-format
msgid "%s: key \"%s\" is unknown\n"
msgstr "%s: la ŝlosilo \"%s\" estas nekonata\n"
msgstr ""
#: lib/libalpm/signing.c:994
#, c-format
msgid "%s: key \"%s\" is disabled\n"
msgstr "%s: la ŝlosilon \"%s\" estas malvalidigita\n"
msgstr ""
#: lib/libalpm/signing.c:998
#, c-format
msgid "%s: signature from \"%s\" is expired\n"
msgstr "%s: subskribo de \"%s\" estas eksvalidiĝita\n"
msgstr ""
#: lib/libalpm/signing.c:1002
#, c-format
msgid "%s: signature from \"%s\" is invalid\n"
msgstr "%s: subskribo de \"%s\" estas nevalida\n"
msgstr ""
#: lib/libalpm/signing.c:1079 lib/libalpm/signing.c:1147
#: lib/libalpm/signing.c:1226
#, c-format
msgid "%s: signature format error\n"
msgstr "%s: subskribforma eraro\n"
msgstr ""
#: lib/libalpm/signing.c:1179 lib/libalpm/signing.c:1212
#: lib/libalpm/signing.c:1220
#, c-format
msgid "%s: unsupported signature format\n"
msgstr "%s: nesubtenata subskribformo\n"
msgstr ""
#: lib/libalpm/sync.c:99
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorado de pakaĵa promocio (%s => %s)\n"
msgstr "%s: ignorante pakaĵan promocion (%s => %s)\n"
#: lib/libalpm/sync.c:111
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorado de pakaĵa malpromocio (%s => %s)\n"
msgstr "%s: ignorante pakaĵan malpromocion (%s => %s)\n"
#: lib/libalpm/sync.c:114
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: malpromociado el versio %s al versio %s\n"
msgstr "%s: malpromociante de versio %s al versio %s\n"
#: lib/libalpm/sync.c:120
#, c-format
@@ -903,7 +907,7 @@ msgstr "%s: la loka (%s) estas pli nova ol %s (%s)\n"
#: lib/libalpm/sync.c:161
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorado de pakaĵa anstataŭo (%s-%s => %s-%s)\n"
msgstr "ignorante pakaĵan anstataŭon (%s-%s => %s-%s)\n"
#: lib/libalpm/sync.c:177
#, c-format
@@ -918,31 +922,31 @@ msgstr "nesolveblaj pakaĵaj konfliktoj detektitaj\n"
#: lib/libalpm/sync.c:555
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "forigado de '%s' el celolisto ĉar ĝi konfliktas kun '%s'\n"
msgstr "forigante '%s' el cela listo ĉar ĝi konfliktas kun '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "malsukcesis ricevi kelkajn dosierojn\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "malsukcesis legi la dosieron %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ne estas sufiĉe granda malokupata diskspaco\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr ""
"malsukcesis enmeti forigan transakcion\n"
"\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ne eblis enmeti transakcion\n"
@@ -965,7 +969,7 @@ msgstr "ne eblis forigi %s\n"
#: lib/libalpm/trans.c:414
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "ne povis forigi la provizoran dosierujon %s\n"
msgstr "ne eblis forigi provizoran dosierujon %s\n"
#: lib/libalpm/util.c:486
#, c-format
@@ -1020,7 +1024,7 @@ msgstr "komando ĉesigita de signalo %d: %s\n"
#: lib/libalpm/util.c:853
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "nenia kaŝmemoro de %s ekzistas, kreado...\n"
msgstr "neniu kaŝmemoro %s ekzistas, kreante...\n"
#: lib/libalpm/util.c:884
#, c-format

View File

@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 09:15+0000\n"
"Last-Translator: picodotdev <pico.dev@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -64,7 +64,7 @@ msgstr "se han advertido errores mientras se extraía %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "no se pudo extraer %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "no se pudo renombrar %s a %s (%s)\n"
@@ -179,7 +179,7 @@ msgstr "la entrada «%s» de la base de datos está dañada\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -245,7 +245,7 @@ msgstr "faltan los metadatos del paquete en %s\n"
msgid "failed to read signature file: %s\n"
msgstr "no se pudo leer correctamente el archivo de firmas: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "la clave necesaria no está presente en el depósito\n"
@@ -385,24 +385,24 @@ msgstr "no se pudo crear el archivo temporal para la descarga\n"
msgid "url '%s' is invalid\n"
msgstr "la dirección «%s» no es válida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "no se pudo obtener el archivo «%s» desde %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"no se pudo obtener el archivo «%s» desde %s : el tamaño de la descarga "
"supera lo esperado\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar incompleto: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "no se pudo descargar %s\n"
@@ -860,7 +860,7 @@ msgstr "no se pudo importar la clave «%s»\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "no se pudo buscar la clave «%s» de forma remota\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: falta la firma exigida\n"
@@ -956,27 +956,27 @@ msgstr ""
"quitando «%s» de la lista de paquetes debido a que tiene conflictos con "
"«%s»\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "no se pudieron recibir algunos archivos\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "no se pudo leer el archivo %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "no hay suficiente espacio libre en el disco\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "no se pudo realizar la operación de eliminación\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "no se pudo realizar la operación\n"

View File

@@ -5,10 +5,10 @@
# Translators:
# Angel Velasquez <angvp@archlinux.org>, 2011
# Dan McGee <dpmcgee@gmail.com>, 2011
# ice, 2016
# ice <ice.modding@gmail.com>, 2016
# Juan Antonio Cánovas Pérez <traumness@gmail.com>, 2011
# juantascon <juantascon@gmail.com>, 2011
# ice, 2016
# ice <ice.modding@gmail.com>, 2016
# Leonel <leonelmalon@gmail.com>, 2013
# neiko <neikokz+tsfx@gmail.com>, 2011
# prflr88 <prflr88@gmail.com>, 2015,2017
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Spanish (Latin America) (http://www.transifex.com/toofishes/"
@@ -60,7 +60,7 @@ msgstr "alerta producida mientras se extraía %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "no se pudo extraer %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "no se pudo renombrar %s a %s (%s)\n"
@@ -173,7 +173,7 @@ msgstr "la entrada «%s» de la base de datos está dañada\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -239,7 +239,7 @@ msgstr "faltan los metadatos del paquete en %s\n"
msgid "failed to read signature file: %s\n"
msgstr "no se pudo leer correctamente el archivo de firma: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "la clave requerida no está presente en el llavero\n"
@@ -381,24 +381,24 @@ msgstr "no se pudo crear el archivo temporal para la descarga\n"
msgid "url '%s' is invalid\n"
msgstr "la dirección «%s» no es válida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "no se pudo obtener el archivo «%s» desde %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"no se pudo obtener el archivo «%s» desde %s : tamaño de la descarga superior "
"del esperado\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar incompleto: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "no se pudo descargar %s\n"
@@ -852,7 +852,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: falta la firma exigida\n"
@@ -946,27 +946,27 @@ msgstr ""
"quitando «%s» de la lista de objetivos debido a que tiene conflictos con "
"«%s»\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "no se pudieron recibir algunos archivos\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "no hay suficiente espacio libre en el disco\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "no se pudo realizar la operación de eliminación\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "no se pudo realizar la operación\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Basque (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -50,7 +50,7 @@ msgstr "oharra eman da %s erauztean (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "ezin izan da %s erauzi (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "ezin izan da %s berrizendatu %s gisa (%s)\n"
@@ -166,7 +166,7 @@ msgstr "datu-base sarrera hondatua '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -228,7 +228,7 @@ msgstr "paketearen metadatuak falta dira hemen: %s\n"
msgid "failed to read signature file: %s\n"
msgstr "sinadura fitxategiaren irakurketak huts egin du: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "beharrezko gakoa falta da gako sortan\n"
@@ -364,24 +364,24 @@ msgstr ""
"'%s' url baliogabea da\n"
"\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "huts egin du '%s' fitxategia '%s'-tik erauzteak: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"huts egin du '%s' fitxategia eskuratzean hemendik: %s : aurreikusitako "
"deskarga tamaina gainditu da\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s ez dago osorik antza: %jd/%jd byte\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s deskargatzeak huts egin du\n"
@@ -833,7 +833,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: beharrezko sinadura falta da\n"
@@ -925,27 +925,27 @@ msgstr "ebatzi ezineko paketeen arteko gatazka detektatu da\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' helburutik ezabatzen gatazka sortzen duelako '%s' paketearekin\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "fitxategi batzuk eskuratzeak huts egin du\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ez dago behar beste leku libre diskoan\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "ezin izan da ezabaketa transakzioa egikaritu\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ezin izan da transakzioa egikaritu\n"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Basque (Spain) (http://www.transifex.com/toofishes/archlinux-"
@@ -49,7 +49,7 @@ msgstr "oharra eman da %s erauztean (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "ezin izan da %s erauzi (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "ezin izan da %s berrizendatu %s gisa (%s)\n"
@@ -165,7 +165,7 @@ msgstr "datu-base sarrera hondatua '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -227,7 +227,7 @@ msgstr "paketearen metadatuak falta dira hemen: %s\n"
msgid "failed to read signature file: %s\n"
msgstr "sinadura fitxategiaren irakurketak huts egin du: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "beharrezko gakoa falta da gako sortan\n"
@@ -363,24 +363,24 @@ msgstr ""
"'%s' url baliogabea da\n"
"\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "huts egin du '%s' fitxategia '%s'-tik erauzteak: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"huts egin du '%s' fitxategia eskuratzean hemendik: %s : aurreikusitako "
"deskarga tamaina gainditu da\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s ez dago osorik antza: %jd/%jd byte\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s deskargatzeak huts egin du\n"
@@ -832,7 +832,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: beharrezko sinadura falta da\n"
@@ -924,27 +924,27 @@ msgstr "ebatzi ezineko paketeen arteko gatazka detektatu da\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' helburutik ezabatzen gatazka sortzen duelako '%s' paketearekin\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "fitxategi batzuk eskuratzeak huts egin du\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ez dago behar beste leku libre diskoan\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "ezin izan da ezabaketa transakzioa egikaritu\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ezin izan da transakzioa egikaritu\n"

View File

@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Finnish (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -59,7 +59,7 @@ msgstr "annettiin varoitus purettaessa %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "tiedostoa %s ei voitu purkaa (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kohdetta %s ei voitu nimetä uudelleen kohteeksi %s (%s)\n"
@@ -172,7 +172,7 @@ msgstr "vahingoittunut tietokantamerkintä '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -234,7 +234,7 @@ msgstr "paketin metadata puuttuu tiedostosta %s\n"
msgid "failed to read signature file: %s\n"
msgstr "allekirjoitustiedoston lukeminen epäonnistui: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "vaadittu avain puuttuu avainrenkaasta\n"
@@ -366,24 +366,24 @@ msgstr "väliaikaistiedoston luonti lataamista varten epäonnistui\n"
msgid "url '%s' is invalid\n"
msgstr "osoite '%s' on virheellinen\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "tiedoston '%s' nouto palvelimelta %s epäonnistui : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"tiedoston '%s' noutaminen koneelta %s epäonnistui: odotettu latauskoko "
"ylittyi\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s näyttää katkenneen: %jd/%jd tavua\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s: lataus epäonnistui\n"
@@ -835,7 +835,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: pakollinen allekirjoitus puuttuu\n"
@@ -929,27 +929,27 @@ msgstr ""
"poistetaan '%s' kohteiden listasta, koska se on ristiriidassa paketin '%s' "
"kanssa\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "joidenkin tiedostojen noutaminen epäonnistui\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ei tarpeeksi vapaata levytilaa\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "poistotoimenpidettä ei voitu suorittaa\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "toimenpidettä ei voitu suorittaa\n"

View File

@@ -8,7 +8,7 @@
# Antoine Lubineau <antoine@lubignon.info>, 2012
# Antoine Lubineau <antoine@lubignon.info>, 2012-2014,2018
# Cedric Girard <girard.cedric@gmail.com>, 2014
# Charles Monzat <c.monzat@laposte.net>, 2018-2020
# Charles Monzat <c.monzat@laposte.net>, 2018-2019
# Charles Monzat <c.monzat@laposte.net>, 2015-2018
# Charles Monzat <c.monzat@laposte.net>, 2018
# Charles Monzat <c.monzat@laposte.net>, 2018
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-10-06 08:45+0000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-20 19:02+0000\n"
"Last-Translator: Charles Monzat <c.monzat@laposte.net>\n"
"Language-Team: French (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/fr/)\n"
@@ -61,7 +61,7 @@ msgstr "problème pendant lextraction de %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "lextraction de %s a échoué (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "impossible de renommer %s en %s (%s)\n"
@@ -174,7 +174,7 @@ msgstr "lentrée « %s » de la base de données est corrompue\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -236,7 +236,7 @@ msgstr "méta-données du paquet manquantes dans %s\n"
msgid "failed to read signature file: %s\n"
msgstr "échec lors de la lecture du fichier de signature : %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "clé requise absente du trousseau\n"
@@ -372,24 +372,24 @@ msgstr "échec de création dun fichier temporaire pour le téléchargement\n
msgid "url '%s' is invalid\n"
msgstr "lURL « %s » est non valide\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "échec de récupération du fichier « %s » depuis %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"échec de récupération du fichier « %s » depuis %s : taille attendue "
"dépassée\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s est apparemment tronqué : %jd/%jd octets\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "le fichier %s na pas pu être téléchargé\n"
@@ -619,12 +619,12 @@ msgstr "la satisfaction des dépendances a échoué"
#: lib/libalpm/error.c:137
#, c-format
msgid "conflicting dependencies"
msgstr "conflit de dépendances "
msgstr "conflit de dépendances"
#: lib/libalpm/error.c:139
#, c-format
msgid "conflicting files"
msgstr "conflit de fichiers "
msgstr "conflit de fichiers"
#: lib/libalpm/error.c:142
#, c-format
@@ -845,7 +845,7 @@ msgstr "la clé « %s » na pas pu être importée\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "la clé « %s » ne peut être recherchée à distance\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s : signature requise manquante\n"
@@ -938,27 +938,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"supprime « %s » de la liste de cible car il est en conflit avec « %s »\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "erreur lors de la récupération de certains fichiers\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "impossible de lire le fichier %s : %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "espace disque insuffisant\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "appliquer la transaction de suppression a échoué\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "appliquer la transaction a échoué\n"

View File

@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Galician (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -56,7 +56,7 @@ msgstr "alerta producida mentres se extraía %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "Non foi posíbel extraer «%s» (%s).\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "Non foi posíbel cambiar o nome de «%s» a «%s» (%s).\n"
@@ -170,7 +170,7 @@ msgstr "entrada dañada na base de datos '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -236,7 +236,7 @@ msgstr "faltan os metadatos do paquete en %s\n"
msgid "failed to read signature file: %s\n"
msgstr "non foi posíbel ler o ficheiro da sinatura: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "a chave solicitada non está no anel\n"
@@ -374,24 +374,24 @@ msgstr "error ao crear un arquivo temporal para a descarga\n"
msgid "url '%s' is invalid\n"
msgstr "a dirección %s non é válida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "error ao obter o arquivo '%s' dende %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"Non foi posíbel obter o ficheiro «%s» de «%s»: superouse o tamaño de "
"descarga esperado.\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "non se puido descargar %s\n"
@@ -844,7 +844,7 @@ msgstr "a clave \"%s\" non se puido importar\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: fáltalle a sinatura obrigatoria.\n"
@@ -937,27 +937,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"quitando '%s' da lista de obxetivos debido a que ten conflictos con '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "non foi posíbel descargar algúns dos ficheiros\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "non hai espazo de almacenamento dabondo\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "non se puido enviar a operación de eliminación\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "non se puido asignar a transacción\n"

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 20:45+0000\n"
"Last-Translator: Ivica Kolić <ikoli@yahoo.com>\n"
"Language-Team: Croatian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -54,7 +54,7 @@ msgstr ""
"\n"
"\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "ne mogu preimenivati %s u %s (%s)\n"
@@ -174,7 +174,7 @@ msgstr "oštećeni unos baze podataka '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -239,7 +239,7 @@ msgstr "nedostaju metapodaci paketa u %s\n"
msgid "failed to read signature file: %s\n"
msgstr "ne mogu pročitati datoteku sa potpisom: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "traženi ključ nedostaje u privjesku\n"
@@ -372,24 +372,24 @@ msgstr "neuspjela izrada privremene datoteke za preuzimanje\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' je neispravan\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "neuspjelo primanje datoteke '%s' iz %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"greška pri dobavljanju datoteke '%s' iz %s: veličina preuzimanja je veća od "
"očekivane\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s je okrnjen: %jd%jd bajtova\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "neuspjelo preuzimanje %s\n"
@@ -843,7 +843,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr ""
@@ -939,27 +939,27 @@ msgstr "otkriveni su nerješivi sukobi paketa\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "uklanjam '%s' sa liste mete jer se sukobljava sa '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "neuspjelo primanje nekin datoteka\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nema dovoljno slobodnog prostora\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "ne mogu izvršiti transakciju uklanjanja\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ne mogu izvršiti transakciju\n"

View File

@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-09 19:41+0000\n"
"Last-Translator: user14 <nleknh@gmail.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/toofishes/archlinux-"
@@ -60,7 +60,7 @@ msgstr "figyelmeztetés a(z) %s kibontása közben (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nem sikerült kibontani: %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nem sikerült az átnevezés: %s -> %s (%s)\n"
@@ -172,7 +172,7 @@ msgstr "sérült adatbázis-bejegyzés: '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -234,7 +234,7 @@ msgstr "hiányzó csomaginformációs fájl: %s\n"
msgid "failed to read signature file: %s\n"
msgstr "nem sikerült olvasni a %s aláírásfájlt\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "egy szükséges kulcs hiányzik a kulcstartóból\n"
@@ -369,24 +369,24 @@ msgstr "nem sikerült létrehozni ideiglenes fájlt a letöltéshez\n"
msgid "url '%s' is invalid\n"
msgstr "a '%s' URL hibás\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "nem sikerült a(z) '%s' fájlt letölteni a %s helyről : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"nem sikerült a(z) '%s' fájlt letölteni a %s helyről : a várt letöltési méret "
"túlhaladva\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "úgy tűnik, hogy %s csonka: %jd/%jd bájt\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "nem sikerült a(z) %s letöltése\n"
@@ -840,7 +840,7 @@ msgstr "nem lehetett importálni a \"%s\" kulcsot\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "a \"%s\" távoli kulcs nem található\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: szükséges aláírás hiányzik\n"
@@ -932,27 +932,27 @@ msgstr "feloldhatatlan csomagütközéseket találtam\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' kihagyása, mert ütközik a következővel: '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "nem sikerült minden fájlt letölteni\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "nem sikerült olvasni a %s: %s fájlt\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nincs elég szabad lemezterület\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nem sikerült végrehajtani az eltávolító tranzakciót\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nem sikerült végrehajtani a tranzakciót\n"

View File

@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Indonesian (http://www.transifex.com/toofishes/archlinux-"
@@ -57,7 +57,7 @@ msgstr "peringatan diberikan ketika mengekstrak %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "tidak dapat mengekstrak %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "tidak dapat mengubah nama %s menjadi %s (%s)\n"
@@ -170,7 +170,7 @@ msgstr "entry database korup '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -232,7 +232,7 @@ msgstr "paket %s kehilangan metadata\n"
msgid "failed to read signature file: %s\n"
msgstr "gagal membaca berkas signatur: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "key yang dibutuhkan tidak ada pada keyring\n"
@@ -362,23 +362,23 @@ msgstr "gagal membuat berkas unduhan temporer\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' tidak valid\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "gagal mendapatkan berkas '%s' dari %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"gagal mendapatkan berkas '%s' dari %s: ukuran unduhan melebihi perkiraan\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sepertinya tidak lengkap: %jd/%jd byte\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "gagal mengunduh %s\n"
@@ -830,7 +830,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: tidak mempunyai signature yang dibutuhkan\n"
@@ -922,27 +922,27 @@ msgstr "konflik paket tak terselesaikan terdeteksi\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "menghapus '%s' dari daftar target karena berkonflik dengan '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "gagal mendapatkan beberapa berkas\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ruang kosong tidak cukup\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "tidak dapat melakukan transaksi penghapusan\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "tidak dapat melakukan transaksi\n"

View File

@@ -4,9 +4,9 @@
#
# Translators:
# Alessandro Menti <alessandro.menti@hotmail.it>, 2019
# d574d4bb40c84861791a694a999cce69_9aabecb <ec34fbc10d74f76d8160c2aae04a84b4_6702>, 2014
# d574d4bb40c84861791a694a999cce69_9aabecb <ec34fbc10d74f76d8160c2aae04a84b4_6702>, 2014
# d574d4bb40c84861791a694a999cce69_9aabecb <ec34fbc10d74f76d8160c2aae04a84b4_6702>, 2014
# Andrea Scarpino <inactive+bash@transifex.com>, 2014
# Andrea Scarpino <inactive+bash@transifex.com>, 2014
# Andrea Scarpino <inactive+bash@transifex.com>, 2014
# Dan McGee <dpmcgee@gmail.com>, 2011
# Giovanni Scafora <giovanni@archlinux.org>, 2011-2013,2015
# ~Smlb <smlb@riseup.net>, 2014
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-08 18:22+0000\n"
"Last-Translator: Alessandro Menti <alessandro.menti@hotmail.it>\n"
"Language-Team: Italian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -57,7 +57,7 @@ msgstr "è stato rilevato un warning durante l'estrazione di %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "impossibile estrarre %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "impossibile rinominare %s in %s (%s)\n"
@@ -170,7 +170,7 @@ msgstr "la voce nel database '%s' è corrotta\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -235,7 +235,7 @@ msgstr "manca il metadata del pacchetto in %s\n"
msgid "failed to read signature file: %s\n"
msgstr "impossibile leggere il file della firma: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "la chiave richiesta non è presente nel portachiavi\n"
@@ -374,24 +374,24 @@ msgstr "impossibile creare la directory temporanea per il download\n"
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' non è valido\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "impossibile scaricare il pacchetto '%s' da %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"impossibile scaricare il file '%s' da %s: la dimensione di download supera "
"quella attesa\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sembra essere incompleto: %jd/%jd byte\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "non è stato possibile scaricare %s\n"
@@ -843,7 +843,7 @@ msgstr "la chiave \"%s\" non può essere importata\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "impossibile cercare la chiave \"%s\" sul server remoto\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: manca la firma PGP\n"
@@ -938,27 +938,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"rimozione di '%s' dalla lista dei pacchetti perché va in conflitto con '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "impossibile scaricare alcuni file\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "impossibile leggere il file %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "lo spazio libero sul disco non è sufficiente\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "impossibile eseguire l'operazione di rimozione\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "impossibile eseguire l'operazione\n"

View File

@@ -3,15 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Satoru Abe <s@polamjag.info>, 2015
# ABE Satoru <s@polamjag.info>, 2015
# kusakata, 2017
# Satoru Abe <s@polamjag.info>, 2015
# ABE Satoru <s@polamjag.info>, 2015
# kusakata, 2017-2019
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 22:59+0000\n"
"Last-Translator: kusakata\n"
"Language-Team: Japanese (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -52,7 +52,7 @@ msgstr "%s の展開中に警告が発生しました (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "%s を展開できませんでした (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "%s を %s に名前を変更できませんでした (%s)\n"
@@ -165,7 +165,7 @@ msgstr "破損したデータベースエントリ '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -227,7 +227,7 @@ msgstr "%s にパッケージのメタデータが見つかりません\n"
msgid "failed to read signature file: %s\n"
msgstr "署名ファイルの読み込みに失敗しました: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "キーリングに必要なキーがありません\n"
@@ -360,24 +360,24 @@ msgstr "ダウンロードのための一時ファイルを作成できません
msgid "url '%s' is invalid\n"
msgstr "url '%s' は無効です\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "ファイル '%s' を %s から取得するのに失敗しました : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"ファイル '%s' を %s から取得するのに失敗しました : 想定されるダウンロードサイ"
"ズを超過しています\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s が途中で切れています: %jd/%jd バイト\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s のダウンロードに失敗しました\n"
@@ -829,7 +829,7 @@ msgstr "キー \"%s\" をインポートできませんでした\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "キー \"%s\" をリモートで検索できませんでした\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: 必要な署名が見つかりません\n"
@@ -921,27 +921,27 @@ msgstr "解決できないパッケージの衝突が検出されました\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "対象リストから '%s' を削除。'%s' と衝突しています\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "複数のファイルの取得に失敗しました\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "ファイル %s を読み込めませんでした: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "十分な空き容量がありません\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "削除処理が完了できませんでした\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "処理が完了できませんでした\n"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Kazakh (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -50,7 +50,7 @@ msgstr "%s тарқатқанда ескерту алынды (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "%s тарқату қатесі (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "%s атын жаңа %s атына ауыстыру мүмкін емес (%s)\n"
@@ -163,7 +163,7 @@ msgstr "дерекқордағы '%s' жазбасы зақымдалған\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -225,7 +225,7 @@ msgstr "%s ішінде дестенің мета мәліметтері жоқ\
msgid "failed to read signature file: %s\n"
msgstr "қолтаңба файлын оқу сәтсіз аяқталды: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "кілттер бауында керек кілт жоқ болып тұр\n"
@@ -355,23 +355,23 @@ msgstr "жүктеп алу үшін уақытша файлды жасау сә
msgid "url '%s' is invalid\n"
msgstr "'%s' сілтемесі қате\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "'%s' файлын %s адресінен алу қатемен аяқталды : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"'%s' файлын %s ішінен алу қатесі : күтілген жүктеп алу өлшемінен асып кетті\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s қысқартылған сияқты: %jd/%jd байт\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s жүктеп алу мүмкін емес\n"
@@ -823,7 +823,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: міндетті қолтаңба жоқ\n"
@@ -916,27 +916,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"мақсаттар тізімінен '%s' өшіріледі, өйткені ол '%s' дестесімен ерегіседі\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "кейбір файлдарды алу сәтсіз аяқталды\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "бос диск орны жеткіліксіз\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "өшіруге сұранымды орындау мүмкін емес\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "сұранымды аяқтау мүмкін емес\n"

View File

@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-08 20:07+0000\n"
"Last-Translator: 배태길 <esrevinu@gmail.com>\n"
"Language-Team: Korean (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -57,7 +57,7 @@ msgstr "%s 추출 시 경고 발생 (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "%s를 추출할 수 없습니다. (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "%s의 이름을 %s로 바꾸지 못했습니다.(%s)\n"
@@ -170,7 +170,7 @@ msgstr "데이터베이스 항목인 '%s'가 손상되었습니다.\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -232,7 +232,7 @@ msgstr "%s에서 메타데이터가 누락되었습니다.\n"
msgid "failed to read signature file: %s\n"
msgstr "서명 파일을 읽는 데 실패: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "키링에서 필요한 키를 찾을 수 없습니다.\n"
@@ -362,22 +362,22 @@ msgstr "다운로드를 위한 임시파일을 만드는 데 실패하였습니
msgid "url '%s' is invalid\n"
msgstr "url '%s'가 잘못되었습니다.\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "파일 '%s'를 %s에서 가져오는 데 실패 : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "파일 '%s'를 %s에서 가져오는 데 실패 : 예상 내려받기 크기 초과\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s가 잘린 것 같습니다.: %jd/%jd 바이트\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s를 다운받지 못했습니다.\n"
@@ -829,7 +829,7 @@ msgstr "\"%s\" 키를 들여오지 못했습니다\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "원격의 \"%s\" 키를 조회하지 못했습니다\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: 필요한 서명이 없습니다.\n"
@@ -921,27 +921,27 @@ msgstr "해결할 수 없는 꾸러미 충돌이 있습니다.\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%2$s'와 충돌하므로 대상 목록에서 '%1$s'를 뺍니다.\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "일부 파일을 가져오지 못했습니다.\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "파일 %s 읽기 실패: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "디스크 여유 공간이 부족합니다.\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "삭제 처리를 커밋하지 못하였습니다.\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "처리를 커밋하지 못하였습니다.\n"

View File

@@ -1,14 +1,14 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR "Pacman Development Team <pacman-dev@archlinux.org>"
# This file is distributed under the same license as the libalpm package.
# Copyright (C) YEAR Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: libalpm\n"
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -47,7 +47,7 @@ msgstr ""
msgid "could not extract %s (%s)\n"
msgstr ""
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr ""
@@ -154,7 +154,7 @@ msgstr ""
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -216,7 +216,7 @@ msgstr ""
msgid "failed to read signature file: %s\n"
msgstr ""
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr ""
@@ -346,22 +346,22 @@ msgstr ""
msgid "url '%s' is invalid\n"
msgstr ""
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr ""
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr ""
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr ""
@@ -813,7 +813,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr ""
@@ -905,27 +905,27 @@ msgstr ""
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr ""
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr ""
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr ""
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr ""

View File

@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 10:33+0000\n"
"Last-Translator: Moo\n"
"Language-Team: Lithuanian (http://www.transifex.com/toofishes/archlinux-"
@@ -57,7 +57,7 @@ msgstr "bandant išskleisti gautas įspėjimas %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nepavyko išskleisti %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nepavyko pervadint %s į %s (%s)\n"
@@ -169,7 +169,7 @@ msgstr "duomenų bazės įrašas sugadintas „%s“\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -233,7 +233,7 @@ msgstr "trūksta paketo meta duomenų %s\n"
msgid "failed to read signature file: %s\n"
msgstr "nepavyko perskaityt parašo failo: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "reikia rakto kurio nėra raktinėje\n"
@@ -366,23 +366,23 @@ msgstr "nepavyko sukurti laikino failo parsiuntimui\n"
msgid "url '%s' is invalid\n"
msgstr "neteisingas url „%s“\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "nepavyko gauti failo „%s“ iš %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"gauti failo „%s“ iš %s nepavyko: viršytas tikėtasis parsiuntimo dydis\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s atrodo apkarpyta: %jd/%jd baitai\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "nepavyko parsiųsti %s\n"
@@ -834,7 +834,7 @@ msgstr "nepavyko importuoti rakto \"%s\"\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "rakto \"%s\" nepavyko rasti nuotoliniu būdu\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: trūksta parašo\n"
@@ -926,27 +926,27 @@ msgstr "aptikti neišsprendžiami paketų nesuderinamumai\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "iš objektų sąrašo šalinamas „%s“ dėl konfliktų su „%s“\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "nepavyko gauti kai kurių failų\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "nepavyko perskaityt failą %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nepakanka laisvos vietos\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nepavyko įvykdyti šalinimo perdavimo\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nepavyko įvykdyti perdavimo\n"

View File

@@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Alexander F. Rødseth <rodseth@gmail.com>, 2011,2013,2016-2019,2021
# Alexander F. Rødseth <rodseth@gmail.com>, 2011,2013
# Alexander F Rødseth <rodseth@gmail.com>, 2011,2013,2016-2019
# Alexander F Rødseth <rodseth@gmail.com>, 2011,2013
# Eyolf Østrem <eyolf@oestrem.com>, 2014
# Jon Gjengset <jon@thesquareplanet.com>, 2011,2013,2015,2017
# Thor K. H. <nitrolinken@gmail.com>, 2019
@@ -12,9 +12,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2021-03-24 21:50+0000\n"
"Last-Translator: Alexander F. Rødseth <rodseth@gmail.com>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 10:29+0000\n"
"Last-Translator: Alexander F Rødseth <rodseth@gmail.com>\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/toofishes/"
"archlinux-pacman/language/nb/)\n"
"Language: nb\n"
@@ -53,7 +53,7 @@ msgstr "fikk en advarsel ved utpakking av %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "kan ikke pakke ut %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kunne ikke omdøpe %s til %s (%s)\n"
@@ -130,7 +130,7 @@ msgstr "kunne ikke oppdatere databaseoppføring %s-%s\n"
#: lib/libalpm/add.c:615
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "kunne ikke legge '%s' til mellomlageret\n"
msgstr "kunne ikke legge til oppføringen '%s' i mellomlageret\n"
#: lib/libalpm/be_local.c:267
#, c-format
@@ -164,7 +164,7 @@ msgstr "korrupt databaseoppføring '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -226,7 +226,7 @@ msgstr "mangler metadata i %s\n"
msgid "failed to read signature file: %s\n"
msgstr "kan ikke lese signaturfil: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "den nødvendige nøkkelen finnes ikke på nøkkelringen\n"
@@ -356,22 +356,22 @@ msgstr "kunne ikke opprette midlertidig fil i sammengeng med nedlasting\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' er ugyldig\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "kunne ikke laste ned '%s' fra %s : %s\n"
msgstr "kunne ikke hente filen '%s' fra %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "kunne ikke laste ned '%s' fra %s : filen er større enn forventet\n"
msgstr "kunne ikke hente filen '%s' fra %s : filen er større enn forventet\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s ser ut til å være avkortet: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "kunne ikke laste ned %s\n"
@@ -823,7 +823,7 @@ msgstr "kan ikke importere nøkkel \"%s\"\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "kunne ikke finne nøkkel \"%s\" på avstand\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: mangler påkrevd signatur\n"
@@ -915,27 +915,27 @@ msgstr "uløselige pakkekollisjoner oppdaget\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "fjerner '%s' fra listen over mål fordi den kolliderer med '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "noen filer kunne ikke hentes\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "kunne ikke lese fil %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "ikke nok ledig diskplass\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kunne ikke utføre transaksjon (fjerning)\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "kunne ikke utføre transaksjon\n"

View File

@@ -5,7 +5,7 @@
# Translators:
# 56d5d7c9ccc04394ef84fc87640272f6, 2011,2015
# Peter van den Hurk, 2014
# a91dc94891efad958223abaf78f68e63_4458573, 2014-2015
# Peter van den Hurk, 2014-2015
# Ruben Van Boxem <vanboxem.ruben@gmail.com>, 2015,2018-2019
# 56d5d7c9ccc04394ef84fc87640272f6, 2015
# 56d5d7c9ccc04394ef84fc87640272f6, 2011
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 09:17+0000\n"
"Last-Translator: Ruben Van Boxem <vanboxem.ruben@gmail.com>\n"
"Language-Team: Dutch (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -58,7 +58,7 @@ msgstr "waarschuwing tijdens uitpakken van %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "kon %s (%s) niet uitpakken\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kan %s niet hernoemen als %s (%s)\n"
@@ -171,7 +171,7 @@ msgstr "database record '%s' corrupt\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -235,7 +235,7 @@ msgstr "metagegevens van pakket ontbreken in %s\n"
msgid "failed to read signature file: %s\n"
msgstr "fout tijdens lezen van handtekeningsbestand: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "vereiste sleutel ontbreekt in sleutelhanger\n"
@@ -365,24 +365,24 @@ msgstr "aanmaken van tijdelijk bestand voor download mislukt\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' is niet geldig\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "kan het bestand '%s' niet ophalen van %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"kon het bestand '%s' niet ophalen van %s : verwachte download grootte "
"overschreden\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s werd onderbroken: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "downloaden van %s mislukt\n"
@@ -834,7 +834,7 @@ msgstr "sleutel \"%s\" kon niet geïmporteerd worden\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "sleutel \"%s\" kon niet gevonden worden\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: ontbrekende PGP handtekening\n"
@@ -927,27 +927,27 @@ msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"'%s' wordt verwijderd van de doellijst omdat het conflicteert met '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "Niet alle bestanden konden worden opgehaald\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "fout bij het lezen van bestand '%s': %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "Onvoldoende vrije schijfruimte\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kan de verwijdertransactie niet voltooien\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "kan transactie niet voltooien\n"

View File

@@ -3,7 +3,6 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Artur Juraszek <artur@juraszek.xyz>, 2020
# Bartek Piotrowski <barthalion@gmail.com>, 2011
# Bartłomiej Piotrowski <spam@bpiotrowski.pl>, 2014
# Chris Warrick, 2013
@@ -21,9 +20,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-01-23 18:09+0000\n"
"Last-Translator: Artur Juraszek <artur@juraszek.xyz>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Polish (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/pl/)\n"
"Language: pl\n"
@@ -64,7 +63,7 @@ msgstr "wystąpił błąd podczas rozpakowywania %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nie udało się rozpakować %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nie udało się zmienić nazwy %s na %s (%s)\n"
@@ -177,7 +176,7 @@ msgstr "zepsuty wpis w bazie danych '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -239,7 +238,7 @@ msgstr "brak metadanych pakietu w %s\n"
msgid "failed to read signature file: %s\n"
msgstr "nie udało się odczytać pliku podpisu: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "brak wymaganego klucza w pęku kluczy\n"
@@ -370,24 +369,24 @@ msgstr "nie udało się stworzyć tymczasowego pliku pobierania\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' jest błędny\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "nie udało się pobrać pliku '%s' z %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"nie powiodło się pobieranie pliku '%s' z %s : oczekiwany rozmiar pobierania "
"został przekroczony\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s wygląda, jakby został obcięty %jd/%jd bajtów\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "nie udało się pobrać %s\n"
@@ -656,7 +655,7 @@ msgstr ""
#: lib/libalpm/error.c:159
#, c-format
msgid "compiled without signature support"
msgstr "skompilowano ze wsparciem dla podpisów"
msgstr ""
#: lib/libalpm/error.c:162
#, c-format
@@ -815,12 +814,12 @@ msgstr "Błąd GPGME: %s\n"
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "szukam klucza %s przy pomocy WKD\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "błąd gpg: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
@@ -830,7 +829,7 @@ msgstr "zestaw kluczy jest niezapisywalny\n"
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "klucz \"%s\" na keyserverze\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
@@ -842,7 +841,7 @@ msgstr "klucz \"%s\" nie może zostać zaimportowany\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "klucz \"%s\" nie może zostać sprawdzony zdalnie\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: brakuje wymaganego podpisu\n"
@@ -934,27 +933,27 @@ msgstr "odkryto nierozwiązywalne konflikty pakietów\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "usuwanie '%s' z listy celów ponieważ konfliktuje z '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "nie udało się pobrać niektórych plików\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "nie udało się odczytać pliku %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "niewystarczające miejsce na dysku\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nie udało się wykonać transakcji usuwania\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nie udało się wykonać transakcji\n"

View File

@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Portuguese (http://www.transifex.com/toofishes/archlinux-"
@@ -54,7 +54,7 @@ msgstr "aviso apresentado ao extrair %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "não foi possível extrair %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "não foi possível renomear %s para %s (%s)\n"
@@ -167,7 +167,7 @@ msgstr "entrada da base de dados corrompida '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -230,7 +230,7 @@ msgstr "em falta metadados do pacote em %s\n"
msgid "failed to read signature file: %s\n"
msgstr "falha ao ler o ficheiro de assinatura: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "chave necessária em falta no chaveiro\n"
@@ -368,24 +368,24 @@ msgstr "erro ao criar ficheiro temporário para download\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' é inválida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "falha ao obter ficheiro '%s' de %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"falhou a obtenção do ficheiro '%s' de %s : o tamanho esperado da "
"transferência foi excedido\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar quebrado: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "falha ao fazer a descarga de %s\n"
@@ -838,7 +838,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: não tem a assinatura requerida\n"
@@ -930,27 +930,27 @@ msgstr "detetado conflito entre pacotes sem solução\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "a remover '%s' da lista de pacotes porque entra em conflito com '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "falha ao obter alguns ficheiros\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "não há espaço livre suficiente no disco\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "não foi possível efetuar a operação de remoção\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "não foi possível efetuar a operação\n"

View File

@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 10:01+0000\n"
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/toofishes/"
@@ -56,7 +56,7 @@ msgstr "recebido aviso ao extrair %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "não foi possível extrair %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "não foi possível renomear %s para %s (%s)\n"
@@ -169,7 +169,7 @@ msgstr "registro corrompido na base de dados \"%s\"\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -233,7 +233,7 @@ msgstr "faltando metadados do pacote em %s\n"
msgid "failed to read signature file: %s\n"
msgstr "falha ao ler o arquivo de assinatura: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "faltando chave necessária no chaveiro\n"
@@ -371,23 +371,23 @@ msgstr "falha em criar arquivo temporário para download\n"
msgid "url '%s' is invalid\n"
msgstr "a url \"%s\" é inválida\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "falha ao obter o arquivo \"%s\" de %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"falha ao obter arquivo \"%s\" de %s: esperava tamanho de download excedido\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "falha ao fazer o download de %s\n"
@@ -839,7 +839,7 @@ msgstr "a chave \"%s\" não pôde ser importada\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "a chave \"%s\" não pôde ser procurada remotamente\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: faltando assinatura exigida\n"
@@ -931,27 +931,27 @@ msgstr "conflito de pacotes não solucionável detectado\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "removendo \"%s\" da lista de pacotes porque ele conflita com \"%s\"\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "falha ao obter alguns arquivos\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "falha ao ler o arquivo %s: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "espaço livre em disco insuficiente\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "não foi possível efetuar a transação de remoção\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "não foi possível efetuar a transação\n"

View File

@@ -6,8 +6,8 @@
# Arthur Țițeică <arthur.titeica@gmail.com>, 2013
# Arthur Titeica <arthur@psw.ro>, 2013
# Arthur Țițeică <arthur.titeica@gmail.com>, 2013-2015
# 202609b54ed34ff097613de9ccdb5e5a_959331d <9d860af7345e5089300e50121cee92df_6113>, 2011
# 202609b54ed34ff097613de9ccdb5e5a_959331d <9d860af7345e5089300e50121cee92df_6113>, 2011
# cantabile <inactive+cantabile@transifex.com>, 2011
# cantabile <inactive+cantabile@transifex.com>, 2011
# Dan McGee <dpmcgee@gmail.com>, 2011
# Ionut Biru <ibiru@archlinux.org>, 2011
# Mihai Coman <mihai@m1x.ro>, 2011,2013
@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Romanian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -61,7 +61,7 @@ msgstr "s-a primit o avertizare la extragerea %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nu s-a putut extrage %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nu s-a putut redenumi %s în %s (%s)\n"
@@ -174,7 +174,7 @@ msgstr "intrare coruptă în baza de date '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -238,7 +238,7 @@ msgstr "lipsă metadate pentru pachet în %s\n"
msgid "failed to read signature file: %s\n"
msgstr "eșec la citirea fișierului de semnătură: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "cheia necesară lipsește din lanțul de chei\n"
@@ -375,24 +375,24 @@ msgstr "eșec la crearea fișierului temporar pentru descărcare\n"
msgid "url '%s' is invalid\n"
msgstr "Adresa url '%s' este nevalidă\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "eșec la obținerea fișierului '%s' din %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"eșec la obținerea fișierului '%s' din %s : dimensiunea de descărcare "
"așteptată a fost depășită\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s pare a fi trunchiat: %jd/%jd octeți\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "eșec la descărcarea %s\n"
@@ -844,7 +844,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: lipsește semnătura necesară\n"
@@ -936,27 +936,27 @@ msgstr "s-au detectat conflicte nerezolvabile în pachet\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "se elimină '%s' din lista țintă deoarece este în conflict cu '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "eșec la obținerea unor fișiere\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nu există destul spațiu liber pe disc\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nu s-a putut efectua tranzacția de eliminare\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nu s-a putut efectua tranzacția\n"

View File

@@ -19,7 +19,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Russian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -62,7 +62,7 @@ msgstr "получено предупреждение при извлечени
msgid "could not extract %s (%s)\n"
msgstr "не удалось извлечь %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "не удалось переименовать %s в %s (%s)\n"
@@ -173,7 +173,7 @@ msgstr "повреждённая запись в базе данных '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -237,7 +237,7 @@ msgstr "отсутствуют метаданные пакета в %s\n"
msgid "failed to read signature file: %s\n"
msgstr "не удалось прочитать файл с подписью: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "требуемый ключ отсутствует в цепочке ключей\n"
@@ -371,22 +371,22 @@ msgstr "не удалось создать временный файл для з
msgid "url '%s' is invalid\n"
msgstr "ссылка '%s' некорректна\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "не удалось получить файл '%s' из %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "не удалось получить файл '%s' из %s: превышен ожидаемый размер\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s, видимо, обрезан: %jd/%jd байт\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "не удалось загрузить %s\n"
@@ -838,7 +838,7 @@ msgstr "не удалось импортировать ключ \"%s\"\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: не найдена необходимая подпись\n"
@@ -930,27 +930,27 @@ msgstr "обнаружен неразрешимый конфликт пакет
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "удаление '%s' из списка целей, поскольку он конфликтует с '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "не удалось получить некоторые файлы\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "недостаточно места на диске\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "не удалось завершить транзакцию удаления\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "не удалось завершить транзакцию\n"

View File

@@ -5,9 +5,9 @@
# Translators:
# archetyp <archetyp@linuxmail.org>, 2013
# archetyp <archetyp@linuxmail.org>, 2013-2015
# Dušan Kazik <prescott66@gmail.com>, 2016,2020
# 3ff9a567ff32d540038a6a558650f376_643ea9b <38630839a6ec6b692ff2ca08fafb2585_10562>, 2011
# 3ff9a567ff32d540038a6a558650f376_643ea9b <38630839a6ec6b692ff2ca08fafb2585_10562>, 2011
# Dušan Kazik <prescott66@gmail.com>, 2016
# Dušan Lago <inactive+dudko@transifex.com>, 2011
# Dušan Lago <inactive+dudko@transifex.com>, 2011
# Jose Riha <jose1711@gmail.com>, 2011
# Jose Riha <jose1711@gmail.com>, 2011
# Jose Riha <jose1711@gmail.com>, 2011
@@ -15,9 +15,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-11-29 12:54+0000\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Slovak (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/sk/)\n"
"Language: sk\n"
@@ -30,7 +30,7 @@ msgstr ""
#: lib/libalpm/add.c:91 lib/libalpm/sync.c:290
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s je aktuálny -- vynecháva sa\n"
msgstr "%s-%s je aktuálny -- preskakujem\n"
#: lib/libalpm/add.c:95
#, c-format
@@ -40,7 +40,7 @@ msgstr "%s-%s je aktuálny -- preinštalovávam\n"
#: lib/libalpm/add.c:100
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "prechádza sa na staršiu verziu balíka %s (%s => %s)\n"
msgstr "downgradujem balíček %s (%s => %s)\n"
#: lib/libalpm/add.c:129
#, c-format
@@ -57,7 +57,7 @@ msgstr "varovanie pri rozbaľovaní %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "nie je možné rozbaliť %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nie je možné premenovať %s na %s (%s)\n"
@@ -66,7 +66,8 @@ msgstr "nie je možné premenovať %s na %s (%s)\n"
#, c-format
msgid "file not found in file list for package %s. skipping extraction of %s\n"
msgstr ""
"súbor sa nenašiel v zozname súborov balíka %s. vynecháva sa rozbaľovanie %s\n"
"súbor nebol nájdený v zozname súborov balíčka %s. preskakujem rozbaľovanie "
"%s\n"
#: lib/libalpm/add.c:219
#, c-format
@@ -145,7 +146,7 @@ msgstr "chyba pri čítaní súboru %s: %s\n"
#: lib/libalpm/be_local.c:364
#, c-format
msgid "removing invalid database: %s\n"
msgstr "odstraňuje sa neplatná databáza: %s\n"
msgstr "odstraňujem neplatnú databázu: %s\n"
#: lib/libalpm/be_local.c:415 lib/libalpm/be_local.c:905
#, c-format
@@ -169,7 +170,7 @@ msgstr "poškodený záznam v databáze '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -231,7 +232,7 @@ msgstr "chýbaju metadáta balíčka v %s\n"
msgid "failed to read signature file: %s\n"
msgstr "zlyhalo načítanie súboru s podpisom: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "požadovaný kľúč nebol nájdený v kľúčenke\n"
@@ -239,7 +240,7 @@ msgstr "požadovaný kľúč nebol nájdený v kľúčenke\n"
#: lib/libalpm/be_sync.c:61
#, c-format
msgid "removing invalid file: %s\n"
msgstr "odstraňuje sa neplatný súbor: %s\n"
msgstr "odstraňujem neplatný súbor: %s\n"
#: lib/libalpm/be_sync.c:515
#, c-format
@@ -289,7 +290,7 @@ msgstr "%s bude nainštalovaný pred %s, na ktorom závisí\n"
#: lib/libalpm/deps.c:681 lib/libalpm/deps.c:712
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignoruje sa balík %s-%s\n"
msgstr "ignorujem balíček %s-%s\n"
#: lib/libalpm/deps.c:869
#, c-format
@@ -364,24 +365,24 @@ msgstr "chyba pri vytváraní dočasného súboru pre sťahovanie\n"
msgid "url '%s' is invalid\n"
msgstr "URL '%s' je neplatná\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "chyba pri získavaní súboru '%s' z %s: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"chyba pri sťahovaní súboru '%s' z %s : očakávaná veľkosť sťahovaného súboru "
"bola prekročená\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s vyzerá byť skrátený: %jd/%jd bytov\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "chyba pri sťahovaní %s\n"
@@ -833,7 +834,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: chýba vyžadovaný podpis\n"
@@ -925,27 +926,27 @@ msgstr "zistený konflikt nerozlíšiteľných balíčkov\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' odstránený zo zoznamu cieľov, pretože je v konflikte s '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "zlyhalo získanie niektorých súborov\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nedostatok voľného miesta na disku\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nie je možné uskutočniť transakciu pre odstránenie\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "nie je možné uskutočniť transakciu\n"

View File

@@ -13,12 +13,12 @@
# smlu <smluprenos@gmail.com>, 2012
# smlu <smluprenos@gmail.com>, 2012
# Timotej Marosevic <timotej.marosevic@gmail.com>, 2018
# 35e31c1f7beb9a73365b56f93b1457f5_fbd83d3, 2014
# Readage, 2014
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Slovenian (http://www.transifex.com/toofishes/archlinux-"
@@ -60,7 +60,7 @@ msgstr "opozorilo podano med razširjanjem %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "ni mogoče razširiti %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "%s ni mogoče preimenovati v %s (%s)\n"
@@ -175,7 +175,7 @@ msgstr "pokvarjen vnos '%s' v podatkovni bazi\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -237,7 +237,7 @@ msgstr "v %s manjkajo metapodatki paketa\n"
msgid "failed to read signature file: %s\n"
msgstr "ni mogoče prebrati podpisa datoteke: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "zahtevan ključ iz baze ključev manjka\n"
@@ -370,24 +370,24 @@ msgstr "napaka pri ustvarjanju začasne datoteke za prenos\n"
msgid "url '%s' is invalid\n"
msgstr "url naslov '%s' je neveljaven\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "napaka pri pridobivanju datoteke '%s' iz %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"napaka pri pridobivanju datoteke '%s' iz %s : pričakovana velikost prenosa "
"presežena\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "zdi se, da je %s prirezan: %jd/%jd bajtov \n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "spodletel prenos %s\n"
@@ -839,7 +839,7 @@ msgstr ""
msgid "key \"%s\" could not be looked up remotely\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: manjka zahtevan podpis\n"
@@ -931,27 +931,27 @@ msgstr "zaznani so bili nerešljivi spori paketa\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "odstranjevanje '%s' iz ciljnega seznama, ker je v sporu z '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "ni mogoče prejeti nekaterih datotek\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "na disku ni dovolj razpoložljivega prostora\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "ni bilo možno uveljaviti odstranitve transakcije\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ni bilo mogoče uveljaviti transakcije\n"

View File

@@ -3,17 +3,17 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013-2014
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013-2014
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Slobodan Terzić <githzerai06@gmail.com>, 2011,2015,2018
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Serbian (http://www.transifex.com/toofishes/archlinux-pacman/"
@@ -55,7 +55,7 @@ msgstr "дато је упозорење при распакивању %s (%s)\n
msgid "could not extract %s (%s)\n"
msgstr "не могу да распакујем %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "не могу да преименујем %s у %s (%s)\n"
@@ -166,7 +166,7 @@ msgstr "оштећен унос базе „%s“\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -228,7 +228,7 @@ msgstr "недостају метаподаци пакета %s\n"
msgid "failed to read signature file: %s\n"
msgstr "не могу да прочитам фајл потписа: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "захтеваног кључа нема на привеску\n"
@@ -358,24 +358,24 @@ msgstr "неуспело стварање привременог фајла пр
msgid "url '%s' is invalid\n"
msgstr "„%s“ је неисправан урл\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "неуспешно преузимање фајла „%s“ са „%s“: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"неуспело добављање фајла %s са %s: премашена је предвиђена величина "
"преузимања\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "изгледа да је %s окрњен: %jd/%jd бајтова\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "неуспешно преузимање %s\n"
@@ -827,7 +827,7 @@ msgstr "кључ „%s“ се не може увести\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "кључ „%s“ се не може потражити удаљено\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: недостаје захтевани потпис\n"
@@ -919,27 +919,27 @@ msgstr "откривени су неразрешиви сукоби пакета
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "уклањам „%s“ са списка циљева због сукоба са „%s“\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "неуспешно преузимање неких фајлова\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "нема довољно слободног простора на диску\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "не могу да обавим уклањање\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "не могу да обавим пренос\n"

View File

@@ -3,17 +3,17 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013-2014
# Mladen Pejaković, 2013
# Mladen Pejaković, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013-2014
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Mladen Pejaković <pejakm@autistici.org>, 2013
# Slobodan Terzić <githzerai06@gmail.com>, 2011,2015,2018
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Serbian (Latin) (http://www.transifex.com/toofishes/archlinux-"
@@ -55,7 +55,7 @@ msgstr "dato je upozorenje pri raspakivanju %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "ne mogu da raspakujem %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "ne mogu da preimenujem %s u %s (%s)\n"
@@ -167,7 +167,7 @@ msgstr "oštećen unos baze „%s“\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -229,7 +229,7 @@ msgstr "nedostaju metapodaci paketa %s\n"
msgid "failed to read signature file: %s\n"
msgstr "ne mogu da pročitam fajl potpisa: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "zahtevanog ključa nema na privesku\n"
@@ -359,24 +359,24 @@ msgstr "neuspelo stvaranje privremenog fajla preuzimanja\n"
msgid "url '%s' is invalid\n"
msgstr "„%s“ je neispravan url\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "neuspešno preuzimanje fajla „%s“ sa „%s“: %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"neuspelo dobavljanje fajla %s sa %s: premašena je predviđena veličina "
"preuzimanja\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "izgleda da je %s okrnjen: %jd/%jd bajtova\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "neuspešno preuzimanje %s\n"
@@ -828,7 +828,7 @@ msgstr "ključ „%s“ se ne može uvesti\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "ključ „%s“ se ne može potražiti udaljeno\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: nedostaje zahtevani potpis\n"
@@ -920,27 +920,27 @@ msgstr "otkriveni su nerazrešivi sukobi paketa\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "uklanjam „%s“ sa spiska ciljeva zbog sukoba sa „%s“\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "neuspešno preuzimanje nekih fajlova\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "nema dovoljno slobodnog prostora na disku\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "ne mogu da obavim uklanjanje\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "ne mogu da obavim prenos\n"

View File

@@ -5,18 +5,17 @@
# Translators:
# , 2011
# 0x9fff00 , 2019
# 0x9fff00, 2019
# 0x9fff00 , 2019
# Daniel Sandman <revoltism@gmail.com>, 2013,2015
# Johan R. <jreinhed@protonmail.com>, 2019
# Kim Svensson <ks@linux.com>, 2015
# Luna Jernberg <bittin@cafe8bitar.se>, 2020
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-10-09 08:25+0000\n"
"Last-Translator: Luna Jernberg <bittin@cafe8bitar.se>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Swedish (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/sv/)\n"
"Language: sv\n"
@@ -55,7 +54,7 @@ msgstr "varning given vid extrahering av %s (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "kunde inte extrahera %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kunde inte döpa om %s till %s (%s)\n"
@@ -166,7 +165,7 @@ msgstr "korrupt databasinlägg '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -228,7 +227,7 @@ msgstr "saknar metadata för paketet i %s\n"
msgid "failed to read signature file: %s\n"
msgstr "misslyckades att läsa signaturfil: %s⏎\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "nödvändig nyckel saknas från nyckelring\n"
@@ -246,7 +245,7 @@ msgstr "Kunde ej finna paketbeskrivningsfilen '%s' från databasen '%s'\n"
#: lib/libalpm/be_sync.c:522
#, c-format
msgid "could not read db '%s' (%s)\n"
msgstr "kunde inte läsa db '%s'(%s)\n"
msgstr ""
#: lib/libalpm/be_sync.c:556 lib/libalpm/be_sync.c:561
#, c-format
@@ -364,12 +363,12 @@ msgstr "kunde ej skapa temporär fil för nedladdning\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' är ogiltigt\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "misslyckades hämta filen '%s' från %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
@@ -377,12 +376,12 @@ msgstr ""
"överskreds\n"
"\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s verkar vara trunkerad: %jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "misslyckades ladda ner %s\n"
@@ -650,7 +649,7 @@ msgstr "fel vid anrop av extern nerladdare"
#: lib/libalpm/error.c:159
#, c-format
msgid "compiled without signature support"
msgstr "kompilerad utan signatur stöd"
msgstr ""
#: lib/libalpm/error.c:162
#, c-format
@@ -670,69 +669,69 @@ msgstr "kunde inte ta bort låsningsfil %s\n"
#: lib/libalpm/hook.c:95
#, c-format
msgid "Missing trigger targets in hook: %s\n"
msgstr "Saknar trigger mål i krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:101
#, c-format
msgid "Missing trigger type in hook: %s\n"
msgstr "Saknar trigger typ i krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:107
#, c-format
msgid "Missing trigger operation in hook: %s\n"
msgstr "Saknar trigger operation i krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:134
#, c-format
msgid "Missing Exec option in hook: %s\n"
msgstr "Saknar Exec alternativ i krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:140
#, c-format
msgid "Missing When option in hook: %s\n"
msgstr "Saknar När alternativet i krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:143
#, c-format
msgid "AbortOnFail set for PostTransaction hook: %s\n"
msgstr "AbortOnFail inställt för PostTransaction-krok: %s\n"
msgstr ""
#: lib/libalpm/hook.c:160
#, c-format
msgid "error while reading hook %s: %s\n"
msgstr "fel vid läsning av krok %s:%s\n"
msgstr ""
#: lib/libalpm/hook.c:162 lib/libalpm/hook.c:206 lib/libalpm/hook.c:248
#, c-format
msgid "hook %s line %d: invalid option %s\n"
msgstr "krok %s rad %d: ogiltigt alternativ%s\n"
msgstr ""
#: lib/libalpm/hook.c:172
#, c-format
msgid "hook %s line %d: invalid section %s\n"
msgstr "krok %srad %d: ogiltig sektion %s\n"
msgstr ""
#: lib/libalpm/hook.c:184 lib/libalpm/hook.c:199 lib/libalpm/hook.c:218
#: lib/libalpm/hook.c:241
#, c-format
msgid "hook %s line %d: invalid value %s\n"
msgstr "krok %s rad %d: ogiltigt värde %s\n"
msgstr ""
#: lib/libalpm/hook.c:188 lib/libalpm/hook.c:211 lib/libalpm/hook.c:222
#: lib/libalpm/hook.c:236
#, c-format
msgid "hook %s line %d: overwriting previous definition of %s\n"
msgstr "krok %s rad %d: skriv över tidigare definition av%s\n"
msgstr ""
#: lib/libalpm/hook.c:243
#, c-format
msgid "hook %s line %d: unable to set option (%s)\n"
msgstr "krok %s rad %d: kunde inte ställa in alternativ (%s)\n"
msgstr ""
#: lib/libalpm/hook.c:513
#, c-format
msgid "unable to run hook %s: %s\n"
msgstr "kunde inte köra krok %s:%s\n"
msgstr ""
#: lib/libalpm/hook.c:547 lib/libalpm/hook.c:559 lib/libalpm/remove.c:386
#, c-format
@@ -781,7 +780,7 @@ msgstr "kan inte ta bort '%s': %s\n"
#: lib/libalpm/remove.c:411 lib/libalpm/remove.c:420
#, c-format
msgid "could not backup %s due to PATH_MAX overflow\n"
msgstr "kunde inte säkerhetskopiera %s på grund av PATH_MAX överflöd\n"
msgstr ""
#: lib/libalpm/remove.c:562
#, c-format
@@ -801,7 +800,7 @@ msgstr "kunde inte ta bort '%s' från cachen\n"
#: lib/libalpm/signing.c:171
#, c-format
msgid "Public keyring not found; have you run '%s'?\n"
msgstr "Publik nyckelring hittades inte; har du kört '%s'?\n"
msgstr ""
#: lib/libalpm/signing.c:207 lib/libalpm/signing.c:784
#, c-format
@@ -811,34 +810,34 @@ msgstr "GPGME-fel: %s\n"
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "letar upp nyckeln %s med WKD\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "gpg fel: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
msgid "keyring is not writable\n"
msgstr "nyckelring är inte skrivbar\n"
msgstr ""
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "nyckel \"%s\" på nyckelserver\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
msgid "key \"%s\" could not be imported\n"
msgstr "nyckel \"%s\" kunde ej importeras\n"
msgstr ""
#: lib/libalpm/signing.c:548
#, c-format
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "nyckel \"%s\" kunde inte slås upp på distans\n"
msgstr ""
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: saknar nödvändig signatur\n"
@@ -846,49 +845,49 @@ msgstr "%s: saknar nödvändig signatur\n"
#: lib/libalpm/signing.c:958
#, c-format
msgid "%s: signature from \"%s\" is marginal trust\n"
msgstr "%s:signatur från \"%s\" har marginellt förtroende\n"
msgstr ""
#: lib/libalpm/signing.c:966
#, c-format
msgid "%s: signature from \"%s\" is unknown trust\n"
msgstr "%s: signatur från \"%s\" har okänt förtroende\n"
msgstr ""
#: lib/libalpm/signing.c:973
#, c-format
msgid "%s: signature from \"%s\" should never be trusted\n"
msgstr "%s: signatur från \"%s\" ska aldrig litas på\n"
msgstr ""
#: lib/libalpm/signing.c:985
#, c-format
msgid "%s: key \"%s\" is unknown\n"
msgstr "%s: nyckel \"%s\" är okänd\n"
msgstr ""
#: lib/libalpm/signing.c:994
#, c-format
msgid "%s: key \"%s\" is disabled\n"
msgstr "%s: nyckel \"%s\" är inaktiverad\n"
msgstr ""
#: lib/libalpm/signing.c:998
#, c-format
msgid "%s: signature from \"%s\" is expired\n"
msgstr "%s: signatur från \"%s\" har upphört\n"
msgstr ""
#: lib/libalpm/signing.c:1002
#, c-format
msgid "%s: signature from \"%s\" is invalid\n"
msgstr "%s: signatur från \"%s\" är ogiltig\n"
msgstr ""
#: lib/libalpm/signing.c:1079 lib/libalpm/signing.c:1147
#: lib/libalpm/signing.c:1226
#, c-format
msgid "%s: signature format error\n"
msgstr "%s: signatur format fel\n"
msgstr ""
#: lib/libalpm/signing.c:1179 lib/libalpm/signing.c:1212
#: lib/libalpm/signing.c:1220
#, c-format
msgid "%s: unsupported signature format\n"
msgstr "%s: ogiltigt signatur format\n"
msgstr ""
#: lib/libalpm/sync.c:99
#, c-format
@@ -930,27 +929,27 @@ msgstr "olösliga paketkonflikter upptäckta\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "tar bort '%s' från mållistan då den står i konflikt med '%s'\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "misslyckades att hämta några filer⏎\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "misslyckades att läsa fil %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "saknas tillräckligt med fritt diskutrymme⏎\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kunde inte skicka överföring för borttagning\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "kunde inte skicka överföring\n"

View File

@@ -3,22 +3,22 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Betül Ünlü, 2018
# Betül Ünlü <aarda.uunlu@gmail.com>, 2018
# tarakbumba <tarakbumba@gmail.com>, 2011,2014
# Betül Ünlü, 2018-2019
# Betül Ünlü <aarda.uunlu@gmail.com>, 2018-2019
# Dan McGee <dpmcgee@gmail.com>, 2011
# Demiray Muhterem <mdemiray@msn.com>, 2016
# Demiray Muhterem <mdemiray@msn.com>, 2016
# Betül Ünlü, 2019
# Betül Ünlü <aarda.uunlu@gmail.com>, 2019
# Samed Beyribey <ras0ir@eventualis.org>, 2011,2013
# tarakbumba <tarakbumba@gmail.com>, 2011,2014
msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-10 10:52+0000\n"
"Last-Translator: Betül Ünlü\n"
"Last-Translator: Betül Ünlü <aarda.uunlu@gmail.com>\n"
"Language-Team: Turkish (http://www.transifex.com/toofishes/archlinux-pacman/"
"language/tr/)\n"
"Language: tr\n"
@@ -57,7 +57,7 @@ msgstr "%s açılırken uyarı verildi (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "%s açılamadı (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "%s dosyasının ismi %s olarak değiştirilemiyor (%s)\n"
@@ -170,7 +170,7 @@ msgstr "bozuk veritabanı kaydı '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -232,7 +232,7 @@ msgstr "%s içerisinde eksik paket bilgisi\n"
msgid "failed to read signature file: %s\n"
msgstr "imza dosyası okunamadı: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "gerekli anahtar anahtarlıkta bulunamadı\n"
@@ -364,24 +364,24 @@ msgstr "indirilecek geçici dosya oluşturulamıyor\n"
msgid "url '%s' is invalid\n"
msgstr "'%s' adresi geçersiz\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "%3$s hatası nedeniyle '%1$s' dosyası %2$s adresinden alınamadı\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr ""
"'%s' dosyası %s üzerinden alınırken hata oluştu: beklenen indirme boyutuna "
"ulaşıldı\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s eksik görünüyor: %jd/%jd bayt\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "%s dosyası indirilemedi\n"
@@ -833,7 +833,7 @@ msgstr "anahtar \"%s\" aktarılamıyor\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "anahtar \"%s\"'a uzaktan bakılamıyor\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: gerekli imza kayıp\n"
@@ -926,27 +926,27 @@ msgstr "çözülemeyen paket çakışmaları bulundu\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' hedef listesindeki '%s' ile çakıştığı için kaldırıldı\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "bazı dosyalar alınamadı\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "%s dosyası okunamadı: %s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "yeterli disk alanı yok\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kaldırma işlemi teslim edilemedi\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "işlem teslim edilemedi\n"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Ukrainian (http://www.transifex.com/toofishes/archlinux-"
@@ -54,7 +54,7 @@ msgstr "Видається попередження протягом розпа
msgid "could not extract %s (%s)\n"
msgstr "неможливо розпакувати %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "неможливо перейменувати %s на %s (%s)\n"
@@ -170,7 +170,7 @@ msgstr "пошкоджений запис у базі даних «%s»\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -232,7 +232,7 @@ msgstr "бракує метаданих пакунка в %s\n"
msgid "failed to read signature file: %s\n"
msgstr "не вдалось одержати файл підпису: %s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "потрібний ключ не міститься в зв’язці ключів\n"
@@ -362,22 +362,22 @@ msgstr "не вдалось створити тимчасово файла дл
msgid "url '%s' is invalid\n"
msgstr "посилання «%s» неправильне\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "не вдалось одержати файл «%s» з %s : %s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "не вдалось одержати файл «%s» з %s : перевищено сподіваний розмір\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "здається, %s обрізаний: %jd/%jd байтів\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "не вдалось звантажити %s\n"
@@ -829,7 +829,7 @@ msgstr "ключ \"%s\" неможливо імпортувати\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "ключ \"%s\" неможливо шукати віддалено\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s: бракує підпису\n"
@@ -921,27 +921,27 @@ msgstr "виявлено нерозв'язні конфлікти пакункі
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "вилучення «%s» зі списку пакунків через конфлікт з «%s»\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "не вдалось одержати деякі файли\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr ""
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "недостатньо вільного місця на диску \n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "неможливо здійснити транзакцію вилучення\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "неможливо здійснити транзакцію\n"

View File

@@ -4,13 +4,12 @@
#
# Translators:
# Alimspender Dong <akillcool@outlook.com>, 2019
# Feng Chao <chaofeng111@qq.com>, 2018
# leonfeng <chaofeng111@qq.com>, 2018
# Dan McGee <dpmcgee@gmail.com>, 2011
# Feng Chao <chaofeng111@qq.com>, 2020
# Jiachen YANG <farseerfc@gmail.com>, 2019
# Feng Chao <chaofeng111@qq.com>, 2011
# Feng Chao <chaofeng111@qq.com>, 2011,2018
# Feng Chao <chaofeng111@qq.com>, 2011
# leonfeng <chaofeng111@qq.com>, 2011
# leonfeng <chaofeng111@qq.com>, 2011,2018
# leonfeng <chaofeng111@qq.com>, 2011
# mytbk <mytbk920423@gmail.com>, 2013,2015,2017
# mytbk <mytbk920423@gmail.com>, 2013,2015,2017
# ykelvis <ykelvis@users.noreply.github.com>, 2014
@@ -21,9 +20,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"PO-Revision-Date: 2020-04-26 08:52+0000\n"
"Last-Translator: Feng Chao <chaofeng111@qq.com>\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-07 08:12+0000\n"
"Last-Translator: Allan McRae <allan@archlinux.org>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/toofishes/archlinux-"
"pacman/language/zh_CN/)\n"
"Language: zh_CN\n"
@@ -62,7 +61,7 @@ msgstr "解压 %s 时出现警告 (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "无法解压缩 %1$s (%2$s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "无法将 %1$s 重命名为 %2$s (%3$s)\n"
@@ -173,7 +172,7 @@ msgstr "损坏的数据库记录 '%s'\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -235,7 +234,7 @@ msgstr "%s 中缺少软件包元数据\n"
msgid "failed to read signature file: %s\n"
msgstr "读取签名文件失败:%s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "所需的密钥不在密钥环中\n"
@@ -369,22 +368,22 @@ msgstr "无法创建下载用的临时文件\n"
msgid "url '%s' is invalid\n"
msgstr "url '%s' 无效\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "无法从 %2$s : %3$s 获取文件 '%1$s'\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "获取文件 '%s' 失败,来自 %s : 下载大小超出期望值\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s 可缩小:%jd/%jd bytes\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "下载 %s 失败\n"
@@ -809,12 +808,12 @@ msgstr "GPGME 错误:%s\n"
#: lib/libalpm/signing.c:284
#, c-format
msgid "looking up key %s using WKD\n"
msgstr "用 WKD 查询密钥 %s\n"
msgstr ""
#: lib/libalpm/signing.c:293
#, c-format
msgid "gpg error: %s\n"
msgstr "gpg 错误: %s\n"
msgstr ""
#: lib/libalpm/signing.c:441 lib/libalpm/signing.c:515
#, c-format
@@ -824,7 +823,7 @@ msgstr "密钥环不可写\n"
#: lib/libalpm/signing.c:539
#, c-format
msgid "key \"%s\" on keyserver\n"
msgstr "密钥服务器上的密钥 \"%s\"\n"
msgstr ""
#: lib/libalpm/signing.c:544
#, c-format
@@ -836,7 +835,7 @@ msgstr "密钥 \"%s\" 无法导入\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "无法远程查找到密钥 \"%s\"\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s缺失签名\n"
@@ -928,27 +927,27 @@ msgstr "检测到未解决的软件包冲突\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "正在从目标清单中删除 '%1$s' ,因为它和 '%2$s' 冲突\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "无法获取某些文件\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "无法读取文件 %s%s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "剩余空间不够\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "无法提交删除事务\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "无法提交事务\n"

View File

@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Arch Linux Pacman package manager\n"
"Report-Msgid-Bugs-To: http://bugs.archlinux.org/index.php?project=3\n"
"POT-Creation-Date: 2021-04-23 10:22+1000\n"
"POT-Creation-Date: 2019-10-21 17:23+1000\n"
"PO-Revision-Date: 2019-10-08 00:28+0000\n"
"Last-Translator: 黃柏諺 <s8321414@gmail.com>\n"
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/toofishes/"
@@ -56,7 +56,7 @@ msgstr "解壓縮 %s 時出現警告 (%s)\n"
msgid "could not extract %s (%s)\n"
msgstr "無法解壓縮 %s (%s)\n"
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:580 lib/libalpm/remove.c:542
#: lib/libalpm/add.c:159 lib/libalpm/dload.c:574 lib/libalpm/remove.c:542
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "無法將 %s 重命名為 %s (%s)\n"
@@ -168,7 +168,7 @@ msgstr "損壞的資料庫記錄「%s」\n"
#: lib/libalpm/be_local.c:713 lib/libalpm/be_local.c:809
#: lib/libalpm/be_local.c:954 lib/libalpm/be_local.c:1051
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:428 lib/libalpm/util.c:253
#: lib/libalpm/diskspace.c:131 lib/libalpm/dload.c:422 lib/libalpm/util.c:253
#: lib/libalpm/util.c:269
#, c-format
msgid "could not open file %s: %s\n"
@@ -230,7 +230,7 @@ msgstr "%s 中缺少軟體包元資料\n"
msgid "failed to read signature file: %s\n"
msgstr "無法讀取簽章檔:%s\n"
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:971
#: lib/libalpm/be_package.c:779 lib/libalpm/sync.c:953
#, c-format
msgid "required key missing from keyring\n"
msgstr "從鑰匙圈找不到需要的金鑰\n"
@@ -360,22 +360,22 @@ msgstr "無法建立下載暫存檔\n"
msgid "url '%s' is invalid\n"
msgstr "url「%s」無效\n"
#: lib/libalpm/dload.c:470 lib/libalpm/dload.c:491 lib/libalpm/dload.c:502
#: lib/libalpm/dload.c:464 lib/libalpm/dload.c:485 lib/libalpm/dload.c:496
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "無法取得檔案「%s」從 %s%s\n"
#: lib/libalpm/dload.c:483
#: lib/libalpm/dload.c:477
#, c-format
msgid "failed retrieving file '%s' from %s : expected download size exceeded\n"
msgstr "無法解開「%s」從 %s 壓縮檔:超出下載的檔案大小\n"
#: lib/libalpm/dload.c:538
#: lib/libalpm/dload.c:532
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s 可縮小:%jd/%jd 位元組\n"
#: lib/libalpm/dload.c:683 lib/libalpm/dload.c:712
#: lib/libalpm/dload.c:677 lib/libalpm/dload.c:706
#, c-format
msgid "failed to download %s\n"
msgstr "下載 %s 失敗\n"
@@ -827,7 +827,7 @@ msgstr "金鑰「%s」無法匯入\n"
msgid "key \"%s\" could not be looked up remotely\n"
msgstr "金鑰「%s」無法遠端鎖定\n"
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1040
#: lib/libalpm/signing.c:943 lib/libalpm/sync.c:1022
#, c-format
msgid "%s: missing required signature\n"
msgstr "%s缺少需要的簽章\n"
@@ -919,27 +919,27 @@ msgstr "檢測到無法解決的軟體包衝突\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "正在從目標清單中刪除「%s」因為它和「%s」衝突\n"
#: lib/libalpm/sync.c:859
#: lib/libalpm/sync.c:849
#, c-format
msgid "failed to retrieve some files\n"
msgstr "解開部分檔案失敗\n"
#: lib/libalpm/sync.c:1054
#: lib/libalpm/sync.c:1036
#, c-format
msgid "failed to read file %s: %s\n"
msgstr "讀取檔案 %s 失敗:%s\n"
#: lib/libalpm/sync.c:1241
#: lib/libalpm/sync.c:1223
#, c-format
msgid "not enough free disk space\n"
msgstr "剩餘空間不夠\n"
#: lib/libalpm/sync.c:1263
#: lib/libalpm/sync.c:1245
#, c-format
msgid "could not commit removal transaction\n"
msgstr "無法遞交移除事務處理\n"
#: lib/libalpm/sync.c:1271
#: lib/libalpm/sync.c:1253
#, c-format
msgid "could not commit transaction\n"
msgstr "無法遞交事務處理\n"

View File

@@ -46,14 +46,6 @@
#include "handle.h"
#include "filelist.h"
/**
* @brief Add a package removal action to the transaction.
*
* @param handle the context handle
* @param pkg the package to uninstall
*
* @return 0 on success, -1 on error
*/
int SYMEXPORT alpm_remove_pkg(alpm_handle_t *handle, alpm_pkg_t *pkg)
{
const char *pkgname;

View File

@@ -35,14 +35,6 @@
#include "alpm.h"
#include "handle.h"
/**
* Decode a loaded signature in base64 form.
* @param base64_data the signature to attempt to decode
* @param data the decoded data; must be freed by the caller
* @param data_len the length of the returned data
* @return 0 on success, -1 on failure to properly decode
*/
int SYMEXPORT alpm_decode_signature(const char *base64_data,
unsigned char **data, size_t *data_len)
{
@@ -217,7 +209,7 @@ gpg_error:
int _alpm_key_in_keychain(alpm_handle_t *handle, const char *fpr)
{
gpgme_error_t gpg_err;
gpgme_ctx_t ctx;
gpgme_ctx_t ctx = {0};
gpgme_key_t key;
int ret = -1;
@@ -231,7 +223,6 @@ int _alpm_key_in_keychain(alpm_handle_t *handle, const char *fpr)
goto error;
}
memset(&ctx, 0, sizeof(ctx));
gpg_err = gpgme_new(&ctx);
CHECK_ERR();
@@ -267,12 +258,11 @@ error:
static int key_import_wkd(alpm_handle_t *handle, const char *email)
{
gpgme_error_t gpg_err;
gpgme_ctx_t ctx;
gpgme_ctx_t ctx = {0};
gpgme_keylist_mode_t mode;
gpgme_key_t key;
int ret = -1;
memset(&ctx, 0, sizeof(ctx));
gpg_err = gpgme_new(&ctx);
CHECK_ERR();
@@ -309,7 +299,7 @@ static int key_search_keyserver(alpm_handle_t *handle, const char *fpr,
alpm_pgpkey_t *pgpkey)
{
gpgme_error_t gpg_err;
gpgme_ctx_t ctx;
gpgme_ctx_t ctx = {0};
gpgme_keylist_mode_t mode;
gpgme_key_t key;
int ret = -1;
@@ -322,7 +312,6 @@ static int key_search_keyserver(alpm_handle_t *handle, const char *fpr,
MALLOC(full_fpr, fpr_len + 3, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
sprintf(full_fpr, "0x%s", fpr);
memset(&ctx, 0, sizeof(ctx));
gpg_err = gpgme_new(&ctx);
CHECK_ERR();
@@ -431,7 +420,7 @@ gpg_error:
static int key_import_keyserver(alpm_handle_t *handle, alpm_pgpkey_t *key)
{
gpgme_error_t gpg_err;
gpgme_ctx_t ctx;
gpgme_ctx_t ctx = {0};
gpgme_key_t keys[2];
gpgme_import_result_t result;
int ret = -1;
@@ -442,7 +431,6 @@ static int key_import_keyserver(alpm_handle_t *handle, alpm_pgpkey_t *key)
return -1;
}
memset(&ctx, 0, sizeof(ctx));
gpg_err = gpgme_new(&ctx);
CHECK_ERR();
@@ -507,7 +495,7 @@ static int email_from_uid(const char *uid, char **email)
int _alpm_key_import(alpm_handle_t *handle, const char *uid, const char *fpr)
{
int ret = -1;
alpm_pgpkey_t fetch_key;
alpm_pgpkey_t fetch_key = {0};
char *email;
if(_alpm_access(handle, handle->gpgdir, "pubring.gpg", W_OK)) {
@@ -516,7 +504,6 @@ int _alpm_key_import(alpm_handle_t *handle, const char *uid, const char *fpr)
return -1;
}
memset(&fetch_key, 0, sizeof(fetch_key));
STRDUP(fetch_key.uid, uid, return -1);
STRDUP(fetch_key.fingerprint, fpr, return -1);
@@ -576,8 +563,8 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
{
int ret = -1, sigcount;
gpgme_error_t gpg_err = 0;
gpgme_ctx_t ctx;
gpgme_data_t filedata, sigdata;
gpgme_ctx_t ctx = {0};
gpgme_data_t filedata = {0}, sigdata = {0};
gpgme_verify_result_t verify_result;
gpgme_signature_t gpgsig;
char *sigpath = NULL;
@@ -599,16 +586,14 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
|| (sigfile = fopen(sigpath, "rb")) == NULL) {
_alpm_log(handle, ALPM_LOG_DEBUG, "sig path %s could not be opened\n",
sigpath);
handle->pm_errno = ALPM_ERR_SIG_MISSING;
goto error;
GOTO_ERR(handle, ALPM_ERR_SIG_MISSING, error);
}
}
/* does the file we are verifying exist? */
file = fopen(path, "rb");
if(file == NULL) {
handle->pm_errno = ALPM_ERR_NOT_A_FILE;
goto error;
GOTO_ERR(handle, ALPM_ERR_NOT_A_FILE, error);
}
if(init_gpgme(handle)) {
@@ -618,10 +603,6 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
_alpm_log(handle, ALPM_LOG_DEBUG, "checking signature for %s\n", path);
memset(&ctx, 0, sizeof(ctx));
memset(&sigdata, 0, sizeof(sigdata));
memset(&filedata, 0, sizeof(filedata));
gpg_err = gpgme_new(&ctx);
CHECK_ERR();
@@ -636,8 +617,7 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
int decode_ret = alpm_decode_signature(base64_sig,
&decoded_sigdata, &data_len);
if(decode_ret) {
handle->pm_errno = ALPM_ERR_SIG_INVALID;
goto gpg_error;
GOTO_ERR(handle, ALPM_ERR_SIG_INVALID, error);
}
gpg_err = gpgme_data_new_from_mem(&sigdata,
(char *)decoded_sigdata, data_len, 0);
@@ -654,15 +634,14 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
CHECK_ERR();
if(!verify_result || !verify_result->signatures) {
_alpm_log(handle, ALPM_LOG_DEBUG, "no signatures returned\n");
handle->pm_errno = ALPM_ERR_SIG_MISSING;
goto gpg_error;
GOTO_ERR(handle, ALPM_ERR_SIG_MISSING, gpg_error);
}
for(gpgsig = verify_result->signatures, sigcount = 0;
gpgsig; gpgsig = gpgsig->next, sigcount++);
_alpm_log(handle, ALPM_LOG_DEBUG, "%d signatures returned\n", sigcount);
CALLOC(siglist->results, sigcount, sizeof(alpm_sigresult_t),
handle->pm_errno = ALPM_ERR_MEMORY; goto gpg_error);
GOTO_ERR(handle, ALPM_ERR_MEMORY, gpg_error));
siglist->count = sigcount;
for(gpgsig = verify_result->signatures, sigcount = 0; gpgsig;
@@ -699,7 +678,7 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
gpg_err = GPG_ERR_NO_ERROR;
/* we dupe the fpr in this case since we have no key to point at */
STRDUP(result->key.fingerprint, gpgsig->fpr,
handle->pm_errno = ALPM_ERR_MEMORY; goto gpg_error);
GOTO_ERR(handle, ALPM_ERR_MEMORY, gpg_error));
} else {
CHECK_ERR();
if(key->uids) {
@@ -1008,12 +987,6 @@ int _alpm_process_siglist(alpm_handle_t *handle, const char *identifier,
return retry;
}
/**
* Check the PGP signature for the given package file.
* @param pkg the package to check
* @param siglist a pointer to storage for signature results
* @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
*/
int SYMEXPORT alpm_pkg_check_pgp_signature(alpm_pkg_t *pkg,
alpm_siglist_t *siglist)
{
@@ -1025,12 +998,6 @@ int SYMEXPORT alpm_pkg_check_pgp_signature(alpm_pkg_t *pkg,
pkg->base64_sig, siglist);
}
/**
* Check the PGP signature for the given database.
* @param db the database to check
* @param siglist a pointer to storage for signature results
* @return a int value : 0 (valid), 1 (invalid), -1 (an error occurred)
*/
int SYMEXPORT alpm_db_check_pgp_signature(alpm_db_t *db,
alpm_siglist_t *siglist)
{
@@ -1041,13 +1008,6 @@ int SYMEXPORT alpm_db_check_pgp_signature(alpm_db_t *db,
return _alpm_gpgme_checksig(db->handle, _alpm_db_path(db), NULL, siglist);
}
/**
* Clean up and free a signature result list.
* Note that this does not free the siglist object itself in case that
* was allocated on the stack; this is the responsibility of the caller.
* @param siglist a pointer to storage for signature results
* @return 0 on success, -1 on error
*/
int SYMEXPORT alpm_siglist_cleanup(alpm_siglist_t *siglist)
{
ASSERT(siglist != NULL, return -1);
@@ -1128,13 +1088,6 @@ static int parse_subpacket(alpm_handle_t *handle, const char *identifier,
return 0;
}
/**
* Extract the Issuer Key ID from a signature
* @param sig PGP signature
* @param len length of signature
* @param keys a pointer to storage for key IDs
* @return 0 on success, -1 on error
*/
int SYMEXPORT alpm_extract_keyid(alpm_handle_t *handle, const char *identifier,
const unsigned char *sig, const size_t len, alpm_list_t **keys)
{

View File

@@ -22,6 +22,7 @@
*/
#include <sys/types.h> /* off_t */
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -52,10 +53,6 @@ struct keyinfo_t {
char* keyid;
};
/** Check for new version of pkg in sync repos
* (only the first occurrence is considered in sync)
*/
alpm_pkg_t SYMEXPORT *alpm_sync_get_new_version(alpm_pkg_t *pkg, alpm_list_t *dbs_sync)
{
alpm_list_t *i;
@@ -200,7 +197,6 @@ static alpm_list_t *check_replacers(alpm_handle_t *handle, alpm_pkg_t *lpkg,
return replacers;
}
/** Search for packages to upgrade and add them to the transaction. */
int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
{
alpm_list_t *i, *j;
@@ -256,13 +252,6 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade)
return 0;
}
/** Find group members across a list of databases.
* If a member exists in several databases, only the first database is used.
* IgnorePkg is also handled.
* @param dbs the list of alpm_db_t *
* @param name the name of the group
* @return the list of alpm_pkg_t * (caller is responsible for alpm_list_free)
*/
alpm_list_t SYMEXPORT *alpm_find_group_pkgs(alpm_list_t *dbs,
const char *name)
{
@@ -468,11 +457,10 @@ int _alpm_sync_prepare(alpm_handle_t *handle, alpm_list_t **data)
}
} else {
/* pm_errno was set by resolvedeps, callback may have overwrote it */
handle->pm_errno = ALPM_ERR_UNSATISFIED_DEPS;
alpm_list_free(resolved);
alpm_list_free(unresolvable);
ret = -1;
goto cleanup;
GOTO_ERR(handle, ALPM_ERR_UNSATISFIED_DEPS, cleanup);
}
}
@@ -673,11 +661,6 @@ cleanup:
return ret;
}
/** Returns the size of the files that will be downloaded to install a
* package.
* @param newpkg the new package to upgrade to
* @return the size of the download
*/
off_t SYMEXPORT alpm_pkg_download_size(alpm_pkg_t *newpkg)
{
if(!(newpkg->infolevel & INFRQ_DSIZE)) {
@@ -705,33 +688,26 @@ static int prompt_to_delete(alpm_handle_t *handle, const char *filepath,
};
QUESTION(handle, &question);
if(question.remove) {
char *sig_filepath;
unlink(filepath);
sig_filepath = _alpm_sigpath(handle, filepath);
unlink(sig_filepath);
FREE(sig_filepath);
}
return question.remove;
}
static struct dload_payload *build_payload(alpm_handle_t *handle,
const char *filename, size_t size, alpm_list_t *servers)
static int find_dl_candidates(alpm_handle_t *handle, alpm_list_t **files)
{
struct dload_payload *payload;
CALLOC(payload, 1, sizeof(*payload), RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
STRDUP(payload->remote_name, filename, FREE(payload); RET_ERR(handle, ALPM_ERR_MEMORY, NULL));
payload->max_size = size;
payload->servers = servers;
return payload;
}
static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files)
{
alpm_list_t *i;
alpm_handle_t *handle = repo->handle;
for(i = handle->trans->add; i; i = i->next) {
for(alpm_list_t *i = handle->trans->add; i; i = i->next) {
alpm_pkg_t *spkg = i->data;
if(spkg->origin != ALPM_PKG_FROM_FILE && repo == spkg->origin_data.db) {
char *fpath = NULL;
if(spkg->origin != ALPM_PKG_FROM_FILE) {
alpm_db_t *repo = spkg->origin_data.db;
bool need_download;
int siglevel = alpm_db_get_siglevel(alpm_pkg_get_db(spkg));
if(!repo->servers) {
handle->pm_errno = ALPM_ERR_SERVER_NONE;
@@ -742,66 +718,39 @@ static int find_dl_candidates(alpm_db_t *repo, alpm_list_t **files)
ASSERT(spkg->filename != NULL, RET_ERR(handle, ALPM_ERR_PKG_INVALID_NAME, -1));
if(spkg->download_size == 0) {
/* check for file in cache - allows us to handle complete .part files */
fpath = _alpm_filecache_find(handle, spkg->filename);
need_download = spkg->download_size != 0 || !_alpm_filecache_exists(handle, spkg->filename);
/* even if the package file in the cache we need to check for
* accompanion *.sig file as well.
* If *.sig is not cached then force download the package + its signature file.
*/
if(!need_download && (siglevel & ALPM_SIG_PACKAGE)) {
char *sig_filename = NULL;
int len = strlen(spkg->filename) + 5;
MALLOC(sig_filename, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
snprintf(sig_filename, len, "%s.sig", spkg->filename);
need_download = !_alpm_filecache_exists(handle, sig_filename);
FREE(sig_filename);
}
if(spkg->download_size != 0 || !fpath) {
struct dload_payload *payload;
payload = build_payload(handle, spkg->filename, spkg->size, repo->servers);
ASSERT(payload, return -1);
*files = alpm_list_add(*files, payload);
if(need_download) {
*files = alpm_list_add(*files, spkg);
}
FREE(fpath);
}
}
return 0;
}
static int download_single_file(alpm_handle_t *handle, struct dload_payload *payload,
const char *cachedir)
{
alpm_event_pkgdownload_t event = {
.type = ALPM_EVENT_PKGDOWNLOAD_START,
.file = payload->remote_name
};
const alpm_list_t *server;
payload->handle = handle;
payload->allow_resume = 1;
EVENT(handle, &event);
for(server = payload->servers; server; server = server->next) {
const char *server_url = server->data;
size_t len;
/* print server + filename into a buffer */
len = strlen(server_url) + strlen(payload->remote_name) + 2;
MALLOC(payload->fileurl, len, RET_ERR(handle, ALPM_ERR_MEMORY, -1));
snprintf(payload->fileurl, len, "%s/%s", server_url, payload->remote_name);
if(_alpm_download(payload, cachedir, NULL, NULL) != -1) {
event.type = ALPM_EVENT_PKGDOWNLOAD_DONE;
EVENT(handle, &event);
return 0;
}
_alpm_dload_payload_reset_for_retry(payload);
}
event.type = ALPM_EVENT_PKGDOWNLOAD_FAILED;
EVENT(handle, &event);
return -1;
}
static int download_files(alpm_handle_t *handle)
{
const char *cachedir;
alpm_list_t *i, *files = NULL;
int errors = 0;
int ret = 0;
alpm_event_t event;
alpm_list_t *payloads = NULL;
cachedir = _alpm_filecache_setup(handle);
handle->trans->state = STATE_DOWNLOADING;
@@ -819,8 +768,9 @@ static int download_files(alpm_handle_t *handle)
handle->totaldlcb(total_size);
}
for(i = handle->dbs_sync; i; i = i->next) {
errors += find_dl_candidates(i->data, &files);
ret = find_dl_candidates(handle, &files);
if(ret != 0) {
goto finish;
}
if(files) {
@@ -828,7 +778,6 @@ static int download_files(alpm_handle_t *handle)
if(handle->checkspace) {
off_t *file_sizes;
size_t idx, num_files;
int ret;
_alpm_log(handle, ALPM_LOG_DEBUG, "checking available disk space for download\n");
@@ -836,36 +785,59 @@ static int download_files(alpm_handle_t *handle)
CALLOC(file_sizes, num_files, sizeof(off_t), goto finish);
for(i = files, idx = 0; i; i = i->next, idx++) {
const struct dload_payload *payload = i->data;
file_sizes[idx] = payload->max_size;
const alpm_pkg_t *pkg = i->data;
file_sizes[idx] = pkg->size;
}
ret = _alpm_check_downloadspace(handle, cachedir, num_files, file_sizes);
free(file_sizes);
if(ret != 0) {
errors++;
goto finish;
}
}
event.type = ALPM_EVENT_RETRIEVE_START;
event.type = ALPM_EVENT_PKG_RETRIEVE_START;
EVENT(handle, &event);
event.type = ALPM_EVENT_RETRIEVE_DONE;
for(i = files; i; i = i->next) {
if(download_single_file(handle, i->data, cachedir) == -1) {
errors++;
event.type = ALPM_EVENT_RETRIEVE_FAILED;
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
}
alpm_pkg_t *pkg = i->data;
int siglevel = alpm_db_get_siglevel(alpm_pkg_get_db(pkg));
struct dload_payload *payload = NULL;
CALLOC(payload, 1, sizeof(*payload), GOTO_ERR(handle, ALPM_ERR_MEMORY, finish));
STRDUP(payload->remote_name, pkg->filename, FREE(payload); GOTO_ERR(handle, ALPM_ERR_MEMORY, finish));
STRDUP(payload->filepath, pkg->filename,
FREE(payload->remote_name); FREE(payload);
GOTO_ERR(handle, ALPM_ERR_MEMORY, finish));
payload->max_size = pkg->size;
payload->servers = pkg->origin_data.db->servers;
payload->handle = handle;
payload->allow_resume = 1;
payload->download_signature = (siglevel & ALPM_SIG_PACKAGE);
payload->signature_optional = (siglevel & ALPM_SIG_PACKAGE_OPTIONAL);
payloads = alpm_list_add(payloads, payload);
}
ret = _alpm_download(handle, payloads, cachedir);
if(ret != 0) {
event.type = ALPM_EVENT_PKG_RETRIEVE_FAILED;
EVENT(handle, &event);
_alpm_log(handle, ALPM_LOG_WARNING, _("failed to retrieve some files\n"));
goto finish;
}
event.type = ALPM_EVENT_PKG_RETRIEVE_DONE;
EVENT(handle, &event);
}
finish:
if(payloads) {
alpm_list_free_inner(payloads, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(payloads);
}
if(files) {
alpm_list_free_inner(files, (alpm_list_fn_free)_alpm_dload_payload_reset);
FREELIST(files);
alpm_list_free(files);
}
for(i = handle->trans->add; i; i = i->next) {
@@ -879,7 +851,7 @@ finish:
handle->totaldlcb(0);
}
return errors;
return ret;
}
#ifdef HAVE_LIBGPGME
@@ -916,18 +888,18 @@ static int check_keyring(alpm_handle_t *handle)
}
level = alpm_db_get_siglevel(alpm_pkg_get_db(pkg));
if((level & ALPM_SIG_PACKAGE) && pkg->base64_sig) {
unsigned char *decoded_sigdata = NULL;
size_t data_len;
int decode_ret = alpm_decode_signature(pkg->base64_sig,
&decoded_sigdata, &data_len);
if(decode_ret == 0) {
if((level & ALPM_SIG_PACKAGE)) {
unsigned char *sig = NULL;
size_t sig_len;
int ret = alpm_pkg_get_sig(pkg, &sig, &sig_len);
if(ret == 0) {
alpm_list_t *keys = NULL;
if(alpm_extract_keyid(handle, pkg->name, decoded_sigdata,
data_len, &keys) == 0) {
if(alpm_extract_keyid(handle, pkg->name, sig,
sig_len, &keys) == 0) {
alpm_list_t *k;
for(k = keys; k; k = k->next) {
char *key = k->data;
_alpm_log(handle, ALPM_LOG_DEBUG, "found signature key: %s\n", key);
if(!alpm_list_find(errors, key, key_cmp) &&
_alpm_key_in_keychain(handle, key) == 0) {
keyinfo = malloc(sizeof(struct keyinfo_t));
@@ -941,8 +913,8 @@ static int check_keyring(alpm_handle_t *handle)
}
FREELIST(keys);
}
free(decoded_sigdata);
}
free(sig);
}
}

View File

@@ -42,12 +42,6 @@
#include "deps.h"
#include "hook.h"
/** \addtogroup alpm_trans Transaction Functions
* @brief Functions to manipulate libalpm transactions
* @{
*/
/** Initialize the transaction. */
int SYMEXPORT alpm_trans_init(alpm_handle_t *handle, int flags)
{
alpm_trans_t *trans;
@@ -97,7 +91,6 @@ static alpm_list_t *check_arch(alpm_handle_t *handle, alpm_list_t *pkgs)
return invalid;
}
/** Prepare a transaction. */
int SYMEXPORT alpm_trans_prepare(alpm_handle_t *handle, alpm_list_t **data)
{
alpm_trans_t *trans;
@@ -156,7 +149,6 @@ int SYMEXPORT alpm_trans_prepare(alpm_handle_t *handle, alpm_list_t **data)
return 0;
}
/** Commit a transaction. */
int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
{
alpm_trans_t *trans;
@@ -233,9 +225,6 @@ int SYMEXPORT alpm_trans_commit(alpm_handle_t *handle, alpm_list_t **data)
return 0;
}
/** Interrupt a transaction.
* @note Safe to call from inside signal handlers.
*/
int SYMEXPORT alpm_trans_interrupt(alpm_handle_t *handle)
{
alpm_trans_t *trans;
@@ -253,7 +242,6 @@ int SYMEXPORT alpm_trans_interrupt(alpm_handle_t *handle)
return 0;
}
/** Release a transaction. */
int SYMEXPORT alpm_trans_release(alpm_handle_t *handle)
{
alpm_trans_t *trans;

View File

@@ -1 +0,0 @@
../../src/common/util-common.c

View File

@@ -1 +0,0 @@
../../src/common/util-common.h

View File

@@ -350,7 +350,8 @@ int _alpm_unpack(alpm_handle_t *handle, const char *path, const char *prefix,
/* If specific files were requested, skip entries that don't match. */
if(list) {
char *entry_prefix = strdup(entryname);
char *entry_prefix = NULL;
STRDUP(entry_prefix, entryname, ret = 1; goto cleanup);
char *p = strstr(entry_prefix,"/");
if(p) {
*(p + 1) = '\0';
@@ -833,6 +834,20 @@ char *_alpm_filecache_find(alpm_handle_t *handle, const char *filename)
return NULL;
}
/** Check whether a filename exists in a registered alpm cachedir.
* @param handle the context handle
* @param filename name of file to find
* @return 0 if the filename was not found, 1 otherwise
*/
int _alpm_filecache_exists(alpm_handle_t *handle, const char *filename)
{
int res;
char *fpath = _alpm_filecache_find(handle, filename);
res = (fpath != NULL);
FREE(fpath);
return res;
}
/** Check the alpm cachedirs for existence and find a writable one.
* If no valid cache directory can be found, use /tmp.
* @param handle the context handle
@@ -1005,7 +1020,7 @@ static int sha256_file(const char *path, unsigned char output[32])
* @return a NULL terminated string with the hexadecimal representation of
* bytes or NULL on error. This string must be freed.
*/
static char *hex_representation(unsigned char *bytes, size_t size)
static char *hex_representation(const unsigned char *bytes, size_t size)
{
static const char *hex_digits = "0123456789abcdef";
char *str;
@@ -1023,11 +1038,6 @@ static char *hex_representation(unsigned char *bytes, size_t size)
return str;
}
/** Get the md5 sum of file.
* @param filename name of the file
* @return the checksum on success, NULL on error
* @addtogroup alpm_misc
*/
char SYMEXPORT *alpm_compute_md5sum(const char *filename)
{
unsigned char output[16];
@@ -1041,11 +1051,6 @@ char SYMEXPORT *alpm_compute_md5sum(const char *filename)
return hex_representation(output, 16);
}
/** Get the sha256 sum of file.
* @param filename name of the file
* @return the checksum on success, NULL on error
* @addtogroup alpm_misc
*/
char SYMEXPORT *alpm_compute_sha256sum(const char *filename)
{
unsigned char output[32];
@@ -1191,7 +1196,7 @@ cleanup:
{
int ret = b->ret;
FREE(b->line);
memset(b, 0, sizeof(struct archive_read_buffer));
*b = (struct archive_read_buffer){0};
return ret;
}
}
@@ -1437,22 +1442,15 @@ int _alpm_fnmatch(const void *pattern, const void *string)
*/
void *_alpm_realloc(void **data, size_t *current, const size_t required)
{
char *newdata;
newdata = realloc(*data, required);
if(!newdata) {
_alpm_alloc_fail(required);
return NULL;
}
REALLOC(*data, required, return NULL);
if (*current < required) {
/* ensure all new memory is zeroed out, in both the initial
* allocation and later reallocs */
memset(newdata + *current, 0, required - *current);
memset((char*)*data + *current, 0, required - *current);
}
*current = required;
*data = newdata;
return newdata;
return *data;
}
/** This automatically grows data based on current/required.
@@ -1491,3 +1489,40 @@ void _alpm_alloc_fail(size_t size)
{
fprintf(stderr, "alloc failure: could not allocate %zu bytes\n", size);
}
/** This functions reads file content.
*
* Memory buffer is allocated by the callee function. It is responsibility
* of the caller to free the buffer.
*
* @param filepath filepath to read
* @param data pointer to output buffer
* @param data_len size of the output buffer
* @return error code for the operation
*/
alpm_errno_t _alpm_read_file(const char *filepath, unsigned char **data, size_t *data_len)
{
struct stat st;
FILE *fp;
if((fp = fopen(filepath, "rb")) == NULL) {
return ALPM_ERR_NOT_A_FILE;
}
if(fstat(fileno(fp), &st) != 0) {
fclose(fp);
return ALPM_ERR_NOT_A_FILE;
}
*data_len = st.st_size;
MALLOC(*data, *data_len, fclose(fp); return ALPM_ERR_MEMORY);
if(fread(*data, *data_len, 1, fp) != 1) {
FREE(*data);
fclose(fp);
return ALPM_ERR_SYSTEM;
}
fclose(fp);
return ALPM_ERR_OK;
}

Some files were not shown because too many files have changed in this diff Show More