forked from mirrors/pacman
Compare commits
384 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
afac773d19 | ||
|
|
8263bd0cc2 | ||
|
|
d6f62ba22d | ||
|
|
24d7c6a372 | ||
|
|
ece3d3606a | ||
|
|
81853893a5 | ||
|
|
eeb3c6868c | ||
|
|
cfc52dad98 | ||
|
|
49c58ce9db | ||
|
|
08b0fb856d | ||
|
|
6f38cedd8d | ||
|
|
68e59ecbaf | ||
|
|
91eeee08de | ||
|
|
05d23059fd | ||
|
|
f56d763547 | ||
|
|
8f99f75e6e | ||
|
|
4b4ad18348 | ||
|
|
b0b5dabf1b | ||
|
|
31c7e82a51 | ||
|
|
5b51dbb11e | ||
|
|
e760c4f478 | ||
|
|
081f64aea3 | ||
|
|
0969c2e700 | ||
|
|
56f0cf9d15 | ||
|
|
96e023c7bd | ||
|
|
e27a8c9ae3 | ||
|
|
9451b2e4f2 | ||
|
|
901e4aa5c2 | ||
|
|
282eeadc68 | ||
|
|
9609c0f135 | ||
|
|
6417ac129d | ||
|
|
729651a554 | ||
|
|
232b838a54 | ||
|
|
fb5c5086e1 | ||
|
|
a28b8e187f | ||
|
|
89c2c51964 | ||
|
|
a23fc08758 | ||
|
|
57bd8974c7 | ||
|
|
d8f8a12665 | ||
|
|
57393eb730 | ||
|
|
f201f107db | ||
|
|
72c5a298a3 | ||
|
|
4476598e4e | ||
|
|
9bc799ec7b | ||
|
|
692ea72822 | ||
|
|
fabf7ad6c4 | ||
|
|
8485b7b3a4 | ||
|
|
115dcf0911 | ||
|
|
5949936777 | ||
|
|
a7244e6ab2 | ||
|
|
5d6788b36e | ||
|
|
6ede1a5af0 | ||
|
|
0e0a846135 | ||
|
|
428b2fd8cc | ||
|
|
9a6fd1b021 | ||
|
|
e4b1a97ff2 | ||
|
|
85f5279ec0 | ||
|
|
20a0b8e201 | ||
|
|
3bf9448943 | ||
|
|
cf25884e99 | ||
|
|
9f57921467 | ||
|
|
7bc34ccde3 | ||
|
|
b8e306b73e | ||
|
|
8877c88def | ||
|
|
dfae7bdd52 | ||
|
|
e6fb229534 | ||
|
|
5078ca580e | ||
|
|
310b13a4b7 | ||
|
|
c317222d71 | ||
|
|
67f388c3fc | ||
|
|
5e4882dfe8 | ||
|
|
075b244be2 | ||
|
|
69f00385a9 | ||
|
|
06a4a5bd68 | ||
|
|
22722261cc | ||
|
|
24783e6b6b | ||
|
|
c9550e9655 | ||
|
|
a7ee8f90f9 | ||
|
|
12e804511a | ||
|
|
6d4f235af9 | ||
|
|
441c2dd550 | ||
|
|
27f56304d6 | ||
|
|
501ce943e6 | ||
|
|
b169925c1e | ||
|
|
c1a648137e | ||
|
|
4ebad47ae7 | ||
|
|
ad697d2fd5 | ||
|
|
991dfca90e | ||
|
|
ae9e33ed88 | ||
|
|
b4f2cb53ef | ||
|
|
2b73d45127 | ||
|
|
a8405847e6 | ||
|
|
99be5ab8d1 | ||
|
|
471ed04790 | ||
|
|
5929508198 | ||
|
|
03021713e5 | ||
|
|
ffa3056010 | ||
|
|
37b5972212 | ||
|
|
17e9c9d9ff | ||
|
|
0bf66b097f | ||
|
|
95995ae93f | ||
|
|
8741908276 | ||
|
|
fd8969f678 | ||
|
|
f724fb2702 | ||
|
|
1d9d47d62c | ||
|
|
b196cc43a5 | ||
|
|
d92b0e674d | ||
|
|
30702350fa | ||
|
|
72c0ab5c51 | ||
|
|
8856146d71 | ||
|
|
616b5967b8 | ||
|
|
f7199f36ba | ||
|
|
2122eb1428 | ||
|
|
5f701005ed | ||
|
|
11695bd0d7 | ||
|
|
d534488f2d | ||
|
|
b15fb504a1 | ||
|
|
74eb2f5c61 | ||
|
|
7edb2e5b0d | ||
|
|
d594b6e797 | ||
|
|
5c6809987e | ||
|
|
deec3c8d00 | ||
|
|
d88524ea0e | ||
|
|
29bf6814f7 | ||
|
|
7ff5a917fd | ||
|
|
b9445c12cf | ||
|
|
b8a66d6859 | ||
|
|
2158b8e298 | ||
|
|
fff746052c | ||
|
|
a1dfa8e61f | ||
|
|
89819b3f92 | ||
|
|
c11bdf19b1 | ||
|
|
7313c8546a | ||
|
|
331891ceb1 | ||
|
|
6d737254fc | ||
|
|
0077bfa3a0 | ||
|
|
7fc306cd41 | ||
|
|
1824bc6ee6 | ||
|
|
f827c9572e | ||
|
|
4979157cba | ||
|
|
0fc538fcdb | ||
|
|
512282ca54 | ||
|
|
fcac23763b | ||
|
|
b04d6e751a | ||
|
|
5ae02e6ae7 | ||
|
|
d030d12542 | ||
|
|
0966c33a72 | ||
|
|
fe781e4ce4 | ||
|
|
0669c9bfac | ||
|
|
62b4195c76 | ||
|
|
4a802838cb | ||
|
|
5f0692def8 | ||
|
|
636610432a | ||
|
|
54e1e3e642 | ||
|
|
2cd0a87b3f | ||
|
|
b48f703aa6 | ||
|
|
009f89c4d2 | ||
|
|
b32aa81b5e | ||
|
|
62ee1bfff0 | ||
|
|
1cca4ef764 | ||
|
|
b262ddb2ed | ||
|
|
f30dab4b5a | ||
|
|
c1a5616c26 | ||
|
|
da1c11cc30 | ||
|
|
ad54b28680 | ||
|
|
ae40d1c05b | ||
|
|
9577c07d86 | ||
|
|
c33cabd675 | ||
|
|
20ae871940 | ||
|
|
b9369a747d | ||
|
|
149839c539 | ||
|
|
1d71079c5b | ||
|
|
398d4aff2d | ||
|
|
bf2964dc58 | ||
|
|
fb09d35e6a | ||
|
|
33e3182dbd | ||
|
|
a8ee185413 | ||
|
|
8428367285 | ||
|
|
dd98aa8564 | ||
|
|
a422f6e39c | ||
|
|
f671147282 | ||
|
|
ae5ef3b90f | ||
|
|
584ffa6aef | ||
|
|
d5278ebb3b | ||
|
|
f43805d875 | ||
|
|
8248b4bfb1 | ||
|
|
e80232f24c | ||
|
|
663408532a | ||
|
|
13f24a5bda | ||
|
|
0460038447 | ||
|
|
3c3cb001a4 | ||
|
|
3175faace4 | ||
|
|
e3d35b3274 | ||
|
|
0bfc8adf37 | ||
|
|
1ba0d84da2 | ||
|
|
b49fc504ac | ||
|
|
2edd01a973 | ||
|
|
502645c0e3 | ||
|
|
df5024fd64 | ||
|
|
081ba4816e | ||
|
|
7fccfc7819 | ||
|
|
a13bf74979 | ||
|
|
5389cdf654 | ||
|
|
6b31183576 | ||
|
|
8f902865d9 | ||
|
|
010279e449 | ||
|
|
4e6361642e | ||
|
|
1201c8ce3a | ||
|
|
245efca759 | ||
|
|
27943a04d6 | ||
|
|
6d79ba2db0 | ||
|
|
481c3edc89 | ||
|
|
8fdf08ef78 | ||
|
|
670fadf041 | ||
|
|
701a03dcdb | ||
|
|
30bdf94c2b | ||
|
|
ff9744aa1f | ||
|
|
1b5a851851 | ||
|
|
423820b34c | ||
|
|
7a873a8f12 | ||
|
|
64e1dd64a4 | ||
|
|
c465d9e848 | ||
|
|
5e375aa9d3 | ||
|
|
bf84c23266 | ||
|
|
0d8affeac0 | ||
|
|
c7a81c0b54 | ||
|
|
d685d0220f | ||
|
|
ba70c52945 | ||
|
|
2d991a25ae | ||
|
|
db4258c1fd | ||
|
|
9f56137034 | ||
|
|
ee2bbb39b5 | ||
|
|
4bd0a85095 | ||
|
|
e9a0d35d08 | ||
|
|
4b7f7e2a59 | ||
|
|
57acfced0d | ||
|
|
83c4b2aebb | ||
|
|
bec2ba5b40 | ||
|
|
9441fba124 | ||
|
|
a708c6eadc | ||
|
|
9c7ebe6872 | ||
|
|
4c872594da | ||
|
|
e4a4cf7ce5 | ||
|
|
4004bf9caf | ||
|
|
404e0a0e10 | ||
|
|
b3f4bd9750 | ||
|
|
073bac794d | ||
|
|
0b8abf376f | ||
|
|
ab9187d07d | ||
|
|
0bd6fb3bc2 | ||
|
|
5f17ac8150 | ||
|
|
4b8ada818e | ||
|
|
0d1263af26 | ||
|
|
41c1295559 | ||
|
|
d9b9e60d7d | ||
|
|
3fe43ffa04 | ||
|
|
562442633a | ||
|
|
d140b440a8 | ||
|
|
f8c737d3b6 | ||
|
|
1dfd841e40 | ||
|
|
5f1ccdbc27 | ||
|
|
d1ea16dfd0 | ||
|
|
6104f2e1fb | ||
|
|
1086950c82 | ||
|
|
7995a25d0e | ||
|
|
bf86700369 | ||
|
|
90a48c771d | ||
|
|
f7f43dbb48 | ||
|
|
3d10d460df | ||
|
|
5af076f09f | ||
|
|
2f8fb80ee6 | ||
|
|
7d451b6e6b | ||
|
|
d07001f3ab | ||
|
|
e7a2232934 | ||
|
|
73ab153c44 | ||
|
|
b3e6cf652c | ||
|
|
dae3f9deef | ||
|
|
1f30845e41 | ||
|
|
35135c0a0c | ||
|
|
6e4b020654 | ||
|
|
6820be9ba1 | ||
|
|
804ab37ea6 | ||
|
|
d060e31be3 | ||
|
|
f56f7ff391 | ||
|
|
91b7f288fe | ||
|
|
fc48dc3118 | ||
|
|
51e0303e84 | ||
|
|
2f9f48eddd | ||
|
|
1dfcf1495b | ||
|
|
724ed34ac5 | ||
|
|
74c5bd70cf | ||
|
|
797c190f93 | ||
|
|
3ec45486ff | ||
|
|
266f06866b | ||
|
|
69eb0c8014 | ||
|
|
5a48771126 | ||
|
|
54af52f87d | ||
|
|
7c3f6feb41 | ||
|
|
6ad4ba272d | ||
|
|
4a0498bd29 | ||
|
|
190d17c0e8 | ||
|
|
8725dce294 | ||
|
|
1bbc00cd9d | ||
|
|
8a24ad3754 | ||
|
|
816b080579 | ||
|
|
4c465ef0ad | ||
|
|
49197b7492 | ||
|
|
11bdab171e | ||
|
|
17eca54b32 | ||
|
|
73ac9f7b27 | ||
|
|
aecc2fd190 | ||
|
|
7613f2e21a | ||
|
|
d734ebdde2 | ||
|
|
c2dbbd60bc | ||
|
|
4fe7eb66eb | ||
|
|
79945ef7ff | ||
|
|
d49f42ba75 | ||
|
|
d75f693155 | ||
|
|
8efe0ecb25 | ||
|
|
7a9d444de8 | ||
|
|
66591e8284 | ||
|
|
7eaad2f2a9 | ||
|
|
c23ecc6160 | ||
|
|
f159203f6f | ||
|
|
81a2a06818 | ||
|
|
3e8ae774bd | ||
|
|
143135e666 | ||
|
|
ca1a187131 | ||
|
|
8cfccf68c1 | ||
|
|
d5857ee15b | ||
|
|
271ecb8bfc | ||
|
|
3ad3077d8d | ||
|
|
96f7613d15 | ||
|
|
3a6f62d4c7 | ||
|
|
105e01c8ef | ||
|
|
4c14dcc580 | ||
|
|
a6470956bc | ||
|
|
29f55fb7c9 | ||
|
|
731a774319 | ||
|
|
a3e6a6b822 | ||
|
|
4bd52f3fe4 | ||
|
|
92ab7c33fb | ||
|
|
6b07b5d345 | ||
|
|
a16608c610 | ||
|
|
bfc024eab3 | ||
|
|
77c3cf9790 | ||
|
|
7dc37109b0 | ||
|
|
05d5634958 | ||
|
|
e63366ae5e | ||
|
|
e81dec9b8c | ||
|
|
eca30ed66a | ||
|
|
93a3050ed9 | ||
|
|
5d03a6fd94 | ||
|
|
4fad7855fa | ||
|
|
c492ca840c | ||
|
|
5647f7f512 | ||
|
|
1fc83f4af6 | ||
|
|
9fbb77c91b | ||
|
|
9bfbd73917 | ||
|
|
ea828b5693 | ||
|
|
f432ce41e0 | ||
|
|
88cbee3c24 | ||
|
|
69c6d59bb6 | ||
|
|
8240da6cb3 | ||
|
|
bd43a7f155 | ||
|
|
22c900e7d5 | ||
|
|
6b8f404a33 | ||
|
|
8ca6501ee1 | ||
|
|
9247ddbe8a | ||
|
|
36264a3ab9 | ||
|
|
cbcf542ad2 | ||
|
|
2a7101c049 | ||
|
|
b2914bf0af | ||
|
|
927af790ee | ||
|
|
f6785dcb89 | ||
|
|
38e981fab3 | ||
|
|
521de7ceed | ||
|
|
4f26701793 | ||
|
|
435ec29bc7 | ||
|
|
26f4993e1d | ||
|
|
2630556bde | ||
|
|
112caad838 | ||
|
|
3e133524a5 | ||
|
|
ccc1c73152 |
36
HACKING
36
HACKING
@@ -12,10 +12,10 @@ Coding style
|
||||
1. All code should be indented with tabs. (Ignore the use of only spaces in
|
||||
this file) By default, source files contain the following VIM modeline:
|
||||
+
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
2. When opening new blocks such as 'while', 'if', or 'for', leave the opening
|
||||
brace on the same line as the beginning of the codeblock. The closing brace
|
||||
@@ -24,8 +24,8 @@ code~~~~~~~~~~
|
||||
braces, even if it's just a one-line block. This reduces future error when
|
||||
blocks are expanded beyond one line.
|
||||
+
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
for(lp = list; lp; lp = lp->next) {
|
||||
newlist = _alpm_list_add(newlist, strdup(lp->data));
|
||||
}
|
||||
@@ -40,14 +40,14 @@ while(it) {
|
||||
free(it);
|
||||
it = ptr;
|
||||
}
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
3. When declaring a new function, put the opening and closing braces on their
|
||||
own line. Also, when declaring a pointer, do not put a space between the
|
||||
asterisk and the variable name.
|
||||
+
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
|
||||
{
|
||||
alpm_list_t *ptr, *lp;
|
||||
@@ -58,7 +58,7 @@ alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
|
||||
}
|
||||
...
|
||||
}
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
4. Comments should be ANSI-C89 compliant. That means no `// Comment` style;
|
||||
use only `/* Comment */` style.
|
||||
@@ -101,37 +101,37 @@ Currently our #include usage is in messy shape, but this is no reason to
|
||||
continue down this messy path. When adding an include to a file, follow this
|
||||
general pattern, including blank lines:
|
||||
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#include "config.h"
|
||||
|
||||
#include <standardheader.h>
|
||||
#include <another.h>
|
||||
#include <...>
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Follow this with some more headers, depending on whether the file is in libalpm
|
||||
or pacman proper. For libalpm:
|
||||
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
/* libalpm */
|
||||
#include "yourfile.h"
|
||||
#include "alpm_list.h"
|
||||
#include "anythingelse.h"
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
For pacman:
|
||||
|
||||
[C]
|
||||
code~~~~~~~~~~
|
||||
[code,C]
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#include <alpm.h>
|
||||
#include <alpm_list.h>
|
||||
|
||||
/* pacman */
|
||||
#include "yourfile.h"
|
||||
#include "anythingelse.h"
|
||||
code~~~~~~~~~~
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
/////
|
||||
vim: set ts=2 sw=2 syntax=asciidoc et:
|
||||
|
||||
@@ -11,12 +11,14 @@ EXTRA_DIST = HACKING
|
||||
pkgdatadir = ${datadir}/${PACKAGE}
|
||||
dist_pkgdata_DATA = PKGBUILD.proto proto.install ChangeLog.proto
|
||||
|
||||
# run the pactest test suite
|
||||
check-local: src/pacman
|
||||
# run the pactest test suite and vercmp tests
|
||||
check-local: pactest src/pacman src/util
|
||||
$(PYTHON) $(top_srcdir)/pactest/pactest.py --debug=1 \
|
||||
--test $(top_srcdir)/pactest/tests/*.py \
|
||||
-p $(top_builddir)/src/pacman/pacman
|
||||
rm -rf $(top_builddir)/root
|
||||
$(SH) $(top_srcdir)/pactest/vercmptest.sh \
|
||||
$(top_builddir)/src/util/vercmp
|
||||
|
||||
# create the pacman DB and cache directories upon install
|
||||
install-data-local:
|
||||
|
||||
103
NEWS
103
NEWS
@@ -1,5 +1,104 @@
|
||||
VERSION DESCRIPTION
|
||||
-----------------------------------------------------------------------------
|
||||
3.2.1 - drop special handling of file:// URLs
|
||||
- display optdepends on install and upgrade
|
||||
- fix segfault on x86_64 when using UseSyslog (FS#11096)
|
||||
- fix detection of TotalDownload (FS#11180)
|
||||
- fix "No such file" error during --force installs (FS#11218)
|
||||
- better handling of progressbar when behind a proxy (FS#8725)
|
||||
- repo-add: fix whitespace handling (FS#9171, FS#10630)
|
||||
- repo-add: add optdepends to the sync DB (FS#10630)
|
||||
- makepkg:
|
||||
- allow specifying a download filename (related to FS#11292)
|
||||
- fix download functions with weird URLs (FS#11076)
|
||||
- fix creation of source package with local files (FS#11149)
|
||||
- fix error when sourcing profile scripts (FS#11179)
|
||||
- perform case-insensitive checksum comparison (FS#11283)
|
||||
- documentation and help updates (including fix for FS#11203)
|
||||
- new Ukrainian translation
|
||||
- existing translation updates
|
||||
3.2.0 - removed -A/--add option from pacman frontend
|
||||
- added --asexplicit option
|
||||
- new remove option --unneeded
|
||||
- add -Rss option to remove all dependencies
|
||||
- removed useless -e/--dependsonly option
|
||||
- config options are now case sensitive
|
||||
- added CleanMethod option for variety in cache cleaning
|
||||
- new Turkish translation, all others updated and revised
|
||||
- handle multiple groups in -Ss and -Qs operations
|
||||
- allow -q/--quiet option with -o/--own and -g/--groups options
|
||||
- removed hack for packages with unknown installed size
|
||||
- add SyncFirst option to pacman.conf
|
||||
- support installation of versioned deps : pacman -S "dep>=2.0"
|
||||
- add --enable-git-version configure flag to identify
|
||||
developmental build version
|
||||
- do not duplicate packages in required by list
|
||||
- pacman.static is no longer built
|
||||
- all error messages use pm_fprintf
|
||||
- disable geteuid in cygwin
|
||||
- use off_t type for large file support
|
||||
- add vercmp test script
|
||||
- moved gensync and updatesync to contrib/
|
||||
- rewrote pacsearch script in perl
|
||||
- paclist script to list installed packages from a repo
|
||||
- bacman script to make backup of package from filesystem
|
||||
- combined repo-add and repo-remove into one script
|
||||
- removed --force option from repo-add
|
||||
- add --quiet option to repo-add/repo-remove
|
||||
- update libtool version to 1.5.26
|
||||
- allow disabling of internal download with new configure
|
||||
flag --disable-internal-download
|
||||
- pactest can now check file permissions
|
||||
- add the possibility to mark the pactests known to fail,
|
||||
which allows more informative results of make check
|
||||
- libalpm-specific changes:
|
||||
- use dynamic string allocation in package structure
|
||||
- new functions for manipulating pmdepend_t objects
|
||||
- store replaces and force in local database
|
||||
- moved deptest functionality to backend
|
||||
- add alpm_checkdbconflicts function
|
||||
- fix PM_ERR_CONFLICTING_DEPS handling
|
||||
- cleanup of pmsyncpkg_t
|
||||
- add alpm_sync_newversion function
|
||||
- cleanup of alpm_list code
|
||||
- refactor of download code
|
||||
- download callback API changes
|
||||
- removed test_delta_md5sum and test_pkg_md5sum functions
|
||||
- add _alpm_archive_fgets function to read line-by-line from
|
||||
an archive
|
||||
- read .PKGINFO directly from package file with no temp file
|
||||
- native support for both libdownload and libfetch
|
||||
- rework delta algorithm (we still need script updates)
|
||||
- swap parameters of alpm_pkg_find for consistency with
|
||||
other find functions
|
||||
- swap parameters of PM_TRANS_CONV_INSTALL_IGNOREPKG to make
|
||||
more sense
|
||||
- fix -Rs when removing multiple items in dependency chain
|
||||
- makepkg-specific changes:
|
||||
- support for resuming source downloads
|
||||
- added zipman option
|
||||
- removed -b/--builddeps
|
||||
- various portability fixes for BSD and Mac OS X
|
||||
- check for valid options in PKGBUILD
|
||||
- add --allsource option
|
||||
- remove deprecated --usesudo option
|
||||
- handle spaces in build directory
|
||||
- made keeping docs the default option
|
||||
- use pacman version dep resolving
|
||||
- fix regression in library stripping
|
||||
- make strip paths configurable
|
||||
- MANY other bug fixes and small improvements
|
||||
3.1.4 - various small code cleanups and fixes
|
||||
- small documentation updates
|
||||
- improvements to PKGBUILD.vim
|
||||
- translation updates - ru, zh_CN
|
||||
3.1.3 - major updates to i18n output in frontend (all UTF-8 characters
|
||||
should now work with varying byte and char widths)
|
||||
- new Simplified Chinese translation
|
||||
- updates to testpkg utility
|
||||
- updates to PKGBUILD.vim
|
||||
- internal updates for translations - use c-format on all
|
||||
strings, get rid of needless line numbers
|
||||
3.1.2 - updates to proto.install, add ChangeLog.proto (FS#7231)
|
||||
- add 'force' option to packages, and have repo-add respect it
|
||||
- mark gensync and updatesync as deprecated
|
||||
@@ -468,7 +567,7 @@ VERSION DESCRIPTION
|
||||
2.2 - More bugfixes
|
||||
- Added --downloadonly switch to --sync
|
||||
2.1 - Lots of bugfixes
|
||||
- Added support for multiple respositories
|
||||
- Added support for multiple repositories
|
||||
- Improved the config file layout
|
||||
- Improved dependency resolution and sorting
|
||||
2.0 - Added dependency functionality
|
||||
@@ -496,4 +595,4 @@ VERSION DESCRIPTION
|
||||
- Changed db_find_conflicts() to ignore directories
|
||||
1.0 - Initial Release
|
||||
|
||||
vim: set et:
|
||||
vim: set et spell spelllang=en_us:
|
||||
|
||||
@@ -29,7 +29,7 @@ build() {
|
||||
|
||||
./configure --prefix=/usr
|
||||
make || return 1
|
||||
make DESTDIR="$pkgdir" install
|
||||
make DESTDIR="$pkgdir/" install
|
||||
}
|
||||
|
||||
# vim:set ts=2 sw=2 et:
|
||||
|
||||
165
README
165
README
@@ -2,7 +2,7 @@ ALPM library overview & internals
|
||||
=================================
|
||||
|
||||
Here is a list of the main objects and files from the ALPM (i.e. Arch Linux
|
||||
Package Management) library. This document, whilst not exhaustive, also
|
||||
Package Management) library. This document, while not exhaustive, also
|
||||
indicates some limitations (on purpose, or sometimes due to its poor design) of
|
||||
the library at the present time.
|
||||
|
||||
@@ -13,9 +13,8 @@ the frontend. Lots of structures are of an opaque type and their fields are
|
||||
only accessible in read-only mode, through some clearly defined functions.
|
||||
|
||||
In addition to "alpm.h", the interfaces of "alpm_list.h" have also been made
|
||||
available to the frontend. It is not a requirement for the frontend to use
|
||||
these list functions; however, it prevents frontends from having to reimplement
|
||||
a list data structure.
|
||||
available to the frontend, for allowing it to manipulate the lists returned by
|
||||
the backend.
|
||||
|
||||
Several structures and functions have been renamed compared to pacman 2.9 code.
|
||||
This was done at first for the sake of naming scheme consistency, and then
|
||||
@@ -25,7 +24,7 @@ same name declared in both spaces. To avoid such conflicts, internal function
|
||||
names have been prepended with "_alpm_".
|
||||
|
||||
In a general manner, public library functions are named "alpm_<type>_<action>"
|
||||
(examples: alpm_trans_commit(), alpm_release(), alpm_pkg_getinfo(), ...).
|
||||
(examples: alpm_trans_commit(), alpm_release(), alpm_pkg_get_name(), ...).
|
||||
Internal (and thus private) functions should be named "_alpm_XXX" for instance
|
||||
(examples: _alpm_needbackup(), _alpm_runscriplet(), ...). Functions defined and
|
||||
used inside a single file should be defined as "static".
|
||||
@@ -33,59 +32,63 @@ used inside a single file should be defined as "static".
|
||||
|
||||
[Initialization]
|
||||
|
||||
alpm_init() is used to initialize library internals and to create
|
||||
alpm_initialize() is used to initialize library internals and to create
|
||||
a transparent handle object. Before its call, the library can't be used.
|
||||
|
||||
alpm_lib_release() just does the opposite (memory used by the library, and the
|
||||
handle is freed). After its call, the library is no longer available.
|
||||
alpm_release() just does the opposite (memory used by the library, and the
|
||||
handle is freed). After its call, the library is no longer available.
|
||||
|
||||
|
||||
[Options]
|
||||
|
||||
In the future, the library will not use any configuration file. It will be up
|
||||
to the front end to The handle holds a
|
||||
number of configuration options instead (IGNOREPKG, SYSLOG usage,
|
||||
log file name, registered databases, ...).
|
||||
The library does not use any configuration file. It is up to the front end to
|
||||
configure the library as needed; the handle holds a number of configuration
|
||||
options instead.
|
||||
|
||||
All of the following options have a alpm_option_get_* and alpm_option_set_*
|
||||
function for getting and setting the value. The cannot be set before the
|
||||
function for getting and setting the value. They cannot be set before the
|
||||
library is initialized.
|
||||
|
||||
* logcb: The callback function for "log" operations.
|
||||
* dlcb: The callback function for download progress.
|
||||
* logmask: The logging mask for which level of output is sent to the logcb.
|
||||
* root: The root directory on which pacman operates (Default: /)
|
||||
* dbpath: The base path to pacman's databases (Default: var/lib/pacman)
|
||||
* cachedir: The base path to pacman's download cache (Default: var/cache/pacman)
|
||||
* logfile: The base path to pacman's log file (Default: var/log/pacman.log)
|
||||
* dlcb: The callback function for download progress of each package.
|
||||
* totaldlcb: The callback function for overall download progress.
|
||||
* root: The root directory for pacman to install to (Default: /)
|
||||
* dbpath: The toplevel database directory (Default: /var/lib/pacman)
|
||||
* logfile: The base path to pacman's log file (Default: /var/log/pacman.log)
|
||||
* usesyslog: Log to syslog instead of `logfile` for file-base logging.
|
||||
* xfercommand: The command to use for downloading instead of pacman's internal
|
||||
downloading functionality.
|
||||
downloading functionality.
|
||||
* nopassiveftp: Do not use passive FTP commands for ftp connections.
|
||||
* chomp: No way, easter eggs are secret!
|
||||
* usecolor: Unimplemented, but for the future. You can assume what it means.
|
||||
|
||||
The following options also have a `alpm_option_add_*` function, as the values
|
||||
are list structures (NOTE: The add functions are NOT plural, as they're in
|
||||
english: alpm_option_get_noupgrades -> alpm_option_add_noupgrade).
|
||||
The following options also have `alpm_option_{add,remove}_*` functions, as the
|
||||
values are list structures.
|
||||
NOTE: The add and remove functions are NOT plural, as they are in English:
|
||||
alpm_option_{get,set}_noupgrades -> alpm_option_{add,remove}_noupgrade.
|
||||
|
||||
* cachedirs: Paths to pacman's download caches (Default: /var/cache/pacman/pkg)
|
||||
* noupgrades: Files which will never be touched by pacman (extracted as .pacnew)
|
||||
* noextracts: Files which will never be extracted at all (no .pacnew file)
|
||||
* ignorepkgs: Packages to ignore when upgrading.
|
||||
* holdpkgs: Packages which must be upgraded before continuing.
|
||||
* ignoregrps: Groups to ignore when upgrading.
|
||||
* holdpkgs: Important packages which need a confirmation before being removed.
|
||||
|
||||
The following options are read-only, having ONLY alpm_option_get_* functions:
|
||||
|
||||
* lockfile: The file used for locking the database
|
||||
(Default: <dbpath>/db.lck)
|
||||
* localdb: A pmdb_t structure for the local (installed) database
|
||||
* syncdbs: A list of pmdb_t structures to which pacman can sync from.
|
||||
|
||||
The following options are write-only, having ONLY alpm_option_set_* functions:
|
||||
|
||||
* usedelta: Download delta files instead of complete packages if possible.
|
||||
|
||||
[Transactions]
|
||||
|
||||
The transaction sturcture permits easy manipulations of several packages
|
||||
The transaction structure permits easy manipulations of several packages
|
||||
at a time (i.e. adding, upgrade and removal operations).
|
||||
|
||||
A transaction can be initiated with a type (ADD, UPGRADE or REMOVE),
|
||||
A transaction can be initiated with a type (SYNC, UPGRADE or REMOVE),
|
||||
and some flags (NODEPS, FORCE, CASCADE, ...).
|
||||
|
||||
Note: there can only be one type at a time: a transaction is either
|
||||
@@ -105,7 +108,7 @@ These targets represent the list of packages to be handled.
|
||||
|
||||
Then, a transaction needs to be prepared (alpm_trans_prepare()). It
|
||||
means that the various targets added, will be inspected and challenged
|
||||
against the set of already installed packages (dependency checkings,
|
||||
against the set of already installed packages (dependency checking, etc...)
|
||||
|
||||
Last, a callback is associated with each transaction. During the
|
||||
transaction resolution, each time a new step is started or done (i.e
|
||||
@@ -116,27 +119,27 @@ the resolution. Can be useful to implement a progress bar.
|
||||
|
||||
[Package Cache]
|
||||
|
||||
libalpm maintains two caches for each DB. One is a general package cache, the
|
||||
other is a group cache (for package groups). These caches are loaded on demand,
|
||||
and freed when the libary is.
|
||||
It is important to note tha, as a general rule, package structures should NOT be
|
||||
freed manually, as they SHOULD be part of the cache.
|
||||
The cache of a database is always updated by the library after
|
||||
an operation changing the database content (adding and/or removal of
|
||||
packages). Beware frontends ;)
|
||||
libalpm maintains two caches for each DB. One is a general package cache, the
|
||||
other is a group cache (for package groups). These caches are loaded on demand,
|
||||
and freed when the library is.
|
||||
|
||||
It is important to note that, as a general rule, package structures should NOT
|
||||
be freed manually, as they SHOULD be part of the cache. The cache of a
|
||||
database is always updated by the library after an operation changing the
|
||||
database content (adding and/or removal of packages). Beware frontends ;)
|
||||
|
||||
|
||||
[Package]
|
||||
|
||||
The package structure maintains all information for a package. In general,
|
||||
packages should never be freed from front-ends, as they should always be part of
|
||||
the package cache.
|
||||
The package structure maintains all information for a package. In general,
|
||||
packages should never be freed from front-ends, as they should always be part
|
||||
of the package cache.
|
||||
|
||||
The 'origin' data member indicates whether the package is from a file
|
||||
(i.e. -U operations) or from the package cache. In the case of a file, all data
|
||||
members available are present in the structure. Packages indicated as being
|
||||
from the cache have data members filled on demand. For this reason, the
|
||||
alpm_pkg_get_* functions will load the data from the DB as needed.
|
||||
The 'origin' data member indicates whether the package is from a file (i.e. -U
|
||||
operations) or from the package cache. In the case of a file, all data members
|
||||
available are present in the structure. Packages indicated as being from the
|
||||
cache have data members filled on demand. For this reason, the alpm_pkg_get_*
|
||||
functions will load the data from the DB as needed.
|
||||
|
||||
|
||||
[Errors]
|
||||
@@ -149,13 +152,15 @@ indicating success, -1 indicating a failure.
|
||||
If -1 is returned, the variable pm_errno is set to a meaningful value
|
||||
Wise frontends should always care for these returned values.
|
||||
|
||||
Note: the helper function alpm_strerror() can also be used to translate
|
||||
the error code into a more friendly sentence.
|
||||
Note: the helper function alpm_strerror() can also be used to translate one
|
||||
specified error code into a more friendly sentence, and alpm_strerrorlast()
|
||||
does the same for the last error encountered (represented by pm_errno).
|
||||
|
||||
|
||||
[List - alpm_list_t]
|
||||
|
||||
The alpm_list_t structure is a doubly-linked list for use with the libalpm
|
||||
routines. This type is provided publicly so that frontends are free to use it
|
||||
routines. This type is provided publicly so that frontends are free to use it
|
||||
if they have no native list type (C++, glib, python, etc all have list types).
|
||||
See the proper man pages for alpm_list_t references.
|
||||
|
||||
@@ -179,41 +184,65 @@ perform a special action.
|
||||
|
||||
[MAIN] (see pacman.c)
|
||||
|
||||
Calls for alpm_lib_init(), and alpm_lib_release().
|
||||
Calls for alpm_initialize(), and alpm_release().
|
||||
Read the configuration file, and parse command line arguments.
|
||||
Based on the action requested, it initiates the appropriate transactions
|
||||
(see pacman_add(), pacman_remove(), pacman_sync() in files add.c,
|
||||
(see pacman_upgrade(), pacman_remove(), pacman_sync() in files upgrade.c,
|
||||
remove.c and sync.c).
|
||||
|
||||
|
||||
[CONFIGURATION] (see conf.c)
|
||||
[CONFIGURATION] (see conf.h)
|
||||
|
||||
The frontend is using a configuration file, usually "/etc/pacman.conf".
|
||||
Part of these options are only useful for the frontend only (mainly,
|
||||
the download stuffs, and some options like HOLDPKG).
|
||||
The rest is used to configure the library.
|
||||
The frontend is using a configuration file, usually "/etc/pacman.conf". Some
|
||||
of these options are only useful for the frontend only (mainly the ones used to
|
||||
control the output like showsize or totaldownload, or the behavior with
|
||||
cleanmethod and syncfirst). The rest is used to configure the library.
|
||||
|
||||
|
||||
[ADD/UPGRADE/REMOVE/SYNC]
|
||||
|
||||
Nothing new here, excepted some reorganization.
|
||||
[UPGRADE/REMOVE/SYNC]
|
||||
|
||||
The file pacman.c has been divided into several smaller files, namely
|
||||
add.c, remove.c, sync.c and query.c, to hold the big parts: pacman_add,
|
||||
upgrade.c, remove.c, sync.c and query.c, to hold the big parts: pacman_upgrade,
|
||||
pacman_remove, pacman_sync.
|
||||
|
||||
These 3 functions have been split to ease the code reading.
|
||||
|
||||
|
||||
LIMITATIONS/BEHAVIOR CHANGES COMPARED TO PACMAN 2.9
|
||||
===================================================
|
||||
|
||||
Excepted missing features still needing to be implemented, one can
|
||||
notice the following limitations:
|
||||
API CHANGES BETWEEN 3.1 AND 3.2
|
||||
===============================
|
||||
|
||||
- If pacman is out of date, the frontend displays a warning and recommends
|
||||
to give up the on-going transanction. The frontend does not allow to
|
||||
upgrade pacman itself on-the-fly, and thus it should be restarted with
|
||||
only "pacman" as a target.
|
||||
[REMOVED]
|
||||
- alpm_db_whatprovides()
|
||||
- alpm_splitdep (no longer public)
|
||||
- trans->targets was removed, so alpm_trans_get_targets() as well
|
||||
- error codes:
|
||||
PM_ERR_OPT_*, PM_ERR_PKG_INSTALLED, PM_ERR_DLT_CORRUPTED,
|
||||
PM_ERR_LIBARCHIVE_ERROR
|
||||
- event: PM_TRANS_EVT_EXTRACT_DONE
|
||||
- PM_TRANS_TYPE_ADD pmtranstype_t (add transaction)
|
||||
- PM_TRANS_FLAG_DEPENDSONLY pmtransflag_t
|
||||
|
||||
- ...
|
||||
[CHANGED]
|
||||
- alpm_grp_get_pkgs returns with pmpkg_t list, not package-name list
|
||||
- Swap parameters on PM_TRANS_CONV_INSTALL_IGNOREPKG callback function
|
||||
- download callback API changed: alpm_cb_download, alpm_cb_totaldl split
|
||||
(+ new alpm_option_get_totaldlcb(), alpm_option_set_totaldlcb() functions)
|
||||
- unsigned long->off_t changes where size is used
|
||||
- pmsyncpkg_t struct changes:
|
||||
- pmsynctype_t and alpm_sync_get_type() were removed
|
||||
- alpm_sync_get_data() was removed
|
||||
- alpm_sync_get_removes() was added
|
||||
|
||||
[ADDED]
|
||||
- alpm_delta_get_from_md5sum(), alpm_delta_get_to_md5sum()
|
||||
- alpm_miss_get_causingpkg() (new causingpkg field in pmdepmissing_t)
|
||||
- alpm_checkdbconflicts()
|
||||
- alpm_sync_newversion()
|
||||
- alpm_deptest()
|
||||
- error codes :
|
||||
PM_ERR_DLT_INVALID, PM_ERR_LIBARCHIVE, PM_ERR_LIBDOWNLOAD and
|
||||
PM_ERR_EXTERNAL_DOWNLOAD
|
||||
- flags:
|
||||
PM_TRANS_FLAG_ALLEXPLICIT, PM_TRANS_FLAG_UNNEEDED and
|
||||
PM_TRANS_FLAG_RECURSEALL
|
||||
|
||||
46
TRANSLATORS
46
TRANSLATORS
@@ -10,34 +10,40 @@ If your language is not listed here and you wish it was, let the pacman mailing
|
||||
list know you are interested in making a translation. We will be happy to add
|
||||
your language to the mix.
|
||||
|
||||
* indicates the last active translator.
|
||||
|
||||
Czech (cs):
|
||||
* Vojtěch Gondžala <vogo@seznam.cz>
|
||||
Vojtěch Gondžala <vojtech.gondzala@gmail.com>
|
||||
German (de):
|
||||
* Matthias Gorissen <matthias@archlinux.de>
|
||||
Pierre Schmitz <pierre@archlinux.de>
|
||||
Matthias Gorissen <matthias@archlinux.de>
|
||||
Benjamin Andresen <benny@in-ulm.de>
|
||||
British English (en_GB):
|
||||
* Jeff Bailes <thepizzaking@gmail.com>
|
||||
Jeff Bailes <thepizzaking@gmail.com>
|
||||
Spanish (es):
|
||||
* Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>
|
||||
Juan Pablo González Tognarelli <jotapesan@gmail.com>
|
||||
Fernando Lagos <fernando@zerial.org>
|
||||
French (fr):
|
||||
* Chantry Xavier <shiningxc@gmail.com>
|
||||
solsTiCe d'Hiver <solstice.dhiver@laposte.net>
|
||||
Chantry Xavier <shiningxc@gmail.com>
|
||||
Hungarian (hu):
|
||||
* Nagy Gabor <ngaba@bibl.u-szeged.hu>
|
||||
Nagy Gabor <ngaba@bibl.u-szeged.hu>
|
||||
Italian (it):
|
||||
* Giovanni 'voidnull' Scafora <linuxmania@gmail.com>
|
||||
Alessio 'mOLOk' Bolognino <themolok@gmail.com>
|
||||
Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>
|
||||
Giovanni 'voidnull' Scafora <linuxmania@gmail.com>
|
||||
Polish (pl):
|
||||
* Mateusz Jędrasik <m.jedrasik@gmail.com>
|
||||
Mateusz Herych <heniekk@gmail.com>
|
||||
Jaroslaw Swierczynski <swiergot@gmail.com>
|
||||
Mateusz Jędrasik <m.jedrasik@gmail.com>
|
||||
Brazilian Portuguese (pt_BR):
|
||||
* João Felipe Santos <joao.eel@gmail.com>
|
||||
Douglas Soares de Andrade <douglas@archlinux-br.org>
|
||||
Hugo Doria <hugodoria@archlinux-br.org>
|
||||
Lincoln de Sousa <lincoln@archlinux-br.org>
|
||||
Leandro Inácio <leandro@archlinux-br.org>
|
||||
Hugo Doria <hugo@archlinux.org>
|
||||
Armando M. Baratti <ambaratti@archlinux-br.org>
|
||||
Leandro Inacio <leandro@archlinux-br.org>
|
||||
Russian (ru):
|
||||
Sergey Tereschenko <serg.partizan@gmail.com>
|
||||
Vitaly Dolgov <ferhiord@gmail.com>
|
||||
Oleg Finkelshteyn <olegfink@gmail.com>
|
||||
Vladimir Bayrakovskiy <4rayven@gmail.com>
|
||||
|
||||
Turkish (tr):
|
||||
Samed Beyribey <ras0ir@eventualis.org>
|
||||
Alper KANAT <alperkanat@gmail.com>
|
||||
Ukrainian (uk):
|
||||
Roman Kyrylych (Роман Кирилич) <roman.kyrylych@gmail.com>
|
||||
Ivan Kovnatsky (Іван Ковнацький) <sevenfourk@gmail.com>
|
||||
Simplified Chinese (zh_CN):
|
||||
甘露(Lu.Gan) <rhythm.gan@gmail.com>
|
||||
|
||||
@@ -3770,7 +3770,7 @@ AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
|
||||
#
|
||||
if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
|
||||
AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
|
||||
_LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
|
||||
_LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
|
||||
[$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC])], [],
|
||||
[case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
|
||||
"" | " "*) ;;
|
||||
@@ -3794,7 +3794,7 @@ esac
|
||||
#
|
||||
wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
|
||||
AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
|
||||
_LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
|
||||
_LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
|
||||
$lt_tmp_static_flag,
|
||||
[],
|
||||
[_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
|
||||
|
||||
@@ -23,10 +23,10 @@ rm -rf doc/{Makefile.in,Makefile}
|
||||
rm -rf doc/html/*.html
|
||||
rm -rf doc/man3/*.3
|
||||
|
||||
rm -rf src/pacman/po/{Makefile.in,Makefile}
|
||||
rm -rf src/pacman/po/POTFILES
|
||||
rm -rf src/pacman/po/stamp-po
|
||||
rm -rf src/pacman/po/*.gmo
|
||||
rm -rf po/{Makefile.in,Makefile}
|
||||
rm -rf po/POTFILES
|
||||
rm -rf po/stamp-po
|
||||
rm -rf po/*.gmo
|
||||
|
||||
rm -rf lib/libalpm/po/{Makefile.in,Makefile}
|
||||
rm -rf lib/libalpm/po/POTFILES
|
||||
|
||||
36
config.guess
vendored
36
config.guess
vendored
@@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Attempt to guess a canonical system name.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2007-05-17'
|
||||
timestamp='2008-01-23'
|
||||
|
||||
# This file is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
@@ -56,8 +56,8 @@ version="\
|
||||
GNU config.guess ($timestamp)
|
||||
|
||||
Originally written by Per Bothner.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -330,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
|
||||
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit ;;
|
||||
i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*)
|
||||
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
|
||||
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||
exit ;;
|
||||
sun4*:SunOS:6*:*)
|
||||
@@ -532,7 +532,7 @@ EOF
|
||||
echo rs6000-ibm-aix3.2
|
||||
fi
|
||||
exit ;;
|
||||
*:AIX:*:[45])
|
||||
*:AIX:*:[456])
|
||||
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
|
||||
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
|
||||
IBM_ARCH=rs6000
|
||||
@@ -793,12 +793,15 @@ EOF
|
||||
exit ;;
|
||||
*:Interix*:[3456]*)
|
||||
case ${UNAME_MACHINE} in
|
||||
x86)
|
||||
x86)
|
||||
echo i586-pc-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
EM64T | authenticamd)
|
||||
echo x86_64-unknown-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
IA64)
|
||||
echo ia64-unknown-interix${UNAME_RELEASE}
|
||||
exit ;;
|
||||
esac ;;
|
||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
||||
echo i${UNAME_MACHINE}-pc-mks
|
||||
@@ -833,7 +836,14 @@ EOF
|
||||
echo ${UNAME_MACHINE}-pc-minix
|
||||
exit ;;
|
||||
arm*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
eval $set_cc_for_build
|
||||
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
|
||||
| grep -q __ARM_EABI__
|
||||
then
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
else
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnueabi
|
||||
fi
|
||||
exit ;;
|
||||
avr32*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
@@ -954,8 +964,8 @@ EOF
|
||||
x86_64:Linux:*:*)
|
||||
echo x86_64-unknown-linux-gnu
|
||||
exit ;;
|
||||
xtensa:Linux:*:*)
|
||||
echo xtensa-unknown-linux-gnu
|
||||
xtensa*:Linux:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||
exit ;;
|
||||
i*86:Linux:*:*)
|
||||
# The BFD linker knows what the default object file format is, so
|
||||
@@ -1474,9 +1484,9 @@ This script, last modified $timestamp, has failed to recognize
|
||||
the operating system you are using. It is advised that you
|
||||
download the most up to date version of the config scripts from
|
||||
|
||||
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
|
||||
and
|
||||
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
|
||||
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
|
||||
|
||||
If the version you run ($0) is already up to date, please
|
||||
send the following data and any information you think might be
|
||||
|
||||
48
config.sub
vendored
48
config.sub
vendored
@@ -1,10 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
|
||||
# Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2007-04-29'
|
||||
timestamp='2008-01-16'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -72,8 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -369,10 +369,14 @@ case $basic_machine in
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| xstormy16-* | xtensa-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
| ymp-* \
|
||||
| z8k-*)
|
||||
;;
|
||||
# Recognize the basic CPU types without company name, with glob match.
|
||||
xtensa*)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
386bsd)
|
||||
@@ -443,6 +447,14 @@ case $basic_machine in
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
blackfin)
|
||||
basic_machine=bfin-unknown
|
||||
os=-linux
|
||||
;;
|
||||
blackfin-*)
|
||||
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
@@ -475,8 +487,8 @@ case $basic_machine in
|
||||
basic_machine=craynv-cray
|
||||
os=-unicosmp
|
||||
;;
|
||||
cr16c)
|
||||
basic_machine=cr16c-unknown
|
||||
cr16)
|
||||
basic_machine=cr16-unknown
|
||||
os=-elf
|
||||
;;
|
||||
crds | unos)
|
||||
@@ -668,6 +680,14 @@ case $basic_machine in
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m68knommu)
|
||||
basic_machine=m68k-unknown
|
||||
os=-linux
|
||||
;;
|
||||
m68knommu-*)
|
||||
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
@@ -813,6 +833,14 @@ case $basic_machine in
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
parisc)
|
||||
basic_machine=hppa-unknown
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
@@ -1021,6 +1049,10 @@ case $basic_machine in
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tile*)
|
||||
basic_machine=tile-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
|
||||
129
configure.ac
129
configure.ac
@@ -40,29 +40,19 @@ AC_PREREQ(2.60)
|
||||
#
|
||||
# Bugfix releases:
|
||||
# pacman_version_micro += 1
|
||||
#
|
||||
# pacman_version_suffix should be similar to one of the following:
|
||||
# For beta releases: [beta2]
|
||||
# For code under development: [devel]
|
||||
# For production releases: []
|
||||
|
||||
m4_define([lib_current], [4])
|
||||
m4_define([lib_revision], [0])
|
||||
m4_define([lib_age], [2])
|
||||
m4_define([lib_age], [1])
|
||||
|
||||
m4_define([pacman_version_major], [3])
|
||||
m4_define([pacman_version_minor], [1])
|
||||
m4_define([pacman_version_micro], [2])
|
||||
m4_define([pacman_version_suffix], [])
|
||||
m4_define([pacman_version_minor], [2])
|
||||
m4_define([pacman_version_micro], [1])
|
||||
m4_define([pacman_version],
|
||||
[pacman_version_major.pacman_version_minor.pacman_version_micro])
|
||||
m4_define([pacman_display_version],
|
||||
pacman_version[]m4_ifdef([pacman_version_suffix],[pacman_version_suffix]))
|
||||
|
||||
# Autoconf initialization
|
||||
# AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
|
||||
AC_INIT([Pacman Package Manager], [pacman_display_version],
|
||||
[pacman-dev@archlinux.org], [pacman])
|
||||
AC_INIT([pacman], [pacman_version], [pacman-dev@archlinux.org])
|
||||
AC_CONFIG_SRCDIR([config.h.in])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
@@ -80,48 +70,54 @@ AC_DEFINE_UNQUOTED([LIB_VERSION], ["$LIB_VERSION"], [libalpm version number])
|
||||
|
||||
# Help line for root directory
|
||||
AC_ARG_WITH(root-dir,
|
||||
AC_HELP_STRING([--with-root-dir=path], [set the location of pacman's root operating directory]),
|
||||
AS_HELP_STRING([--with-root-dir=path], [set the location of pacman's root operating directory]),
|
||||
[ROOTDIR=$withval], [ROOTDIR=/])
|
||||
|
||||
# Help line for package extension
|
||||
AC_ARG_WITH(pkg-ext,
|
||||
AC_HELP_STRING([--with-pkg-ext=ext], [set the file extension used by packages]),
|
||||
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,
|
||||
AC_HELP_STRING([--with-src-ext=ext], [set the file extension used by source packages]),
|
||||
AS_HELP_STRING([--with-src-ext=ext], [set the file extension used by source packages]),
|
||||
[SRCEXT=$withval], [SRCEXT=.src.tar.gz])
|
||||
|
||||
# Help line for database extension
|
||||
AC_ARG_WITH(db-ext,
|
||||
AC_HELP_STRING([--with-db-ext=ext], [set the file extension used by the database]),
|
||||
AS_HELP_STRING([--with-db-ext=ext], [set the file extension used by the database]),
|
||||
[DBEXT=$withval], [DBEXT=.db.tar.gz])
|
||||
|
||||
# Help line for libdownload/libfetch
|
||||
AC_ARG_ENABLE(internal-download,
|
||||
AS_HELP_STRING([--disable-internal-download], [do not build with libdownload/libfetch support]),
|
||||
[internaldownload=$enableval], [internaldownload=yes])
|
||||
|
||||
# Help line for documentation
|
||||
AC_ARG_ENABLE(doc,
|
||||
AC_HELP_STRING([--disable-doc], [prevent make from looking at doc/ dir]),
|
||||
AS_HELP_STRING([--disable-doc], [prevent make from looking at doc/ dir]),
|
||||
[wantdoc=$enableval], [wantdoc=yes])
|
||||
|
||||
# Help line for doxygen
|
||||
AC_ARG_ENABLE(doxygen,
|
||||
AC_HELP_STRING([--enable-doxygen], [build your own API docs via Doxygen]),
|
||||
AS_HELP_STRING([--enable-doxygen], [build your own API docs via Doxygen]),
|
||||
[wantdoxygen=$enableval], [wantdoxygen=no])
|
||||
|
||||
# Help line for asciidoc
|
||||
AC_ARG_ENABLE(asciidoc,
|
||||
AC_HELP_STRING([--enable-asciidoc], [build your own manpages with Asciidoc]),
|
||||
AS_HELP_STRING([--enable-asciidoc], [build your own manpages with Asciidoc]),
|
||||
[wantasciidoc=$enableval], [wantasciidoc=no])
|
||||
|
||||
# Help line for debug
|
||||
AC_ARG_ENABLE(debug,
|
||||
AC_HELP_STRING([--enable-debug], [enable debugging support]),
|
||||
AS_HELP_STRING([--enable-debug], [enable debugging support]),
|
||||
[debug=$enableval], [debug=no])
|
||||
|
||||
# Help line for pacman.static
|
||||
AC_ARG_ENABLE(pacman-static,
|
||||
AC_HELP_STRING([--disable-pacman-static], [do not build static version of pacman]),
|
||||
[pacmanstatic=$enableval], [pacmanstatic=yes])
|
||||
# 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])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_AWK
|
||||
@@ -129,7 +125,6 @@ AC_PROG_CC_C99
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_RANLIB
|
||||
AC_PROG_LIBTOOL
|
||||
AC_CHECK_PROGS([PYTHON], [python2.5 python2.4 python], [false])
|
||||
|
||||
@@ -138,13 +133,27 @@ AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION(0.13.1)
|
||||
|
||||
# Check for libarchive
|
||||
AC_CHECK_LIB([archive], [archive_read_data], , AC_MSG_ERROR([libarchive is needed to compile pacman!]))
|
||||
AC_CHECK_LIB([archive], [archive_read_data], ,
|
||||
AC_MSG_ERROR([libarchive is needed to compile pacman!]))
|
||||
|
||||
# Check for libdownload
|
||||
AC_CHECK_LIB([download], [downloadParseURL], , AC_MSG_ERROR([libdownload is needed to compile pacman!]))
|
||||
# Enable or disable usage of libdownload/libfetch
|
||||
# - this is a nested check- first see if we need a library, if we do then
|
||||
# check for libdownload first, then fallback to libfetch, then die
|
||||
AC_MSG_CHECKING(whether to link with download library)
|
||||
if test "x$internaldownload" = "xyes" ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([INTERNAL_DOWNLOAD], , [Use internal download library])
|
||||
# Check for a download library if it was actually requested
|
||||
AC_CHECK_LIB([download], [downloadParseURL], ,
|
||||
AC_CHECK_LIB([fetch], [fetchParseURL], ,
|
||||
AC_MSG_ERROR([libdownload or libfetch are needed to compile with internal download support])) )
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AM_CONDITIONAL(INTERNAL_DOWNLOAD, test "x$internaldownload" = "xyes")
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/statvfs.h sys/time.h syslog.h wchar.h])
|
||||
AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h sys/time.h syslog.h wchar.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_INLINE
|
||||
@@ -156,13 +165,13 @@ AC_STRUCT_TM
|
||||
AC_TYPE_UID_T
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_CLOSEDIR_VOID
|
||||
AC_FUNC_FORK
|
||||
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
AC_FUNC_MKTIME
|
||||
AC_TYPE_SIGNAL
|
||||
AC_CHECK_FUNCS([realpath regcomp strcasecmp strdup strerror strnlen \
|
||||
strndup strrchr strsep strstr strverscmp uname geteuid])
|
||||
AC_CHECK_FUNCS([geteuid realpath regcomp strcasecmp \
|
||||
strndup strrchr strsep swprintf \
|
||||
wcwidth uname])
|
||||
|
||||
# Enable large file support if available
|
||||
AC_SYS_LARGEFILE
|
||||
@@ -172,13 +181,26 @@ GCC_VISIBILITY_CC
|
||||
# Check if we have -fgnu89-inline flag
|
||||
GCC_GNU89_INLINE_CC
|
||||
|
||||
# Host-dependant flags
|
||||
case "${host}" in
|
||||
*-*-cygwin*)
|
||||
# Host-dependant definitions
|
||||
SIZECMD="stat -c %s"
|
||||
case "${host_os}" in
|
||||
*bsd*)
|
||||
SIZECMD="stat -f %z"
|
||||
;;
|
||||
cygwin*)
|
||||
host_os_cygwin=yes
|
||||
CFLAGS="$CFLAGS -DCYGWIN"
|
||||
;;
|
||||
darwin*)
|
||||
host_os_darwin=yes
|
||||
SIZECMD="stat -f %z"
|
||||
;;
|
||||
esac
|
||||
|
||||
AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes")
|
||||
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
|
||||
AC_SUBST(SIZECMD)
|
||||
|
||||
# Check for architecture, used in default makepkg.conf
|
||||
# (Note single space left after CARCHFLAGS)
|
||||
case "${host}" in
|
||||
@@ -235,9 +257,9 @@ 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
|
||||
AC_CHECK_PROGS([DOXYGEN], [doxygen])
|
||||
if test $DOXYGEN ; then
|
||||
AC_MSG_RESULT([yes])
|
||||
usedoxygen=yes
|
||||
@@ -252,9 +274,9 @@ fi
|
||||
AM_CONDITIONAL(USE_DOXYGEN, test "x$usedoxygen" = "xyes")
|
||||
|
||||
# Check for asciidoc support and status
|
||||
AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
|
||||
AC_MSG_CHECKING([for asciidoc])
|
||||
if test "x$wantasciidoc" = "xyes" ; then
|
||||
AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
|
||||
if test $ASCIIDOC ; then
|
||||
AC_MSG_RESULT([yes])
|
||||
useasciidoc=yes
|
||||
@@ -284,15 +306,24 @@ else
|
||||
CFLAGS="$CFLAGS -Wall"
|
||||
fi
|
||||
|
||||
# Enable or disable inclusion of pacman.static
|
||||
AC_MSG_CHECKING(whether to build pacman.static)
|
||||
if test "x$pacmanstatic" = "xyes" ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE([INCLUDE_PACMAN_STATIC], , [Build pacman.static])
|
||||
# Enable or disable use of git version in pacman version string
|
||||
AC_CHECK_PROGS([GIT], [git])
|
||||
AC_CHECK_FILE([.git/], hasgitdir=yes)
|
||||
AC_MSG_CHECKING(whether to use git version if available)
|
||||
if test "x$wantgitver" = "xyes" ; then
|
||||
if test $GIT -a "x$hasgitdir" = "xyes"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
usegitver=yes
|
||||
AC_DEFINE([USE_GIT_VERSION], , [Use GIT version in version string])
|
||||
else
|
||||
AC_MSG_RESULT([no, git or .git dir missing])
|
||||
usegitver=no
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_RESULT([no, disabled by configure])
|
||||
usegitver=no
|
||||
fi
|
||||
AM_CONDITIONAL(INCLUDE_PACMAN_STATIC, test "x$pacmanstatic" = "xyes")
|
||||
AM_CONDITIONAL(USE_GIT_VERSION, test "x$usegitver" = "xyes")
|
||||
|
||||
# Set root directory
|
||||
AC_SUBST(ROOTDIR)
|
||||
@@ -323,7 +354,7 @@ Makefile
|
||||
AC_OUTPUT
|
||||
|
||||
echo "
|
||||
pacman_display_version:
|
||||
${PACKAGE_NAME}:
|
||||
|
||||
Build information:
|
||||
source code location : ${srcdir}
|
||||
@@ -340,10 +371,12 @@ pacman_display_version:
|
||||
Architecture : ${CARCH}
|
||||
Architecture flags : ${CARCHFLAGS}
|
||||
Host Type : ${CHOST}
|
||||
Filesize command : ${SIZECMD}
|
||||
|
||||
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}
|
||||
@@ -353,10 +386,10 @@ pacman_display_version:
|
||||
|
||||
Compilation options:
|
||||
Run make in doc/ dir : ${wantdoc}
|
||||
Use download library : ${internaldownload}
|
||||
Doxygen support : ${usedoxygen}
|
||||
Asciidoc support : ${useasciidoc}
|
||||
debug support : ${debug}
|
||||
build pacman.static : ${pacmanstatic}
|
||||
"
|
||||
|
||||
# vim:set ts=2 sw=2 noet:
|
||||
|
||||
0
contrib/.gitignore
vendored
0
contrib/.gitignore
vendored
@@ -1,10 +1,14 @@
|
||||
EXTRA_DIST = \
|
||||
PKGBUILD.vim \
|
||||
bacman \
|
||||
bash_completion \
|
||||
gensync \
|
||||
pacdiff \
|
||||
paclist \
|
||||
pacsearch \
|
||||
re-pacman \
|
||||
vimproject \
|
||||
pactree \
|
||||
updatesync \
|
||||
vimprojects \
|
||||
wget-xdelta.sh \
|
||||
zsh_completion \
|
||||
README
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
if version < 600
|
||||
syntax clear
|
||||
elseif exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:main_syntax = "sh"
|
||||
@@ -57,32 +57,38 @@ syn keyword pb_k_license license contained
|
||||
syn keyword pbLicense APACHE CDDL EPL FDL GPL LGPL MPL PHP RUBY ZLIB ISC MIT BSD contained
|
||||
syn match pbLicenseCustom /custom\(:[[:alnum:]]*\)*/ contained
|
||||
syn match pbIllegalLicense /[^='"() ]/ contained contains=pbLicenseCustom,pbLicense
|
||||
syn match pbLicenseGroup /^license=.*/ contains=pb_k_license,pbLicenseCustom,pbLicense,pbIllegalLicense,shDoubleQuote,shSingleQuote
|
||||
syn region pbLicenseGroup start=/^license=(/ end=/)/ contains=pb_k_license,pbLicenseCustom,pbLicense,pbIllegalLicense
|
||||
|
||||
" backup
|
||||
syn keyword pb_k_backup backup contained
|
||||
syn match pbValidBackup /\.\?[[:alpha:]]*\/[[:alnum:]\{\}+._$-]*]*/ contained
|
||||
syn match pbBackupGroup /^backup=.*/ contains=pb_k_backup,pbValidBackup,shDoubleQuote,shSingleQuote
|
||||
syn region pbBackupGroup start=/^backup=(/ end=/)/ contains=pb_k_backup,pbValidBackup,shDoubleQuote,shSingleQuote
|
||||
|
||||
" arch
|
||||
syn keyword pb_k_arch arch contained
|
||||
syn keyword pbArch i686 x86_64 ppc contained
|
||||
syn match pbIllegalArch /[^='() ]/ contained contains=pbArch
|
||||
syn match pbArchGroup /^arch=.*/ contains=pb_k_arch,pbArch,pbIllegalArch,shDoubleQuote,shSingleQuote
|
||||
syn match pbIllegalArch /[^='"() ]/ contained contains=pbArch
|
||||
syn region pbArchGroup start=/^arch=(/ end=/)/ contains=pb_k_arch,pbArch,pbIllegalArch
|
||||
|
||||
" makedepends
|
||||
syn keyword pb_k_makedepends makedepends contained
|
||||
syn match pbValidMakedepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbMakedependsGroup start=/^makedepends=(/ end=/)/ contains=pb_k_makedepends,pbValidMakedepends,shDoubleQuote,shSingleQuote
|
||||
" groups
|
||||
syn keyword pb_k_groups groups contained
|
||||
syn match pbValidGroups /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbGroupsGroup start=/^groups=(/ end=/)/ contains=pb_k_groups,pbValidGroups,shDoubleQuote,shSingleQuote
|
||||
|
||||
" depends
|
||||
syn keyword pb_k_depends depends contained
|
||||
syn match pbValidDepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbDependsGroup start=/^depends=(/ end=/)/ contains=pb_k_depends,pbValidDepends,shDoubleQuote,shSingleQuote
|
||||
|
||||
" XXX little hack to color conflicts/provides/replaces keyword even without =()
|
||||
syn match pbkw /^\(conflicts\|provides\|replaces\)/ contains=pb_k_conflicts,pb_k_provides,pb_k_replaces
|
||||
hi def link pbkw keyword
|
||||
" makedepends
|
||||
syn keyword pb_k_makedepends makedepends contained
|
||||
syn match pbValidMakedepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbMakedependsGroup start=/^makedepends=(/ end=/)/ contains=pb_k_makedepends,pbValidMakedepends,shDoubleQuote,shSingleQuote
|
||||
|
||||
" optdepends
|
||||
syn keyword pb_k_optdepends optdepends contained
|
||||
syn match pbValidOptdepends /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbOptdependsGroup start=/^optdepends=(/ end=/)/ contains=pb_k_optdepends,pbValidOptdepends,shDoubleQuote,shSingleQuote
|
||||
|
||||
" conflicts
|
||||
syn keyword pb_k_conflicts conflicts contained
|
||||
@@ -100,7 +106,7 @@ syn match pbValidReplaces /\([[:alnum:]]\|+\|-\|_\)*/ contained
|
||||
syn region pbReplacesGroup start=/^replaces=(/ end=/)/ contains=pb_k_replaces,pbValidReplaces,shDoubleQuote,shSingleQuote
|
||||
|
||||
" install
|
||||
" XXX remove install from bashStatement, fix strage bug
|
||||
" XXX remove install from bashStatement, fix strange bug
|
||||
syn clear bashStatement
|
||||
syn keyword bashStatement chmod clear complete du egrep expr fgrep find gnufind gnugrep grep less ls mkdir mv rm rmdir rpm sed sleep sort strip tail touch
|
||||
|
||||
@@ -110,7 +116,7 @@ syn match pbIllegalInstall /[^=]/ contained contains=pbValidInstall
|
||||
syn match pbInstallGroup /^install=.*/ contains=pb_k_install,pbValidInstall,pbIllegalInstall,shDeref,shDoubleQuote,shSingleQuote
|
||||
|
||||
" source:
|
||||
" XXX remove source from shStatement, fixstrange bug
|
||||
" XXX remove source from shStatement, fix strange bug
|
||||
syn clear shStatement
|
||||
syn keyword shStatement xxx wait getopts return autoload whence printf true popd nohup enable r trap readonly fc fg kill ulimit umask disown stop pushd read history logout times local exit test pwd time eval integer suspend dirs shopt hash false newgrp bg print jobs continue functions exec help cd break unalias chdir type shift builtin let bind
|
||||
|
||||
@@ -125,7 +131,7 @@ hi def link pbDerefEmulation PreProc
|
||||
syn keyword pb_k_md5sums md5sums contained
|
||||
syn match pbIllegalMd5sums /[^='"()\/ ]/ contained contains=pbValidMd5sums
|
||||
syn match pbValidMd5sums /[[:alnum:]]\{32\}/ contained
|
||||
syn region pbMd5sumsGroup start=/^md5sums/ end=/)/ contains=pb_k_md5sums,pbMd5Quotes,pbMd5Hash,pbIllegalMd5sums
|
||||
syn region pbMd5sumsGroup start=/^md5sums/ end=/)/ contains=pb_k_md5sums,pbMd5Quotes,pbMd5Hash,pbIllegalMd5sums keepend
|
||||
syn match pbMd5Quotes /'.*'\|".*"/ contained contains=pbMd5Hash,pbIllegalMd5sums
|
||||
syn match pbMd5Hash /[[:alnum:]]\+/ contained contains=pbValidMd5sums
|
||||
hi def link pbMd5Quotes Keyword
|
||||
@@ -136,7 +142,7 @@ hi def link pbValidMd5sums Number
|
||||
syn keyword pb_k_sha1sums sha1sums contained
|
||||
syn match pbIllegalSha1sums /[^='"()\/ ]/ contained contains=pbValidSha1sums
|
||||
syn match pbValidSha1sums /[[:alnum:]]\{40\}/ contained
|
||||
syn region pbSha1sumsGroup start=/^sha1sums/ end=/)/ contains=pb_k_sha1sums,pbSha1Quotes,pbSha1Hash,pbIllegalSha1sums
|
||||
syn region pbSha1sumsGroup start=/^sha1sums/ end=/)/ contains=pb_k_sha1sums,pbSha1Quotes,pbSha1Hash,pbIllegalSha1sums keepend
|
||||
syn match pbSha1Quotes /'.*'\|".*"/ contained contains=pbSha1Hash,pbIllegalSha1sums
|
||||
syn match pbSha1Hash /[[:alnum:]]\+/ contained contains=pbValidSha1sums
|
||||
hi def link pbSha1Quotes Keyword
|
||||
@@ -145,7 +151,7 @@ hi def link pbValidSha1sums Number
|
||||
|
||||
" options
|
||||
syn keyword pb_k_options options contained
|
||||
syn match pbOptions /\(no\)\?\(strip\|docs\|libtool\|emptydirs\|ccache\|distcc\|makeflags\|force\)/ contained
|
||||
syn match pbOptions /\(no\)\?\(strip\|docs\|libtool\|emptydirs\|zipman\|ccache\|distcc\|makeflags\|force\)/ contained
|
||||
syn match pbOptionsNeg /\!/ contained
|
||||
syn match pbOptionsDeprec /no/ contained
|
||||
syn region pbOptionsGroup start=/^options=(/ end=/)/ contains=pb_k_options,pbOptions,pbOptionsNeg,pbOptionsDeprec,pbIllegalOption,shDoubleQuote,shSingleQuote
|
||||
@@ -195,7 +201,9 @@ hi def link pb_k_backup pbKeywords
|
||||
hi def link pb_k_arch pbKeywords
|
||||
hi def link pbIllegalArch Error
|
||||
|
||||
hi def link pb_k_groups pbKeywords
|
||||
hi def link pb_k_makedepends pbKeywords
|
||||
hi def link pb_k_optdepends pbKeywords
|
||||
hi def link pb_k_depends pbKeywords
|
||||
hi def link pb_k_replaces pbKeywords
|
||||
hi def link pb_k_conflicts pbKeywords
|
||||
|
||||
@@ -12,16 +12,26 @@ zsh_completion - a zsh completion script, install (with a rename) to
|
||||
|
||||
pacdiff - a simple pacnew/pacorig/pacsave updater for /etc/.
|
||||
|
||||
paclist - list all packages installed from a given repository. Useful for
|
||||
seeing which packages you may have installed from the testing repository,
|
||||
for instance.
|
||||
|
||||
pacsearch - a colorized search combining both -Ss and -Qs output. Installed
|
||||
packages are easily identified with a *** and local-only packages are also
|
||||
listed.
|
||||
|
||||
re-pacman - regenerate a pacman package based on installed files and the pacman
|
||||
pactree - generate a dependency tree of an installed package in textual or
|
||||
graphical form (using graphviz).
|
||||
|
||||
bacman - regenerate a pacman package based on installed files and the pacman
|
||||
database entries. Useful for reuse, or possible config file extension.
|
||||
|
||||
vimproject - a project file for the vim project plugin (some files listed
|
||||
may need to be updated).
|
||||
vimprojects - a project file for the vim project plugin.
|
||||
|
||||
wget-xdelta.sh - A download script for pacman which allows binary deltas
|
||||
generated with makepkg to be used instead of downloading full binary packages.
|
||||
This should cut download sizes for some package upgrades significantly.
|
||||
|
||||
gensync, updatesync - The former repository management scripts that have since
|
||||
been superseded by repo-add and repo-remove. They are here for posterity's
|
||||
sake, and to show how repo-add and repo-remove can be wrapped in other scripts.
|
||||
|
||||
284
contrib/bacman
Executable file
284
contrib/bacman
Executable file
@@ -0,0 +1,284 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# bacman: recreate a package from a running system
|
||||
# This script rebuilds an already installed package using metadata
|
||||
# stored into the pacman database and system files
|
||||
#
|
||||
# (c) 2008 - locci <carlocci_at_gmail_dot_com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
readonly progname="bacman"
|
||||
readonly progver="0.2.0"
|
||||
|
||||
#
|
||||
# User Friendliness
|
||||
#
|
||||
function usage(){
|
||||
echo "This program recreates a package using pacman's db and system files"
|
||||
echo "Usage: $progname <installed package name>"
|
||||
echo "Example: $progname kernel26"
|
||||
}
|
||||
|
||||
if [ $# -ne 1 ] ; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" = "--help" -o "$1" = "-h" ] ; then
|
||||
usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "--version" -o "$1" = "-v" ]; then
|
||||
echo "$progname version $progver"
|
||||
echo "Copyright (C) 2008 locci"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#
|
||||
# Fakeroot support
|
||||
#
|
||||
if [ $EUID -gt 0 ]; then
|
||||
if [ -f /usr/bin/fakeroot ]; then
|
||||
echo "Entering fakeroot environment"
|
||||
export INFAKEROOT="1"
|
||||
/usr/bin/fakeroot -u -- $0 $1
|
||||
exit $?
|
||||
else
|
||||
echo "WARNING: installing fakeroot or running ${progname} as root is required to"
|
||||
echo " preserve the ownership permissions of files in some packages"
|
||||
echo ""
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# Setting environmental variables
|
||||
#
|
||||
if [ ! -r /etc/pacman.conf ]; then
|
||||
echo "ERROR: unable to read /etc/pacman.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
eval $(awk '/DBPath/ {print $1$2$3}' /etc/pacman.conf)
|
||||
pac_db="${DBPath:-/var/lib/pacman/}/local"
|
||||
|
||||
if [ ! -r /etc/makepkg.conf ]; then
|
||||
echo "ERROR: unable to read /etc/makepkg.conf"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source "/etc/makepkg.conf"
|
||||
if [ -r ~/.makepkg.conf ]; then
|
||||
source ~/.makepkg.conf
|
||||
fi
|
||||
|
||||
pkg_arch=${CARCH:-'unknown'}
|
||||
pkg_dest="${PKGDEST:-$PWD}"
|
||||
pkg_ext=${PKGEXT:-'.pkg.tar.gz'}
|
||||
pkg_pkger=${PACKAGER:-'Unknown Packager'}
|
||||
|
||||
pkg_name="$1"
|
||||
pkg_dir="$(echo $pac_db/$pkg_name-[0-9]*)"
|
||||
pkg_namver="${pkg_dir##*/}"
|
||||
|
||||
#
|
||||
# Checks everything is in place
|
||||
#
|
||||
if [ ! -d "$pac_db" ] ; then
|
||||
echo "ERROR: pacman database directory ${pac_db} not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$pkg_dir" ] ; then
|
||||
echo "ERROR: package ${pkg_name} not found in pacman database"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Begin
|
||||
#
|
||||
echo Package: ${pkg_namver}
|
||||
work_dir=$(mktemp -d -p /tmp)
|
||||
cd "$work_dir" || exit 1
|
||||
|
||||
#
|
||||
# File copying
|
||||
#
|
||||
echo "Copying package files..."
|
||||
|
||||
cat "$pkg_dir"/files |
|
||||
while read i; do
|
||||
if [ -z "$i" ] ; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "$i" =~ %[A-Z]*% ]] ; then
|
||||
current=$i
|
||||
continue
|
||||
fi
|
||||
|
||||
case $current in
|
||||
%FILES%)
|
||||
ret=0
|
||||
if [ -e "/$i" ]; then
|
||||
bsdtar -cnf - "/$i" 2> /dev/null | bsdtar -xpf -
|
||||
|
||||
# Workaround to bsdtar not reporting a missing file as an error
|
||||
if [ ! -e "$work_dir/$i" ] && [ -L "$work_dir/$i"]; then
|
||||
echo ""
|
||||
echo "ERROR: unable to add /$i to the package"
|
||||
echo " If your user does not have permssion to read this file then"
|
||||
echo " you will need to run $progname as root"
|
||||
rm -rf "$work_dir"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo ""
|
||||
echo "WARNING: package file /$i is missing"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
rm -rf "$work_dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pkg_size=$(du -sk | awk '{print $1 * 1024}')
|
||||
|
||||
if [ -f "$pkg_dir/install" ] ; then
|
||||
cp "$pkg_dir/install" "$work_dir/.INSTALL"
|
||||
fi
|
||||
if [ -f $pkg_dir/changelog ] ; then
|
||||
cp "$pkg_dir/changelog" "$work_dir/.CHANGELOG"
|
||||
fi
|
||||
|
||||
#
|
||||
# .PKGINFO stuff
|
||||
#
|
||||
echo Generating .PKGINFO metadata...
|
||||
echo "# Generated by $progname $progver" > .PKGINFO
|
||||
if [ "$INFAKEROOT" = "1" ]; then
|
||||
echo "# Using $(fakeroot -v)" >> .PKGINFO
|
||||
fi
|
||||
echo "# $(LC_ALL=C date)" >> .PKGINFO
|
||||
echo "#" >> .PKGINFO
|
||||
|
||||
cat "$pkg_dir"/{desc,files,depends} |
|
||||
while read i; do
|
||||
if [[ -z "$i" ]]; then
|
||||
continue;
|
||||
fi
|
||||
|
||||
if [[ "$i" =~ %[A-Z]*% ]] ; then
|
||||
current=$i
|
||||
continue
|
||||
fi
|
||||
|
||||
case "$current" in
|
||||
# desc
|
||||
%NAME%)
|
||||
echo "pkgname = $i" >> .PKGINFO
|
||||
;;
|
||||
%VERSION%)
|
||||
echo "pkgver = $i" >> .PKGINFO
|
||||
;;
|
||||
%DESC%)
|
||||
echo "pkgdesc = $i" >> .PKGINFO
|
||||
;;
|
||||
%URL%)
|
||||
echo "url = $i" >> .PKGINFO
|
||||
;;
|
||||
%LICENSE%)
|
||||
echo "license = $i" >> .PKGINFO
|
||||
;;
|
||||
%ARCH%)
|
||||
echo "arch = $i" >> .PKGINFO
|
||||
;;
|
||||
%BUILDDATE%)
|
||||
echo "builddate = $(date -u "+%s")" >> .PKGINFO
|
||||
;;
|
||||
%PACKAGER%)
|
||||
echo "packager = $pkg_pkger" >> .PKGINFO
|
||||
;;
|
||||
%SIZE%)
|
||||
echo "size = $pkg_size" >> .PKGINFO
|
||||
;;
|
||||
%GROUPS%)
|
||||
echo "group = $i" >> .PKGINFO
|
||||
;;
|
||||
%REPLACES%)
|
||||
echo "replaces = $i" >> .PKGINFO
|
||||
;;
|
||||
%FORCE%)
|
||||
echo "force = true" >> .PKGINFO
|
||||
;;
|
||||
|
||||
# files
|
||||
%BACKUP%)
|
||||
# strip the md5sum after the tab
|
||||
echo "backup = ${i%%$'\t'*}" >> .PKGINFO
|
||||
;;
|
||||
|
||||
# depends
|
||||
%DEPENDS%)
|
||||
echo "depend = $i" >> .PKGINFO
|
||||
;;
|
||||
%OPTDEPENDS%)
|
||||
echo "optdepend = $i" >> .PKGINFO
|
||||
;;
|
||||
%CONFLICTS%)
|
||||
echo "conflict = $i" >> .PKGINFO
|
||||
;;
|
||||
%PROVIDES%)
|
||||
echo "provides = $i" >> .PKGINFO
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Fixes owner:group and permissions for .PKGINFO, .CHANGELOG, .INSTALL
|
||||
#
|
||||
chown root:root "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null
|
||||
chmod 644 "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null
|
||||
|
||||
#
|
||||
# Generate the package
|
||||
#
|
||||
echo "Generating the package..."
|
||||
|
||||
ret=0
|
||||
bsdtar -czf "$pkg_dest/$pkg_namver-$pkg_arch$pkg_ext" $(ls -A) || ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "ERROR: unable to write package to $pkg_dest"
|
||||
echo " Maybe the disk is full or you do not have write access"
|
||||
rm -rf "$work_dir"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf "$work_dir"
|
||||
|
||||
echo Done
|
||||
|
||||
exit 0
|
||||
|
||||
# vim: set ts=2 sw=2 noet:
|
||||
|
||||
@@ -146,14 +146,13 @@ _pacman ()
|
||||
toparse="${a:2}"
|
||||
|
||||
case "${arg}" in
|
||||
-@(A|U|R|S|Q|h|V))
|
||||
-@(U|R|S|Q|h|V))
|
||||
op="${arg/-}"
|
||||
mod="${mod}${a:2}"
|
||||
;;
|
||||
--)
|
||||
arg="${a:2}"
|
||||
case "${arg}" in
|
||||
add) op="A" ;;
|
||||
remove) op="R" ;;
|
||||
upgrade) op="U" ;;
|
||||
query) op="Q" ;;
|
||||
@@ -187,6 +186,7 @@ _pacman ()
|
||||
dbonly) mod="${mod}k" ;;
|
||||
nosave) mod="${mod}n" ;;
|
||||
recursive) mod="${mod}s" ;;
|
||||
unneeded) mod="${mod}u" ;;
|
||||
esac ;;
|
||||
*) toparse="${a}" ;;
|
||||
esac
|
||||
@@ -202,7 +202,6 @@ _pacman ()
|
||||
|
||||
if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then
|
||||
COMPREPLY=( $( compgen -W '\
|
||||
-A --add \
|
||||
-h --help \
|
||||
-Q --query \
|
||||
-R --remove \
|
||||
@@ -216,9 +215,10 @@ _pacman ()
|
||||
|
||||
if [[ "$cur" == -* ]]; then
|
||||
case "${op}" in
|
||||
A|U)
|
||||
U)
|
||||
COMPREPLY=( $( compgen -W '\
|
||||
--asdeps \
|
||||
--asexplicit \
|
||||
-d --nodeps \
|
||||
-f --force \
|
||||
-h --help \
|
||||
@@ -242,6 +242,7 @@ _pacman ()
|
||||
-k --dbonly \
|
||||
-n --nosave \
|
||||
-s --recursive \
|
||||
-u --unneeded \
|
||||
--config \
|
||||
--logfile \
|
||||
--noconfirm \
|
||||
@@ -257,9 +258,9 @@ _pacman ()
|
||||
S)
|
||||
COMPREPLY=( $( compgen -W '\
|
||||
--asdeps \
|
||||
--asexplicit \
|
||||
-c --clean \
|
||||
-d --nodeps \
|
||||
-e --dependsonly \
|
||||
-f --force \
|
||||
-g --groups \
|
||||
-h --help \
|
||||
@@ -316,7 +317,7 @@ _pacman ()
|
||||
rem_selected
|
||||
else
|
||||
case "${op}" in
|
||||
A|U)
|
||||
U)
|
||||
COMPREPLY=( $( compgen -d -- "$cur" ) \
|
||||
$( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) )
|
||||
return 0
|
||||
|
||||
77
scripts/gensync.sh.in → contrib/gensync
Normal file → Executable file
77
scripts/gensync.sh.in → contrib/gensync
Normal file → Executable file
@@ -1,7 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# gensync
|
||||
# @configure_input@
|
||||
#
|
||||
# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
#
|
||||
@@ -19,42 +18,35 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# gettext initialization
|
||||
export TEXTDOMAIN='pacman'
|
||||
export TEXTDOMAINDIR='@localedir@'
|
||||
|
||||
myver='@PACKAGE_VERSION@'
|
||||
myver='3.1.1'
|
||||
|
||||
# functions
|
||||
|
||||
usage() {
|
||||
printf "gensync (pacman) %s\n\n" "$myver"
|
||||
printf "$(gettext "Usage: %s <root> <destfile> [package_directory]")\n\n" "$0"
|
||||
printf "$(gettext "\
|
||||
NOTE: this script is DEPRECATED. It will be removed in the next major\n\
|
||||
release of pacman, so please use repo-add and repo-remove instead.\n\n")"
|
||||
printf "$(gettext "\
|
||||
printf "Usage: %s <root> <destfile> [package_directory]\n\n" "$0"
|
||||
printf "\
|
||||
gensync will generate a sync database by reading all PKGBUILD files\n\
|
||||
from <root>. gensync builds the database in a temporary directory\n\
|
||||
and then compresses it to <destfile>.\n\n")"
|
||||
printf "$(gettext "\
|
||||
and then compresses it to <destfile>.\n\n"
|
||||
printf "\
|
||||
gensync will calculate md5sums of packages in the same directory as\n\
|
||||
<destfile>, unless an alternate [package_directory] is specified.\n\n")"
|
||||
printf "$(gettext "\
|
||||
<destfile>, unless an alternate [package_directory] is specified.\n\n"
|
||||
printf "\
|
||||
note: The <destfile> name is important. It must be of the form\n\
|
||||
{treename}.db.tar.gz where {treename} is the name of the custom\n\
|
||||
package repository you configured in /etc/pacman.conf. The\n\
|
||||
generated database must reside in the same directory as your\n\
|
||||
custom packages (also configured in /etc/pacman.conf)\n\n")"
|
||||
echo "$(gettext "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz")"
|
||||
custom packages (also configured in /etc/pacman.conf)\n\n"
|
||||
echo "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
|
||||
}
|
||||
|
||||
version() {
|
||||
printf "gensync (pacman) %s\n" "$myver"
|
||||
printf "$(gettext "\
|
||||
printf "\
|
||||
Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
|
||||
This is free software; see the source for copying conditions.\n\
|
||||
There is NO WARRANTY, to the extent permitted by law.\n")"
|
||||
There is NO WARRANTY, to the extent permitted by law.\n"
|
||||
}
|
||||
|
||||
error () {
|
||||
@@ -67,26 +59,8 @@ die () {
|
||||
exit 1
|
||||
}
|
||||
|
||||
check_force () {
|
||||
local i
|
||||
for i in ${options[@]}; do
|
||||
local lc=$(echo $i | tr [:upper:] [:lower:])
|
||||
if [ "$lc" = "force" ]; then
|
||||
true
|
||||
fi
|
||||
done
|
||||
false
|
||||
}
|
||||
|
||||
# PROGRAM START
|
||||
|
||||
# determine whether we have gettext; make it a no-op if we do not
|
||||
if [ ! $(type -t gettext) ]; then
|
||||
gettext() {
|
||||
echo "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
if [ "$1" = "-h" -o "$1" = "--help" ]; then
|
||||
usage
|
||||
exit 0
|
||||
@@ -103,10 +77,10 @@ if [ $# -lt 2 ]; then
|
||||
fi
|
||||
|
||||
# source system and user makepkg.conf
|
||||
if [ -r @sysconfdir@/makepkg.conf ]; then
|
||||
source @sysconfdir@/makepkg.conf
|
||||
if [ -r /etc/makepkg.conf ]; then
|
||||
source /etc/makepkg.conf
|
||||
else
|
||||
die "$(gettext "%s not found. Can not continue.")" "@sysconfdir@/makepkg.conf"
|
||||
die "/etc/makepkg.conf not found. Cannot continue."
|
||||
fi
|
||||
|
||||
if [ -r ~/.makepkg.conf ]; then
|
||||
@@ -124,22 +98,17 @@ if [ "$3" != "" ]; then
|
||||
pkgdir="$3"
|
||||
fi
|
||||
|
||||
[ ! -d "$rootdir" ] && die "$(gettext "invalid root dir: %s")" $rootdir
|
||||
[ ! -d "$rootdir" ] && die "invalid root dir: $rootdir"
|
||||
|
||||
printf "$(gettext "\
|
||||
NOTE: this script is DEPRECATED. It will be removed in the next major\n\
|
||||
release of pacman, so please use repo-add and repo-remove instead.\n\n")"
|
||||
|
||||
echo "$(gettext "gensync: building database entries, generating md5sums...")" >&2
|
||||
echo "gensync: building database entries, generating md5sums..." >&2
|
||||
cd "$destdir"
|
||||
|
||||
pkgs=""
|
||||
forcepkgs=""
|
||||
|
||||
for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
|
||||
unset pkgname pkgver pkgrel options
|
||||
|
||||
source $file || die "$(gettext "failed to parse %s")" $file
|
||||
source $file || die "failed to parse $file"
|
||||
if [ "$arch" = 'any' ]; then
|
||||
CARCH='any'
|
||||
fi
|
||||
@@ -150,20 +119,16 @@ for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
|
||||
fi
|
||||
|
||||
if [ ! -f "$pkgfile" ]; then
|
||||
error "$(gettext "could not find %s-%s-%s-%s%s - skipping")" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
|
||||
error "could not find %s-%s-%s-%s%s - skipping" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
|
||||
else
|
||||
if check_force; then
|
||||
forcepkgs="$forcepkgs $pkgfile"
|
||||
else
|
||||
pkgs="$pkgs $pkgfile"
|
||||
fi
|
||||
pkgs="$pkgs $pkgfile"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "$(gettext "creating repo DB...")"
|
||||
echo "creating repo DB..."
|
||||
|
||||
# we'll trim the output just a tad, as gensync may be used on large repos
|
||||
repo-add $destfile $pkgs --force $force_pkgs \
|
||||
repo-add $destfile $pkgs \
|
||||
| grep -e "package" -e "database"
|
||||
|
||||
# vim: set ts=2 sw=2 noet:
|
||||
@@ -20,7 +20,7 @@
|
||||
# Original http://phraktured.net/config/bin/pacdiff
|
||||
|
||||
diffprog=${DIFFPROG:-vimdiff}
|
||||
for x in $(find /etc/ -name *.pacnew -o -name *.pacorig -o -name *.pacsave)
|
||||
for x in $(find /etc/ -name "*.pacnew" -o -name "*.pacorig" -o -name "*.pacsave")
|
||||
do
|
||||
echo "File: ${x%.pac*}"
|
||||
chk="$(cmp $x ${x%.pac*})"
|
||||
|
||||
88
contrib/paclist
Executable file
88
contrib/paclist
Executable file
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/perl
|
||||
# paclist - List all packages installed from a given repo
|
||||
#
|
||||
# Copyright (C) 2008 Dan McGee <dpmcgee@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my $progname = "paclist";
|
||||
my $version = "1.0";
|
||||
|
||||
if ($#ARGV != 0 || $ARGV[0] eq "--help" || $ARGV[0] eq "-h") {
|
||||
print "$progname - List all packages installed from a given repo\n";
|
||||
print "Usage: $progname <repo>\n";
|
||||
print "Example: $progname testing\n";
|
||||
if ($#ARGV != 0) {
|
||||
exit 1;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if ( $ARGV[0] eq "--version" || $ARGV[0] eq "-v") {
|
||||
print "$progname version $version\n";
|
||||
print "Copyright (C) 2008 Dan McGee\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# This hash table will be used to store pairs of ('name version', count) from
|
||||
# the return of both pacman -Sl <repo> and pacman -Q output. We then check to
|
||||
# see if a value was added twice (count = 2)- if so, we will print that package
|
||||
# as it is both in the repo we queried and installed on our local system.
|
||||
my %packages = ();
|
||||
my $output;
|
||||
|
||||
$output = `pacman -Sl $ARGV[0]`;
|
||||
if ($? != 0) {
|
||||
exit 1;
|
||||
}
|
||||
my @sync = split(/\n/, $output);
|
||||
# sample output from pacman -Sl:
|
||||
# testing foobar 1.0-1
|
||||
foreach $_ (@sync) {
|
||||
my @info = split(/ /);
|
||||
# we only want to store 'foobar 1.0-1' in our hash table
|
||||
my $pkg = $info[1] . " " . $info[2];
|
||||
$packages{$pkg}++;
|
||||
}
|
||||
|
||||
$output = `pacman -Q`;
|
||||
if ($? != 0) {
|
||||
exit 1;
|
||||
}
|
||||
# sample output from pacman -Q:
|
||||
# foobar 1.0-1
|
||||
my @local = split(/\n/, $output);
|
||||
foreach $_ (@local) {
|
||||
# store 'foobar 1.0-1' in our hash table
|
||||
$packages{$_}++;
|
||||
}
|
||||
|
||||
# run comparison check- if value was added twice, it was in the intersection
|
||||
my @intersection;
|
||||
foreach $_ (keys %packages) {
|
||||
if ($packages{$_} == 2) {
|
||||
push @{ \@intersection }, $_;
|
||||
}
|
||||
}
|
||||
|
||||
# print our intersection, and bask in the glory and speed of perl
|
||||
@intersection = sort @intersection;
|
||||
foreach $_ (@intersection) {
|
||||
print $_ . "\n";
|
||||
}
|
||||
|
||||
#vim: set noet:
|
||||
@@ -1,6 +1,9 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/perl
|
||||
# pacsearch - Adds color and install information to a 'pacman -Ss' search
|
||||
#
|
||||
# Copyright (C) 2008 Dan McGee <dpmcgee@gmail.com>
|
||||
#
|
||||
# Based off original shell script version:
|
||||
# Copyright (C) 2006-2007 Dan McGee <dpmcgee@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
@@ -18,72 +21,112 @@
|
||||
|
||||
#TODO: colors flag on commandline
|
||||
|
||||
readonly progname="pacsearch"
|
||||
readonly version="1.0"
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
readonly CLR1='\\\e[0;34m'
|
||||
readonly CLR2='\\\e[0;32m'
|
||||
readonly CLR3='\\\e[0;35m'
|
||||
readonly CLR4='\\\e[0;36m'
|
||||
readonly CLR5='\\\e[0;31m'
|
||||
readonly CLR6='\\\e[0;33m'
|
||||
readonly CLR7='\\\e[1;36m'
|
||||
readonly INST='\\\e[1;31m'
|
||||
readonly BASE='\\\e[0m'
|
||||
my $progname = "pacsearch";
|
||||
my $version = "2.0";
|
||||
|
||||
if [ "$1" = "--help" -o "$1" = "-h" ]; then
|
||||
echo "Usage: $progname <pattern>"
|
||||
echo "Ex: $progname ^gnome"
|
||||
exit 0
|
||||
fi
|
||||
if ($#ARGV lt 0 || $ARGV[0] eq "--help" || $ARGV[0] eq "-h") {
|
||||
print "$progname - Add color and install information to a pacman -Ss search\n";
|
||||
print "Usage: $progname <pattern>\n";
|
||||
print "Example: $progname ^gnome\n";
|
||||
if ($#ARGV lt 0) {
|
||||
exit 1;
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if [ "$1" = "--version" -o "$1" = "-v" ]; then
|
||||
echo "$progname version $version"
|
||||
echo "Copyright (C) 2006-2007 Dan McGee"
|
||||
exit 0
|
||||
fi
|
||||
if ($ARGV[0] eq "--version" || $ARGV[0] eq "-v") {
|
||||
print "$progname version $version\n";
|
||||
print "Copyright (C) 2006-2008 Dan McGee\n";
|
||||
exit 0;
|
||||
}
|
||||
|
||||
if [ -z "$1" -o "${1:0:1}" = "-" ]; then
|
||||
echo "Usage: $progname <pattern>"
|
||||
echo "Ex: $progname ^gnome"
|
||||
exit 1
|
||||
fi
|
||||
# define our colors to use when printing
|
||||
my $CLR1 = "\e[0;34m";
|
||||
my $CLR2 = "\e[0;32m";
|
||||
my $CLR3 = "\e[0;35m";
|
||||
my $CLR4 = "\e[0;36m";
|
||||
my $CLR5 = "\e[0;31m";
|
||||
my $CLR6 = "\e[0;33m";
|
||||
my $CLR7 = "\e[1;36m";
|
||||
my $INST = "\e[1;31m";
|
||||
my $BASE = "\e[0m";
|
||||
my $INSTMARK = $INST."***";
|
||||
|
||||
# Make two temp files and send output of commands to these files
|
||||
querydump=$(mktemp)
|
||||
pacman -Qs $1 > $querydump
|
||||
syncdump=$(mktemp)
|
||||
pacman -Ss $1 > $syncdump
|
||||
# color a "repo/pkgname pkgver" line based on the respository name
|
||||
sub to_color {
|
||||
my $line = shift;
|
||||
$line =~ s/(^core\/.*)/$CLR1$1$BASE/;
|
||||
$line =~ s/(^extra\/.*)/$CLR2$1$BASE/;
|
||||
$line =~ s/(^community\/.*)/$CLR3$1$BASE/;
|
||||
$line =~ s/(^testing\/.*)/$CLR4$1$BASE/;
|
||||
$line =~ s/(^unstable\/.*)/$CLR5$1$BASE/;
|
||||
$line =~ s/(^custom\/.*)/$CLR6$1$BASE/;
|
||||
$line =~ s/(^local\/.*)/$CLR7$1$BASE/;
|
||||
# any other unknown repository
|
||||
$line =~ s/(^[\w-]*\/.*)/$CLR6$1$BASE/;
|
||||
return $line;
|
||||
}
|
||||
|
||||
# Strip descriptions and 'local/' from -Qs query
|
||||
instpkg=$(mktemp)
|
||||
egrep '^[^ ]' $querydump | sed -e 's@^local/@@' > $instpkg
|
||||
my %allpkgs = ();
|
||||
|
||||
# Add pkgs not in sync db, mark pkgs that are installed
|
||||
cat $instpkg | while read -r pkg; do
|
||||
if [ -z "$(grep "$pkg" $syncdump)" ]; then
|
||||
# grep package name; pipe to another grep that prints at most one
|
||||
# line starting with 'local/', allows for comments >1 line
|
||||
grep -A10 "$pkg" $querydump | grep -A10 -m1 "local/" >> $syncdump
|
||||
fi
|
||||
sed -i "s@^\(.\+/$pkg\)@\***\1@" $syncdump
|
||||
done
|
||||
my $syncout = `pacman -Ss '@ARGV'`;
|
||||
# split each sync search entry into its own array entry
|
||||
my @syncpkgs = split(/\n^(?=\w)/m, $syncout);
|
||||
# remove the extra \n from the last desc entry
|
||||
if ($#syncpkgs >= 0) {
|
||||
chomp($syncpkgs[$#syncpkgs]);
|
||||
}
|
||||
|
||||
# Print colorized package list and descriptions to screen
|
||||
echo -e "$(sed -r \
|
||||
-e "s@core/.*@$CLR1&$BASE@" \
|
||||
-e "s@extra/.*@$CLR2&$BASE@" \
|
||||
-e "s@community/.*@$CLR3&$BASE@" \
|
||||
-e "s@testing/.*@$CLR4&$BASE@" \
|
||||
-e "s@unstable/.*@$CLR5&$BASE@" \
|
||||
-e "s@custom/.*@$CLR6&$BASE@" \
|
||||
-e "s@local/.*@$CLR7&$BASE@" \
|
||||
-e "s@(^|\*\*\*)([[:alnum:]]*/.* .*)@\1$CLR6\2$BASE@" \
|
||||
-e "s@\*\*\*@$INST&@" \
|
||||
< $syncdump )"
|
||||
echo -en "\e[0m"
|
||||
# counter var for packages, used here and in the query loop too
|
||||
my $cnt = 0;
|
||||
foreach $_ (@syncpkgs) {
|
||||
# we grab 3 fields here: repo, name/ver, and desc
|
||||
my @pkgfields = /^(.*?)\/(.*?)\n(.*)$/s;
|
||||
# add a fourth field that will indicate install status
|
||||
push (@pkgfields, "");
|
||||
# add a fifth field that indicates original order
|
||||
push (@pkgfields, $cnt++);
|
||||
# add each sync pkg by name/ver to a hash table for quick lookup
|
||||
$allpkgs{$pkgfields[1]} = [ @pkgfields ];
|
||||
}
|
||||
|
||||
rm $querydump
|
||||
rm $syncdump
|
||||
rm $instpkg
|
||||
my $queryout = `pacman -Qs '@ARGV'`;
|
||||
# split each querysearch entry into its own array entry
|
||||
my @querypkgs = split(/\n^(?=\w)/m, $queryout);
|
||||
# remove the extra \n from the last desc entry
|
||||
if ($#querypkgs >= 0) {
|
||||
chomp ($querypkgs[$#querypkgs]);
|
||||
}
|
||||
|
||||
foreach $_ (@querypkgs) {
|
||||
# we grab 3 fields here: repo, name/ver, and desc
|
||||
my @pkgfields = /^(.*?)\/(.*?)\n(.*)$/s;
|
||||
# check if the package was listed in the sync out
|
||||
# if it is we want to mark it with a *** marker
|
||||
if (exists $allpkgs{$pkgfields[1]}) {
|
||||
# mark it in our fourth field as installed
|
||||
@{ $allpkgs{$pkgfields[1]} }[3] = $INSTMARK;
|
||||
} else {
|
||||
# add a fourth field that will indicate install status
|
||||
push (@pkgfields, $INSTMARK);
|
||||
# add a fifth field that indicates original order (after sync)
|
||||
push (@pkgfields, $cnt++);
|
||||
# add our local-only package to the hash
|
||||
$allpkgs{$pkgfields[1]} = [ @pkgfields ];
|
||||
}
|
||||
}
|
||||
|
||||
# sort by original order (the fifth field) and print
|
||||
foreach $_ ( sort{ @{$allpkgs{$a}}[4] <=> @{$allpkgs{$b}}[4] } keys %allpkgs) {
|
||||
my @v = @{$allpkgs{$_}};
|
||||
my $line = "$v[0]/$v[1]";
|
||||
$line = to_color($line);
|
||||
# print install marker + colorized "repo/pkgname pkgver" string
|
||||
print "$v[3]$line\n";
|
||||
print "$v[2]\n";
|
||||
}
|
||||
|
||||
#vim: set noet:
|
||||
|
||||
301
contrib/pactree
Executable file
301
contrib/pactree
Executable file
@@ -0,0 +1,301 @@
|
||||
#!/bin/bash
|
||||
# pactree : a simple dependency tree viewer
|
||||
#
|
||||
# Copyright (C) 2008 Carlo "carlocci" Bersani <carlocci@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Original http://carlocci.ngi.it/arch/pactree
|
||||
# Credit to scj for the graphviz idea
|
||||
|
||||
# set the colors
|
||||
branch1_color="\033[0;33m" #Brown
|
||||
branch2_color="\033[0;37m" #Gray
|
||||
leaf_color="\033[1;32m" #Light green
|
||||
leaf2_color="\033[0;32m" #Green
|
||||
|
||||
# set the separators
|
||||
separator=" "
|
||||
branch_tip1="|--"
|
||||
branch_tip2="+--"
|
||||
provides="provides "
|
||||
|
||||
# set the graphviz options
|
||||
# http://www.graphviz.org/doc/info/output.html for available output formats
|
||||
# http://www.graphviz.org/doc/info/colors.html for available colors
|
||||
gformat="png" #output format
|
||||
start_color="red" #START color
|
||||
nodes_color="green" #color of the nodes
|
||||
arrow1_color="chocolate4" #color of the normal arrow
|
||||
arrow2_color="grey" #color of the "provided by" headless arrow
|
||||
|
||||
readonly prog_name="pactree"
|
||||
readonly prog_ver="0.2"
|
||||
|
||||
_usage(){
|
||||
echo "This program generates the dependency tree of an installed package"
|
||||
echo "Usage: $prog_name [OPTIONS] <installed packages>"
|
||||
echo
|
||||
echo " OPTIONS:"
|
||||
echo " -c, --color Enable color output"
|
||||
echo " -d, --depth INT Limit the shown dependencies depth"
|
||||
echo " -g, --graph Use graphviz to make an image of the tree"
|
||||
echo " -l, --linear Enable linear output"
|
||||
echo " -s, --silent Shh, let me hear those errors!"
|
||||
echo " -u, --unique Print the dependency list with no duplicates"
|
||||
echo
|
||||
echo " -h, --help Print this help message"
|
||||
echo " -v, --version Print the program name and version"
|
||||
echo
|
||||
echo "Example: $prog_name -c -d 2 readline"
|
||||
}
|
||||
|
||||
_version(){
|
||||
echo "$prog_name version $prog_ver"
|
||||
echo "Copyright (C) 2008 Carlo \"carlocci\" Bersani <carlocci@gmail.com>"
|
||||
}
|
||||
# end of the friendliness
|
||||
|
||||
|
||||
# grab a field from the database: $1=path/to/file, $2=field to grab
|
||||
_grabfield(){
|
||||
for line in $(cat "$1" 2>/dev/null ); do
|
||||
if [ -z "$line" ]; then
|
||||
continue;
|
||||
fi;
|
||||
if [[ "$line" =~ %[A-Z]*% ]]; then
|
||||
current="$line"
|
||||
continue;
|
||||
fi;
|
||||
if [ "$current" = "$2" ]; then
|
||||
echo "$line"
|
||||
fi;
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# find a dep in the db: $1=dep, $2=field, $3=dbfile, ret=file list
|
||||
_finddep(){
|
||||
for line in $(awk 'BEGIN{RS=""}
|
||||
{
|
||||
if ($1=="'"$2"'"){
|
||||
for (i=2 ; i<=NF ; ++i){
|
||||
if ($i ~ /^'"$1"'([<>=]+.*|)$/ ){
|
||||
print FILENAME}
|
||||
}
|
||||
}
|
||||
}' $(find $pac_db -name $3)); do
|
||||
echo "${line%/*}"
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Recursive function: does all of the work, pays all of the taxes #
|
||||
_tree(){
|
||||
pkg_name="$1"
|
||||
pkg_dirs="$(echo $pac_db/$pkg_name-[0-9]*)"
|
||||
|
||||
# Is $pkg_name real or provided?
|
||||
[ ! -d "$pkg_dirs" ] && pkg_dirs="$(_finddep $pkg_name %PROVIDES% depends)"
|
||||
|
||||
for pkg_dir in $pkg_dirs ; do
|
||||
spaces="$2"
|
||||
unset provided
|
||||
branch_tip="$branch_tip1"
|
||||
branch_color="$branch1_color"
|
||||
pkg_name="$(_grabfield "$pkg_dir/desc" %NAME%)"
|
||||
if [ ! "$pkg_name" = "$1" ]; then
|
||||
provided="$leaf2_color $provides$leaf_color$1"
|
||||
branch_tip="$branch_tip2"
|
||||
branch_color="$branch2_color"
|
||||
if [ $graphviz -eq 1 ] && [[ ! "${dep_list[@]}" =~ _$1_ ]] && [ $spaces -ne $((max_depth+1)) ]; then
|
||||
echo "\"$1\" -> \"$pkg_name\" [arrowhead=none, color=$arrow2_color];"
|
||||
dep_list=( "${dep_list[@]}" "_$1_" )
|
||||
_tree "$pkg_name" $((spaces+1))
|
||||
continue
|
||||
fi
|
||||
fi
|
||||
|
||||
# Generate the spacer
|
||||
spacer=""
|
||||
for each in $(seq 1 $spaces); do
|
||||
spacer="$spacer$separator"
|
||||
done
|
||||
spacer="$spacer$branch_tip"
|
||||
|
||||
[ $silent -ne 1 ] && echo -e "$branch_color$spacer$leaf_color$pkg_name$provided"
|
||||
|
||||
[ ! -d "$pkg_dir" ] && echo "No $pkg_name in the database (inconsistent database?)" >&2
|
||||
|
||||
if [[ ! " ${dep_list[@]} " =~ " $pkg_name " ]] && [ $spaces -ne $max_depth ]; then
|
||||
dep_list=( "${dep_list[@]}" "$pkg_name" )
|
||||
for dep_pkg in $(_grabfield "$pkg_dir/depends" %DEPENDS%); do
|
||||
spaces=$2 #Bash scoping ;_;
|
||||
if [ $graphviz -eq 1 ]; then
|
||||
echo "\"$1\" -> \"${dep_pkg%%[<>=]*}\" [color=$arrow1_color];"
|
||||
fi
|
||||
_tree "${dep_pkg%%[<>=]*}" $((spaces+1))
|
||||
done
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
# Main program: gets all of the money, pays none of the taxes
|
||||
|
||||
# Command line parameters parser
|
||||
if [ $# -eq 0 ]; then
|
||||
_usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
options=( "$@" )
|
||||
len_options=${#options[@]}
|
||||
for (( n=0 ; n < $len_options ; n++ )); do
|
||||
if [ "${options[$n]}" = "--" ]; then
|
||||
unset options[$n]
|
||||
break
|
||||
fi
|
||||
if [ "${options[$n]}" = "-h" -o "${options[$n]}" = "--help" ]; then
|
||||
_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-v" -o "${options[$n]}" = "--version" ]; then
|
||||
_version
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-l" -o "${options[$n]}" = "--linear" ]; then
|
||||
unset options[$n]
|
||||
linear=1
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-s" -o "${options[$n]}" = "--silent" ]; then
|
||||
unset options[$n]
|
||||
silent=1
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-u" -o "${options[$n]}" = "--unique" ]; then
|
||||
unset options[$n]
|
||||
silent=1
|
||||
nodup=1
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-g" -o "${options[$n]}" = "--graph" ]; then
|
||||
unset options[$n]
|
||||
graphviz=1
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "${options[$n]}" = "-c" -o "${options[$n]}" = "--color" ]; then
|
||||
unset options[$n]
|
||||
colored=1
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ "${options[$n]}" =~ -d[[:digit:]]* || "${options[$n]}" == "--depth" ]]; then
|
||||
if [[ "${options[$n]#-d}" =~ [[:digit:]]+ ]]; then
|
||||
max_depth="${options[$n]#-d}"
|
||||
elif [[ ${options[$((n+1))]} =~ [[:digit:]]+ ]]; then
|
||||
# if [ ${options[$((n+1))]} -eq ${options[$((n+1))]} 2>/dev/null ]; then
|
||||
max_depth="${options[$((n+1))]}"
|
||||
unset options[$((n+1))]
|
||||
((++n))
|
||||
fi
|
||||
unset options[$n]
|
||||
continue
|
||||
fi
|
||||
done
|
||||
# End of the dumb command line parser
|
||||
|
||||
# Env
|
||||
colored=${colored:-0}
|
||||
max_depth=${max_depth:--10}
|
||||
linear=${linear:-0}
|
||||
silent=${silent:-0}
|
||||
nodup=${nodup:-0}
|
||||
graphviz=${graphviz:-0}
|
||||
|
||||
if [ $colored -ne 1 ]; then
|
||||
unset branch1_color
|
||||
unset leaf_color
|
||||
unset leaf2_color
|
||||
unset branch2_color
|
||||
fi
|
||||
|
||||
if [ $linear -eq 1 ]; then
|
||||
unset separator
|
||||
unset branch_tip1
|
||||
unset branch_tip2
|
||||
unset provides
|
||||
fi
|
||||
|
||||
if [ $graphviz -eq 1 ]; then
|
||||
silent=1
|
||||
nodup=0
|
||||
if [ ! -f /usr/bin/dot ]; then
|
||||
echo "ERROR: package graphviz is not installed"
|
||||
echo " Run pacman -S graphviz to install it"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -r /etc/pacman.conf ]; then
|
||||
echo "ERROR: unable to read /etc/pacman.conf"
|
||||
exit 1
|
||||
else
|
||||
eval $(awk '/DBPath/ {print $1$2$3}' /etc/pacman.conf)
|
||||
fi
|
||||
|
||||
pac_db="${DBPath:-/var/lib/pacman}/local"
|
||||
|
||||
if [ ! -d "$pac_db" ] ; then
|
||||
echo "ERROR: pacman database directory ${pac_db} not found"
|
||||
exit 1
|
||||
fi
|
||||
# Env End
|
||||
|
||||
|
||||
# Program starts
|
||||
_main(){
|
||||
for pkg_name in ${options[@]} ; do
|
||||
[ $graphviz -eq 1 ] && echo -e "\"START\" -> \"$pkg_name\" ;"
|
||||
_tree "$pkg_name" 0
|
||||
if [ $nodup -eq 1 ]; then
|
||||
for pkg_tree in ${dep_list[@]} ; do
|
||||
echo "$pkg_tree"
|
||||
done
|
||||
fi
|
||||
done
|
||||
if [ $silent -eq 0 ]; then
|
||||
echo -ne '\033[0m' # return colors to normal?
|
||||
echo -ne '\033[?25h' #return cursor to normal?
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if [ $graphviz -eq 1 ]; then
|
||||
root_pkgs="${options[@]}"
|
||||
# Uncomment for the "generated by pactree" node in graphviz
|
||||
#advert="xyz [height=0.07, fontsize=8.0, label=\"GENERATED WITH PACTREE\",shape=box,color="black",style=filled,fontcolor="white"];\n"
|
||||
|
||||
echo -e "digraph G { START [color=$start_color, style=filled];\n node [style=filled, color=$nodes_color];\n$(_main)\n$advert}" | dot -T$gformat -o "${root_pkgs// /_}.deps.$gformat"
|
||||
else _main
|
||||
fi
|
||||
|
||||
# vim: set ts=2 sw=2 noet:
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# re-pacman: regenerate a pacman package based on installed files and the
|
||||
# pacman database entries. Useful for reuse, or possible config file
|
||||
# extension
|
||||
#
|
||||
# Copyright (c) 2006 Aaron Griffin <aaron@archlinux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
#TODO
|
||||
# * Check for md5 changes in backup lines and change pkgrel
|
||||
|
||||
pacinfo () {
|
||||
[ $# -ne 2 ] && return 1
|
||||
#use echo to strip spaces
|
||||
echo $(pacman -Qi ${1} | grep "${2}" | cut -d: -f2-)
|
||||
}
|
||||
|
||||
make_pkginfo () {
|
||||
echo "# Generated by re-pacman 1.0.0"
|
||||
echo "# On $(date)"
|
||||
echo "pkgname =$(pacinfo ${1} Name)"
|
||||
echo "pkgver =$(pacinfo ${1} Version)"
|
||||
echo "pkgdesc =$(pacinfo ${1} Description)"
|
||||
echo "url =$(pacinfo ${1} URL)"
|
||||
echo "builddate =$(pacinfo ${1} 'Build Date')"
|
||||
echo "packager =$(pacinfo ${1} Packager)"
|
||||
echo "size =$(pacinfo ${1} Size)"
|
||||
echo "arch =$(pacinfo ${1} Architecture)"
|
||||
deps=$(pacinfo ${1} 'Depends On')
|
||||
for d in ${deps}; do
|
||||
echo "depend = ${d}"
|
||||
done
|
||||
}
|
||||
|
||||
LANG="POSIX"
|
||||
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "usage: re-pacman <installed package name>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ver=$(pacinfo ${1} Version)
|
||||
if [ "x${ver}" = "x" ]; then
|
||||
echo "Package '${1}' not found, aborting."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ":: Cleaning up old files"
|
||||
rm -f .PKGINFO "${1}-${ver}.pkg.tar.gz"
|
||||
|
||||
echo ":: Building PKGINFO"
|
||||
make_pkginfo ${1} > .PKGINFO
|
||||
|
||||
flist=".PKGINFO"
|
||||
flist="${flist} $(pacman -Ql ${1} | sed 's|\w* \(.*\)|/\1|g' | grep -v '/$')"
|
||||
|
||||
echo ":: Building final package tarball"
|
||||
echo ${flist} | tr ' ' '\n' | tar czf "${1}-${ver}.pkg.tar.gz" -T - 2>/dev/null
|
||||
|
||||
rm -f .PKGINFO
|
||||
echo ":: Package '${1}-${ver}.pkg.tar.gz' is now ready for installation"
|
||||
|
||||
# vim: set ts=2 sw=2 noet:
|
||||
75
scripts/updatesync.sh.in → contrib/updatesync
Normal file → Executable file
75
scripts/updatesync.sh.in → contrib/updatesync
Normal file → Executable file
@@ -1,7 +1,6 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# updatesync
|
||||
# @configure_input@
|
||||
#
|
||||
# Copyright (c) 2004 by Jason Chu <jason@archlinux.org>
|
||||
# Derived from gensync (c) 2002-2006 Judd Vinet <jvinet@zeroflux.org>
|
||||
@@ -20,40 +19,33 @@
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
|
||||
# gettext initialization
|
||||
export TEXTDOMAIN='pacman'
|
||||
export TEXTDOMAINDIR='@localedir@'
|
||||
|
||||
myver='@PACKAGE_VERSION@'
|
||||
myver='3.1.1'
|
||||
|
||||
# functions
|
||||
|
||||
usage() {
|
||||
printf "updatesync (pacman) %s\n\n" "$myver"
|
||||
printf "$(gettext "Usage: %s <action> <destfile> <option> [package_directory]")\n\n" "$0"
|
||||
printf "$(gettext "\
|
||||
NOTE: this script is DEPRECATED. It will be removed in the next major\n\
|
||||
release of pacman, so please use repo-add and repo-remove instead.\n\n")"
|
||||
printf "$(gettext "\
|
||||
printf "Usage: %s <action> <destfile> <option> [package_directory]\n\n" "$0"
|
||||
printf "\
|
||||
updatesync will update a sync database by reading a PKGBUILD and\n\
|
||||
modifying the destfile. updatesync updates the database in a temporary\n\
|
||||
directory and then compresses it to <destfile>.\n\n")"
|
||||
printf "$(gettext "There are two types of actions:\n\n")"
|
||||
printf "$(gettext "upd - Will update a package's entry or create it if it doesn't exist.\n It takes the package's PKGBUILD as an option.\n")"
|
||||
printf "$(gettext "del - Will remove a package's entry from the db. It takes the package's\n name as an option.\n")"
|
||||
directory and then compresses it to <destfile>.\n\n"
|
||||
printf "There are two types of actions:\n\n"
|
||||
printf "upd - Will update a package's entry or create it if it doesn't exist.\n It takes the package's PKGBUILD as an option.\n"
|
||||
printf "del - Will remove a package's entry from the db. It takes the package's\n name as an option.\n"
|
||||
echo
|
||||
printf "$(gettext "\
|
||||
printf "\
|
||||
updatesync will calculate md5sums of packages in the same directory as\n\
|
||||
<destfile>, unless an alternate [package_directory] is specified.\n\n")"
|
||||
echo "$(gettext "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD")"
|
||||
<destfile>, unless an alternate [package_directory] is specified.\n\n"
|
||||
echo "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
|
||||
}
|
||||
|
||||
version() {
|
||||
printf "updatesync (pacman) %s\n" "$myver"
|
||||
printf "$(gettext "\
|
||||
printf "\
|
||||
Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\n\n\
|
||||
This is free software; see the source for copying conditions.\n\
|
||||
There is NO WARRANTY, to the extent permitted by law.\n")"
|
||||
There is NO WARRANTY, to the extent permitted by law.\n"
|
||||
}
|
||||
|
||||
error () {
|
||||
@@ -66,26 +58,8 @@ die () {
|
||||
exit 1
|
||||
}
|
||||
|
||||
check_force () {
|
||||
local i
|
||||
for i in ${options[@]}; do
|
||||
local lc=$(echo $i | tr [:upper:] [:lower:])
|
||||
if [ "$lc" = "force" ]; then
|
||||
true
|
||||
fi
|
||||
done
|
||||
false
|
||||
}
|
||||
|
||||
# PROGRAM START
|
||||
|
||||
# determine whether we have gettext; make it a no-op if we do not
|
||||
if [ ! $(type -t gettext) ]; then
|
||||
gettext() {
|
||||
echo "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
if [ "$1" = "-h" -o "$1" = "--help" ]; then
|
||||
usage
|
||||
exit 0
|
||||
@@ -102,10 +76,10 @@ if [ $# -lt 3 ]; then
|
||||
fi
|
||||
|
||||
# source system and user makepkg.conf
|
||||
if [ -r @sysconfdir@/makepkg.conf ]; then
|
||||
source @sysconfdir@/makepkg.conf
|
||||
if [ -r /etc/makepkg.conf ]; then
|
||||
source /etc/makepkg.conf
|
||||
else
|
||||
die "$(gettext "%s not found. Can not continue.")" "@sysconfdir@/makepkg.conf"
|
||||
die "/etc/makepkg.conf not found. Cannot continue."
|
||||
fi
|
||||
|
||||
if [ -r ~/.makepkg.conf ]; then
|
||||
@@ -124,39 +98,30 @@ pkgdir="$(pwd)"
|
||||
if [ "$4" != "" ]; then
|
||||
pkgdir="$4"
|
||||
fi
|
||||
opt_force=""
|
||||
|
||||
printf "$(gettext "\
|
||||
NOTE: this script is DEPRECATED. It will be removed in the next major\n\
|
||||
release of pacman, so please use repo-add and repo-remove instead.\n\n")"
|
||||
|
||||
if [ "$action" = "upd" ]; then # INSERT / UPDATE
|
||||
if [ ! -f "$option" ]; then
|
||||
die "$(gettext "%s not found")" $option
|
||||
die "$option not found"
|
||||
fi
|
||||
|
||||
unset pkgname pkgver pkgrel options
|
||||
|
||||
source $option || die "$(gettext "failed to parse %s")" $option
|
||||
source $option || die "failed to parse $option"
|
||||
if [ "$arch" = 'any' ]; then
|
||||
CARCH='any'
|
||||
fi
|
||||
pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-${CARCH}${PKGEXT}"
|
||||
|
||||
if [ ! -f "$pkgfile" ]; then
|
||||
die "$(gettext "could not find %s-%s-%s-%s%s - aborting")" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
|
||||
die "could not find %s-%s-%s-%s%s - aborting" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
|
||||
fi
|
||||
|
||||
if check_force; then
|
||||
opt_force="--force"
|
||||
fi
|
||||
|
||||
repo-add "$pkgdb" $opt_force "$pkgfile"
|
||||
repo-add "$pkgdb" "$pkgfile"
|
||||
else # DELETE
|
||||
fname="$(basename $option)"
|
||||
if [ "$fname" = "PKGBUILD" ]; then
|
||||
if [ ! -f "$option" ]; then
|
||||
die "$(gettext "%s not found")" $option
|
||||
die "%s not found" $option
|
||||
fi
|
||||
|
||||
unset pkgname pkgver pkgrel options
|
||||
@@ -1,96 +0,0 @@
|
||||
This is a project file for the vim-project
|
||||
plugin. I like it, so decided to contribute
|
||||
this to the main repo.
|
||||
$ pacman -S vim-project
|
||||
change the pacman= path below
|
||||
$ vim
|
||||
:Project vimproject
|
||||
|
||||
pacman=~/devel/pacman-lib CD=. flags=S {
|
||||
Makefile.am
|
||||
configure.ac
|
||||
libalpm=lib/libalpm/ filter="*.c *.h *.am"{
|
||||
add.c
|
||||
alpm.c
|
||||
alpm_list.c
|
||||
backup.c
|
||||
be_files.c
|
||||
cache.c
|
||||
conflict.c
|
||||
db.c
|
||||
deps.c
|
||||
error.c
|
||||
group.c
|
||||
handle.c
|
||||
log.c
|
||||
md5.c
|
||||
package.c
|
||||
provide.c
|
||||
remove.c
|
||||
server.c
|
||||
sync.c
|
||||
trans.c
|
||||
util.c
|
||||
add.h
|
||||
alpm.h
|
||||
alpm_list.h
|
||||
backup.h
|
||||
cache.h
|
||||
conflict.h
|
||||
db.h
|
||||
deps.h
|
||||
error.h
|
||||
group.h
|
||||
handle.h
|
||||
log.h
|
||||
md5.h
|
||||
package.h
|
||||
provide.h
|
||||
remove.h
|
||||
server.h
|
||||
sync.h
|
||||
trans.h
|
||||
util.h
|
||||
Makefile.am
|
||||
Makefile.in
|
||||
}
|
||||
pacman=src/pacman/ filter="*.c *.h *.am" {
|
||||
add.c
|
||||
conf.c
|
||||
deptest.c
|
||||
downloadprog.c
|
||||
log.c
|
||||
package.c
|
||||
pacman.c
|
||||
query.c
|
||||
remove.c
|
||||
sync.c
|
||||
trans.c
|
||||
upgrade.c
|
||||
util.c
|
||||
add.h
|
||||
conf.h
|
||||
deptest.h
|
||||
downloadprog.h
|
||||
log.h
|
||||
package.h
|
||||
query.h
|
||||
remove.h
|
||||
sync.h
|
||||
trans.h
|
||||
upgrade.h
|
||||
util.h
|
||||
Makefile.am
|
||||
}
|
||||
utils=src/util filter="*.c *.h *.am" {
|
||||
testpkg.c
|
||||
vercmp.c
|
||||
Makefile.am
|
||||
}
|
||||
contrib=contrib CD=. {
|
||||
bash_completion
|
||||
pacsearch
|
||||
vimproject
|
||||
zsh_completion
|
||||
}
|
||||
}
|
||||
25
contrib/vimprojects
Normal file
25
contrib/vimprojects
Normal file
@@ -0,0 +1,25 @@
|
||||
This is a project file
|
||||
for the vim-project plugin.
|
||||
Save it as ~/.vimprojects
|
||||
|
||||
$ pacman -S vim-project
|
||||
change the pacman path below
|
||||
$ vim
|
||||
:Project
|
||||
|
||||
Press \r in the project view
|
||||
on a project name to generate
|
||||
the list of files
|
||||
|
||||
pacman=~/devel/pacman/ CD=. filter="*.ac *.am" flags=S {
|
||||
libalpm=lib/libalpm/ filter="*.c *.h *.am" {
|
||||
}
|
||||
pacman=src/pacman/ filter="*.c *.h *.am" {
|
||||
}
|
||||
scripts=scripts/ filter="*.sh.in *.py.in *.am" {
|
||||
}
|
||||
utils=src/util filter="*.c *.h *.am" {
|
||||
}
|
||||
contrib=contrib CD=. {
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ typeset -A opt_args
|
||||
|
||||
# options for passing to _arguments: main pacman commands
|
||||
_pacman_opts_commands=(
|
||||
'-A[Add a package to the system]'
|
||||
'-Q[Query the package database]'
|
||||
'-R[Remove a package from the system]'
|
||||
'-S[Synchronize packages]'
|
||||
@@ -29,7 +28,7 @@ _pacman_opts_common=(
|
||||
'--noscriptlet[Do not execute the install scriptlet if one exists]'
|
||||
)
|
||||
|
||||
# options for passing to _arguments: options for --add and --update commands
|
||||
# options for passing to _arguments: options for --upgrade commands
|
||||
_pacman_opts_pkgfile=(
|
||||
'-d[Skip dependency checks]'
|
||||
'-f[Overwrite conflicting files]'
|
||||
@@ -78,7 +77,6 @@ _pacman_opts_sync_actions=(
|
||||
# options for passing to _arguments: options for --sync command
|
||||
_pacman_opts_sync_modifiers=(
|
||||
'-d[Skip dependency checks]'
|
||||
'-e[Install dependencies only]'
|
||||
'-f[Overwrite conflicting files]'
|
||||
'-i[View package information]'
|
||||
'-l[List all packages in a repository]'
|
||||
@@ -91,15 +89,9 @@ _pacman_opts_sync_modifiers=(
|
||||
'*--ignoregroup[Ignore a group upgrade]:package group:
|
||||
_pacman_completions_all_groups'
|
||||
'--asdeps[Install packages as non-explicitly installed]'
|
||||
'--asexplicit[Install packages as explicitly installed]'
|
||||
)
|
||||
|
||||
# handles --action subcommand
|
||||
_pacman_action_add() {
|
||||
_arguments -s : \
|
||||
"$_pacman_opts_common[@]" \
|
||||
"$_pacman_opts_pkgfile[@]"
|
||||
}
|
||||
|
||||
# handles --help subcommand
|
||||
_pacman_action_help() {
|
||||
_arguments -s : \
|
||||
@@ -290,7 +282,6 @@ _pacman_get_command() {
|
||||
# main dispatcher
|
||||
_pacman() {
|
||||
case $words[2] in
|
||||
-A*) _pacman_action_add ;;
|
||||
-Q*g*) # ipkg groups
|
||||
_arguments -s : \
|
||||
"$_pacman_opts_common[@]" \
|
||||
|
||||
20
doc/Doxyfile
20
doc/Doxyfile
@@ -1,4 +1,4 @@
|
||||
# Doxyfile 1.5.2
|
||||
# Doxyfile 1.5.5
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
@@ -28,7 +28,8 @@ FULL_PATH_NAMES = NO
|
||||
STRIP_FROM_PATH =
|
||||
STRIP_FROM_INC_PATH =
|
||||
SHORT_NAMES = NO
|
||||
JAVADOC_AUTOBRIEF = NO
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
QT_AUTOBRIEF = NO
|
||||
MULTILINE_CPP_IS_BRIEF = NO
|
||||
DETAILS_AT_TOP = NO
|
||||
INHERIT_DOCS = YES
|
||||
@@ -37,10 +38,14 @@ TAB_SIZE = 4
|
||||
ALIASES =
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
OPTIMIZE_OUTPUT_JAVA = NO
|
||||
OPTIMIZE_FOR_FORTRAN = NO
|
||||
OPTIMIZE_OUTPUT_VHDL = NO
|
||||
BUILTIN_STL_SUPPORT = NO
|
||||
CPP_CLI_SUPPORT = NO
|
||||
SIP_SUPPORT = NO
|
||||
DISTRIBUTE_GROUP_DOC = NO
|
||||
SUBGROUPING = YES
|
||||
TYPEDEF_HIDES_STRUCT = NO
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
@@ -49,6 +54,7 @@ EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
EXTRACT_LOCAL_METHODS = NO
|
||||
EXTRACT_ANON_NSPACES = NO
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
HIDE_FRIEND_COMPOUNDS = NO
|
||||
@@ -60,6 +66,7 @@ SHOW_INCLUDE_FILES = YES
|
||||
INLINE_INFO = YES
|
||||
SORT_MEMBER_DOCS = YES
|
||||
SORT_BRIEF_DOCS = NO
|
||||
SORT_GROUP_NAMES = NO
|
||||
SORT_BY_SCOPE_NAME = NO
|
||||
GENERATE_TODOLIST = YES
|
||||
GENERATE_TESTLIST = YES
|
||||
@@ -126,6 +133,10 @@ HTML_FOOTER =
|
||||
HTML_STYLESHEET =
|
||||
HTML_ALIGN_MEMBERS = YES
|
||||
GENERATE_HTMLHELP = NO
|
||||
GENERATE_DOCSET = NO
|
||||
DOCSET_FEEDNAME = "Doxygen generated docs"
|
||||
DOCSET_BUNDLE_ID = org.doxygen.Project
|
||||
HTML_DYNAMIC_SECTIONS = NO
|
||||
CHM_FILE =
|
||||
HHC_LOCATION =
|
||||
GENERATE_CHI = NO
|
||||
@@ -194,7 +205,9 @@ EXPAND_ONLY_PREDEF = YES
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH = ../..
|
||||
INCLUDE_FILE_PATTERNS = *.h
|
||||
PREDEFINED = HAVE_CONFIG_H= SYMHIDDEN= SYMEXPORT=
|
||||
PREDEFINED = HAVE_CONFIG_H= \
|
||||
SYMHIDDEN= \
|
||||
SYMEXPORT=
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
@@ -227,6 +240,7 @@ DOT_IMAGE_FORMAT = png
|
||||
DOT_PATH =
|
||||
DOTFILE_DIRS =
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
MAX_DOT_GRAPH_DEPTH = 3
|
||||
DOT_TRANSPARENT = NO
|
||||
DOT_MULTI_TARGETS = NO
|
||||
GENERATE_LEGEND = YES
|
||||
|
||||
@@ -32,6 +32,14 @@ EXTRA_DIST = \
|
||||
MOSTLYCLEANFILES = *.xml
|
||||
MAINTAINERCLEANFILES = $(ASCIIDOC_MANS)
|
||||
|
||||
if USE_GIT_VERSION
|
||||
GIT_VERSION := $(shell sh -c 'git describe --abbrev=4 | sed s/^v//')-dirty
|
||||
REAL_PACKAGE_VERSION = $(GIT_VERSION)
|
||||
else
|
||||
REAL_PACKAGE_VERSION = $(PACKAGE_VERSION)
|
||||
endif
|
||||
|
||||
|
||||
man_MANS =
|
||||
dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8
|
||||
|
||||
@@ -47,7 +55,7 @@ endif
|
||||
if USE_ASCIIDOC
|
||||
ASCIIDOC_OPTS = \
|
||||
-f asciidoc.conf \
|
||||
-a pacman_version="$(PACKAGE_VERSION)" \
|
||||
-a pacman_version="$(REAL_PACKAGE_VERSION)" \
|
||||
-a pacman_date="`date +%Y-%m-%d`" \
|
||||
-a sysconfdir=$(sysconfdir)
|
||||
A2X_OPTS = \
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Maintainer: judd <jvinet@zeroflux.org>
|
||||
# Maintainer: Joe User <joe.user@example.com>
|
||||
|
||||
pkgname=patch
|
||||
pkgver=2.5.4
|
||||
@@ -13,8 +13,8 @@ source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
|
||||
md5sums=('ee5ae84d115f051d87fcaaef3b4ae782')
|
||||
|
||||
build() {
|
||||
cd $startdir/src/$pkgname-$pkgver
|
||||
cd $srcdir/$pkgname-$pkgver
|
||||
./configure --prefix=/usr
|
||||
make || return 1
|
||||
make prefix=$startdir/pkg/usr install
|
||||
make prefix=$pkgdir/usr install
|
||||
}
|
||||
|
||||
@@ -30,12 +30,22 @@ distribution of this package.
|
||||
|
||||
Options and Directives
|
||||
----------------------
|
||||
The following is a list of standard options and directives available for use
|
||||
in a PKGBUILD. These are all understood and interpreted by makepkg, and most
|
||||
will be directly transferred to the built package.
|
||||
|
||||
If you need to create any custom variables for use in your build process, it is
|
||||
recommended to name your custom variables with an '_' (underscore) prefix.
|
||||
This will prevent any possible name clashes with internal makepkg variables.
|
||||
For example, to store the base kernel version in a variable, use something
|
||||
similar to `$_basekernver`.
|
||||
|
||||
*pkgname*::
|
||||
The name of the package. This has be a unix-friendly name as it will be
|
||||
used in the package filename.
|
||||
|
||||
*pkgver*::
|
||||
The version of the software as released from the author (e.g. \'2.7.1').
|
||||
The version of the software as released from the author (e.g. '2.7.1').
|
||||
|
||||
*pkgrel*::
|
||||
This is the release number specific to the Arch Linux release. This
|
||||
@@ -77,6 +87,10 @@ Options and Directives
|
||||
variables if possible when specifying the download location. Any files
|
||||
that are compressed will automatically be extracted, unless found in
|
||||
the noextract array listed below.
|
||||
+
|
||||
It is also possible to specify an optional filename, which is helpful
|
||||
with weird URLs and for handling multiple source files with the same
|
||||
name. The syntax is: `source=('filename::url')`
|
||||
|
||||
*noextract (array)*::
|
||||
An array of filenames corresponding to those from the source array. Files
|
||||
@@ -89,14 +103,13 @@ Options and Directives
|
||||
source array (in the same order). makepkg will use this to verify source
|
||||
file integrity during subsequent builds. To easily generate md5sums, run
|
||||
``makepkg -g >> PKGBUILD''. If desired, move the md5sums line to an
|
||||
appropriate location. *NOTE:* makepkg supports multiple integrity
|
||||
algorithms and their corresponding arrays (i.e. sha1sums for the SHA1
|
||||
algorithm); however, official packages use only md5sums for the time
|
||||
being.
|
||||
appropriate location.
|
||||
|
||||
*sha1sums, etc.*::
|
||||
Alternative integrity checks that makepkg supports, as noted in md5sums
|
||||
above.
|
||||
*sha1sums, sha256sums, sha384sums, sha512sums (arrays)*::
|
||||
Alternative integrity checks that makepkg supports; these all behave
|
||||
similar to the md5sums 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].
|
||||
|
||||
*groups (array)*::
|
||||
An array of symbolic names that represent groups of packages, allowing
|
||||
@@ -182,6 +195,9 @@ Options and Directives
|
||||
*emptydirs*;;
|
||||
Leave empty directories in packages.
|
||||
|
||||
*zipman*;;
|
||||
Compress man pages with gzip.
|
||||
|
||||
*ccache*;;
|
||||
Allow the use of ccache during build. More useful in its negative
|
||||
form `!ccache` with select packages that have problems building
|
||||
@@ -202,9 +218,42 @@ Options and Directives
|
||||
Force the package to be upgraded by a pacman system upgrade
|
||||
operation, even if the version number would normally not trigger
|
||||
such an upgrade. This is useful when the version numbering scheme
|
||||
of a package changes (or is alphanumeric).
|
||||
of a package changes (or is alphanumeric). See linkman:pacman[8] for
|
||||
more infomation on version comparisons.
|
||||
|
||||
|
||||
build() Function
|
||||
----------------
|
||||
In addition to the above directives, the build() bash function comprises the
|
||||
remainder of the PKGBUILD. This is directly sourced and executed by makepkg, so
|
||||
anything that bash or the system has available is available for use here. Be
|
||||
sure any exotic commands used are covered by `makedepends`.
|
||||
|
||||
All of the above variables such as `pkgname` and `pkgver` are available for use
|
||||
in the build function. In addition, makepkg defines three variables for your
|
||||
use during the build and install process. These three variables are as follows:
|
||||
|
||||
*startdir*::
|
||||
This contains the absolute path to the directory where the PKGBUILD was
|
||||
located, which is usually the output of `$(pwd)` when makepkg is started.
|
||||
$$startdir$$ was most often used in combination with `/src` or `/pkg`
|
||||
postfixes, but use of the `srcdir` and `pkgdir` variables is preferred.
|
||||
|
||||
*srcdir*::
|
||||
This points to the directory where makepkg extracts or copies all source
|
||||
files. Although it currently is an alias for `$startdir/src`, this
|
||||
assumption should not be assumed true for all future revisions of makepkg.
|
||||
|
||||
*pkgdir*::
|
||||
This points to the directory where makepkg bundles the installed package
|
||||
(this directory will become the root directory of your built package).
|
||||
Although it currently is an alias for `$startdir/pkg`, this assumption
|
||||
should not be assumed true for all future revisions of makepkg.
|
||||
|
||||
If you create any variables of your own in the build function, it is
|
||||
recommended to use the bash `local` keyword to scope the variable to inside
|
||||
the build function.
|
||||
|
||||
Install/Upgrade/Remove Scripting
|
||||
--------------------------------
|
||||
Pacman has the ability to store and execute a package-specific script when it
|
||||
|
||||
@@ -15,9 +15,16 @@ mailto:pacman-dev@archlinux.org[].
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
Current maintainers:
|
||||
|
||||
* Dan McGee <dan@archlinux.org>
|
||||
* Xavier Chantry <shiningxc@gmail.com>
|
||||
* Aaron Griffin <aaron@archlinux.org>
|
||||
|
||||
Past contributors:
|
||||
|
||||
* Judd Vinet <jvinet@zeroflux.org>
|
||||
* Aurelien Foret <aurelien@archlinux.org>
|
||||
* Aaron Griffin <aaron@archlinux.org>
|
||||
* Dan McGee <dan@archlinux.org>
|
||||
|
||||
See the 'AUTHORS' file for additional contributors.
|
||||
|
||||
@@ -45,13 +45,6 @@ Options
|
||||
for rebuilding packages from source when the PKGBUILD may be slightly
|
||||
outdated and not updated with an `$$arch=('yourarch')$$` field.
|
||||
|
||||
*-b, \--builddeps*::
|
||||
Build missing dependencies from source. When makepkg finds missing
|
||||
build-time or run-time dependencies, it will look for the dependencies'
|
||||
PKGBUILD files under `SRCROOT` (set in linkman:makepkg.conf[5]). If it
|
||||
finds them it will call makepkg to build and install the missing
|
||||
dependencies. The child calls will be made with the `-b` and `-i` options.
|
||||
|
||||
*-c, \--clean*::
|
||||
Clean up leftover work files and directories after a successful build.
|
||||
|
||||
@@ -135,10 +128,18 @@ Options
|
||||
dependencies are not found, pacman will try to resolve them. If
|
||||
successful, the missing packages will be downloaded and installed.
|
||||
|
||||
*\--allsource*::
|
||||
Do not actually build the package, but build a source-only tarball that
|
||||
includes all sources, including those that are normally download via
|
||||
makepkg. This is useful for passing a single tarball to another program
|
||||
such as a chroot or remote builder. It will also satisfy requirements of
|
||||
the GPL when distributing binary packages.
|
||||
|
||||
*\--source*::
|
||||
Do not actually build the package, but build a source-only tarball. This
|
||||
is useful for passing a single tarball to another program such as a
|
||||
chroot, remote builder, or an AUR upload.
|
||||
Do not actually build the package, but build a source-only tarball that
|
||||
does not include sources that can be fetched via a download URL. This is
|
||||
useful for passing a single tarball to another program such as a chroot,
|
||||
remote builder, or a tarball upload.
|
||||
|
||||
*\--noconfirm*::
|
||||
(Passed to pacman) Prevent pacman from waiting for user input before
|
||||
|
||||
@@ -34,9 +34,13 @@ Options
|
||||
**DLAGENTS=(**\'protocol::/path/to/command [options]' ...**)**::
|
||||
Sets the download agents used to fetch source files specified with a URL in
|
||||
the linkman:PKGBUILD[5] file. Options can be specified for each command as
|
||||
well; the download URL is placed on the end of the command. This is more
|
||||
flexible than the former `FTPAGENT` variable, as any protocol can have a
|
||||
download agent. Several examples are provided in the default makepkg.conf.
|
||||
well, and any protocol can have a download agent. Several examples are provided
|
||||
in the default makepkg.conf.
|
||||
+
|
||||
If present, `%u` will be replaced with the download URL. Otherwise, the
|
||||
download URL will be placed on the end of the command. If present, `%o` will
|
||||
be replaced with the local filename, plus a ``.part'' extension, which allows
|
||||
makepkg to handle resuming file downloads.
|
||||
|
||||
**CARCH=**"carch"::
|
||||
Specifies your computer architecture; possible values include such things
|
||||
@@ -94,8 +98,8 @@ Options
|
||||
running in the DistCC cluster. In addition, you will want to modify your
|
||||
`MAKEFLAGS`.
|
||||
|
||||
**OPTIONS=(**strip !docs libtool emptydirs**)**::
|
||||
This array contains options that affect the default packaging. All four are
|
||||
**OPTIONS=(**strip docs libtool emptydirs zipman**)**::
|
||||
This array contains options that affect the default packaging. They are
|
||||
equivalent to options that can be placed in the PKGBUILD; the defaults are
|
||||
shown here. All options should always be left in the array; to enable or
|
||||
disable an option simply remove or place an ``!'' at the front of the
|
||||
@@ -117,6 +121,9 @@ Options
|
||||
*emptydirs*;;
|
||||
Leave empty directories in packages.
|
||||
|
||||
*zipman*;;
|
||||
Compress man pages with gzip.
|
||||
|
||||
**INTEGRITY_CHECK=(**check1 ...**)**::
|
||||
File integrity checks to use. Multiple checks may be specified; this
|
||||
affects both generation and checking. The current valid options are:
|
||||
@@ -128,6 +135,13 @@ Options
|
||||
that are located in opt/, you may need to add the directory to this
|
||||
array. *NOTE:* Do not add the leading slash to the directory name.
|
||||
|
||||
**STRIP_DIRS=(**bin lib sbin usr/{bin,lib} ...**)**::
|
||||
If "strip" is specified in the OPTIONS array, this variable will
|
||||
instruct makepkg where to look to for files to strip. If you build
|
||||
packages that are located in opt/, you may need to add the directory
|
||||
to this array. *NOTE:* Do not add the leading slash to the directory
|
||||
name.
|
||||
|
||||
**PKGDEST=**"/path/to/folder"::
|
||||
If this value is not set, packages will by default be placed in the
|
||||
current directory (location of the linkman:PKGBUILD[5]). Many people
|
||||
|
||||
@@ -28,13 +28,6 @@ ends to be written (for instance, a GUI front end).
|
||||
|
||||
Operations
|
||||
----------
|
||||
*-A, \--add* (deprecated)::
|
||||
Add a package to the system. Either a URL or file path can be specified.
|
||||
The package will be uncompressed into the installation root and the
|
||||
database will be updated. The package will not be installed if another
|
||||
version is already installed. *NOTE*: please use '\--upgrade' in place of
|
||||
this option.
|
||||
|
||||
*-Q, \--query*::
|
||||
Query the package database. This operation allows you to view installed
|
||||
packages and their files, as well as meta-information about individual
|
||||
@@ -56,7 +49,9 @@ Operations
|
||||
example, `pacman -S qt` will download and install qt and all the
|
||||
packages it depends on. If a package name exists in more than one repo, the
|
||||
repo can be explicitly specified to clarify the package to install:
|
||||
`pacman -S testing/qt`.
|
||||
`pacman -S testing/qt`. You can also specify version requirements:
|
||||
`pacman -S "bash>=3.2"`. (Quotes are needed, otherwise your shell
|
||||
interprets ">" as redirection to file.)
|
||||
+
|
||||
In addition to packages, groups can be specified as well. For example, if
|
||||
gnome is a defined package group, then `pacman -S gnome` will install every
|
||||
@@ -68,7 +63,13 @@ provide the same functionality as foo will be searched for. If any package is
|
||||
found, it will be installed.
|
||||
+
|
||||
You can also use `pacman -Su` to upgrade all packages that are out of date. See
|
||||
<<SO,Sync Options>> below.
|
||||
<<SO,Sync Options>> below. When upgrading, pacman performs version comparison
|
||||
to determine which packages need upgrading. This behavior operates as follows:
|
||||
|
||||
Alphanumeric:
|
||||
1.0a < 1.0alpha < 1.0b < 1.0beta < 1.0p < 1.0pre < 1.0rc < 1.0
|
||||
Numeric:
|
||||
1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0
|
||||
|
||||
*-U, \--upgrade*::
|
||||
Upgrade or add a package to the system. Either a URL or file path can be
|
||||
@@ -86,16 +87,22 @@ You can also use `pacman -Su` to upgrade all packages that are out of date. See
|
||||
Options
|
||||
-------
|
||||
*\--asdeps*::
|
||||
Install packages non-explicitly; in other works, fake their install reason
|
||||
Install packages non-explicitly; in other words, fake their install reason
|
||||
to be installed as a dependency. This is useful for makepkg and other
|
||||
build from source tools that need to install dependencies before building
|
||||
the package.
|
||||
|
||||
*\--asexplicit*::
|
||||
Install packages explicitly; in other words, fake their install reason to
|
||||
be explicitly installed. This is useful if you want to mark a dependency
|
||||
as explicitly installed so it will not be removed by the '\--recursive'
|
||||
remove operation.
|
||||
|
||||
*-b, \--dbpath* <'path'>::
|
||||
Specify an alternative database location (a typical default is
|
||||
``/var/lib/pacman''). This should not be used unless you know what you are
|
||||
doing. *NOTE*: if specified, this is an absolute path and the root path is
|
||||
not automatically prepended. This behavior changed in pacman 3.1.0.
|
||||
not automatically prepended.
|
||||
|
||||
*-d, \--nodeps*::
|
||||
Skips all dependency checks. Normally, pacman will always check a
|
||||
@@ -113,7 +120,7 @@ Options
|
||||
not be used as a way to install software into ``/usr/local'' instead of
|
||||
``/usr''. This option is used if you want to install a package on a
|
||||
temporary mounted partition which is "owned" by another system.
|
||||
*NOTE*: If database path or logfile are not specified on either the
|
||||
*NOTE*: if database path or logfile are not specified on either the
|
||||
command line or in linkman:pacman.conf[5], their default location will
|
||||
be inside this root path.
|
||||
|
||||
@@ -124,8 +131,7 @@ Options
|
||||
Specify an alternative package cache location (a typical default is
|
||||
``/var/cache/pacman/pkg''). Multiple cache directories can be specified,
|
||||
and they are tried in the order they are passed to pacman. *NOTE*: this
|
||||
is an absolute path, the root path is not automatically prepended. This
|
||||
behavior changed in pacman 3.1.0.
|
||||
is an absolute path, the root path is not automatically prepended.
|
||||
|
||||
*\--config* <'file'>::
|
||||
Specify an alternate configuration file.
|
||||
@@ -193,6 +199,11 @@ Query Options[[QO]]
|
||||
not an entry in the database. The file will be decompressed and queried.
|
||||
This is useful in combination with '\--info' and '\--list'.
|
||||
|
||||
*-q, \--quiet*::
|
||||
Show less information for certain query operations. Search will only show
|
||||
package names and not version, group, and description information; a bare
|
||||
query will only show package names rather than names and versions.
|
||||
|
||||
*-s, \--search* <'regexp'>::
|
||||
This will search each locally-installed package for names or
|
||||
descriptions that match `regexp`.
|
||||
@@ -226,7 +237,12 @@ Remove Options[[RO]]
|
||||
that (A) they are not required by other packages; and (B) they were not
|
||||
explicitly installed by the user. This operation is recursive and analogous
|
||||
to a backwards '\--sync' operation, and helps keep a clean system without
|
||||
orphans.
|
||||
orphans. If you want to omit condition (B), pass this option twice.
|
||||
|
||||
*-u, \--unneeded*::
|
||||
Removes the targets that are not required by any other packages.
|
||||
This is mostly useful when removing a group without using the '-c' option,
|
||||
to avoid breaking any dependencies.
|
||||
|
||||
|
||||
Sync Options[[SO]]
|
||||
@@ -241,10 +257,9 @@ Sync Options[[SO]]
|
||||
packages that are no longer installed; use two to remove all packages
|
||||
from the cache. In both cases, you will have a yes or no option to
|
||||
remove packages and/or unused downloaded databases.
|
||||
|
||||
*-e, \--dependsonly*::
|
||||
Install all dependencies of a package, but not the specified package
|
||||
itself. This is pretty useless and we're not sure why it even exists.
|
||||
+
|
||||
If you use a network shared cache, see the 'CleanMethod' option in
|
||||
linkman:pacman.conf[5].
|
||||
|
||||
*-g, \--groups*::
|
||||
Display all the members for each package group specified. If no group
|
||||
@@ -264,6 +279,11 @@ Sync Options[[SO]]
|
||||
dependencies yet to be installed. These can be piped to a file and
|
||||
downloaded at a later time, using a program like wget.
|
||||
|
||||
*-q, \--quiet*::
|
||||
Show less information for certain sync operations. Search will only show
|
||||
package names and not version, group, and description information; list
|
||||
will only show package names and omit databases and versions.
|
||||
|
||||
*-s, \--search* <'regexp'>::
|
||||
This will search each package in the sync databases for names or
|
||||
descriptions that match `regexp`.
|
||||
@@ -288,7 +308,7 @@ Sync Options[[SO]]
|
||||
to date.
|
||||
|
||||
*\--needed*::
|
||||
Only install the targets that are not already installed and up-to-date.
|
||||
Don't reinstall the targets that are already up-to-date.
|
||||
|
||||
*\--ignore* <'package'>::
|
||||
Directs pacman to ignore upgrades of package even if there is one
|
||||
|
||||
@@ -40,6 +40,9 @@ Include = /etc/pacman.d/core
|
||||
Server = file:///home/pkgs
|
||||
--------
|
||||
|
||||
NOTE: Each directive must be in CamelCase. If the case isn't respected, the
|
||||
directive won't be recognized. For example. noupgrade or NOUPGRADE will not
|
||||
work.
|
||||
|
||||
Options
|
||||
-------
|
||||
@@ -55,7 +58,7 @@ Options
|
||||
Overrides the default location of the toplevel database directory. A
|
||||
typical default is ``/var/lib/pacman/''. Most users will not need to set
|
||||
this option. *NOTE*: if specified, this is an absolute path and the root
|
||||
path is not automatically prepended. This behavior changed in pacman 3.1.0.
|
||||
path is not automatically prepended.
|
||||
|
||||
*CacheDir =* path/to/cache/dir::
|
||||
Overrides the default location of the package cache directory. A typical
|
||||
@@ -63,14 +66,13 @@ Options
|
||||
specified, and they are tried in the order they are listed in the config
|
||||
file. If a file is not found in any cache directory, it will be downloaded
|
||||
to the first cache directory with write access. *NOTE*: this is an absolute
|
||||
path, the root path is not automatically prepended. This behavior changed
|
||||
in pacman 3.1.0.
|
||||
path, the root path is not automatically prepended.
|
||||
|
||||
|
||||
*LogFile =* '/path/to/file'::
|
||||
Log actions directly to a file. A typical default is
|
||||
``/var/log/pacman.log''. As of pacman 3.1.0, this does not need to be
|
||||
specified by default. This is an absolute path and root is not prepended.
|
||||
Overrides the default location of the pacman log file. A typical default
|
||||
is ``/var/log/pacman.log''. This is an absolute path and the root directory
|
||||
is not prepended.
|
||||
|
||||
*HoldPkg =* package ...::
|
||||
If a user tries to '\--remove' a package that's listed in `HoldPkg`,
|
||||
@@ -80,6 +82,12 @@ Options
|
||||
Instructs pacman to ignore any upgrades for this package when performing
|
||||
a '\--sysupgrade'.
|
||||
|
||||
*SyncFirst =* package ...::
|
||||
Instructs pacman to check for newer version of these packages before any
|
||||
sync operation. The user will have the choice to either cancel the current
|
||||
operation and upgrade these packages first or go on with the current operation.
|
||||
This option is typically used with the 'pacman' package.
|
||||
|
||||
*IgnoreGroup =* group ...::
|
||||
Instructs pacman to ignore any upgrades for all packages in this
|
||||
group when performing a '\--sysupgrade'.
|
||||
@@ -104,8 +112,9 @@ Options
|
||||
|
||||
*NoUpgrade =* file ...::
|
||||
All files listed with a `NoUpgrade` directive will never be touched during
|
||||
a package install/upgrade. Do not include the leading slash when specifying
|
||||
files.
|
||||
a package install/upgrade.
|
||||
These files refer to files in the package archive, so do not include the
|
||||
leading slash (the RootDir) when specifying them.
|
||||
|
||||
*NoExtract =* file ...::
|
||||
All files listed with a `NoExtract` directive will never be extracted from
|
||||
@@ -113,6 +122,17 @@ Options
|
||||
of a package to be installed. For example, if your httpd root uses an
|
||||
'index.php', then you would not want the 'index.html' file to be extracted
|
||||
from the 'apache' package.
|
||||
These files refer to files in the package archive, so do not include the
|
||||
leading slash (the RootDir) when specifying them.
|
||||
|
||||
*CleanMethod =* KeepInstalled | KeepCurrent::
|
||||
If set to `KeepInstalled` (the default), the '-Sc' operation will clean
|
||||
packages that are no longer installed (not present in the local database).
|
||||
If set to `KeepCurrent`, '-Sc' will clean outdated packages (not present in
|
||||
any sync database).
|
||||
The second behavior is useful when the package cache is shared among
|
||||
multiple machines, where the local databases are usually different, but the
|
||||
sync databases in use could be the same.
|
||||
|
||||
*UseSyslog*::
|
||||
Log action messages through syslog(). This will insert log entries into
|
||||
@@ -127,7 +147,7 @@ Options
|
||||
|
||||
*TotalDownload*::
|
||||
When downloading, display the amount downloaded, download rate, ETA,
|
||||
and completed percentage of the entire download list list rather
|
||||
and completed percentage of the entire download list rather
|
||||
than the percent of each individual download target. The progress
|
||||
bar is still based solely on the current file download.
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ repo-add - package database maintenance utility
|
||||
|
||||
Synopsis
|
||||
--------
|
||||
repo-add <path-to-db> [--force] <package> ...
|
||||
repo-add [-q] <path-to-db> <package> ...
|
||||
|
||||
repo-remove <path-to-db> <packagename> ...
|
||||
repo-remove [-q] <path-to-db> <packagename> ...
|
||||
|
||||
|
||||
Description
|
||||
@@ -36,12 +36,9 @@ on the command line.
|
||||
|
||||
Options
|
||||
-------
|
||||
*--force* (repo-add only)::
|
||||
Add a force entry to the sync database, which tells pacman to skip version
|
||||
number comparison and update the package regardless. This flag can be
|
||||
specified in the middle of the command line, with any packages listed
|
||||
before the flag being added as normal entries, and any specified after
|
||||
being marked as force upgrades.
|
||||
*-q, \--quiet*::
|
||||
Force this program to keep quiet and run silent except for warning and
|
||||
error messages.
|
||||
|
||||
|
||||
See Also
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
#
|
||||
#-- The download utilities that makepkg should use to acquire sources
|
||||
# Format: 'protocol::agent'
|
||||
DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3'
|
||||
'http::/usr/bin/wget -c -t 3 --waitretry=3'
|
||||
'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate'
|
||||
'rsync::/usr/bin/rsync -z'
|
||||
'scp::/usr/bin/scp -C')
|
||||
DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
|
||||
'http::/usr/bin/wget -c -t 3 --waitretry=3 -O %o %u'
|
||||
'https::/usr/bin/wget -c -t 3 --waitretry=3 --no-check-certificate -O %o %u'
|
||||
'rsync::/usr/bin/rsync -z %u %o'
|
||||
'scp::/usr/bin/scp -C %u %o')
|
||||
|
||||
# Other common tools:
|
||||
# /usr/bin/snarf
|
||||
@@ -58,20 +58,23 @@ BUILDENV=(fakeroot !distcc color !ccache !xdelta)
|
||||
# These are default values for the options=() settings
|
||||
#########################################################################
|
||||
#
|
||||
# Default: OPTIONS=(strip !docs libtool emptydirs)
|
||||
# Default: OPTIONS=(strip docs libtool emptydirs zipman)
|
||||
# A negated option will do the opposite of the comments below.
|
||||
#
|
||||
#-- strip: Strip symbols from binaries/libraries
|
||||
#-- docs: Save doc and info directories
|
||||
#-- libtool: Leave libtool (.la) files in packages
|
||||
#-- emptydirs: Leave empty directories in packages
|
||||
#-- zipman: Compress manpages with gzip
|
||||
#
|
||||
OPTIONS=(strip !docs libtool emptydirs)
|
||||
OPTIONS=(strip docs libtool emptydirs zipman)
|
||||
|
||||
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
|
||||
INTEGRITY_CHECK=(md5)
|
||||
#-- Info and doc directories to remove (if option set correctly above)
|
||||
DOC_DIRS=(usr/{,share/}{info,doc,gtk-doc} opt/*/{info,doc,gtk-doc})
|
||||
#-- Directories to be searched for the strip option (if option set correctly above)
|
||||
STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,sbin})
|
||||
|
||||
#########################################################################
|
||||
# PACKAGE OUTPUT
|
||||
@@ -83,8 +86,6 @@ DOC_DIRS=(usr/{,share/}{info,doc,gtk-doc} opt/*/{info,doc,gtk-doc})
|
||||
#PKGDEST=/home/packages
|
||||
#-- Source cache: specify a fixed directory where source files will be cached
|
||||
#SRCDEST=/home/sources
|
||||
#-- Source root: specify location where PKGBUILDs are located for '--builddeps'
|
||||
#SRCROOT=/home/pkgbuilds
|
||||
#-- Packager: name/email of the person or organization building packages
|
||||
#PACKAGER="John Doe <john@doe.com>"
|
||||
|
||||
|
||||
@@ -14,7 +14,25 @@
|
||||
#CacheDir = @localstatedir@/cache/pacman/pkg/
|
||||
#LogFile = @localstatedir@/log/pacman.log
|
||||
HoldPkg = pacman glibc
|
||||
# If upgrades are available for these packages they will be asked for first
|
||||
SyncFirst = pacman
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#XferCommand = /usr/bin/curl %u > %o
|
||||
#CleanMethod = KeepInstalled
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options (all disabled by default)
|
||||
#NoPassiveFtp
|
||||
#UseSyslog
|
||||
#ShowSize
|
||||
#UseDelta
|
||||
#TotalDownload
|
||||
|
||||
#
|
||||
# REPOSITORIES
|
||||
|
||||
@@ -10,8 +10,12 @@ DEFS = -DLOCALEDIR=\"@localedir@\" @DEFS@
|
||||
AM_CFLAGS = -pedantic -D_GNU_SOURCE
|
||||
|
||||
if ENABLE_VISIBILITY_CC
|
||||
if DARWIN
|
||||
AM_CFLAGS += -fvisibility=hidden
|
||||
else
|
||||
AM_CFLAGS += -fvisibility=internal
|
||||
endif
|
||||
endif
|
||||
if ENABLE_GNU89_INLINE_CC
|
||||
AM_CFLAGS += -fgnu89-inline
|
||||
endif
|
||||
@@ -22,23 +26,26 @@ libalpm_la_SOURCES = \
|
||||
alpm_list.h alpm_list.c \
|
||||
backup.h backup.c \
|
||||
be_files.c \
|
||||
be_package.c \
|
||||
cache.h cache.c \
|
||||
conflict.h conflict.c \
|
||||
db.h db.c \
|
||||
delta.h delta.c \
|
||||
deps.h deps.c \
|
||||
error.h error.c \
|
||||
dload.h dload.c \
|
||||
error.c \
|
||||
graph.h \
|
||||
group.h group.c \
|
||||
handle.h handle.c \
|
||||
log.h log.c \
|
||||
md5.h md5.c \
|
||||
package.h package.c \
|
||||
remove.h remove.c \
|
||||
server.h server.c \
|
||||
sync.h sync.c \
|
||||
trans.h trans.c \
|
||||
util.h util.c
|
||||
|
||||
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
|
||||
libalpm_la_LIBADD = $(LTLIBINTL)
|
||||
|
||||
# vim:set ts=2 sw=2 noet:
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <inttypes.h> /* int64_t */
|
||||
#include <stdint.h> /* intmax_t */
|
||||
|
||||
/* libarchive */
|
||||
#include <archive.h>
|
||||
@@ -37,7 +39,6 @@
|
||||
#include "alpm_list.h"
|
||||
#include "trans.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "cache.h"
|
||||
#include "log.h"
|
||||
#include "backup.h"
|
||||
@@ -68,41 +69,25 @@ int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
|
||||
pkgname = alpm_pkg_get_name(pkg);
|
||||
pkgver = alpm_pkg_get_version(pkg);
|
||||
|
||||
if(trans->type != PM_TRANS_TYPE_UPGRADE) {
|
||||
/* only install this package if it is not already installed */
|
||||
if(_alpm_db_get_pkgfromcache(db, pkgname)) {
|
||||
pm_errno = PM_ERR_PKG_INSTALLED;
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
/* check if an older version of said package is already in transaction
|
||||
* packages. if so, replace it in the list */
|
||||
for(i = trans->packages; i; i = i->next) {
|
||||
pmpkg_t *pkg = i->data;
|
||||
if(strcmp(pkg->name, pkgname) == 0) {
|
||||
if(_alpm_versioncmp(pkg->version, pkgver) < 0) {
|
||||
pmpkg_t *newpkg;
|
||||
pmpkg_t *transpkg = i->data;
|
||||
if(strcmp(transpkg->name, pkgname) == 0) {
|
||||
if(alpm_pkg_vercmp(transpkg->version, pkgver) < 0) {
|
||||
_alpm_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list\n"),
|
||||
pkg->name, pkg->version, pkgver);
|
||||
if((newpkg = _alpm_pkg_load(name, 1)) == NULL) {
|
||||
/* pm_errno is already set by pkg_load() */
|
||||
goto error;
|
||||
}
|
||||
transpkg->name, transpkg->version, pkgver);
|
||||
_alpm_pkg_free(i->data);
|
||||
i->data = newpkg;
|
||||
i->data = pkg;
|
||||
} else {
|
||||
_alpm_log(PM_LOG_WARNING, _("newer version %s-%s is in the target list -- skipping\n"),
|
||||
pkg->name, pkg->version);
|
||||
_alpm_log(PM_LOG_WARNING, _("skipping %s-%s because newer version %s is in the target list\n"),
|
||||
pkgname, pkgver, transpkg->version);
|
||||
_alpm_pkg_free(pkg);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
|
||||
if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
|
||||
pkg->reason = PM_PKG_REASON_DEPEND;
|
||||
}
|
||||
|
||||
/* add the package to the transaction */
|
||||
trans->packages = alpm_list_add(trans->packages, pkg);
|
||||
|
||||
@@ -113,15 +98,6 @@ error:
|
||||
return(-1);
|
||||
}
|
||||
|
||||
|
||||
/* This is still messy. We have a lot of compare functions, and we should
|
||||
* try to consolidate them as much as we can (between add and sync) */
|
||||
/*static int deppkg_cmp(const void *p1, const void *p2)
|
||||
{
|
||||
return(strcmp(((pmdepmissing_t *)p1)->target,
|
||||
((pmdepmissing_t *)p2)->target));
|
||||
}*/
|
||||
|
||||
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
{
|
||||
alpm_list_t *lp = NULL;
|
||||
@@ -138,12 +114,13 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
|
||||
/* look for unsatisfied dependencies */
|
||||
_alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
|
||||
lp = alpm_checkdeps(db, trans->type == PM_TRANS_TYPE_UPGRADE, NULL, trans->packages);
|
||||
lp = alpm_checkdeps(db, 1, NULL, trans->packages);
|
||||
if(lp != NULL) {
|
||||
if(data) {
|
||||
*data = lp;
|
||||
} else {
|
||||
FREELIST(lp);
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(lp);
|
||||
}
|
||||
RET_ERR(PM_ERR_UNSATISFIED_DEPS, -1);
|
||||
}
|
||||
@@ -160,14 +137,15 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
if(data) {
|
||||
*data = lp;
|
||||
} else {
|
||||
FREELIST(lp);
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_conflict_free);
|
||||
alpm_list_free(lp);
|
||||
}
|
||||
if(inner) {
|
||||
_alpm_log(PM_LOG_ERROR, _("conflicting packages were found in the target list\n"));
|
||||
_alpm_log(PM_LOG_ERROR, _("you cannot install two conflicting packages at the same time\n"));
|
||||
}
|
||||
if(outer) {
|
||||
_alpm_log(PM_LOG_ERROR, _("replacing packages with -A and -U is not supported yet\n"));
|
||||
_alpm_log(PM_LOG_ERROR, _("replacing packages with -U is not supported yet\n"));
|
||||
_alpm_log(PM_LOG_ERROR, _("you can replace packages manually using -Rd and -U\n"));
|
||||
}
|
||||
RET_ERR(PM_ERR_CONFLICTING_DEPS, -1);
|
||||
@@ -175,7 +153,7 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
|
||||
/* re-order w.r.t. dependencies */
|
||||
_alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
|
||||
lp = _alpm_sortbydeps(trans->packages, PM_TRANS_TYPE_ADD);
|
||||
lp = _alpm_sortbydeps(trans->packages, 0);
|
||||
/* free the old alltargs */
|
||||
alpm_list_free(trans->packages);
|
||||
trans->packages = lp;
|
||||
@@ -193,7 +171,8 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
if(data) {
|
||||
*data = lp;
|
||||
} else {
|
||||
FREELIST(lp);
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_fileconflict_free);
|
||||
alpm_list_free(lp);
|
||||
}
|
||||
RET_ERR(PM_ERR_FILE_CONFLICTS, -1);
|
||||
}
|
||||
@@ -210,6 +189,9 @@ static int upgrade_remove(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans, pm
|
||||
* with the type PM_TRANS_TYPE_REMOVEUPGRADE. TODO: kill this weird
|
||||
* behavior. */
|
||||
pmtrans_t *tr = _alpm_trans_new();
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "removing old package first (%s-%s)\n",
|
||||
oldpkg->name, oldpkg->version);
|
||||
|
||||
@@ -243,6 +225,7 @@ static int upgrade_remove(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans, pm
|
||||
char *backup = _alpm_backup_file(b->data);
|
||||
/* safety check (fix the upgrade026 pactest) */
|
||||
if(!alpm_list_find_str(filelist, backup)) {
|
||||
FREE(backup);
|
||||
continue;
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
|
||||
@@ -289,11 +272,12 @@ static int extract_single_file(struct archive *archive,
|
||||
struct archive_entry *entry, pmpkg_t *newpkg, pmpkg_t *oldpkg,
|
||||
pmtrans_t *trans, pmdb_t *db)
|
||||
{
|
||||
const char *entryname; /* the name of the file in the archive */
|
||||
const char *entryname;
|
||||
mode_t entrymode;
|
||||
char filename[PATH_MAX]; /* the actual file we're extracting */
|
||||
int needbackup = 0, notouch = 0;
|
||||
char *hash_orig = NULL;
|
||||
char *entryname_orig = NULL;
|
||||
const int archive_flags = ARCHIVE_EXTRACT_OWNER |
|
||||
ARCHIVE_EXTRACT_PERM |
|
||||
ARCHIVE_EXTRACT_TIME;
|
||||
@@ -306,12 +290,12 @@ static int extract_single_file(struct archive *archive,
|
||||
|
||||
if(strcmp(entryname, ".INSTALL") == 0) {
|
||||
/* the install script goes inside the db */
|
||||
snprintf(filename, PATH_MAX, "%s/%s-%s/install", db->path,
|
||||
snprintf(filename, PATH_MAX, "%s%s-%s/install", db->path,
|
||||
newpkg->name, newpkg->version);
|
||||
archive_entry_set_mode(entry, 0644);
|
||||
} else if(strcmp(entryname, ".CHANGELOG") == 0) {
|
||||
/* the changelog goes inside the db */
|
||||
snprintf(filename, PATH_MAX, "%s/%s-%s/changelog", db->path,
|
||||
snprintf(filename, PATH_MAX, "%s%s-%s/changelog", db->path,
|
||||
newpkg->name, newpkg->version);
|
||||
archive_entry_set_mode(entry, 0644);
|
||||
} else if(*entryname == '.') {
|
||||
@@ -337,7 +321,8 @@ static int extract_single_file(struct archive *archive,
|
||||
|
||||
/* if a file is in the add skiplist we never extract it */
|
||||
if(alpm_list_find_str(trans->skip_add, filename)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "%s is in trans->skip_add, skipping extraction\n", entryname);
|
||||
_alpm_log(PM_LOG_DEBUG, "%s is in trans->skip_add, skipping extraction\n",
|
||||
entryname);
|
||||
archive_read_data_skip(archive);
|
||||
return(0);
|
||||
}
|
||||
@@ -436,7 +421,7 @@ static int extract_single_file(struct archive *archive,
|
||||
|
||||
/* if we force hash_orig to be non-NULL retroactive backup works */
|
||||
if(needbackup && !hash_orig) {
|
||||
hash_orig = strdup("");
|
||||
STRDUP(hash_orig, "", RET_ERR(PM_ERR_MEMORY, -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -444,35 +429,35 @@ static int extract_single_file(struct archive *archive,
|
||||
/* case 5,8: don't need to do anything special */
|
||||
}
|
||||
|
||||
/* we need access to the original entryname later after calls to
|
||||
* archive_entry_set_pathname(), so we need to dupe it and free() later */
|
||||
STRDUP(entryname_orig, entryname, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
|
||||
if(needbackup) {
|
||||
char *tempfile = NULL;
|
||||
char checkfile[PATH_MAX];
|
||||
char *hash_local = NULL, *hash_pkg = NULL;
|
||||
int fd;
|
||||
int ret;
|
||||
|
||||
/* extract the package's version to a temporary file and checksum it */
|
||||
tempfile = strdup("/tmp/alpm_XXXXXX");
|
||||
fd = mkstemp(tempfile);
|
||||
snprintf(checkfile, PATH_MAX, "%s.paccheck", filename);
|
||||
archive_entry_set_pathname(entry, checkfile);
|
||||
|
||||
archive_entry_set_pathname(entry, tempfile);
|
||||
|
||||
int ret = archive_read_extract(archive, entry, archive_flags);
|
||||
ret = archive_read_extract(archive, entry, archive_flags);
|
||||
if(ret == ARCHIVE_WARN) {
|
||||
/* operation succeeded but a non-critical error was encountered */
|
||||
_alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n",
|
||||
entryname, archive_error_string(archive));
|
||||
entryname_orig, archive_error_string(archive));
|
||||
} else if(ret != ARCHIVE_OK) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
|
||||
entryname, archive_error_string(archive));
|
||||
entryname_orig, archive_error_string(archive));
|
||||
alpm_logaction("error: could not extract %s (%s)\n",
|
||||
entryname, archive_error_string(archive));
|
||||
unlink(tempfile);
|
||||
entryname_orig, archive_error_string(archive));
|
||||
FREE(hash_orig);
|
||||
close(fd);
|
||||
FREE(entryname_orig);
|
||||
return(1);
|
||||
}
|
||||
|
||||
hash_local = alpm_get_md5sum(filename);
|
||||
hash_pkg = alpm_get_md5sum(tempfile);
|
||||
hash_pkg = alpm_get_md5sum(checkfile);
|
||||
|
||||
/* append the new md5 hash to it's respective entry
|
||||
* in newpkg's backup (it will be the new orginal) */
|
||||
@@ -480,16 +465,13 @@ static int extract_single_file(struct archive *archive,
|
||||
for(backups = alpm_pkg_get_backup(newpkg); backups;
|
||||
backups = alpm_list_next(backups)) {
|
||||
char *oldbackup = alpm_list_getdata(backups);
|
||||
if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
|
||||
if(!oldbackup || strcmp(oldbackup, entryname_orig) != 0) {
|
||||
continue;
|
||||
}
|
||||
char *backup = NULL;
|
||||
/* length is tab char, null byte and MD5 (32 char) */
|
||||
int backup_len = strlen(oldbackup) + 34;
|
||||
backup = malloc(backup_len);
|
||||
if(!backup) {
|
||||
RET_ERR(PM_ERR_MEMORY, -1);
|
||||
}
|
||||
size_t backup_len = strlen(oldbackup) + 34;
|
||||
MALLOC(backup, backup_len, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
|
||||
sprintf(backup, "%s\t%s", oldbackup, hash_pkg);
|
||||
backup[backup_len-1] = '\0';
|
||||
@@ -497,7 +479,7 @@ static int extract_single_file(struct archive *archive,
|
||||
backups->data = backup;
|
||||
}
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "checking hashes for %s\n", entryname);
|
||||
_alpm_log(PM_LOG_DEBUG, "checking hashes for %s\n", entryname_orig);
|
||||
_alpm_log(PM_LOG_DEBUG, "current: %s\n", hash_local);
|
||||
_alpm_log(PM_LOG_DEBUG, "new: %s\n", hash_pkg);
|
||||
_alpm_log(PM_LOG_DEBUG, "original: %s\n", hash_orig);
|
||||
@@ -511,19 +493,20 @@ static int extract_single_file(struct archive *archive,
|
||||
|
||||
/* move the existing file to the "pacorig" */
|
||||
if(rename(filename, newpath)) {
|
||||
archive_entry_set_pathname(entry, filename);
|
||||
_alpm_log(PM_LOG_ERROR, _("could not rename %s (%s)\n"), filename, strerror(errno));
|
||||
alpm_logaction("error: could not rename %s (%s)\n", filename, strerror(errno));
|
||||
_alpm_log(PM_LOG_ERROR, _("could not rename %s to %s (%s)\n"),
|
||||
filename, newpath, strerror(errno));
|
||||
alpm_logaction("error: could not rename %s to %s (%s)\n",
|
||||
filename, newpath, strerror(errno));
|
||||
errors++;
|
||||
} else {
|
||||
/* copy the tempfile we extracted to the real path */
|
||||
if(_alpm_copyfile(tempfile, filename)) {
|
||||
archive_entry_set_pathname(entry, filename);
|
||||
_alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)\n"), filename, strerror(errno));
|
||||
alpm_logaction("error: could not copy tempfile to %s (%s)\n", filename, strerror(errno));
|
||||
/* rename the file we extracted to the real name */
|
||||
if(rename(checkfile, filename)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not rename %s to %s (%s)\n"),
|
||||
checkfile, filename, strerror(errno));
|
||||
alpm_logaction("error: could not rename %s to %s (%s)\n",
|
||||
checkfile, filename, strerror(errno));
|
||||
errors++;
|
||||
} else {
|
||||
archive_entry_set_pathname(entry, filename);
|
||||
_alpm_log(PM_LOG_WARNING, _("%s saved as %s\n"), filename, newpath);
|
||||
alpm_logaction("warning: %s saved as %s\n", filename, newpath);
|
||||
}
|
||||
@@ -536,38 +519,48 @@ static int extract_single_file(struct archive *archive,
|
||||
/* installed file has NOT been changed by user */
|
||||
if(strcmp(hash_orig, hash_pkg) != 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "action: installing new file: %s\n",
|
||||
entryname);
|
||||
entryname_orig);
|
||||
|
||||
if(_alpm_copyfile(tempfile, filename)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not copy tempfile to %s (%s)\n"), filename, strerror(errno));
|
||||
if(rename(checkfile, filename)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not rename %s to %s (%s)\n"),
|
||||
checkfile, filename, strerror(errno));
|
||||
alpm_logaction("error: could not rename %s to %s (%s)\n",
|
||||
checkfile, filename, strerror(errno));
|
||||
errors++;
|
||||
}
|
||||
archive_entry_set_pathname(entry, filename);
|
||||
} else {
|
||||
/* there's no sense in installing the same file twice, install
|
||||
* ONLY is the original and package hashes differ */
|
||||
_alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
|
||||
unlink(checkfile);
|
||||
}
|
||||
} else if(strcmp(hash_orig, hash_pkg) == 0) {
|
||||
/* originally installed file and new file are the same - this
|
||||
* implies the case above failed - i.e. the file was changed by a
|
||||
* user */
|
||||
_alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
|
||||
unlink(checkfile);
|
||||
} else if(strcmp(hash_local, hash_pkg) == 0) {
|
||||
/* this would be magical. The above two cases failed, but the
|
||||
* user changes just so happened to make the new file exactly the
|
||||
* same as the one in the package... skip it */
|
||||
_alpm_log(PM_LOG_DEBUG, "action: leaving existing file in place\n");
|
||||
unlink(checkfile);
|
||||
} else {
|
||||
char newpath[PATH_MAX];
|
||||
_alpm_log(PM_LOG_DEBUG, "action: keeping current file and installing new one with .pacnew ending\n");
|
||||
_alpm_log(PM_LOG_DEBUG, "action: keeping current file and installing"
|
||||
" new one with .pacnew ending\n");
|
||||
snprintf(newpath, PATH_MAX, "%s.pacnew", filename);
|
||||
if(_alpm_copyfile(tempfile, newpath)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not install %s as %s: %s\n"), filename, newpath, strerror(errno));
|
||||
alpm_logaction("error: could not install %s as %s: %s\n", filename, newpath, strerror(errno));
|
||||
if(rename(checkfile, newpath)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not install %s as %s (%s)\n"),
|
||||
filename, newpath, strerror(errno));
|
||||
alpm_logaction("error: could not install %s as %s (%s)\n",
|
||||
filename, newpath, strerror(errno));
|
||||
} else {
|
||||
_alpm_log(PM_LOG_WARNING, _("%s installed as %s\n"), filename, newpath);
|
||||
alpm_logaction("warning: %s installed as %s\n", filename, newpath);
|
||||
_alpm_log(PM_LOG_WARNING, _("%s installed as %s\n"),
|
||||
filename, newpath);
|
||||
alpm_logaction("warning: %s installed as %s\n",
|
||||
filename, newpath);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -575,10 +568,9 @@ static int extract_single_file(struct archive *archive,
|
||||
FREE(hash_local);
|
||||
FREE(hash_pkg);
|
||||
FREE(hash_orig);
|
||||
unlink(tempfile);
|
||||
FREE(tempfile);
|
||||
close(fd);
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
/* we didn't need a backup */
|
||||
if(notouch) {
|
||||
/* change the path to a .pacnew extension */
|
||||
@@ -599,16 +591,17 @@ static int extract_single_file(struct archive *archive,
|
||||
|
||||
archive_entry_set_pathname(entry, filename);
|
||||
|
||||
int ret = archive_read_extract(archive, entry, archive_flags);
|
||||
ret = archive_read_extract(archive, entry, archive_flags);
|
||||
if(ret == ARCHIVE_WARN) {
|
||||
/* operation succeeded but a non-critical error was encountered */
|
||||
_alpm_log(PM_LOG_DEBUG, "warning extracting %s (%s)\n",
|
||||
entryname, archive_error_string(archive));
|
||||
entryname_orig, archive_error_string(archive));
|
||||
} else if(ret != ARCHIVE_OK) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not extract %s (%s)\n"),
|
||||
entryname, archive_error_string(archive));
|
||||
entryname_orig, archive_error_string(archive));
|
||||
alpm_logaction("error: could not extract %s (%s)\n",
|
||||
entryname, archive_error_string(archive));
|
||||
entryname_orig, archive_error_string(archive));
|
||||
FREE(entryname_orig);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -618,18 +611,15 @@ static int extract_single_file(struct archive *archive,
|
||||
char *backup = NULL, *hash = NULL;
|
||||
char *oldbackup = alpm_list_getdata(b);
|
||||
/* length is tab char, null byte and MD5 (32 char) */
|
||||
int backup_len = strlen(oldbackup) + 34;
|
||||
size_t backup_len = strlen(oldbackup) + 34;
|
||||
|
||||
if(!oldbackup || strcmp(oldbackup, entryname) != 0) {
|
||||
if(!oldbackup || strcmp(oldbackup, entryname_orig) != 0) {
|
||||
continue;
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "appending backup entry for %s\n", filename);
|
||||
|
||||
hash = alpm_get_md5sum(filename);
|
||||
backup = malloc(backup_len);
|
||||
if(!backup) {
|
||||
RET_ERR(PM_ERR_MEMORY, -1);
|
||||
}
|
||||
MALLOC(backup, backup_len, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
|
||||
sprintf(backup, "%s\t%s", oldbackup, hash);
|
||||
backup[backup_len-1] = '\0';
|
||||
@@ -638,6 +628,7 @@ static int extract_single_file(struct archive *archive,
|
||||
b->data = backup;
|
||||
}
|
||||
}
|
||||
FREE(entryname_orig);
|
||||
return(errors);
|
||||
}
|
||||
|
||||
@@ -645,14 +636,12 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
pmtrans_t *trans, pmdb_t *db)
|
||||
{
|
||||
int i, ret = 0, errors = 0;
|
||||
struct archive *archive;
|
||||
struct archive_entry *entry;
|
||||
char cwd[PATH_MAX] = "";
|
||||
char scriptlet[PATH_MAX+1];
|
||||
int is_upgrade = 0;
|
||||
double percent = 0.0;
|
||||
pmpkg_t *oldpkg = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
|
||||
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
|
||||
|
||||
@@ -667,12 +656,11 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
|
||||
/* we'll need to save some record for backup checks later */
|
||||
oldpkg = _alpm_pkg_dup(local);
|
||||
/* copy over the install reason (unless alldeps is set) */
|
||||
if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
|
||||
newpkg->reason = PM_PKG_REASON_DEPEND;
|
||||
} else {
|
||||
/* make sure all infos are loaded because the database entry
|
||||
* will be removed soon */
|
||||
_alpm_db_read(oldpkg->origin_data.db, oldpkg, INFRQ_ALL);
|
||||
/* copy over the install reason */
|
||||
newpkg->reason = alpm_pkg_get_reason(local);
|
||||
}
|
||||
|
||||
/* pre_upgrade scriptlet */
|
||||
if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
|
||||
@@ -693,27 +681,43 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
}
|
||||
}
|
||||
|
||||
/* we override any pre-set reason if we have alldeps or allexplicit set */
|
||||
if(trans->flags & PM_TRANS_FLAG_ALLDEPS) {
|
||||
newpkg->reason = PM_PKG_REASON_DEPEND;
|
||||
} else if(trans->flags & PM_TRANS_FLAG_ALLEXPLICIT) {
|
||||
newpkg->reason = PM_PKG_REASON_EXPLICIT;
|
||||
}
|
||||
|
||||
if(oldpkg) {
|
||||
/* set up fake remove transaction */
|
||||
int ret = upgrade_remove(oldpkg, newpkg, trans, db);
|
||||
if(ret != 0) {
|
||||
return(ret);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
|
||||
struct archive *archive;
|
||||
struct archive_entry *entry;
|
||||
char cwd[PATH_MAX] = "";
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "extracting files\n");
|
||||
|
||||
if ((archive = archive_read_new()) == NULL) {
|
||||
RET_ERR(PM_ERR_LIBARCHIVE_ERROR, -1);
|
||||
pm_errno = PM_ERR_LIBARCHIVE;
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
archive_read_support_compression_all(archive);
|
||||
archive_read_support_format_all(archive);
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "archive: %s\n", newpkg->origin_data.file);
|
||||
if(archive_read_open_filename(archive, newpkg->origin_data.file,
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
|
||||
RET_ERR(PM_ERR_PKG_OPEN, -1);
|
||||
pm_errno = PM_ERR_PKG_OPEN;
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* save the cwd so we can restore it later */
|
||||
@@ -735,17 +739,22 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
}
|
||||
|
||||
for(i = 0; archive_read_next_header(archive, &entry) == ARCHIVE_OK; i++) {
|
||||
double percent;
|
||||
|
||||
if(newpkg->size != 0) {
|
||||
/* Using compressed size for calculations here, as newpkg->isize is not
|
||||
* exact when it comes to comparing to the ACTUAL uncompressed size
|
||||
* (missing metadata sizes) */
|
||||
unsigned long pos = archive_position_compressed(archive);
|
||||
int64_t pos = archive_position_compressed(archive);
|
||||
percent = (double)pos / (double)newpkg->size;
|
||||
_alpm_log(PM_LOG_DEBUG, "decompression progress: %f%% (%ld / %ld)\n",
|
||||
percent*100.0, pos, newpkg->size);
|
||||
_alpm_log(PM_LOG_DEBUG, "decompression progress: "
|
||||
"%f%% (%"PRId64" / %jd)\n",
|
||||
percent*100.0, pos, (intmax_t)newpkg->size);
|
||||
if(percent >= 1.0) {
|
||||
percent = 1.0;
|
||||
}
|
||||
} else {
|
||||
percent = 0.0;
|
||||
}
|
||||
|
||||
if(is_upgrade) {
|
||||
@@ -770,7 +779,7 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
}
|
||||
|
||||
if(errors) {
|
||||
ret = 1;
|
||||
ret = -1;
|
||||
if(is_upgrade) {
|
||||
_alpm_log(PM_LOG_ERROR, _("problem occurred while upgrading %s\n"),
|
||||
newpkg->name);
|
||||
@@ -796,7 +805,9 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
|
||||
alpm_logaction("error: could not update database entry %s-%s\n",
|
||||
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
|
||||
RET_ERR(PM_ERR_DB_WRITE, -1);
|
||||
pm_errno = PM_ERR_DB_WRITE;
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if(_alpm_db_add_pkgincache(db, newpkg) == -1) {
|
||||
@@ -811,7 +822,6 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
PROGRESS(trans, PM_TRANS_PROGRESS_ADD_START,
|
||||
alpm_pkg_get_name(newpkg), 100, pkg_count, pkg_current);
|
||||
}
|
||||
EVENT(trans, PM_TRANS_EVT_EXTRACT_DONE, NULL, NULL);
|
||||
|
||||
/* run the post-install script if it exists */
|
||||
if(alpm_pkg_has_scriptlet(newpkg)
|
||||
@@ -832,9 +842,9 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
EVENT(trans, PM_TRANS_EVT_ADD_DONE, newpkg, oldpkg);
|
||||
}
|
||||
|
||||
cleanup:
|
||||
_alpm_pkg_free(oldpkg);
|
||||
|
||||
return(0);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
|
||||
@@ -851,7 +861,7 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
|
||||
return(0);
|
||||
}
|
||||
|
||||
pkg_count = alpm_list_count(trans->targets);
|
||||
pkg_count = alpm_list_count(trans->packages);
|
||||
pkg_current = 1;
|
||||
|
||||
/* loop through our package list adding/upgrading one at a time */
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
/* libalpm */
|
||||
#include "alpm.h"
|
||||
#include "alpm_list.h"
|
||||
#include "error.h"
|
||||
#include "handle.h"
|
||||
#include "util.h"
|
||||
|
||||
@@ -81,4 +80,9 @@ int SYMEXPORT alpm_release(void)
|
||||
* @brief Various libalpm functions
|
||||
*/
|
||||
|
||||
/* Get the version of library */
|
||||
const char SYMEXPORT *alpm_version(void) {
|
||||
return(LIB_VERSION);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* alpm.h
|
||||
*
|
||||
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
@@ -26,6 +26,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <sys/types.h> /* for off_t */
|
||||
#include <time.h> /* for time_t */
|
||||
#include <stdarg.h> /* for va_list */
|
||||
|
||||
@@ -45,14 +46,12 @@ typedef struct __pmdb_t pmdb_t;
|
||||
typedef struct __pmpkg_t pmpkg_t;
|
||||
typedef struct __pmdelta_t pmdelta_t;
|
||||
typedef struct __pmgrp_t pmgrp_t;
|
||||
typedef struct __pmserver_t pmserver_t;
|
||||
typedef struct __pmtrans_t pmtrans_t;
|
||||
typedef struct __pmsyncpkg_t pmsyncpkg_t;
|
||||
typedef struct __pmdepend_t pmdepend_t;
|
||||
typedef struct __pmdepmissing_t pmdepmissing_t;
|
||||
typedef struct __pmconflict_t pmconflict_t;
|
||||
typedef struct __pmfileconflict_t pmfileconflict_t;
|
||||
typedef struct __pmgraph_t pmgraph_t;
|
||||
|
||||
/*
|
||||
* Library
|
||||
@@ -60,6 +59,7 @@ typedef struct __pmgraph_t pmgraph_t;
|
||||
|
||||
int alpm_initialize(void);
|
||||
int alpm_release(void);
|
||||
const char *alpm_version(void);
|
||||
|
||||
/*
|
||||
* Logging facilities
|
||||
@@ -80,21 +80,23 @@ int alpm_logaction(char *fmt, ...);
|
||||
* Downloading
|
||||
*/
|
||||
|
||||
typedef void (*alpm_cb_download)(const char *filename, int file_xfered,
|
||||
int file_total, int list_xfered, int list_total);
|
||||
typedef void (*alpm_cb_download)(const char *filename,
|
||||
off_t xfered, off_t total);
|
||||
typedef void (*alpm_cb_totaldl)(off_t total);
|
||||
|
||||
/*
|
||||
* Options
|
||||
*/
|
||||
|
||||
#define PM_DLFNM_LEN 22
|
||||
|
||||
alpm_cb_log alpm_option_get_logcb();
|
||||
void alpm_option_set_logcb(alpm_cb_log cb);
|
||||
|
||||
alpm_cb_download alpm_option_get_dlcb();
|
||||
void alpm_option_set_dlcb(alpm_cb_download cb);
|
||||
|
||||
alpm_cb_totaldl alpm_option_get_totaldlcb();
|
||||
void alpm_option_set_totaldlcb(alpm_cb_totaldl cb);
|
||||
|
||||
const char *alpm_option_get_root();
|
||||
int alpm_option_set_root(const char *root);
|
||||
|
||||
@@ -169,7 +171,6 @@ int alpm_db_update(int level, pmdb_t *db);
|
||||
|
||||
pmpkg_t *alpm_db_get_pkg(pmdb_t *db, const char *name);
|
||||
alpm_list_t *alpm_db_getpkgcache(pmdb_t *db);
|
||||
alpm_list_t *alpm_db_whatprovides(pmdb_t *db, const char *name);
|
||||
|
||||
pmgrp_t *alpm_db_readgrp(pmdb_t *db, const char *name);
|
||||
alpm_list_t *alpm_db_getgrpcache(pmdb_t *db);
|
||||
@@ -191,7 +192,7 @@ int alpm_pkg_load(const char *filename, unsigned short full, pmpkg_t **pkg);
|
||||
int alpm_pkg_free(pmpkg_t *pkg);
|
||||
int alpm_pkg_checkmd5sum(pmpkg_t *pkg);
|
||||
char *alpm_fetch_pkgurl(const char *url);
|
||||
int alpm_pkg_vercmp(const char *ver1, const char *ver2);
|
||||
int alpm_pkg_vercmp(const char *a, const char *b);
|
||||
alpm_list_t *alpm_pkg_compute_requiredby(pmpkg_t *pkg);
|
||||
|
||||
const char *alpm_pkg_get_filename(pmpkg_t *pkg);
|
||||
@@ -204,8 +205,8 @@ time_t alpm_pkg_get_installdate(pmpkg_t *pkg);
|
||||
const char *alpm_pkg_get_packager(pmpkg_t *pkg);
|
||||
const char *alpm_pkg_get_md5sum(pmpkg_t *pkg);
|
||||
const char *alpm_pkg_get_arch(pmpkg_t *pkg);
|
||||
unsigned long alpm_pkg_get_size(pmpkg_t *pkg);
|
||||
unsigned long alpm_pkg_get_isize(pmpkg_t *pkg);
|
||||
off_t alpm_pkg_get_size(pmpkg_t *pkg);
|
||||
off_t alpm_pkg_get_isize(pmpkg_t *pkg);
|
||||
pmpkgreason_t alpm_pkg_get_reason(pmpkg_t *pkg);
|
||||
alpm_list_t *alpm_pkg_get_licenses(pmpkg_t *pkg);
|
||||
alpm_list_t *alpm_pkg_get_groups(pmpkg_t *pkg);
|
||||
@@ -223,39 +224,35 @@ size_t alpm_pkg_changelog_read(void *ptr, size_t size,
|
||||
/*int alpm_pkg_changelog_feof(const pmpkg_t *pkg, void *fp);*/
|
||||
int alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp);
|
||||
unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg);
|
||||
unsigned short alpm_pkg_has_force(pmpkg_t *pkg);
|
||||
|
||||
unsigned long alpm_pkg_download_size(pmpkg_t *newpkg, pmdb_t *db_local);
|
||||
off_t alpm_pkg_download_size(pmpkg_t *newpkg);
|
||||
|
||||
/*
|
||||
* Deltas
|
||||
*/
|
||||
|
||||
const char *alpm_delta_get_from(pmdelta_t *delta);
|
||||
const char *alpm_delta_get_from_md5sum(pmdelta_t *delta);
|
||||
const char *alpm_delta_get_to(pmdelta_t *delta);
|
||||
unsigned long alpm_delta_get_size(pmdelta_t *delta);
|
||||
const char *alpm_delta_get_to_md5sum(pmdelta_t *delta);
|
||||
const char *alpm_delta_get_filename(pmdelta_t *delta);
|
||||
const char *alpm_delta_get_md5sum(pmdelta_t *delta);
|
||||
off_t alpm_delta_get_size(pmdelta_t *delta);
|
||||
|
||||
/*
|
||||
* Groups
|
||||
*/
|
||||
const char *alpm_grp_get_name(const pmgrp_t *grp);
|
||||
const alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp);
|
||||
alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp);
|
||||
|
||||
/*
|
||||
* Sync
|
||||
*/
|
||||
|
||||
/* Types */
|
||||
typedef enum _pmsynctype_t {
|
||||
PM_SYNC_TYPE_REPLACE = 1,
|
||||
PM_SYNC_TYPE_UPGRADE,
|
||||
PM_SYNC_TYPE_DEPEND
|
||||
} pmsynctype_t;
|
||||
|
||||
pmsynctype_t alpm_sync_get_type(const pmsyncpkg_t *sync);
|
||||
pmpkg_t *alpm_sync_get_pkg(const pmsyncpkg_t *sync);
|
||||
void *alpm_sync_get_data(const pmsyncpkg_t *sync);
|
||||
alpm_list_t *alpm_sync_get_removes(const pmsyncpkg_t *sync);
|
||||
pmpkg_t *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync);
|
||||
int alpm_sync_sysupgrade(pmdb_t *db_local,
|
||||
alpm_list_t *dbs_sync, alpm_list_t **syncpkgs);
|
||||
|
||||
@@ -265,10 +262,9 @@ int alpm_sync_sysupgrade(pmdb_t *db_local,
|
||||
|
||||
/* Types */
|
||||
typedef enum _pmtranstype_t {
|
||||
PM_TRANS_TYPE_ADD = 1,
|
||||
PM_TRANS_TYPE_UPGRADE = 1,
|
||||
PM_TRANS_TYPE_REMOVE,
|
||||
PM_TRANS_TYPE_REMOVEUPGRADE,
|
||||
PM_TRANS_TYPE_UPGRADE,
|
||||
PM_TRANS_TYPE_SYNC
|
||||
} pmtranstype_t;
|
||||
|
||||
@@ -281,45 +277,103 @@ typedef enum _pmtransflag_t {
|
||||
PM_TRANS_FLAG_CASCADE = 0x10,
|
||||
PM_TRANS_FLAG_RECURSE = 0x20,
|
||||
PM_TRANS_FLAG_DBONLY = 0x40,
|
||||
PM_TRANS_FLAG_DEPENDSONLY = 0x80,
|
||||
/* 0x80 flag can go here */
|
||||
PM_TRANS_FLAG_ALLDEPS = 0x100,
|
||||
PM_TRANS_FLAG_DOWNLOADONLY = 0x200,
|
||||
PM_TRANS_FLAG_NOSCRIPTLET = 0x400,
|
||||
PM_TRANS_FLAG_NOCONFLICTS = 0x800,
|
||||
PM_TRANS_FLAG_PRINTURIS = 0x1000,
|
||||
PM_TRANS_FLAG_NEEDED = 0x2000
|
||||
PM_TRANS_FLAG_NEEDED = 0x2000,
|
||||
PM_TRANS_FLAG_ALLEXPLICIT = 0x4000,
|
||||
PM_TRANS_FLAG_UNNEEDED = 0x8000,
|
||||
PM_TRANS_FLAG_RECURSEALL = 0x10000
|
||||
} pmtransflag_t;
|
||||
|
||||
/* Transaction Events */
|
||||
/**
|
||||
* @addtogroup alpm_trans
|
||||
* @{
|
||||
*/
|
||||
/**
|
||||
* @brief Transaction events.
|
||||
* NULL parameters are passed to in all events unless specified otherwise.
|
||||
*/
|
||||
typedef enum _pmtransevt_t {
|
||||
/** Dependencies will be computed for a package. */
|
||||
PM_TRANS_EVT_CHECKDEPS_START = 1,
|
||||
/** Dependencies were computed for a package. */
|
||||
PM_TRANS_EVT_CHECKDEPS_DONE,
|
||||
/** File conflicts will be computed for a package. */
|
||||
PM_TRANS_EVT_FILECONFLICTS_START,
|
||||
/** File conflicts were computed for a package. */
|
||||
PM_TRANS_EVT_FILECONFLICTS_DONE,
|
||||
/** Dependencies will be resolved for target package. */
|
||||
PM_TRANS_EVT_RESOLVEDEPS_START,
|
||||
/** Dependencies were resolved for target package. */
|
||||
PM_TRANS_EVT_RESOLVEDEPS_DONE,
|
||||
/** Inter-conflicts will be checked for target package. */
|
||||
PM_TRANS_EVT_INTERCONFLICTS_START,
|
||||
/** Inter-conflicts were checked for target package. */
|
||||
PM_TRANS_EVT_INTERCONFLICTS_DONE,
|
||||
/** Package will be installed.
|
||||
* A pointer to the target package is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_ADD_START,
|
||||
/** Package was installed.
|
||||
* A pointer to the new package is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_ADD_DONE,
|
||||
/** Package will be removed.
|
||||
* A pointer to the target package is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_REMOVE_START,
|
||||
/** Package was removed.
|
||||
* A pointer to the removed package is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_REMOVE_DONE,
|
||||
/** Package will be upgraded.
|
||||
* A pointer to the upgraded package is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_UPGRADE_START,
|
||||
/** Package was upgraded.
|
||||
* A pointer to the new package, and a pointer to the old package is passed
|
||||
* to the callback, respectively.
|
||||
*/
|
||||
PM_TRANS_EVT_UPGRADE_DONE,
|
||||
PM_TRANS_EVT_EXTRACT_DONE,
|
||||
/** Target package's integrity will be checked. */
|
||||
PM_TRANS_EVT_INTEGRITY_START,
|
||||
/** Target package's integrity was checked. */
|
||||
PM_TRANS_EVT_INTEGRITY_DONE,
|
||||
/** Target deltas's integrity will be checked. */
|
||||
PM_TRANS_EVT_DELTA_INTEGRITY_START,
|
||||
/** Target delta's integrity was checked. */
|
||||
PM_TRANS_EVT_DELTA_INTEGRITY_DONE,
|
||||
/** Deltas will be applied to packages. */
|
||||
PM_TRANS_EVT_DELTA_PATCHES_START,
|
||||
/** Deltas were applied to packages. */
|
||||
PM_TRANS_EVT_DELTA_PATCHES_DONE,
|
||||
/** Delta patch will be applied to target package.
|
||||
* The filename of the package and the filename of the patch is passed to the
|
||||
* callback.
|
||||
*/
|
||||
PM_TRANS_EVT_DELTA_PATCH_START,
|
||||
/** Delta patch was applied to target package. */
|
||||
PM_TRANS_EVT_DELTA_PATCH_DONE,
|
||||
/** Delta patch failed to apply to target package. */
|
||||
PM_TRANS_EVT_DELTA_PATCH_FAILED,
|
||||
/** Scriptlet has printed information.
|
||||
* A line of text is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_SCRIPTLET_INFO,
|
||||
/** Print URI.
|
||||
* The database's URI and the package's filename are passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_PRINTURI,
|
||||
/** Files will be downloaded from a repository.
|
||||
* The repository's tree name is passed to the callback.
|
||||
*/
|
||||
PM_TRANS_EVT_RETRIEVE_START,
|
||||
} pmtransevt_t;
|
||||
/*@}*/
|
||||
|
||||
/* Transaction Conversations (ie, questions) */
|
||||
typedef enum _pmtransconv_t {
|
||||
@@ -352,7 +406,6 @@ typedef void (*alpm_trans_cb_progress)(pmtransprog_t, const char *, int, int, in
|
||||
|
||||
pmtranstype_t alpm_trans_get_type();
|
||||
unsigned int alpm_trans_get_flags();
|
||||
alpm_list_t * alpm_trans_get_targets();
|
||||
alpm_list_t * alpm_trans_get_pkgs();
|
||||
int alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
|
||||
alpm_trans_cb_event cb_event, alpm_trans_cb_conv conv,
|
||||
@@ -377,13 +430,16 @@ typedef enum _pmdepmod_t {
|
||||
PM_DEP_MOD_LT
|
||||
} pmdepmod_t;
|
||||
|
||||
pmdepend_t *alpm_splitdep(const char *depstring);
|
||||
int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
|
||||
alpm_list_t *alpm_checkdeps(pmdb_t *db, int reversedeps,
|
||||
alpm_list_t *remove, alpm_list_t *upgrade);
|
||||
alpm_list_t *alpm_deptest(pmdb_t *db, alpm_list_t *targets);
|
||||
|
||||
const char *alpm_miss_get_target(const pmdepmissing_t *miss);
|
||||
pmdepend_t *alpm_miss_get_dep(pmdepmissing_t *miss);
|
||||
const char *alpm_miss_get_causingpkg(const pmdepmissing_t *miss);
|
||||
|
||||
alpm_list_t *alpm_checkdbconflicts(pmdb_t *db_local);
|
||||
|
||||
const char *alpm_conflict_get_package1(pmconflict_t *conflict);
|
||||
const char *alpm_conflict_get_package2(pmconflict_t *conflict);
|
||||
@@ -438,12 +494,6 @@ enum _pmerrno_t {
|
||||
PM_ERR_DB_REMOVE,
|
||||
/* Servers */
|
||||
PM_ERR_SERVER_BAD_URL,
|
||||
/* Configuration */
|
||||
PM_ERR_OPT_LOGFILE,
|
||||
PM_ERR_OPT_DBPATH,
|
||||
PM_ERR_OPT_LOCALDB,
|
||||
PM_ERR_OPT_SYNCDB,
|
||||
PM_ERR_OPT_USESYSLOG,
|
||||
/* Transactions */
|
||||
PM_ERR_TRANS_NOT_NULL,
|
||||
PM_ERR_TRANS_NULL,
|
||||
@@ -459,14 +509,12 @@ enum _pmerrno_t {
|
||||
PM_ERR_PKG_INVALID,
|
||||
PM_ERR_PKG_OPEN,
|
||||
PM_ERR_PKG_LOAD,
|
||||
PM_ERR_PKG_INSTALLED,
|
||||
PM_ERR_PKG_CANT_FRESH,
|
||||
PM_ERR_PKG_CANT_REMOVE,
|
||||
PM_ERR_PKG_INVALID_NAME,
|
||||
PM_ERR_PKG_CORRUPTED,
|
||||
PM_ERR_PKG_REPO_NOT_FOUND,
|
||||
/* Deltas */
|
||||
PM_ERR_DLT_CORRUPTED,
|
||||
PM_ERR_DLT_INVALID,
|
||||
PM_ERR_DLT_PATCHFAILED,
|
||||
/* Groups */
|
||||
PM_ERR_GRP_NOT_FOUND,
|
||||
@@ -477,14 +525,14 @@ enum _pmerrno_t {
|
||||
/* Misc */
|
||||
PM_ERR_USER_ABORT,
|
||||
PM_ERR_INTERNAL_ERROR,
|
||||
PM_ERR_LIBARCHIVE_ERROR,
|
||||
PM_ERR_DB_SYNC,
|
||||
PM_ERR_RETRIEVE,
|
||||
PM_ERR_PKG_HOLD,
|
||||
PM_ERR_INVALID_REGEX,
|
||||
/* Downloading */
|
||||
PM_ERR_CONNECT_FAILED,
|
||||
PM_ERR_FORK_FAILED
|
||||
/* External library errors */
|
||||
PM_ERR_LIBARCHIVE,
|
||||
PM_ERR_LIBDOWNLOAD,
|
||||
PM_ERR_EXTERNAL_DOWNLOAD
|
||||
};
|
||||
|
||||
extern enum _pmerrno_t pm_errno;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* alpm_list.c
|
||||
*
|
||||
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -17,15 +17,16 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* libalpm */
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
|
||||
/* check exported library symbols with: nm -C -D <lib> */
|
||||
#define SYMEXPORT __attribute__((visibility("default")))
|
||||
#define SYMHIDDEN __attribute__((visibility("internal")))
|
||||
|
||||
/**
|
||||
* @addtogroup alpm_list List Functions
|
||||
@@ -39,25 +40,6 @@
|
||||
|
||||
/* Allocation */
|
||||
|
||||
/**
|
||||
* @brief Allocate a new alpm_list_t.
|
||||
*
|
||||
* @return a new alpm_list_t item, or NULL on failure
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_list_new()
|
||||
{
|
||||
alpm_list_t *list = NULL;
|
||||
|
||||
list = malloc(sizeof(alpm_list_t));
|
||||
if(list) {
|
||||
list->data = NULL;
|
||||
list->prev = list; /* maintain a back reference to the tail pointer */
|
||||
list->next = NULL;
|
||||
}
|
||||
|
||||
return(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Free a list, but not the contained data.
|
||||
*
|
||||
@@ -107,30 +89,26 @@ alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
|
||||
{
|
||||
alpm_list_t *ptr, *lp;
|
||||
|
||||
ptr = list;
|
||||
ptr = calloc(1, sizeof(alpm_list_t));
|
||||
if(ptr == NULL) {
|
||||
ptr = alpm_list_new();
|
||||
if(ptr == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
return(list);
|
||||
}
|
||||
|
||||
lp = alpm_list_last(ptr);
|
||||
if(lp == ptr && lp->data == NULL) {
|
||||
/* nada */
|
||||
} else {
|
||||
lp->next = alpm_list_new();
|
||||
if(lp->next == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
lp->next->prev = lp;
|
||||
lp = lp->next;
|
||||
list->prev = lp;
|
||||
ptr->data = data;
|
||||
ptr->next = NULL;
|
||||
|
||||
/* Special case: the input list is empty */
|
||||
if(list == NULL) {
|
||||
ptr->prev = ptr;
|
||||
return(ptr);
|
||||
}
|
||||
|
||||
lp->data = data;
|
||||
lp = alpm_list_last(list);
|
||||
lp->next = ptr;
|
||||
ptr->prev = lp;
|
||||
list->prev = ptr;
|
||||
|
||||
return(ptr);
|
||||
return(list);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,12 +122,15 @@ alpm_list_t SYMEXPORT *alpm_list_add(alpm_list_t *list, void *data)
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_list_fn_cmp fn)
|
||||
{
|
||||
if(!fn) {
|
||||
return alpm_list_add(list, data);
|
||||
if(!fn || !list) {
|
||||
return(alpm_list_add(list, data));
|
||||
} else {
|
||||
alpm_list_t *add = NULL, *prev = NULL, *next = list;
|
||||
|
||||
add = alpm_list_new();
|
||||
add = calloc(1, sizeof(alpm_list_t));
|
||||
if(add == NULL) {
|
||||
return(list);
|
||||
}
|
||||
add->data = data;
|
||||
|
||||
/* Find insertion point. */
|
||||
@@ -159,26 +140,25 @@ alpm_list_t SYMEXPORT *alpm_list_add_sorted(alpm_list_t *list, void *data, alpm_
|
||||
next = next->next;
|
||||
}
|
||||
|
||||
/* Insert node before insertion point. */
|
||||
add->prev = prev;
|
||||
add->next = next;
|
||||
|
||||
if(next != NULL) {
|
||||
next->prev = add; /* Not at end. */
|
||||
}
|
||||
|
||||
if(prev != NULL) {
|
||||
prev->next = add; /* In middle. */
|
||||
} else {
|
||||
list = add; /* At beginning, or new list */
|
||||
}
|
||||
|
||||
if(next == NULL) {
|
||||
/* At end, adjust tail pointer on head node */
|
||||
/* Insert the add node to the list */
|
||||
if(prev == NULL) { /* special case: we insert add as the first element */
|
||||
add->prev = list->prev; /* list != NULL */
|
||||
add->next = list;
|
||||
list->prev = add;
|
||||
return(add);
|
||||
} else if(next == NULL) { /* another special case: add last element */
|
||||
add->prev = prev;
|
||||
add->next = NULL;
|
||||
prev->next = add;
|
||||
list->prev = add;
|
||||
return(list);
|
||||
} else {
|
||||
add->prev = prev;
|
||||
add->next = next;
|
||||
next->prev = add;
|
||||
prev->next = add;
|
||||
return(list);
|
||||
}
|
||||
|
||||
return(list);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,10 +178,10 @@ alpm_list_t SYMEXPORT *alpm_list_join(alpm_list_t *first, alpm_list_t *second)
|
||||
alpm_list_t *tmp;
|
||||
|
||||
if (first == NULL) {
|
||||
return second;
|
||||
return(second);
|
||||
}
|
||||
if (second == NULL) {
|
||||
return first;
|
||||
return(first);
|
||||
}
|
||||
/* tmp is the last element of the first list */
|
||||
tmp = first->prev;
|
||||
@@ -322,12 +302,16 @@ alpm_list_t SYMEXPORT *alpm_list_remove(alpm_list_t *haystack, const void *needl
|
||||
*data = NULL;
|
||||
}
|
||||
|
||||
if(needle == NULL) {
|
||||
return(haystack);
|
||||
}
|
||||
|
||||
while(i) {
|
||||
if(i->data == NULL) {
|
||||
continue;
|
||||
}
|
||||
tmp = i->next;
|
||||
if(fn(needle, i->data) == 0) {
|
||||
if(fn(i->data, needle) == 0) {
|
||||
/* we found a matching item */
|
||||
if(i == haystack) {
|
||||
/* Special case: removing the head node which has a back reference to
|
||||
@@ -370,6 +354,22 @@ alpm_list_t SYMEXPORT *alpm_list_remove(alpm_list_t *haystack, const void *needl
|
||||
return(haystack);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Remove a string from a list.
|
||||
*
|
||||
* @param haystack the list to remove the item from
|
||||
* @param needle the data member of the item we're removing
|
||||
* @param data output parameter containing data of the removed item
|
||||
*
|
||||
* @return the resultant list
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_list_remove_str(alpm_list_t *haystack,
|
||||
const char *needle, char **data)
|
||||
{
|
||||
return(alpm_list_remove(haystack, (const void *)needle,
|
||||
(alpm_list_fn_cmp)strcmp, (void **)data));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Create a new list without any duplicates.
|
||||
*
|
||||
@@ -464,18 +464,22 @@ alpm_list_t SYMEXPORT *alpm_list_copy_data(const alpm_list_t *list,
|
||||
alpm_list_t SYMEXPORT *alpm_list_reverse(alpm_list_t *list)
|
||||
{
|
||||
const alpm_list_t *lp;
|
||||
alpm_list_t *newlist = NULL;
|
||||
alpm_list_t *newlist = NULL, *backup;
|
||||
|
||||
if(list == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
lp = alpm_list_last(list);
|
||||
if(list) {
|
||||
/* break our reverse circular list */
|
||||
list->prev = NULL;
|
||||
}
|
||||
/* break our reverse circular list */
|
||||
backup = list->prev;
|
||||
list->prev = NULL;
|
||||
|
||||
while(lp) {
|
||||
newlist = alpm_list_add(newlist, lp->data);
|
||||
lp = lp->prev;
|
||||
}
|
||||
list->prev = backup; /* restore tail pointer */
|
||||
return(newlist);
|
||||
}
|
||||
|
||||
@@ -490,14 +494,18 @@ alpm_list_t SYMEXPORT *alpm_list_reverse(alpm_list_t *list)
|
||||
*/
|
||||
inline alpm_list_t SYMEXPORT *alpm_list_first(const alpm_list_t *list)
|
||||
{
|
||||
return((alpm_list_t*)list);
|
||||
if(list) {
|
||||
return((alpm_list_t*)list);
|
||||
} else {
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return nth element from list (starting from 0).
|
||||
*
|
||||
* @param list the list
|
||||
* @param n the index of the item to find
|
||||
* @param n the index of the item to find (n < alpm_list_count(list) IS needed)
|
||||
*
|
||||
* @return an alpm_list_t node for index `n`
|
||||
*/
|
||||
@@ -519,7 +527,11 @@ alpm_list_t SYMEXPORT *alpm_list_nth(const alpm_list_t *list, int n)
|
||||
*/
|
||||
inline alpm_list_t SYMEXPORT *alpm_list_next(const alpm_list_t *node)
|
||||
{
|
||||
return(node->next);
|
||||
if(node) {
|
||||
return(node->next);
|
||||
} else {
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -594,7 +606,7 @@ void SYMEXPORT *alpm_list_find(const alpm_list_t *haystack, const void *needle,
|
||||
}
|
||||
|
||||
/* trivial helper function for alpm_list_find_ptr */
|
||||
static int ptrcmp(const void *p, const void *q)
|
||||
static int ptr_cmp(const void *p, const void *q)
|
||||
{
|
||||
return(p != q);
|
||||
}
|
||||
@@ -611,7 +623,7 @@ static int ptrcmp(const void *p, const void *q)
|
||||
*/
|
||||
void SYMEXPORT *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle)
|
||||
{
|
||||
return(alpm_list_find(haystack, needle, ptrcmp));
|
||||
return(alpm_list_find(haystack, needle, ptr_cmp));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -622,9 +634,11 @@ void SYMEXPORT *alpm_list_find_ptr(const alpm_list_t *haystack, const void *need
|
||||
*
|
||||
* @return `needle` if found, NULL otherwise
|
||||
*/
|
||||
char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack, const char *needle)
|
||||
char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack,
|
||||
const char *needle)
|
||||
{
|
||||
return((char *)alpm_list_find(haystack, (const void*)needle, (alpm_list_fn_cmp)strcmp));
|
||||
return((char *)alpm_list_find(haystack, (const void*)needle,
|
||||
(alpm_list_fn_cmp)strcmp));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
#ifndef _ALPM_LIST_H
|
||||
#define _ALPM_LIST_H
|
||||
|
||||
#include <stdlib.h> /* size_t */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -45,7 +47,6 @@ typedef void (*alpm_list_fn_free)(void *); /* item deallocation callback */
|
||||
typedef int (*alpm_list_fn_cmp)(const void *, const void *); /* item comparison callback */
|
||||
|
||||
/* allocation */
|
||||
alpm_list_t *alpm_list_new(void);
|
||||
void alpm_list_free(alpm_list_t *list);
|
||||
void alpm_list_free_inner(alpm_list_t *list, alpm_list_fn_free fn);
|
||||
|
||||
@@ -56,6 +57,7 @@ alpm_list_t *alpm_list_join(alpm_list_t *first, alpm_list_t *second);
|
||||
alpm_list_t *alpm_list_mmerge(alpm_list_t *left, alpm_list_t *right, alpm_list_fn_cmp fn);
|
||||
alpm_list_t *alpm_list_msort(alpm_list_t *list, int n, alpm_list_fn_cmp fn);
|
||||
alpm_list_t *alpm_list_remove(alpm_list_t *haystack, const void *needle, alpm_list_fn_cmp fn, void **data);
|
||||
alpm_list_t *alpm_list_remove_str(alpm_list_t *haystack, const char *needle, char **data);
|
||||
alpm_list_t *alpm_list_remove_dupes(const alpm_list_t *list);
|
||||
alpm_list_t *alpm_list_strdup(const alpm_list_t *list);
|
||||
alpm_list_t *alpm_list_copy(const alpm_list_t *list);
|
||||
|
||||
@@ -42,6 +42,9 @@ int _alpm_backup_split(const char *string, char **file, char **hash)
|
||||
if(ptr == NULL) {
|
||||
if(file) {
|
||||
*file = str;
|
||||
} else {
|
||||
/* don't need our dup as the fname wasn't requested, so free it */
|
||||
FREE(str);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h> /* uintmax_t */
|
||||
#include <stdint.h> /* uintmax_t, intmax_t */
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <ctype.h>
|
||||
@@ -36,32 +36,182 @@
|
||||
/* libalpm */
|
||||
#include "db.h"
|
||||
#include "alpm_list.h"
|
||||
#include "cache.h"
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
#include "alpm.h"
|
||||
#include "error.h"
|
||||
#include "handle.h"
|
||||
#include "package.h"
|
||||
#include "delta.h"
|
||||
#include "deps.h"
|
||||
#include "dload.h"
|
||||
|
||||
|
||||
/* This function is used to convert the downloaded db file to the proper backend
|
||||
* format
|
||||
/*
|
||||
* Return the last update time as number of seconds from the epoch.
|
||||
* Returns 0 if the value is unknown or can't be read.
|
||||
*/
|
||||
int _alpm_db_install(pmdb_t *db, const char *dbfile)
|
||||
time_t getlastupdate(const pmdb_t *db)
|
||||
{
|
||||
FILE *fp;
|
||||
char *file;
|
||||
time_t ret = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* TODO we should not simply unpack the archive, but better parse it and
|
||||
* db_write each entry (see sync_load_dbarchive to get archive content) */
|
||||
_alpm_log(PM_LOG_DEBUG, "unpacking database '%s'\n", dbfile);
|
||||
|
||||
if(_alpm_unpack(dbfile, db->path, NULL)) {
|
||||
RET_ERR(PM_ERR_SYSTEM, -1);
|
||||
if(db == NULL) {
|
||||
return(ret);
|
||||
}
|
||||
|
||||
return unlink(dbfile);
|
||||
/* db->path + '.lastupdate' + NULL */
|
||||
MALLOC(file, strlen(db->path) + 12, RET_ERR(PM_ERR_MEMORY, ret));
|
||||
sprintf(file, "%s.lastupdate", db->path);
|
||||
|
||||
/* get the last update time, if it's there */
|
||||
if((fp = fopen(file, "r")) == NULL) {
|
||||
free(file);
|
||||
return(ret);
|
||||
} else {
|
||||
char line[64];
|
||||
if(fgets(line, sizeof(line), fp)) {
|
||||
ret = atol(line);
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
free(file);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* writes the dbpath/.lastupdate file with the value in time
|
||||
*/
|
||||
int setlastupdate(const pmdb_t *db, time_t time)
|
||||
{
|
||||
FILE *fp;
|
||||
char *file;
|
||||
int ret = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL || time == 0) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
/* db->path + '.lastupdate' + NULL */
|
||||
MALLOC(file, strlen(db->path) + 12, RET_ERR(PM_ERR_MEMORY, ret));
|
||||
sprintf(file, "%s.lastupdate", db->path);
|
||||
|
||||
if((fp = fopen(file, "w")) == NULL) {
|
||||
free(file);
|
||||
return(-1);
|
||||
}
|
||||
if(fprintf(fp, "%ju", (uintmax_t)time) <= 0) {
|
||||
ret = -1;
|
||||
}
|
||||
fclose(fp);
|
||||
free(file);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/** Update a package database
|
||||
* @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, > 0 on error (pm_errno is set accordingly), < 0 if up
|
||||
* to date
|
||||
*/
|
||||
int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
|
||||
{
|
||||
alpm_list_t *lp;
|
||||
char *dbfile, *dbfilepath;
|
||||
time_t newmtime = 0, lastupdate = 0;
|
||||
const char *dbpath;
|
||||
size_t len;
|
||||
|
||||
int ret;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
|
||||
ASSERT(db != NULL && db != handle->db_local, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
/* Verify we are in a transaction. This is done _mainly_ because we need a DB
|
||||
* lock - if we update without a db lock, we may kludge some other pacman
|
||||
* process that _has_ a lock.
|
||||
*/
|
||||
ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
|
||||
ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
|
||||
ASSERT(handle->trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
|
||||
|
||||
if(!alpm_list_find_ptr(handle->dbs_sync, db)) {
|
||||
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
|
||||
}
|
||||
|
||||
if(!force) {
|
||||
/* get the lastupdate time */
|
||||
lastupdate = getlastupdate(db);
|
||||
if(lastupdate == 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "failed to get lastupdate time for %s\n",
|
||||
db->treename);
|
||||
}
|
||||
}
|
||||
|
||||
len = strlen(db->treename) + strlen(DBEXT) + 1;
|
||||
MALLOC(dbfile, len, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
sprintf(dbfile, "%s" DBEXT, db->treename);
|
||||
|
||||
dbpath = alpm_option_get_dbpath();
|
||||
|
||||
ret = _alpm_download_single_file(dbfile, db->servers, dbpath,
|
||||
lastupdate, &newmtime);
|
||||
free(dbfile);
|
||||
|
||||
if(ret == 1) {
|
||||
/* mtimes match, do nothing */
|
||||
pm_errno = 0;
|
||||
return(1);
|
||||
} else if(ret == -1) {
|
||||
/* pm_errno was set by the download code */
|
||||
_alpm_log(PM_LOG_DEBUG, "failed to sync db: %s\n", alpm_strerrorlast());
|
||||
return(-1);
|
||||
} else {
|
||||
/* remove the old dir */
|
||||
_alpm_log(PM_LOG_DEBUG, "flushing database %s\n", db->path);
|
||||
for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
|
||||
pmpkg_t *pkg = lp->data;
|
||||
if(pkg && _alpm_db_remove(db, pkg) == -1) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not remove database entry %s%s\n"),
|
||||
db->treename, pkg->name);
|
||||
RET_ERR(PM_ERR_DB_REMOVE, -1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Cache needs to be rebuilt */
|
||||
_alpm_db_free_pkgcache(db);
|
||||
|
||||
/* form the path to the db location */
|
||||
len = strlen(dbpath) + strlen(db->treename) + strlen(DBEXT) + 1;
|
||||
MALLOC(dbfilepath, len, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
sprintf(dbfilepath, "%s%s" DBEXT, dbpath, db->treename);
|
||||
|
||||
/* uncompress the sync database */
|
||||
ret = _alpm_unpack(dbfilepath, db->path, NULL);
|
||||
if(ret) {
|
||||
free(dbfilepath);
|
||||
RET_ERR(PM_ERR_SYSTEM, -1);
|
||||
}
|
||||
unlink(dbfilepath);
|
||||
free(dbfilepath);
|
||||
|
||||
/* if we have a new mtime, set the DB last update value */
|
||||
if(newmtime) {
|
||||
_alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n",
|
||||
db->treename, (uintmax_t)newmtime);
|
||||
setlastupdate(db, newmtime);
|
||||
}
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
int _alpm_db_open(pmdb_t *db)
|
||||
@@ -95,18 +245,7 @@ void _alpm_db_close(pmdb_t *db)
|
||||
}
|
||||
}
|
||||
|
||||
void _alpm_db_rewind(pmdb_t *db)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL || db->handle == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
rewinddir(db->handle);
|
||||
}
|
||||
|
||||
static int _alpm_db_splitname(const char *target, char *name, char *version)
|
||||
static int splitname(const char *target, pmpkg_t *pkg)
|
||||
{
|
||||
/* the format of a db entry is as follows:
|
||||
* package-version-rel/
|
||||
@@ -115,10 +254,10 @@ static int _alpm_db_splitname(const char *target, char *name, char *version)
|
||||
*/
|
||||
char *tmp, *p, *q;
|
||||
|
||||
if(target == NULL) {
|
||||
if(target == NULL || pkg == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
tmp = strdup(target);
|
||||
STRDUP(tmp, target, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
p = tmp + strlen(tmp);
|
||||
|
||||
/* do the magic parsing- find the beginning of the version string
|
||||
@@ -130,120 +269,95 @@ static int _alpm_db_splitname(const char *target, char *name, char *version)
|
||||
}
|
||||
|
||||
/* copy into fields and return */
|
||||
if(version) {
|
||||
strncpy(version, p+1, PKG_VERSION_LEN);
|
||||
if(pkg->version) {
|
||||
FREE(pkg->version);
|
||||
}
|
||||
STRDUP(pkg->version, p+1, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
/* insert a terminator at the end of the name (on hyphen)- then copy it */
|
||||
*p = '\0';
|
||||
if(name) {
|
||||
strncpy(name, tmp, PKG_NAME_LEN);
|
||||
if(pkg->name) {
|
||||
FREE(pkg->name);
|
||||
}
|
||||
STRDUP(pkg->name, tmp, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
|
||||
free(tmp);
|
||||
return(0);
|
||||
}
|
||||
|
||||
pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target)
|
||||
int _alpm_db_populate(pmdb_t *db)
|
||||
{
|
||||
int count = 0;
|
||||
struct dirent *ent = NULL;
|
||||
struct stat sbuf;
|
||||
char path[PATH_MAX];
|
||||
char name[PKG_FULLNAME_LEN];
|
||||
char *ptr = NULL;
|
||||
int found = 0;
|
||||
pmpkg_t *pkg = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL) {
|
||||
RET_ERR(PM_ERR_DB_NULL, NULL);
|
||||
}
|
||||
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
|
||||
|
||||
/* We loop here until we read a valid package. When an iteration of this loop
|
||||
* fails, it means alpm_db_read failed to read a valid package, so we'll read
|
||||
* the next so as not to abort whole-db operations early
|
||||
*/
|
||||
while(!pkg) {
|
||||
if(target != NULL) {
|
||||
/* search for a specific package (by name only) */
|
||||
rewinddir(db->handle);
|
||||
while(!found && (ent = readdir(db->handle)) != NULL) {
|
||||
if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) {
|
||||
continue;
|
||||
}
|
||||
/* stat the entry, make sure it's a directory */
|
||||
snprintf(path, PATH_MAX, "%s/%s", db->path, ent->d_name);
|
||||
if(stat(path, &sbuf) || !S_ISDIR(sbuf.st_mode)) {
|
||||
continue;
|
||||
}
|
||||
strncpy(name, ent->d_name, PKG_FULLNAME_LEN);
|
||||
/* truncate the string at the second-to-last hyphen, */
|
||||
/* which will give us the package name */
|
||||
if((ptr = rindex(name, '-'))) {
|
||||
*ptr = '\0';
|
||||
}
|
||||
if((ptr = rindex(name, '-'))) {
|
||||
*ptr = '\0';
|
||||
}
|
||||
if(!strcmp(name, target)) {
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
if(!found) {
|
||||
return(NULL);
|
||||
}
|
||||
} else { /* target == NULL, full scan */
|
||||
int isdir = 0;
|
||||
while(!isdir) {
|
||||
ent = readdir(db->handle);
|
||||
if(ent == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) {
|
||||
isdir = 0;
|
||||
continue;
|
||||
}
|
||||
/* stat the entry, make sure it's a directory */
|
||||
snprintf(path, PATH_MAX, "%s/%s", db->path, ent->d_name);
|
||||
if(!stat(path, &sbuf) && S_ISDIR(sbuf.st_mode)) {
|
||||
isdir = 1;
|
||||
}
|
||||
}
|
||||
rewinddir(db->handle);
|
||||
while((ent = readdir(db->handle)) != NULL) {
|
||||
const char *name = ent->d_name;
|
||||
pmpkg_t *pkg;
|
||||
|
||||
if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
|
||||
continue;
|
||||
}
|
||||
/* stat the entry, make sure it's a directory */
|
||||
snprintf(path, PATH_MAX, "%s%s", db->path, name);
|
||||
if(stat(path, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
pkg = _alpm_pkg_new(NULL, NULL);
|
||||
pkg = _alpm_pkg_new();
|
||||
if(pkg == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "db scan could not find package: %s\n", target);
|
||||
return(NULL);
|
||||
return(-1);
|
||||
}
|
||||
/* split the db entry name */
|
||||
if(_alpm_db_splitname(ent->d_name, pkg->name, pkg->version) != 0) {
|
||||
if(splitname(name, pkg) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("invalid name for database entry '%s'\n"),
|
||||
ent->d_name);
|
||||
alpm_pkg_free(pkg);
|
||||
pkg = NULL;
|
||||
name);
|
||||
_alpm_pkg_free(pkg);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* explicitly read with only 'BASE' data, accessors will handle the rest */
|
||||
if(_alpm_db_read(db, pkg, INFRQ_BASE) == -1) {
|
||||
/* TODO removed corrupt entry from the FS here */
|
||||
_alpm_log(PM_LOG_ERROR, _("corrupted database entry '%s'\n"), name);
|
||||
_alpm_pkg_free(pkg);
|
||||
} else {
|
||||
pkg->origin = PKG_FROM_CACHE;
|
||||
pkg->origin_data.db = db;
|
||||
continue;
|
||||
}
|
||||
pkg->origin = PKG_FROM_CACHE;
|
||||
pkg->origin_data.db = db;
|
||||
/* add to the collection */
|
||||
_alpm_log(PM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
|
||||
pkg->name, db->treename);
|
||||
db->pkgcache = alpm_list_add(db->pkgcache, pkg);
|
||||
count++;
|
||||
}
|
||||
|
||||
return(pkg);
|
||||
db->pkgcache = alpm_list_msort(db->pkgcache, count, _alpm_pkg_cmp);
|
||||
return(count);
|
||||
}
|
||||
|
||||
/* Note: the return value must be freed by the caller */
|
||||
static char *get_pkgpath(pmdb_t *db, pmpkg_t *info)
|
||||
{
|
||||
size_t len;
|
||||
char *pkgpath;
|
||||
|
||||
len = strlen(db->path) + strlen(info->name) + strlen(info->version) + 3;
|
||||
MALLOC(pkgpath, len, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
sprintf(pkgpath, "%s%s-%s/", db->path, info->name, info->version);
|
||||
return(pkgpath);
|
||||
}
|
||||
|
||||
int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
struct stat buf;
|
||||
char path[PATH_MAX+1];
|
||||
char path[PATH_MAX];
|
||||
char line[513];
|
||||
char *pkgpath = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -251,7 +365,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
RET_ERR(PM_ERR_DB_NULL, -1);
|
||||
}
|
||||
|
||||
if(info == NULL || info->name[0] == 0 || info->version[0] == 0) {
|
||||
if(info == NULL || info->name == NULL || info->version == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "invalid package entry provided to _alpm_db_read, skipping\n");
|
||||
return(-1);
|
||||
}
|
||||
@@ -276,17 +390,18 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
/* clear out 'line', to be certain - and to make valgrind happy */
|
||||
memset(line, 0, 513);
|
||||
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s", db->path, info->name, info->version);
|
||||
if(stat(path, &buf)) {
|
||||
pkgpath = get_pkgpath(db, info);
|
||||
|
||||
if(access(pkgpath, F_OK)) {
|
||||
/* directory doesn't exist or can't be opened */
|
||||
_alpm_log(PM_LOG_DEBUG, "cannot find '%s-%s' in db '%s'\n",
|
||||
info->name, info->version, db->treename);
|
||||
return(-1);
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* DESC */
|
||||
if(inforeq & INFRQ_DESC) {
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/desc", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sdesc", pkgpath);
|
||||
if((fp = fopen(path, "r")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
goto error;
|
||||
@@ -296,120 +411,131 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
break;
|
||||
}
|
||||
_alpm_strtrim(line);
|
||||
if(!strcmp(line, "%FILENAME%")) {
|
||||
if(fgets(info->filename, sizeof(info->filename), fp) == NULL) {
|
||||
if(strcmp(line, "%NAME%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(info->filename);
|
||||
} else if(!strcmp(line, "%DESC%")) {
|
||||
if(fgets(info->desc, sizeof(info->desc), fp) == NULL) {
|
||||
if(strcmp(_alpm_strtrim(line), info->name) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("%s database is inconsistent: name "
|
||||
"mismatch on package %s\n"), db->treename, info->name);
|
||||
}
|
||||
} else if(strcmp(line, "%VERSION%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(info->desc);
|
||||
} else if(!strcmp(line, "%GROUPS%")) {
|
||||
if(strcmp(_alpm_strtrim(line), info->version) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("%s database is inconsistent: version "
|
||||
"mismatch on package %s\n"), db->treename, info->name);
|
||||
}
|
||||
} else if(strcmp(line, "%FILENAME%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->filename, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%DESC%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
STRDUP(info->desc, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%GROUPS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->groups = alpm_list_add(info->groups, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->groups = alpm_list_add(info->groups, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%URL%")) {
|
||||
if(fgets(info->url, sizeof(info->url), fp) == NULL) {
|
||||
} else if(strcmp(line, "%URL%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(info->url);
|
||||
} else if(!strcmp(line, "%LICENSE%")) {
|
||||
STRDUP(info->url, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%LICENSE%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->licenses = alpm_list_add(info->licenses, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->licenses = alpm_list_add(info->licenses, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%ARCH%")) {
|
||||
if(fgets(info->arch, sizeof(info->arch), fp) == NULL) {
|
||||
} else if(strcmp(line, "%ARCH%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(info->arch);
|
||||
} else if(!strcmp(line, "%BUILDDATE%")) {
|
||||
char tmp[32];
|
||||
if(fgets(tmp, sizeof(tmp), fp) == NULL) {
|
||||
STRDUP(info->arch, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%BUILDDATE%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(tmp);
|
||||
_alpm_strtrim(line);
|
||||
|
||||
char first = tolower(tmp[0]);
|
||||
char first = tolower(line[0]);
|
||||
if(first > 'a' && first < 'z') {
|
||||
struct tm tmp_tm = {0}; //initialize to null incase of failure
|
||||
setlocale(LC_TIME, "C");
|
||||
strptime(tmp, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
strptime(line, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
info->builddate = mktime(&tmp_tm);
|
||||
setlocale(LC_TIME, "");
|
||||
} else {
|
||||
info->builddate = atol(tmp);
|
||||
info->builddate = atol(line);
|
||||
}
|
||||
} else if(!strcmp(line, "%INSTALLDATE%")) {
|
||||
char tmp[32];
|
||||
if(fgets(tmp, sizeof(tmp), fp) == NULL) {
|
||||
} else if(strcmp(line, "%INSTALLDATE%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(tmp);
|
||||
_alpm_strtrim(line);
|
||||
|
||||
char first = tolower(tmp[0]);
|
||||
char first = tolower(line[0]);
|
||||
if(first > 'a' && first < 'z') {
|
||||
struct tm tmp_tm = {0}; //initialize to null incase of failure
|
||||
setlocale(LC_TIME, "C");
|
||||
strptime(tmp, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
strptime(line, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
info->installdate = mktime(&tmp_tm);
|
||||
setlocale(LC_TIME, "");
|
||||
} else {
|
||||
info->installdate = atol(tmp);
|
||||
info->installdate = atol(line);
|
||||
}
|
||||
} else if(!strcmp(line, "%PACKAGER%")) {
|
||||
if(fgets(info->packager, sizeof(info->packager), fp) == NULL) {
|
||||
} else if(strcmp(line, "%PACKAGER%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(info->packager);
|
||||
} else if(!strcmp(line, "%REASON%")) {
|
||||
char tmp[32];
|
||||
if(fgets(tmp, sizeof(tmp), fp) == NULL) {
|
||||
STRDUP(info->packager, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%REASON%") == 0) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(tmp);
|
||||
info->reason = atol(tmp);
|
||||
} else if(!strcmp(line, "%SIZE%") || !strcmp(line, "%CSIZE%")) {
|
||||
info->reason = atol(_alpm_strtrim(line));
|
||||
} else if(strcmp(line, "%SIZE%") == 0 || strcmp(line, "%CSIZE%") == 0) {
|
||||
/* NOTE: the CSIZE and SIZE fields both share the "size" field
|
||||
* in the pkginfo_t struct. This can be done b/c CSIZE
|
||||
* is currently only used in sync databases, and SIZE is
|
||||
* only used in local databases.
|
||||
*/
|
||||
char tmp[32];
|
||||
if(fgets(tmp, sizeof(tmp), fp) == NULL) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(tmp);
|
||||
info->size = atol(tmp);
|
||||
info->size = atol(_alpm_strtrim(line));
|
||||
/* also store this value to isize if isize is unset */
|
||||
if(info->isize == 0) {
|
||||
info->isize = atol(tmp);
|
||||
info->isize = info->size;
|
||||
}
|
||||
} else if(!strcmp(line, "%ISIZE%")) {
|
||||
} else if(strcmp(line, "%ISIZE%") == 0) {
|
||||
/* ISIZE (installed size) tag only appears in sync repositories,
|
||||
* not the local one. */
|
||||
char tmp[32];
|
||||
if(fgets(tmp, sizeof(tmp), fp) == NULL) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
_alpm_strtrim(tmp);
|
||||
info->isize = atol(tmp);
|
||||
} else if(!strcmp(line, "%MD5SUM%")) {
|
||||
info->isize = atol(_alpm_strtrim(line));
|
||||
} else if(strcmp(line, "%MD5SUM%") == 0) {
|
||||
/* MD5SUM tag only appears in sync repositories,
|
||||
* not the local one. */
|
||||
if(fgets(info->md5sum, sizeof(info->md5sum), fp) == NULL) {
|
||||
if(fgets(line, 512, fp) == NULL) {
|
||||
goto error;
|
||||
}
|
||||
} else if(!strcmp(line, "%REPLACES%")) {
|
||||
/* the REPLACES tag is special -- it only appears in sync repositories,
|
||||
* not the local one. */
|
||||
STRDUP(info->md5sum, _alpm_strtrim(line), goto error);
|
||||
} else if(strcmp(line, "%REPLACES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->replaces = alpm_list_add(info->replaces, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->replaces = alpm_list_add(info->replaces, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%FORCE%")) {
|
||||
/* FORCE tag only appears in sync repositories,
|
||||
* not the local one. */
|
||||
} else if(strcmp(line, "%FORCE%") == 0) {
|
||||
info->force = 1;
|
||||
}
|
||||
}
|
||||
@@ -419,20 +545,24 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
|
||||
/* FILES */
|
||||
if(inforeq & INFRQ_FILES) {
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/files", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sfiles", pkgpath);
|
||||
if((fp = fopen(path, "r")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
goto error;
|
||||
}
|
||||
while(fgets(line, 256, fp)) {
|
||||
_alpm_strtrim(line);
|
||||
if(!strcmp(line, "%FILES%")) {
|
||||
if(strcmp(line, "%FILES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->files = alpm_list_add(info->files, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->files = alpm_list_add(info->files, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%BACKUP%")) {
|
||||
} else if(strcmp(line, "%BACKUP%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->backup = alpm_list_add(info->backup, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->backup = alpm_list_add(info->backup, linedup);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -442,7 +572,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
|
||||
/* DEPENDS */
|
||||
if(inforeq & INFRQ_DEPENDS) {
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/depends", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sdepends", pkgpath);
|
||||
if((fp = fopen(path, "r")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
goto error;
|
||||
@@ -450,37 +580,30 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
while(!feof(fp)) {
|
||||
fgets(line, 255, fp);
|
||||
_alpm_strtrim(line);
|
||||
if(!strcmp(line, "%DEPENDS%")) {
|
||||
if(strcmp(line, "%DEPENDS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
pmdepend_t *dep = alpm_splitdep(line);
|
||||
pmdepend_t *dep = _alpm_splitdep(_alpm_strtrim(line));
|
||||
info->depends = alpm_list_add(info->depends, dep);
|
||||
}
|
||||
} else if(!strcmp(line, "%OPTDEPENDS%")) {
|
||||
} else if(strcmp(line, "%OPTDEPENDS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->optdepends = alpm_list_add(info->optdepends, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->optdepends = alpm_list_add(info->optdepends, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%CONFLICTS%")) {
|
||||
} else if(strcmp(line, "%CONFLICTS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->conflicts = alpm_list_add(info->conflicts, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->conflicts = alpm_list_add(info->conflicts, linedup);
|
||||
}
|
||||
} else if(!strcmp(line, "%PROVIDES%")) {
|
||||
} else if(strcmp(line, "%PROVIDES%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->provides = alpm_list_add(info->provides, strdup(line));
|
||||
char *linedup;
|
||||
STRDUP(linedup, _alpm_strtrim(line), goto error);
|
||||
info->provides = alpm_list_add(info->provides, linedup);
|
||||
}
|
||||
}
|
||||
/* TODO: we were going to move these things here, but it should wait.
|
||||
* A better change would be to figure out how to restructure the DB. */
|
||||
/* else if(!strcmp(line, "%REPLACES%")) {
|
||||
* the REPLACES tag is special -- it only appears in sync repositories,
|
||||
* not the local one. *
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->replaces = alpm_list_add(info->replaces, strdup(line));
|
||||
}
|
||||
} else if(!strcmp(line, "%FORCE%")) {
|
||||
* FORCE tag only appears in sync repositories,
|
||||
* not the local one. *
|
||||
info->force = 1;
|
||||
} */
|
||||
}
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
@@ -488,12 +611,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
|
||||
/* DELTAS */
|
||||
if(inforeq & INFRQ_DELTAS) {
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/deltas", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sdeltas", pkgpath);
|
||||
if((fp = fopen(path, "r"))) {
|
||||
while(!feof(fp)) {
|
||||
fgets(line, 255, fp);
|
||||
_alpm_strtrim(line);
|
||||
if(!strcmp(line, "%DELTAS%")) {
|
||||
if(strcmp(line, "%DELTAS%") == 0) {
|
||||
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
|
||||
info->deltas = alpm_list_add(info->deltas, _alpm_delta_parse(line));
|
||||
}
|
||||
@@ -506,8 +629,8 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
|
||||
/* INSTALL */
|
||||
if(inforeq & INFRQ_SCRIPTLET) {
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/install", db->path, info->name, info->version);
|
||||
if(!stat(path, &buf)) {
|
||||
snprintf(path, PATH_MAX, "%sinstall", pkgpath);
|
||||
if(access(path, F_OK) == 0) {
|
||||
info->scriptlet = 1;
|
||||
}
|
||||
}
|
||||
@@ -515,9 +638,11 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
/* internal */
|
||||
info->infolevel |= inforeq;
|
||||
|
||||
free(pkgpath);
|
||||
return(0);
|
||||
|
||||
error:
|
||||
free(pkgpath);
|
||||
if(fp) {
|
||||
fclose(fp);
|
||||
}
|
||||
@@ -532,6 +657,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
alpm_list_t *lp = NULL;
|
||||
int retval = 0;
|
||||
int local = 0;
|
||||
char *pkgpath = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -539,9 +665,10 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s", db->path, info->name, info->version);
|
||||
pkgpath = get_pkgpath(db, info);
|
||||
|
||||
oldmask = umask(0000);
|
||||
mkdir(path, 0755);
|
||||
mkdir(pkgpath, 0755);
|
||||
/* make sure we have a sane umask */
|
||||
umask(0022);
|
||||
|
||||
@@ -553,7 +680,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
if(inforeq & INFRQ_DESC) {
|
||||
_alpm_log(PM_LOG_DEBUG, "writing %s-%s DESC information back to db\n",
|
||||
info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/desc", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sdesc", pkgpath);
|
||||
if((fp = fopen(path, "w")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
retval = -1;
|
||||
@@ -561,7 +688,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
}
|
||||
fprintf(fp, "%%NAME%%\n%s\n\n"
|
||||
"%%VERSION%%\n%s\n\n", info->name, info->version);
|
||||
if(info->desc[0]) {
|
||||
if(info->desc) {
|
||||
fprintf(fp, "%%DESC%%\n"
|
||||
"%s\n\n", info->desc);
|
||||
}
|
||||
@@ -572,8 +699,18 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
}
|
||||
fprintf(fp, "\n");
|
||||
}
|
||||
if(info->replaces) {
|
||||
fputs("%REPLACES%\n", fp);
|
||||
for(lp = info->replaces; lp; lp = lp->next) {
|
||||
fprintf(fp, "%s\n", (char *)lp->data);
|
||||
}
|
||||
fprintf(fp, "\n");
|
||||
}
|
||||
if(info->force) {
|
||||
fprintf(fp, "%%FORCE%%\n\n");
|
||||
}
|
||||
if(local) {
|
||||
if(info->url[0]) {
|
||||
if(info->url) {
|
||||
fprintf(fp, "%%URL%%\n"
|
||||
"%s\n\n", info->url);
|
||||
}
|
||||
@@ -584,7 +721,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
}
|
||||
fprintf(fp, "\n");
|
||||
}
|
||||
if(info->arch[0]) {
|
||||
if(info->arch) {
|
||||
fprintf(fp, "%%ARCH%%\n"
|
||||
"%s\n\n", info->arch);
|
||||
}
|
||||
@@ -596,14 +733,14 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
fprintf(fp, "%%INSTALLDATE%%\n"
|
||||
"%ju\n\n", (uintmax_t)info->installdate);
|
||||
}
|
||||
if(info->packager[0]) {
|
||||
if(info->packager) {
|
||||
fprintf(fp, "%%PACKAGER%%\n"
|
||||
"%s\n\n", info->packager);
|
||||
}
|
||||
if(info->size) {
|
||||
if(info->isize) {
|
||||
/* only write installed size, csize is irrelevant once installed */
|
||||
fprintf(fp, "%%SIZE%%\n"
|
||||
"%lu\n\n", info->isize);
|
||||
"%ju\n\n", (intmax_t)info->isize);
|
||||
}
|
||||
if(info->reason) {
|
||||
fprintf(fp, "%%REASON%%\n"
|
||||
@@ -612,11 +749,11 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
} else {
|
||||
if(info->size) {
|
||||
fprintf(fp, "%%CSIZE%%\n"
|
||||
"%lu\n\n", info->size);
|
||||
"%ju\n\n", (intmax_t)info->size);
|
||||
}
|
||||
if(info->isize) {
|
||||
fprintf(fp, "%%ISIZE%%\n"
|
||||
"%lu\n\n", info->isize);
|
||||
"%ju\n\n", (intmax_t)info->isize);
|
||||
}
|
||||
if(info->md5sum) {
|
||||
fprintf(fp, "%%MD5SUM%%\n"
|
||||
@@ -631,7 +768,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
if(local && (inforeq & INFRQ_FILES)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "writing %s-%s FILES information back to db\n",
|
||||
info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/files", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sfiles", pkgpath);
|
||||
if((fp = fopen(path, "w")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
retval = -1;
|
||||
@@ -659,7 +796,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
if(inforeq & INFRQ_DEPENDS) {
|
||||
_alpm_log(PM_LOG_DEBUG, "writing %s-%s DEPENDS information back to db\n",
|
||||
info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%s/%s-%s/depends", db->path, info->name, info->version);
|
||||
snprintf(path, PATH_MAX, "%sdepends", pkgpath);
|
||||
if((fp = fopen(path, "w")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
|
||||
retval = -1;
|
||||
@@ -695,19 +832,6 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
}
|
||||
fprintf(fp, "\n");
|
||||
}
|
||||
if(!local) {
|
||||
if(info->replaces) {
|
||||
fputs("%REPLACES%\n", fp);
|
||||
for(lp = info->replaces; lp; lp = lp->next) {
|
||||
fprintf(fp, "%s\n", (char *)lp->data);
|
||||
}
|
||||
fprintf(fp, "\n");
|
||||
}
|
||||
if(info->force) {
|
||||
fprintf(fp, "%%FORCE%%\n"
|
||||
"\n");
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
}
|
||||
@@ -717,6 +841,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
|
||||
|
||||
cleanup:
|
||||
umask(oldmask);
|
||||
free(pkgpath);
|
||||
|
||||
if(fp) {
|
||||
fclose(fp);
|
||||
@@ -727,7 +852,8 @@ cleanup:
|
||||
|
||||
int _alpm_db_remove(pmdb_t *db, pmpkg_t *info)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
int ret = 0;
|
||||
char *pkgpath = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -735,70 +861,13 @@ int _alpm_db_remove(pmdb_t *db, pmpkg_t *info)
|
||||
RET_ERR(PM_ERR_DB_NULL, -1);
|
||||
}
|
||||
|
||||
snprintf(path, PATH_MAX, "%s%s-%s", db->path, info->name, info->version);
|
||||
if(_alpm_rmrf(path) == -1) {
|
||||
return(-1);
|
||||
}
|
||||
pkgpath = get_pkgpath(db, info);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the last update time as number of seconds from the epoch.
|
||||
* Returns 0 if the value is unknown or can't be read.
|
||||
*/
|
||||
time_t _alpm_db_getlastupdate(const pmdb_t *db)
|
||||
{
|
||||
FILE *fp;
|
||||
char file[PATH_MAX];
|
||||
time_t ret = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL) {
|
||||
return(ret);
|
||||
}
|
||||
|
||||
snprintf(file, PATH_MAX, "%s.lastupdate", db->path);
|
||||
|
||||
/* get the last update time, if it's there */
|
||||
if((fp = fopen(file, "r")) == NULL) {
|
||||
return(ret);
|
||||
} else {
|
||||
char line[64];
|
||||
if(fgets(line, sizeof(line), fp)) {
|
||||
ret = atol(line);
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* writes the dbpath/.lastupdate file with the value in time
|
||||
*/
|
||||
int _alpm_db_setlastupdate(const pmdb_t *db, time_t time)
|
||||
{
|
||||
FILE *fp;
|
||||
char file[PATH_MAX];
|
||||
int ret = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL || time == 0) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
snprintf(file, PATH_MAX, "%s.lastupdate", db->path);
|
||||
|
||||
if((fp = fopen(file, "w")) == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
if(fprintf(fp, "%ju", (uintmax_t)time) <= 0) {
|
||||
ret = _alpm_rmrf(pkgpath);
|
||||
free(pkgpath);
|
||||
if(ret != 0) {
|
||||
ret = -1;
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
288
lib/libalpm/be_package.c
Normal file
288
lib/libalpm/be_package.c
Normal file
@@ -0,0 +1,288 @@
|
||||
/*
|
||||
* be_package.c
|
||||
*
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include <locale.h> /* setlocale */
|
||||
|
||||
/* libarchive */
|
||||
#include <archive.h>
|
||||
#include <archive_entry.h>
|
||||
|
||||
/* libalpm */
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
#include "package.h"
|
||||
#include "deps.h" /* _alpm_splitdep */
|
||||
|
||||
/**
|
||||
* Parses the package description file for a package into a pmpkg_t struct.
|
||||
* @param archive the archive to read from, pointed at the .PKGINFO entry
|
||||
* @param newpkg an empty pmpkg_t struct to fill with package info
|
||||
*
|
||||
* @return 0 on success, 1 on error
|
||||
*/
|
||||
static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
|
||||
{
|
||||
char line[PATH_MAX];
|
||||
char *ptr = NULL;
|
||||
char *key = NULL;
|
||||
int linenum = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* loop until we reach EOF (where archive_fgets will return NULL) */
|
||||
while(_alpm_archive_fgets(line, PATH_MAX, a) != NULL) {
|
||||
linenum++;
|
||||
_alpm_strtrim(line);
|
||||
if(strlen(line) == 0 || line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
ptr = line;
|
||||
key = strsep(&ptr, "=");
|
||||
if(key == NULL || ptr == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
|
||||
newpkg->name ? newpkg->name : "error", linenum);
|
||||
} else {
|
||||
key = _alpm_strtrim(key);
|
||||
ptr = _alpm_strtrim(ptr);
|
||||
if(!strcmp(key, "pkgname")) {
|
||||
STRDUP(newpkg->name, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "pkgver")) {
|
||||
STRDUP(newpkg->version, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "pkgdesc")) {
|
||||
STRDUP(newpkg->desc, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "group")) {
|
||||
newpkg->groups = alpm_list_add(newpkg->groups, strdup(ptr));
|
||||
} else if(!strcmp(key, "url")) {
|
||||
STRDUP(newpkg->url, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "license")) {
|
||||
newpkg->licenses = alpm_list_add(newpkg->licenses, strdup(ptr));
|
||||
} else if(!strcmp(key, "builddate")) {
|
||||
char first = tolower(ptr[0]);
|
||||
if(first > 'a' && first < 'z') {
|
||||
struct tm tmp_tm = {0}; //initialize to null in case of failure
|
||||
setlocale(LC_TIME, "C");
|
||||
strptime(ptr, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
newpkg->builddate = mktime(&tmp_tm);
|
||||
setlocale(LC_TIME, "");
|
||||
} else {
|
||||
newpkg->builddate = atol(ptr);
|
||||
}
|
||||
} else if(!strcmp(key, "packager")) {
|
||||
STRDUP(newpkg->packager, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "arch")) {
|
||||
STRDUP(newpkg->arch, ptr, RET_ERR(PM_ERR_MEMORY, -1));
|
||||
} else if(!strcmp(key, "size")) {
|
||||
/* size in the raw package is uncompressed (installed) size */
|
||||
newpkg->isize = atol(ptr);
|
||||
} else if(!strcmp(key, "depend")) {
|
||||
pmdepend_t *dep = _alpm_splitdep(ptr);
|
||||
newpkg->depends = alpm_list_add(newpkg->depends, dep);
|
||||
} else if(!strcmp(key, "optdepend")) {
|
||||
newpkg->optdepends = alpm_list_add(newpkg->optdepends, strdup(ptr));
|
||||
} else if(!strcmp(key, "conflict")) {
|
||||
newpkg->conflicts = alpm_list_add(newpkg->conflicts, strdup(ptr));
|
||||
} else if(!strcmp(key, "replaces")) {
|
||||
newpkg->replaces = alpm_list_add(newpkg->replaces, strdup(ptr));
|
||||
} else if(!strcmp(key, "provides")) {
|
||||
newpkg->provides = alpm_list_add(newpkg->provides, strdup(ptr));
|
||||
} else if(!strcmp(key, "backup")) {
|
||||
newpkg->backup = alpm_list_add(newpkg->backup, strdup(ptr));
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
|
||||
newpkg->name ? newpkg->name : "error", linenum);
|
||||
}
|
||||
}
|
||||
line[0] = '\0';
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a package and create the corresponding pmpkg_t struct.
|
||||
* @param pkgfile path to the package file
|
||||
* @param full whether to stop the load after metadata is read or continue
|
||||
* through the full archive
|
||||
* @return An information filled pmpkg_t struct
|
||||
*/
|
||||
static pmpkg_t *pkg_load(const char *pkgfile, unsigned short full)
|
||||
{
|
||||
int ret = ARCHIVE_OK;
|
||||
int config = 0;
|
||||
struct archive *archive;
|
||||
struct archive_entry *entry;
|
||||
pmpkg_t *newpkg = NULL;
|
||||
struct stat st;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(pkgfile == NULL || strlen(pkgfile) == 0) {
|
||||
RET_ERR(PM_ERR_WRONG_ARGS, NULL);
|
||||
}
|
||||
|
||||
if(stat(pkgfile, &st) != 0) {
|
||||
RET_ERR(PM_ERR_PKG_OPEN, NULL);
|
||||
}
|
||||
|
||||
if((archive = archive_read_new()) == NULL) {
|
||||
RET_ERR(PM_ERR_LIBARCHIVE, NULL);
|
||||
}
|
||||
|
||||
archive_read_support_compression_all(archive);
|
||||
archive_read_support_format_all(archive);
|
||||
|
||||
if (archive_read_open_filename(archive, pkgfile,
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
|
||||
RET_ERR(PM_ERR_PKG_OPEN, NULL);
|
||||
}
|
||||
|
||||
newpkg = _alpm_pkg_new();
|
||||
if(newpkg == NULL) {
|
||||
archive_read_finish(archive);
|
||||
RET_ERR(PM_ERR_MEMORY, NULL);
|
||||
}
|
||||
|
||||
newpkg->filename = strdup(pkgfile);
|
||||
newpkg->size = st.st_size;
|
||||
|
||||
/* If full is false, only read through the archive until we find our needed
|
||||
* metadata. If it is true, read through the entire archive, which serves
|
||||
* as a verfication of integrity and allows us to create the filelist. */
|
||||
while((ret = archive_read_next_header(archive, &entry)) == ARCHIVE_OK) {
|
||||
const char *entry_name = archive_entry_pathname(entry);
|
||||
|
||||
if(strcmp(entry_name, ".PKGINFO") == 0) {
|
||||
/* parse the info file */
|
||||
if(parse_descfile(archive, newpkg) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not parse package description file in %s\n"),
|
||||
pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
if(newpkg->name == NULL || strlen(newpkg->name) == 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package name in %s\n"), pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
if(newpkg->version == NULL || strlen(newpkg->version) == 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package version in %s\n"), pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
config = 1;
|
||||
continue;
|
||||
} else if(strcmp(entry_name, ".INSTALL") == 0) {
|
||||
newpkg->scriptlet = 1;
|
||||
} else if(*entry_name == '.') {
|
||||
/* for now, ignore all files starting with '.' that haven't
|
||||
* already been handled (for future possibilities) */
|
||||
} else {
|
||||
/* Keep track of all files for filelist generation */
|
||||
newpkg->files = alpm_list_add(newpkg->files, strdup(entry_name));
|
||||
}
|
||||
|
||||
if(archive_read_data_skip(archive)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
|
||||
pkgfile, archive_error_string(archive));
|
||||
pm_errno = PM_ERR_LIBARCHIVE;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* if we are not doing a full read, see if we have all we need */
|
||||
if(!full && config) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(ret != ARCHIVE_EOF && ret != ARCHIVE_OK) { /* An error occured */
|
||||
_alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
|
||||
pkgfile, archive_error_string(archive));
|
||||
pm_errno = PM_ERR_LIBARCHIVE;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if(!config) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package metadata in %s\n"), pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
|
||||
archive_read_finish(archive);
|
||||
|
||||
/* internal fields for package struct */
|
||||
newpkg->origin = PKG_FROM_FILE;
|
||||
newpkg->origin_data.file = strdup(pkgfile);
|
||||
|
||||
if(full) {
|
||||
/* "checking for conflicts" requires a sorted list, ensure that here */
|
||||
_alpm_log(PM_LOG_DEBUG, "sorting package filelist for %s\n", pkgfile);
|
||||
newpkg->files = alpm_list_msort(newpkg->files, alpm_list_count(newpkg->files),
|
||||
_alpm_str_cmp);
|
||||
newpkg->infolevel = INFRQ_ALL;
|
||||
} else {
|
||||
/* get rid of any partial filelist we may have collected, it is invalid */
|
||||
FREELIST(newpkg->files);
|
||||
newpkg->infolevel = INFRQ_BASE | INFRQ_DESC | INFRQ_DEPENDS;
|
||||
}
|
||||
|
||||
return(newpkg);
|
||||
|
||||
pkg_invalid:
|
||||
pm_errno = PM_ERR_PKG_INVALID;
|
||||
error:
|
||||
_alpm_pkg_free(newpkg);
|
||||
archive_read_finish(archive);
|
||||
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/** Create a package from a file.
|
||||
* If full is false, the archive is read only until all necessary
|
||||
* metadata is found. If it is true, the entire archive is read, which
|
||||
* serves as a verfication of integrity and the filelist can be created.
|
||||
* @param filename location of the package tarball
|
||||
* @param full whether to stop the load after metadata is read or continue
|
||||
* through the full archive
|
||||
* @param pkg address of the package pointer
|
||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||
*/
|
||||
int SYMEXPORT alpm_pkg_load(const char *filename, unsigned short full,
|
||||
pmpkg_t **pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(filename != NULL && strlen(filename) != 0,
|
||||
RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
|
||||
*pkg = pkg_load(filename, full);
|
||||
if(*pkg == NULL) {
|
||||
/* pm_errno is set by pkg_load */
|
||||
return(-1);
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
@@ -31,7 +31,6 @@
|
||||
#include "log.h"
|
||||
#include "alpm.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "package.h"
|
||||
#include "group.h"
|
||||
#include "db.h"
|
||||
@@ -41,32 +40,21 @@
|
||||
*/
|
||||
int _alpm_db_load_pkgcache(pmdb_t *db)
|
||||
{
|
||||
pmpkg_t *info;
|
||||
int count = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
_alpm_db_free_pkgcache(db);
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "loading package cache for repository '%s'\n",
|
||||
db->treename);
|
||||
|
||||
_alpm_db_rewind(db);
|
||||
while((info = _alpm_db_scan(db, NULL)) != NULL) {
|
||||
_alpm_log(PM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
|
||||
alpm_pkg_get_name(info), db->treename);
|
||||
info->origin = PKG_FROM_CACHE;
|
||||
info->origin_data.db = db;
|
||||
/* add to the collection */
|
||||
db->pkgcache = alpm_list_add(db->pkgcache, info);
|
||||
count++;
|
||||
db->treename);
|
||||
if(_alpm_db_populate(db) == -1) {
|
||||
_alpm_log(PM_LOG_DEBUG,
|
||||
"failed to load package cache for repository '%s'\n", db->treename);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
db->pkgcache = alpm_list_msort(db->pkgcache, count, _alpm_pkg_cmp);
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -81,10 +69,7 @@ void _alpm_db_free_pkgcache(pmdb_t *db)
|
||||
_alpm_log(PM_LOG_DEBUG, "freeing package cache for repository '%s'\n",
|
||||
db->treename);
|
||||
|
||||
alpm_list_t *tmp;
|
||||
for(tmp = db->pkgcache; tmp; tmp = alpm_list_next(tmp)) {
|
||||
_alpm_pkg_free(tmp->data);
|
||||
}
|
||||
alpm_list_free_inner(db->pkgcache, (alpm_list_fn_free)_alpm_pkg_free);
|
||||
alpm_list_free(db->pkgcache);
|
||||
db->pkgcache = NULL;
|
||||
|
||||
@@ -113,6 +98,7 @@ alpm_list_t *_alpm_db_get_pkgcache(pmdb_t *db)
|
||||
return(db->pkgcache);
|
||||
}
|
||||
|
||||
/* "duplicate" pkg with BASE info (to spare some memory) then add it to pkgcache */
|
||||
int _alpm_db_add_pkgincache(pmdb_t *db, pmpkg_t *pkg)
|
||||
{
|
||||
pmpkg_t *newpkg;
|
||||
@@ -123,10 +109,21 @@ int _alpm_db_add_pkgincache(pmdb_t *db, pmpkg_t *pkg)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
newpkg = _alpm_pkg_dup(pkg);
|
||||
newpkg = _alpm_pkg_new();
|
||||
if(newpkg == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
newpkg->name = strdup(pkg->name);
|
||||
newpkg->version = strdup(pkg->version);
|
||||
if(newpkg->name == NULL || newpkg->version == NULL) {
|
||||
pm_errno = PM_ERR_MEMORY;
|
||||
_alpm_pkg_free(newpkg);
|
||||
return(-1);
|
||||
}
|
||||
newpkg->origin = PKG_FROM_CACHE;
|
||||
newpkg->origin_data.db = db;
|
||||
newpkg->infolevel = INFRQ_BASE;
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "adding entry '%s' in '%s' cache\n",
|
||||
alpm_pkg_get_name(newpkg), db->treename);
|
||||
db->pkgcache = alpm_list_add_sorted(db->pkgcache, newpkg, _alpm_pkg_cmp);
|
||||
@@ -181,7 +178,7 @@ pmpkg_t *_alpm_db_get_pkgfromcache(pmdb_t *db, const char *target)
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
return(_alpm_pkg_find(target, pkgcache));
|
||||
return(_alpm_pkg_find(pkgcache, target));
|
||||
}
|
||||
|
||||
/* Returns a new group cache from db.
|
||||
@@ -208,33 +205,29 @@ int _alpm_db_load_grpcache(pmdb_t *db)
|
||||
pmpkg_t *pkg = lp->data;
|
||||
|
||||
for(i = alpm_pkg_get_groups(pkg); i; i = i->next) {
|
||||
if(!alpm_list_find_str(db->grpcache, i->data)) {
|
||||
pmgrp_t *grp = _alpm_grp_new();
|
||||
const char *grpname = i->data;
|
||||
alpm_list_t *j;
|
||||
pmgrp_t *grp = NULL;
|
||||
int found = 0;
|
||||
|
||||
strncpy(grp->name, i->data, GRP_NAME_LEN);
|
||||
grp->name[GRP_NAME_LEN-1] = '\0';
|
||||
grp->packages = alpm_list_add_sorted(grp->packages,
|
||||
/* gross signature forces us to
|
||||
* discard const */
|
||||
(void*)alpm_pkg_get_name(pkg),
|
||||
_alpm_str_cmp);
|
||||
db->grpcache = alpm_list_add_sorted(db->grpcache, grp, _alpm_grp_cmp);
|
||||
} else {
|
||||
alpm_list_t *j;
|
||||
/* first look through the group cache for a group with this name */
|
||||
for(j = db->grpcache; j; j = j->next) {
|
||||
grp = j->data;
|
||||
|
||||
for(j = db->grpcache; j; j = j->next) {
|
||||
pmgrp_t *grp = j->data;
|
||||
|
||||
if(strcmp(grp->name, i->data) == 0) {
|
||||
const char *pkgname = alpm_pkg_get_name(pkg);
|
||||
if(!alpm_list_find_str(grp->packages, pkgname)) {
|
||||
grp->packages = alpm_list_add_sorted(grp->packages,
|
||||
(void*)pkgname,
|
||||
_alpm_str_cmp);
|
||||
}
|
||||
}
|
||||
if(strcmp(grp->name, grpname) == 0
|
||||
&& !alpm_list_find_ptr(grp->packages, pkg)) {
|
||||
grp->packages = alpm_list_add(grp->packages, pkg);
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(found) {
|
||||
continue;
|
||||
}
|
||||
/* we didn't find the group, so create a new one with this name */
|
||||
grp = _alpm_grp_new(grpname);
|
||||
grp->packages = alpm_list_add(grp->packages, pkg);
|
||||
db->grpcache = alpm_list_add(db->grpcache, grp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -252,10 +245,6 @@ void _alpm_db_free_grpcache(pmdb_t *db)
|
||||
}
|
||||
|
||||
for(lg = db->grpcache; lg; lg = lg->next) {
|
||||
pmgrp_t *grp = lg->data;
|
||||
|
||||
alpm_list_free(grp->packages);
|
||||
grp->packages = NULL;
|
||||
_alpm_grp_free(lg->data);
|
||||
lg->data = NULL;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,6 @@
|
||||
#include "handle.h"
|
||||
#include "trans.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "log.h"
|
||||
#include "cache.h"
|
||||
#include "deps.h"
|
||||
@@ -49,12 +48,30 @@ pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2)
|
||||
|
||||
MALLOC(conflict, sizeof(pmconflict_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
strncpy(conflict->package1, package1, PKG_NAME_LEN);
|
||||
strncpy(conflict->package2, package2, PKG_NAME_LEN);
|
||||
STRDUP(conflict->package1, package1, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(conflict->package2, package2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
return(conflict);
|
||||
}
|
||||
|
||||
void _alpm_conflict_free(pmconflict_t *conflict)
|
||||
{
|
||||
FREE(conflict->package2);
|
||||
FREE(conflict->package1);
|
||||
FREE(conflict);
|
||||
}
|
||||
|
||||
pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict)
|
||||
{
|
||||
pmconflict_t *newconflict;
|
||||
CALLOC(newconflict, 1, sizeof(pmconflict_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
STRDUP(newconflict->package1, conflict->package1, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(newconflict->package2, conflict->package2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
return(newconflict);
|
||||
}
|
||||
|
||||
int _alpm_conflict_isin(pmconflict_t *needle, alpm_list_t *haystack)
|
||||
{
|
||||
alpm_list_t *i;
|
||||
@@ -86,7 +103,7 @@ static int does_conflict(pmpkg_t *pkg1, const char *conflict, pmpkg_t *pkg2)
|
||||
{
|
||||
const char *pkg1name = alpm_pkg_get_name(pkg1);
|
||||
const char *pkg2name = alpm_pkg_get_name(pkg2);
|
||||
pmdepend_t *conf = alpm_splitdep(conflict);
|
||||
pmdepend_t *conf = _alpm_splitdep(conflict);
|
||||
int match = 0;
|
||||
|
||||
match = alpm_depcmp(pkg2, conf);
|
||||
@@ -94,7 +111,7 @@ static int does_conflict(pmpkg_t *pkg1, const char *conflict, pmpkg_t *pkg2)
|
||||
_alpm_log(PM_LOG_DEBUG, "package %s conflicts with %s (by %s)\n",
|
||||
pkg1name, pkg2name, conflict);
|
||||
}
|
||||
FREE(conf);
|
||||
_alpm_dep_free(conf);
|
||||
return(match);
|
||||
}
|
||||
|
||||
@@ -110,7 +127,7 @@ static void add_conflict(alpm_list_t **baddeps, const char *pkg1,
|
||||
if(conflict && !_alpm_conflict_isin(conflict, *baddeps)) {
|
||||
*baddeps = alpm_list_add(*baddeps, conflict);
|
||||
} else {
|
||||
FREE(conflict);
|
||||
_alpm_conflict_free(conflict);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,9 +217,13 @@ alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages)
|
||||
return(baddeps);
|
||||
}
|
||||
|
||||
/* Check for transaction conflicts */
|
||||
alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages) {
|
||||
return(alpm_list_join(_alpm_innerconflicts(packages), _alpm_outerconflicts(db, packages)));
|
||||
/** Check the package conflicts in a database
|
||||
*
|
||||
* @param db_local the database to check
|
||||
* @return an alpm_list_t of pmconflict_t
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_checkdbconflicts(pmdb_t *db_local) {
|
||||
return(_alpm_innerconflicts(_alpm_db_get_pkgcache(db_local)));
|
||||
}
|
||||
|
||||
/* Returns a alpm_list_t* of file conflicts.
|
||||
@@ -299,15 +320,15 @@ static alpm_list_t *add_fileconflict(alpm_list_t *conflicts,
|
||||
const char* name1, const char* name2)
|
||||
{
|
||||
pmfileconflict_t *conflict;
|
||||
MALLOC(conflict, sizeof(pmfileconflict_t), return(conflicts));
|
||||
MALLOC(conflict, sizeof(pmfileconflict_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
conflict->type = type;
|
||||
strncpy(conflict->target, name1, PKG_NAME_LEN);
|
||||
strncpy(conflict->file, filestr, CONFLICT_FILE_LEN);
|
||||
STRDUP(conflict->target, name1, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(conflict->file, filestr, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
if(name2) {
|
||||
strncpy(conflict->ctarget, name2, PKG_NAME_LEN);
|
||||
STRDUP(conflict->ctarget, name2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
} else {
|
||||
conflict->ctarget[0] = '\0';
|
||||
conflict->ctarget = "";
|
||||
}
|
||||
|
||||
conflicts = alpm_list_add(conflicts, conflict);
|
||||
@@ -317,6 +338,16 @@ static alpm_list_t *add_fileconflict(alpm_list_t *conflicts,
|
||||
return(conflicts);
|
||||
}
|
||||
|
||||
void _alpm_fileconflict_free(pmfileconflict_t *conflict)
|
||||
{
|
||||
if(strlen(conflict->ctarget) > 0) {
|
||||
FREE(conflict->ctarget);
|
||||
}
|
||||
FREE(conflict->file);;
|
||||
FREE(conflict->target);
|
||||
FREE(conflict);
|
||||
}
|
||||
|
||||
/* Find file conflicts that may occur during the transaction with two checks:
|
||||
* 1: check every target against every target
|
||||
* 2: check every target against the filesystem */
|
||||
@@ -351,13 +382,13 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
|
||||
PROGRESS(trans, PM_TRANS_PROGRESS_CONFLICTS_START, "", (percent * 100),
|
||||
numtargs, current);
|
||||
/* CHECK 1: check every target against every target */
|
||||
_alpm_log(PM_LOG_DEBUG, "searching for file conflicts: %s\n",
|
||||
alpm_pkg_get_name(p1));
|
||||
for(j = i->next; j; j = j->next) {
|
||||
p2 = j->data;
|
||||
if(!p2) {
|
||||
continue;
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "searching for file conflicts: %s and %s\n",
|
||||
alpm_pkg_get_name(p1), alpm_pkg_get_name(p2));
|
||||
tmpfiles = chk_fileconflicts(alpm_pkg_get_files(p1), alpm_pkg_get_files(p2));
|
||||
|
||||
if(tmpfiles) {
|
||||
@@ -416,26 +447,6 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
|
||||
if(!skip_conflict) {
|
||||
_alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s\n", path);
|
||||
|
||||
/* Make sure the possible conflict is not a symlink that points to a
|
||||
* path in the old package. This is kind of dirty with inode usage */
|
||||
/* TODO this seems ripe for a cleanup */
|
||||
if(dbpkg) {
|
||||
struct stat pkgbuf;
|
||||
char str[PATH_MAX+1];
|
||||
unsigned ok = 0;
|
||||
for(k = dbpkg->files; k; k = k->next) {
|
||||
snprintf(str, PATH_MAX, "%s%s", root, (char*)k->data);
|
||||
if(!_alpm_lstat(str, &pkgbuf) && lsbuf.st_ino == pkgbuf.st_ino) {
|
||||
ok = 1;
|
||||
_alpm_log(PM_LOG_DEBUG, "conflict was a symlink: %s\n", path);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(ok == 1) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* Look at all the targets to see if file has changed hands */
|
||||
int resolved_conflict = 0; /* have we acted on this conflict? */
|
||||
for(k = targets; k; k = k->next) {
|
||||
|
||||
@@ -23,27 +23,28 @@
|
||||
#include "db.h"
|
||||
#include "package.h"
|
||||
|
||||
#define CONFLICT_FILE_LEN 512
|
||||
|
||||
struct __pmconflict_t {
|
||||
char package1[PKG_NAME_LEN];
|
||||
char package2[PKG_NAME_LEN];
|
||||
char *package1;
|
||||
char *package2;
|
||||
};
|
||||
|
||||
struct __pmfileconflict_t {
|
||||
char target[PKG_NAME_LEN];
|
||||
char *target;
|
||||
pmfileconflicttype_t type;
|
||||
char file[CONFLICT_FILE_LEN];
|
||||
char ctarget[PKG_NAME_LEN];
|
||||
char *file;
|
||||
char *ctarget;
|
||||
};
|
||||
|
||||
pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2);
|
||||
pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict);
|
||||
void _alpm_conflict_free(pmconflict_t *conflict);
|
||||
int _alpm_conflict_isin(pmconflict_t *needle, alpm_list_t *haystack);
|
||||
alpm_list_t *_alpm_innerconflicts(alpm_list_t *packages);
|
||||
alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages);
|
||||
alpm_list_t *_alpm_checkconflicts(pmdb_t *db, alpm_list_t *packages);
|
||||
alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *root);
|
||||
|
||||
void _alpm_fileconflict_free(pmfileconflict_t *conflict);
|
||||
|
||||
#endif /* _ALPM_CONFLICT_H */
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
|
||||
227
lib/libalpm/db.c
227
lib/libalpm/db.c
@@ -28,7 +28,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h> /* uintmax_t */
|
||||
#include <sys/stat.h>
|
||||
#include <dirent.h>
|
||||
#include <regex.h>
|
||||
@@ -39,8 +38,6 @@
|
||||
#include "alpm_list.h"
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "server.h"
|
||||
#include "handle.h"
|
||||
#include "cache.h"
|
||||
#include "alpm.h"
|
||||
@@ -173,6 +170,8 @@ int SYMEXPORT alpm_db_setserver(pmdb_t *db, const char *url)
|
||||
{
|
||||
alpm_list_t *i;
|
||||
int found = 0;
|
||||
char *newurl;
|
||||
int len = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -189,15 +188,18 @@ int SYMEXPORT alpm_db_setserver(pmdb_t *db, const char *url)
|
||||
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
|
||||
}
|
||||
|
||||
if(url && strlen(url)) {
|
||||
pmserver_t *server;
|
||||
if((server = _alpm_server_new(url)) == NULL) {
|
||||
/* pm_errno is set by _alpm_server_new */
|
||||
return(-1);
|
||||
if(url) {
|
||||
len = strlen(url);
|
||||
}
|
||||
if(len) {
|
||||
newurl = strdup(url);
|
||||
/* strip the trailing slash if one exists */
|
||||
if(newurl[len - 1] == '/') {
|
||||
newurl[len - 1] = '\0';
|
||||
}
|
||||
db->servers = alpm_list_add(db->servers, server);
|
||||
_alpm_log(PM_LOG_DEBUG, "adding new server to database '%s': protocol '%s', server '%s', path '%s'\n",
|
||||
db->treename, server->s_url->scheme, server->s_url->host, server->s_url->doc);
|
||||
db->servers = alpm_list_add(db->servers, newurl);
|
||||
_alpm_log(PM_LOG_DEBUG, "adding new server URL to database '%s': %s\n",
|
||||
db->treename, newurl);
|
||||
} else {
|
||||
FREELIST(db->servers);
|
||||
_alpm_log(PM_LOG_DEBUG, "serverlist flushed for '%s'\n", db->treename);
|
||||
@@ -206,98 +208,6 @@ int SYMEXPORT alpm_db_setserver(pmdb_t *db, const char *url)
|
||||
return(0);
|
||||
}
|
||||
|
||||
/** Update a package database
|
||||
* @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, > 0 on error (pm_errno is set accordingly), < 0 if up
|
||||
* to date
|
||||
*/
|
||||
int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
|
||||
{
|
||||
alpm_list_t *lp;
|
||||
char path[PATH_MAX];
|
||||
alpm_list_t *files = NULL;
|
||||
time_t newmtime = 0, lastupdate = 0;
|
||||
const char *dbpath;
|
||||
int ret;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
|
||||
ASSERT(db != NULL && db != handle->db_local, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
/* Verify we are in a transaction. This is done _mainly_ because we need a DB
|
||||
* lock - if we update without a db lock, we may kludge some other pacman
|
||||
* process that _has_ a lock.
|
||||
*/
|
||||
ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
|
||||
ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
|
||||
ASSERT(handle->trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
|
||||
|
||||
if(!alpm_list_find_ptr(handle->dbs_sync, db)) {
|
||||
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
|
||||
}
|
||||
|
||||
if(!force) {
|
||||
/* get the lastupdate time */
|
||||
lastupdate = _alpm_db_getlastupdate(db);
|
||||
if(lastupdate == 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "failed to get lastupdate time for %s\n",
|
||||
db->treename);
|
||||
}
|
||||
}
|
||||
|
||||
/* build a one-element list */
|
||||
snprintf(path, PATH_MAX, "%s" DBEXT, db->treename);
|
||||
files = alpm_list_add(files, strdup(path));
|
||||
|
||||
dbpath = alpm_option_get_dbpath();
|
||||
|
||||
ret = _alpm_downloadfiles_forreal(db->servers, dbpath, files, lastupdate,
|
||||
&newmtime, NULL, 0);
|
||||
FREELIST(files);
|
||||
if(ret == 1) {
|
||||
/* mtimes match, do nothing */
|
||||
pm_errno = 0;
|
||||
return(1);
|
||||
} else if(ret == -1) {
|
||||
/* we use downloadLastErrString and downloadLastErrCode here, error returns from
|
||||
* libdownload */
|
||||
_alpm_log(PM_LOG_DEBUG, "failed to sync db: %s [%d]\n",
|
||||
downloadLastErrString, downloadLastErrCode);
|
||||
RET_ERR(PM_ERR_DB_SYNC, -1);
|
||||
} else {
|
||||
if(newmtime != 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n",
|
||||
db->treename, (uintmax_t)newmtime);
|
||||
_alpm_db_setlastupdate(db, newmtime);
|
||||
}
|
||||
snprintf(path, PATH_MAX, "%s%s" DBEXT, dbpath, db->treename);
|
||||
|
||||
/* remove the old dir */
|
||||
_alpm_log(PM_LOG_DEBUG, "flushing database %s\n", db->path);
|
||||
for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
|
||||
pmpkg_t *pkg = lp->data;
|
||||
if(pkg && _alpm_db_remove(db, pkg) == -1) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not remove database entry %s%s\n"), db->treename,
|
||||
alpm_pkg_get_name(pkg));
|
||||
RET_ERR(PM_ERR_DB_REMOVE, -1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Cache needs to be rebuild */
|
||||
_alpm_db_free_pkgcache(db);
|
||||
|
||||
/* uncompress the sync database */
|
||||
if(_alpm_db_install(db, path) == -1) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/** Get the name of a package database
|
||||
* @param db pointer to the package database
|
||||
* @return the name of the package database, NULL on error
|
||||
@@ -319,8 +229,7 @@ const char SYMEXPORT *alpm_db_get_name(const pmdb_t *db)
|
||||
*/
|
||||
const char SYMEXPORT *alpm_db_get_url(const pmdb_t *db)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
pmserver_t *s;
|
||||
char *url;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -328,10 +237,9 @@ const char SYMEXPORT *alpm_db_get_url(const pmdb_t *db)
|
||||
ASSERT(handle != NULL, return(NULL));
|
||||
ASSERT(db != NULL, return(NULL));
|
||||
|
||||
s = (pmserver_t*)db->servers->data;
|
||||
url = (char*)db->servers->data;
|
||||
|
||||
snprintf(path, PATH_MAX, "%s://%s%s", s->s_url->scheme, s->s_url->host, s->s_url->doc);
|
||||
return strdup(path);
|
||||
return(url);
|
||||
}
|
||||
|
||||
|
||||
@@ -367,23 +275,6 @@ alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
|
||||
return(_alpm_db_get_pkgcache(db));
|
||||
}
|
||||
|
||||
/** Get the list of packages that a package provides
|
||||
* @param db pointer to the package database to get the package from
|
||||
* @param name name of the package
|
||||
* @return the list of packages on success, NULL on error
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_db_whatprovides(pmdb_t *db, const char *name)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, return(NULL));
|
||||
ASSERT(db != NULL, return(NULL));
|
||||
ASSERT(name != NULL && strlen(name) != 0, return(NULL));
|
||||
|
||||
return(_alpm_db_whatprovides(db, name));
|
||||
}
|
||||
|
||||
/** Get a group entry from a package database
|
||||
* @param db pointer to the package database to get the group from
|
||||
* @param name of the group
|
||||
@@ -445,41 +336,39 @@ pmdb_t *_alpm_db_new(const char *dbpath, const char *treename)
|
||||
CALLOC(db->path, 1, pathsize, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
sprintf(db->path, "%s%s/", dbpath, treename);
|
||||
|
||||
strncpy(db->treename, treename, PATH_MAX);
|
||||
STRDUP(db->treename, treename, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
return(db);
|
||||
}
|
||||
|
||||
void _alpm_db_free(pmdb_t *db)
|
||||
{
|
||||
alpm_list_t *tmp;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* cleanup pkgcache */
|
||||
_alpm_db_free_pkgcache(db);
|
||||
/* cleanup server list */
|
||||
for(tmp = db->servers; tmp; tmp = alpm_list_next(tmp)) {
|
||||
_alpm_server_free(tmp->data);
|
||||
}
|
||||
alpm_list_free(db->servers);
|
||||
FREELIST(db->servers);
|
||||
FREE(db->path);
|
||||
FREE(db->treename);
|
||||
FREE(db);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
int _alpm_db_cmp(const void *db1, const void *db2)
|
||||
int _alpm_db_cmp(const void *d1, const void *d2)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
return(strcmp(((pmdb_t *)db1)->treename, ((pmdb_t *)db2)->treename));
|
||||
pmdb_t *db1 = (pmdb_t *)d1;
|
||||
pmdb_t *db2 = (pmdb_t *)d2;
|
||||
return(strcmp(db1->treename, db2->treename));
|
||||
}
|
||||
|
||||
alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
|
||||
{
|
||||
const alpm_list_t *i, *j, *k;
|
||||
alpm_list_t *ret = NULL;
|
||||
/* copy the pkgcache- we will free the list var after each needle */
|
||||
alpm_list_t *list = alpm_list_copy(_alpm_db_get_pkgcache(db));
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -490,6 +379,7 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
|
||||
if(i->data == NULL) {
|
||||
continue;
|
||||
}
|
||||
ret = NULL;
|
||||
targ = i->data;
|
||||
_alpm_log(PM_LOG_DEBUG, "searching for target '%s'\n", targ);
|
||||
|
||||
@@ -497,21 +387,19 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
|
||||
RET_ERR(PM_ERR_INVALID_REGEX, NULL);
|
||||
}
|
||||
|
||||
for(j = _alpm_db_get_pkgcache(db); j; j = j->next) {
|
||||
for(j = list; j; j = j->next) {
|
||||
pmpkg_t *pkg = j->data;
|
||||
const char *matched = NULL;
|
||||
const char *name = alpm_pkg_get_name(pkg);
|
||||
const char *desc = alpm_pkg_get_desc(pkg);
|
||||
|
||||
/* check name */
|
||||
if (regexec(®, alpm_pkg_get_name(pkg), 0, 0, 0) == 0) {
|
||||
matched = alpm_pkg_get_name(pkg);
|
||||
}
|
||||
/* check plain text name */
|
||||
else if (strstr(alpm_pkg_get_name(pkg), targ)) {
|
||||
matched = alpm_pkg_get_name(pkg);
|
||||
/* check name as regex AND as plain text */
|
||||
if(name && (regexec(®, name, 0, 0, 0) == 0 || strstr(name, targ))) {
|
||||
matched = name;
|
||||
}
|
||||
/* check desc */
|
||||
else if (regexec(®, alpm_pkg_get_desc(pkg), 0, 0, 0) == 0) {
|
||||
matched = alpm_pkg_get_desc(pkg);
|
||||
else if (desc && regexec(®, desc, 0, 0, 0) == 0) {
|
||||
matched = desc;
|
||||
}
|
||||
/* check provides */
|
||||
/* TODO: should we be doing this, and should we print something
|
||||
@@ -532,6 +420,10 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
|
||||
}
|
||||
}
|
||||
|
||||
/* 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;
|
||||
regfree(®);
|
||||
}
|
||||
|
||||
@@ -641,47 +533,4 @@ pmdb_t *_alpm_db_register_sync(const char *treename)
|
||||
return(db);
|
||||
}
|
||||
|
||||
/* helper function for alpm_list_find and _alpm_db_whatprovides
|
||||
*
|
||||
* @return "provision.name" == needle (as string)
|
||||
*/
|
||||
int _alpm_prov_cmp(const void *provision, const void *needle)
|
||||
{
|
||||
char *tmpptr;
|
||||
char *provname = strdup(provision);
|
||||
int retval = 0;
|
||||
tmpptr = strchr(provname, '=');
|
||||
|
||||
if(tmpptr != NULL) { /* provision-version */
|
||||
*tmpptr='\0';
|
||||
}
|
||||
retval = strcmp(provname, needle);
|
||||
free(provname);
|
||||
return(retval);
|
||||
}
|
||||
|
||||
/* return a alpm_list_t of packages in "db" that provide "package"
|
||||
*/
|
||||
alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package)
|
||||
{
|
||||
alpm_list_t *pkgs = NULL;
|
||||
alpm_list_t *lp;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(db == NULL || package == NULL || strlen(package) == 0) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
|
||||
pmpkg_t *info = lp->data;
|
||||
|
||||
if(alpm_list_find(alpm_pkg_get_provides(info), (const void *)package, _alpm_prov_cmp)) {
|
||||
pkgs = alpm_list_add(pkgs, info);
|
||||
}
|
||||
}
|
||||
|
||||
return(pkgs);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
|
||||
@@ -40,7 +40,7 @@ typedef enum _pmdbinfrq_t {
|
||||
/* Database */
|
||||
struct __pmdb_t {
|
||||
char *path;
|
||||
char treename[PATH_MAX];
|
||||
char *treename;
|
||||
void *handle;
|
||||
alpm_list_t *pkgcache;
|
||||
alpm_list_t *grpcache;
|
||||
@@ -50,26 +50,18 @@ struct __pmdb_t {
|
||||
/* db.c, database general calls */
|
||||
pmdb_t *_alpm_db_new(const char *dbpath, const char *treename);
|
||||
void _alpm_db_free(pmdb_t *db);
|
||||
int _alpm_db_cmp(const void *db1, const void *db2);
|
||||
int _alpm_db_cmp(const void *d1, const void *d2);
|
||||
alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles);
|
||||
pmdb_t *_alpm_db_register_local(void);
|
||||
pmdb_t *_alpm_db_register_sync(const char *treename);
|
||||
|
||||
/* Provision */
|
||||
int _alpm_prov_cmp(const void *provision, const void *needle);
|
||||
alpm_list_t *_alpm_db_whatprovides(pmdb_t *db, const char *package);
|
||||
|
||||
/* be.c, backend specific calls */
|
||||
int _alpm_db_install(pmdb_t *db, const char *dbfile);
|
||||
int _alpm_db_open(pmdb_t *db);
|
||||
void _alpm_db_close(pmdb_t *db);
|
||||
void _alpm_db_rewind(pmdb_t *db);
|
||||
pmpkg_t *_alpm_db_scan(pmdb_t *db, const char *target);
|
||||
int _alpm_db_populate(pmdb_t *db);
|
||||
int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
|
||||
int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
|
||||
int _alpm_db_remove(pmdb_t *db, pmpkg_t *info);
|
||||
time_t _alpm_db_getlastupdate(const pmdb_t *db);
|
||||
int _alpm_db_setlastupdate(const pmdb_t *db, time_t time);
|
||||
|
||||
#endif /* _ALPM_DB_H */
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* delta.c
|
||||
*
|
||||
* Copyright (c) 2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2007-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -21,14 +21,14 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
/* libalpm */
|
||||
#include "delta.h"
|
||||
#include "error.h"
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
#include "alpm_list.h"
|
||||
#include "alpm.h"
|
||||
#include "graph.h"
|
||||
|
||||
/** \addtogroup alpm_deltas Delta Functions
|
||||
* @brief Functions to manipulate libalpm deltas
|
||||
@@ -37,200 +37,222 @@
|
||||
|
||||
const char SYMEXPORT *alpm_delta_get_from(pmdelta_t *delta)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
|
||||
return(delta->from);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_delta_get_from_md5sum(pmdelta_t *delta)
|
||||
{
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
return(delta->from_md5);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_delta_get_to(pmdelta_t *delta)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
|
||||
return(delta->to);
|
||||
}
|
||||
|
||||
unsigned long SYMEXPORT alpm_delta_get_size(pmdelta_t *delta)
|
||||
const char SYMEXPORT *alpm_delta_get_to_md5sum(pmdelta_t *delta)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(delta != NULL, return(-1));
|
||||
|
||||
return(delta->size);
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
return(delta->to_md5);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_delta_get_filename(pmdelta_t *delta)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
|
||||
return(delta->filename);
|
||||
return(delta->delta);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_delta_get_md5sum(pmdelta_t *delta)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(delta != NULL, return(NULL));
|
||||
return(delta->delta_md5);
|
||||
}
|
||||
|
||||
return(delta->md5sum);
|
||||
off_t SYMEXPORT alpm_delta_get_size(pmdelta_t *delta)
|
||||
{
|
||||
ASSERT(delta != NULL, return(-1));
|
||||
return(delta->delta_size);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/** Calculates the combined size of a list of delta files.
|
||||
*
|
||||
* @param deltas the list of pmdelta_t * objects
|
||||
*
|
||||
* @return the combined size
|
||||
*/
|
||||
unsigned long _alpm_delta_path_size(alpm_list_t *deltas)
|
||||
static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
|
||||
{
|
||||
unsigned long sum = 0;
|
||||
alpm_list_t *dlts = deltas;
|
||||
alpm_list_t *i, *j;
|
||||
alpm_list_t *vertices = NULL;
|
||||
/* create the vertices */
|
||||
for(i = deltas; i; i = i->next) {
|
||||
char *fpath, *md5sum;
|
||||
pmgraph_t *v = _alpm_graph_new();
|
||||
pmdelta_t *vdelta = i->data;
|
||||
vdelta->download_size = vdelta->delta_size;
|
||||
v->weight = LONG_MAX;
|
||||
|
||||
while(dlts) {
|
||||
pmdelta_t *d = (pmdelta_t *)alpm_list_getdata(dlts);
|
||||
sum += d->size;
|
||||
/* determine whether the delta file already exists */
|
||||
fpath = _alpm_filecache_find(vdelta->delta);
|
||||
md5sum = alpm_get_md5sum(fpath);
|
||||
if(fpath && md5sum && strcmp(md5sum, vdelta->delta_md5) == 0) {
|
||||
vdelta->download_size = 0;
|
||||
}
|
||||
FREE(fpath);
|
||||
FREE(md5sum);
|
||||
|
||||
dlts = alpm_list_next(dlts);
|
||||
/* determine whether a base 'from' file exists */
|
||||
fpath = _alpm_filecache_find(vdelta->from);
|
||||
md5sum = alpm_get_md5sum(fpath);
|
||||
if(fpath && md5sum && strcmp(md5sum, vdelta->from_md5) == 0) {
|
||||
v->weight = vdelta->download_size;
|
||||
}
|
||||
FREE(fpath);
|
||||
FREE(md5sum);
|
||||
|
||||
v->data = vdelta;
|
||||
vertices = alpm_list_add(vertices, v);
|
||||
}
|
||||
|
||||
return(sum);
|
||||
/* compute the edges */
|
||||
for(i = vertices; i; i = i->next) {
|
||||
pmgraph_t *v_i = i->data;
|
||||
pmdelta_t *d_i = v_i->data;
|
||||
/* loop a second time so we make all possible comparisons */
|
||||
for(j = vertices; j; j = j->next) {
|
||||
pmgraph_t *v_j = j->data;
|
||||
pmdelta_t *d_j = v_j->data;
|
||||
/* We want to create a delta tree like the following:
|
||||
* 1_to_2
|
||||
* |
|
||||
* 1_to_3 2_to_3
|
||||
* \ /
|
||||
* 3_to_4
|
||||
* If J 'from' is equal to I 'to', then J is a child of I.
|
||||
* */
|
||||
if(strcmp(d_j->from, d_i->to) == 0
|
||||
&& strcmp(d_j->from_md5, d_i->to_md5) == 0) {
|
||||
v_i->children = alpm_list_add(v_i->children, v_j);
|
||||
}
|
||||
}
|
||||
v_i->childptr = v_i->children;
|
||||
}
|
||||
return(vertices);
|
||||
}
|
||||
|
||||
/** Calculates the combined size of a list of delta files that are not
|
||||
* in the cache.
|
||||
*
|
||||
* @param deltas the list of pmdelta_t * objects
|
||||
*
|
||||
* @return the combined size
|
||||
*/
|
||||
unsigned long _alpm_delta_path_size_uncached(alpm_list_t *deltas)
|
||||
{
|
||||
unsigned long sum = 0;
|
||||
alpm_list_t *dlts = deltas;
|
||||
static off_t delta_vert(alpm_list_t *vertices,
|
||||
const char *to, const char *to_md5, alpm_list_t **path) {
|
||||
alpm_list_t *i;
|
||||
pmgraph_t *v;
|
||||
while(1) {
|
||||
v = NULL;
|
||||
/* find the smallest vertice not visited yet */
|
||||
for(i = vertices; i; i = i->next) {
|
||||
pmgraph_t *v_i = i->data;
|
||||
|
||||
while(dlts) {
|
||||
pmdelta_t *d = (pmdelta_t *)alpm_list_getdata(dlts);
|
||||
char *fname = _alpm_filecache_find(d->filename);
|
||||
if(v_i->state == -1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!fname) {
|
||||
sum += d->size;
|
||||
if(v == NULL || v_i->weight < v->weight) {
|
||||
v = v_i;
|
||||
}
|
||||
}
|
||||
if(v == NULL || v->weight == LONG_MAX) {
|
||||
break;
|
||||
}
|
||||
|
||||
FREE(fname);
|
||||
v->state = -1;
|
||||
|
||||
dlts = alpm_list_next(dlts);
|
||||
}
|
||||
v->childptr = v->children;
|
||||
while(v->childptr) {
|
||||
pmgraph_t *v_c = v->childptr->data;
|
||||
pmdelta_t *d_c = v_c->data;
|
||||
if(v_c->weight > v->weight + d_c->download_size) {
|
||||
v_c->weight = v->weight + d_c->download_size;
|
||||
v_c->parent = v;
|
||||
}
|
||||
|
||||
return(sum);
|
||||
}
|
||||
v->childptr = (v->childptr)->next;
|
||||
|
||||
/** Calculates the shortest path from one version to another.
|
||||
*
|
||||
* The shortest path is defined as the path with the smallest combined
|
||||
* size, not the length of the path.
|
||||
*
|
||||
* The algorithm is based on Dijkstra's shortest path algorithm.
|
||||
*
|
||||
* @param deltas the list of pmdelta_t * objects that a package has
|
||||
* @param from the version to start from
|
||||
* @param to the version to end at
|
||||
* @param path the current path
|
||||
*
|
||||
* @return the list of pmdelta_t * objects that has the smallest size.
|
||||
* NULL (the empty list) is returned if there is no path between the
|
||||
* versions.
|
||||
*/
|
||||
static alpm_list_t *shortest_delta_path(alpm_list_t *deltas,
|
||||
const char *from, const char *to, alpm_list_t *path)
|
||||
{
|
||||
alpm_list_t *d;
|
||||
alpm_list_t *shortest = NULL;
|
||||
|
||||
/* Found the 'to' version, this is a good path so return it. */
|
||||
if(strcmp(from, to) == 0) {
|
||||
return(path);
|
||||
}
|
||||
|
||||
for(d = deltas; d; d = alpm_list_next(d)) {
|
||||
pmdelta_t *v = alpm_list_getdata(d);
|
||||
|
||||
/* If this vertex has already been visited in the path, go to the
|
||||
* next vertex. */
|
||||
if(alpm_list_find_ptr(path, v)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
/* Once we find a vertex that starts at the 'from' version,
|
||||
* recursively find the shortest path using the 'to' version of this
|
||||
* current vertex as the 'from' version in the function call. */
|
||||
if(strcmp(v->from, from) == 0) {
|
||||
alpm_list_t *newpath = alpm_list_copy(path);
|
||||
newpath = alpm_list_add(newpath, v);
|
||||
newpath = shortest_delta_path(deltas, v->to, to, newpath);
|
||||
v = NULL;
|
||||
off_t bestsize = 0;
|
||||
|
||||
if(newpath != NULL) {
|
||||
/* The path returned works, now use it unless there is already a
|
||||
* shorter path found. */
|
||||
if(shortest == NULL) {
|
||||
shortest = newpath;
|
||||
} else if(_alpm_delta_path_size(shortest) > _alpm_delta_path_size(newpath)) {
|
||||
alpm_list_free(shortest);
|
||||
shortest = newpath;
|
||||
} else {
|
||||
alpm_list_free(newpath);
|
||||
}
|
||||
for(i = vertices; i; i = i->next) {
|
||||
pmgraph_t *v_i = i->data;
|
||||
pmdelta_t *d_i = v_i->data;
|
||||
|
||||
if(strcmp(d_i->to, to) == 0
|
||||
|| strcmp(d_i->to_md5, to_md5) == 0) {
|
||||
if(v == NULL || v_i->weight < v->weight) {
|
||||
v = v_i;
|
||||
bestsize = v->weight;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
alpm_list_free(path);
|
||||
alpm_list_t *rpath = NULL;
|
||||
while(v != NULL) {
|
||||
pmdelta_t *vdelta = v->data;
|
||||
rpath = alpm_list_add(rpath, vdelta);
|
||||
v = v->parent;
|
||||
}
|
||||
*path = alpm_list_reverse(rpath);
|
||||
alpm_list_free(rpath);
|
||||
|
||||
return(shortest);
|
||||
return(bestsize);
|
||||
}
|
||||
|
||||
/** Calculates the shortest path from one version to another.
|
||||
*
|
||||
* The shortest path is defined as the path with the smallest combined
|
||||
* size, not the length of the path.
|
||||
*
|
||||
* @param deltas the list of pmdelta_t * objects that a package has
|
||||
* @param from the version to start from
|
||||
* @param to the version to end at
|
||||
*
|
||||
* @return the list of pmdelta_t * objects that has the smallest size.
|
||||
* NULL (the empty list) is returned if there is no path between the
|
||||
* versions.
|
||||
* @param deltas the list of pmdelta_t * objects that a file has
|
||||
* @param to the file to start the search at
|
||||
* @param to_md5 the md5sum of the above named file
|
||||
* @param path the pointer to a list location where pmdelta_t * objects that
|
||||
* have the smallest size are placed. NULL is set if there is no path
|
||||
* possible with the files available.
|
||||
* @return the size of the path stored, or LONG_MAX if path is unfindable
|
||||
*/
|
||||
alpm_list_t *_alpm_shortest_delta_path(alpm_list_t *deltas, const char *from,
|
||||
const char *to)
|
||||
off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
|
||||
const char *to, const char *to_md5, alpm_list_t **path)
|
||||
{
|
||||
alpm_list_t *path = NULL;
|
||||
alpm_list_t *bestpath = NULL;
|
||||
alpm_list_t *vertices;
|
||||
off_t bestsize = LONG_MAX;
|
||||
|
||||
path = shortest_delta_path(deltas, from, to, path);
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
return(path);
|
||||
if(deltas == NULL) {
|
||||
*path = NULL;
|
||||
return(bestsize);
|
||||
}
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "started delta shortest-path search\n");
|
||||
|
||||
vertices = delta_graph_init(deltas);
|
||||
|
||||
bestsize = delta_vert(vertices, to, to_md5, &bestpath);
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "delta shortest-path search complete\n");
|
||||
|
||||
alpm_list_free_inner(vertices, _alpm_graph_free);
|
||||
alpm_list_free(vertices);
|
||||
|
||||
*path = bestpath;
|
||||
return(bestsize);
|
||||
}
|
||||
|
||||
/** Parses the string representation of a pmdelta_t object.
|
||||
*
|
||||
* This function assumes that the string is in the correct format.
|
||||
*
|
||||
* This format is as follows:
|
||||
* $oldfile $oldmd5 $newfile $newmd5 $deltafile $deltamd5 $deltasize
|
||||
* @param line the string to parse
|
||||
*
|
||||
* @return A pointer to the new pmdelta_t object
|
||||
*/
|
||||
/* TODO this does not really belong here, but in a parsing lib */
|
||||
pmdelta_t *_alpm_delta_parse(char *line)
|
||||
{
|
||||
pmdelta_t *delta;
|
||||
@@ -241,26 +263,47 @@ pmdelta_t *_alpm_delta_parse(char *line)
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
strncpy(delta->from, tmp2, DLT_VERSION_LEN);
|
||||
STRDUP(delta->from, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
strncpy(delta->to, tmp2, DLT_VERSION_LEN);
|
||||
STRDUP(delta->from_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
delta->size = atol(tmp2);
|
||||
STRDUP(delta->to, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
strncpy(delta->filename, tmp2, DLT_FILENAME_LEN);
|
||||
STRDUP(delta->to_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
strncpy(delta->md5sum, tmp, DLT_MD5SUM_LEN);
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
STRDUP(delta->delta, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
tmp2 = tmp;
|
||||
tmp = strchr(tmp, ' ');
|
||||
*(tmp++) = '\0';
|
||||
STRDUP(delta->delta_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
delta->delta_size = atol(tmp);
|
||||
|
||||
return(delta);
|
||||
}
|
||||
|
||||
void _alpm_delta_free(pmdelta_t *delta)
|
||||
{
|
||||
FREE(delta->from);
|
||||
FREE(delta->from_md5);
|
||||
FREE(delta->to);
|
||||
FREE(delta->to_md5);
|
||||
FREE(delta->delta);
|
||||
FREE(delta->delta_md5);
|
||||
FREE(delta);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* delta.h
|
||||
*
|
||||
* Copyright (c) 2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2007-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -19,24 +19,33 @@
|
||||
#ifndef _ALPM_DELTA_H
|
||||
#define _ALPM_DELTA_H
|
||||
|
||||
#include <sys/types.h> /* off_t */
|
||||
|
||||
#include "alpm.h"
|
||||
|
||||
#define DLT_FILENAME_LEN 512
|
||||
#define DLT_VERSION_LEN 64
|
||||
#define DLT_MD5SUM_LEN 33
|
||||
|
||||
struct __pmdelta_t {
|
||||
char from[DLT_VERSION_LEN];
|
||||
char to[DLT_VERSION_LEN];
|
||||
unsigned long size;
|
||||
char filename[DLT_FILENAME_LEN];
|
||||
char md5sum[DLT_MD5SUM_LEN];
|
||||
/** filename of the 'before' file */
|
||||
char *from;
|
||||
/** md5sum of the 'before' file */
|
||||
char *from_md5;
|
||||
/** filename of the 'after' file */
|
||||
char *to;
|
||||
/** md5sum of the 'after' file */
|
||||
char *to_md5;
|
||||
/** filename of the delta patch */
|
||||
char *delta;
|
||||
/** md5sum of the delta file */
|
||||
char *delta_md5;
|
||||
/** filesize of the delta file */
|
||||
off_t delta_size;
|
||||
/** download filesize of the delta file */
|
||||
off_t download_size;
|
||||
};
|
||||
|
||||
unsigned long _alpm_delta_path_size(alpm_list_t *deltas);
|
||||
unsigned long _alpm_delta_path_size_uncached(alpm_list_t *deltas);
|
||||
pmdelta_t *_alpm_delta_parse(char *line);
|
||||
alpm_list_t *_alpm_shortest_delta_path(alpm_list_t *deltas, const char *from, const char *to);
|
||||
void _alpm_delta_free(pmdelta_t *delta);
|
||||
off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
|
||||
const char *to, const char *to_md5, alpm_list_t **path);
|
||||
|
||||
#endif /* _ALPM_DELTA_H */
|
||||
|
||||
|
||||
@@ -30,37 +30,21 @@
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
#include "error.h"
|
||||
#include "graph.h"
|
||||
#include "package.h"
|
||||
#include "db.h"
|
||||
#include "cache.h"
|
||||
#include "handle.h"
|
||||
|
||||
static pmgraph_t *_alpm_graph_new(void)
|
||||
void _alpm_dep_free(pmdepend_t *dep)
|
||||
{
|
||||
pmgraph_t *graph = NULL;
|
||||
|
||||
MALLOC(graph, sizeof(pmgraph_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
if(graph) {
|
||||
graph->state = 0;
|
||||
graph->data = NULL;
|
||||
graph->parent = NULL;
|
||||
graph->children = NULL;
|
||||
graph->childptr = NULL;
|
||||
}
|
||||
return(graph);
|
||||
FREE(dep->name);
|
||||
FREE(dep->version);
|
||||
FREE(dep);
|
||||
}
|
||||
|
||||
static void _alpm_graph_free(void *data)
|
||||
{
|
||||
pmgraph_t *graph = data;
|
||||
alpm_list_free(graph->children);
|
||||
free(graph);
|
||||
}
|
||||
|
||||
pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepmod_t depmod,
|
||||
const char *depname, const char *depversion)
|
||||
pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep,
|
||||
const char *causingpkg)
|
||||
{
|
||||
pmdepmissing_t *miss;
|
||||
|
||||
@@ -68,26 +52,29 @@ pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepmod_t depmod,
|
||||
|
||||
MALLOC(miss, sizeof(pmdepmissing_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
strncpy(miss->target, target, PKG_NAME_LEN);
|
||||
miss->depend.mod = depmod;
|
||||
strncpy(miss->depend.name, depname, PKG_NAME_LEN);
|
||||
if(depversion) {
|
||||
strncpy(miss->depend.version, depversion, PKG_VERSION_LEN);
|
||||
} else {
|
||||
miss->depend.version[0] = 0;
|
||||
}
|
||||
STRDUP(miss->target, target, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
miss->depend = _alpm_dep_dup(dep);
|
||||
STRDUP(miss->causingpkg, causingpkg, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
return(miss);
|
||||
}
|
||||
|
||||
void _alpm_depmiss_free(pmdepmissing_t *miss)
|
||||
{
|
||||
_alpm_dep_free(miss->depend);
|
||||
FREE(miss->target);
|
||||
FREE(miss->causingpkg);
|
||||
FREE(miss);
|
||||
}
|
||||
|
||||
/* Convert a list of pmpkg_t * to a graph structure,
|
||||
* with a edge for each dependency.
|
||||
* Returns a list of vertices (one vertex = one package)
|
||||
* (used by alpm_sortbydeps)
|
||||
*/
|
||||
static alpm_list_t *_alpm_graph_init(alpm_list_t *targets)
|
||||
static alpm_list_t *dep_graph_init(alpm_list_t *targets)
|
||||
{
|
||||
alpm_list_t *i, *j, *k;
|
||||
alpm_list_t *i, *j;
|
||||
alpm_list_t *vertices = NULL;
|
||||
/* We create the vertices */
|
||||
for(i = targets; i; i = i->next) {
|
||||
@@ -104,12 +91,7 @@ static alpm_list_t *_alpm_graph_init(alpm_list_t *targets)
|
||||
for(j = vertices; j; j = j->next) {
|
||||
pmgraph_t *vertex_j = j->data;
|
||||
pmpkg_t *p_j = vertex_j->data;
|
||||
int child = 0;
|
||||
for(k = alpm_pkg_get_depends(p_i); k && !child; k = k->next) {
|
||||
pmdepend_t *depend = k->data;
|
||||
child = alpm_depcmp(p_j, depend);
|
||||
}
|
||||
if(child) {
|
||||
if(_alpm_dep_edge(p_i, p_j)) {
|
||||
vertex_i->children =
|
||||
alpm_list_add(vertex_i->children, vertex_j);
|
||||
}
|
||||
@@ -121,20 +103,19 @@ static alpm_list_t *_alpm_graph_init(alpm_list_t *targets)
|
||||
|
||||
/* Re-order a list of target packages with respect to their dependencies.
|
||||
*
|
||||
* Example (PM_TRANS_TYPE_ADD):
|
||||
* Example (reverse == 0):
|
||||
* A depends on C
|
||||
* B depends on A
|
||||
* Target order is A,B,C,D
|
||||
*
|
||||
* Should be re-ordered to C,A,B,D
|
||||
*
|
||||
* mode should be either PM_TRANS_TYPE_ADD or PM_TRANS_TYPE_REMOVE. This
|
||||
* affects the dependency order sortbydeps() will use.
|
||||
* if reverse is > 0, the dependency order will be reversed.
|
||||
*
|
||||
* This function returns the new alpm_list_t* target list.
|
||||
*
|
||||
*/
|
||||
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse)
|
||||
{
|
||||
alpm_list_t *newtargs = NULL;
|
||||
alpm_list_t *vertices = NULL;
|
||||
@@ -149,7 +130,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "started sorting dependencies\n");
|
||||
|
||||
vertices = _alpm_graph_init(targets);
|
||||
vertices = dep_graph_init(targets);
|
||||
|
||||
vptr = vertices;
|
||||
vertex = vertices->data;
|
||||
@@ -169,7 +150,7 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
pmpkg_t *vertexpkg = vertex->data;
|
||||
pmpkg_t *childpkg = nextchild->data;
|
||||
_alpm_log(PM_LOG_WARNING, _("dependency cycle detected:\n"));
|
||||
if(mode == PM_TRANS_TYPE_REMOVE) {
|
||||
if(reverse) {
|
||||
_alpm_log(PM_LOG_WARNING, _("%s will be removed after its %s dependency\n"), vertexpkg->name, childpkg->name);
|
||||
} else {
|
||||
_alpm_log(PM_LOG_WARNING, _("%s will be installed before its %s dependency\n"), vertexpkg->name, childpkg->name);
|
||||
@@ -194,8 +175,8 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "sorting dependencies finished\n");
|
||||
|
||||
if(mode == PM_TRANS_TYPE_REMOVE) {
|
||||
/* we're removing packages, so reverse the order */
|
||||
if(reverse) {
|
||||
/* reverse the order */
|
||||
alpm_list_t *tmptargs = alpm_list_reverse(newtargs);
|
||||
/* free the old one */
|
||||
alpm_list_free(newtargs);
|
||||
@@ -208,10 +189,42 @@ alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode)
|
||||
return(newtargs);
|
||||
}
|
||||
|
||||
/* Little helper function for alpm_list_find */
|
||||
static int satisfycmp(const void *pkg, const void *depend)
|
||||
pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep)
|
||||
{
|
||||
return(!alpm_depcmp((pmpkg_t*) pkg, (pmdepend_t*) depend));
|
||||
alpm_list_t *i;
|
||||
|
||||
for(i = pkgs; i; i = alpm_list_next(i)) {
|
||||
pmpkg_t *pkg = i->data;
|
||||
if(alpm_depcmp(pkg, dep)) {
|
||||
return(pkg);
|
||||
}
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/** Checks dependencies and returns missing ones in a list.
|
||||
* Dependencies can include versions with depmod operators.
|
||||
* @param db pointer to the local package database
|
||||
* @param targets an alpm_list_t* of dependencies strings to satisfy
|
||||
* @return an alpm_list_t* of missing dependencies strings
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_deptest(pmdb_t *db, alpm_list_t *targets)
|
||||
{
|
||||
alpm_list_t *i, *ret = NULL;
|
||||
|
||||
for(i = targets; i; i = alpm_list_next(i)) {
|
||||
pmdepend_t *dep;
|
||||
char *target;
|
||||
|
||||
target = alpm_list_getdata(i);
|
||||
dep = _alpm_splitdep(target);
|
||||
|
||||
if(!_alpm_find_dep_satisfier(_alpm_db_get_pkgcache(db), dep)) {
|
||||
ret = alpm_list_add(ret, target);
|
||||
}
|
||||
_alpm_dep_free(dep);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/** Checks dependencies and returns missing ones in a list.
|
||||
@@ -257,15 +270,14 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
|
||||
pmdepend_t *depend = j->data;
|
||||
/* 1. we check the upgrade list */
|
||||
/* 2. we check database for untouched satisfying packages */
|
||||
if(!alpm_list_find(upgrade, depend, satisfycmp) &&
|
||||
!alpm_list_find(dblist, depend, satisfycmp)) {
|
||||
if(!_alpm_find_dep_satisfier(upgrade, depend) &&
|
||||
!_alpm_find_dep_satisfier(dblist, depend)) {
|
||||
/* Unsatisfied dependency in the upgrade list */
|
||||
char *missdepstring = alpm_dep_get_string(depend);
|
||||
_alpm_log(PM_LOG_DEBUG, "checkdeps: missing dependency '%s' for package '%s'\n",
|
||||
missdepstring, alpm_pkg_get_name(tp));
|
||||
free(missdepstring);
|
||||
miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), depend->mod,
|
||||
depend->name, depend->version);
|
||||
miss = _alpm_depmiss_new(alpm_pkg_get_name(tp), depend, NULL);
|
||||
baddeps = alpm_list_add(baddeps, miss);
|
||||
}
|
||||
}
|
||||
@@ -278,18 +290,18 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
|
||||
pmpkg_t *lp = i->data;
|
||||
for(j = alpm_pkg_get_depends(lp); j; j = j->next) {
|
||||
pmdepend_t *depend = j->data;
|
||||
pmpkg_t *causingpkg = _alpm_find_dep_satisfier(modified, depend);
|
||||
/* we won't break this depend, if it is already broken, we ignore it */
|
||||
/* 1. check upgrade list for satisfiers */
|
||||
/* 2. check dblist for satisfiers */
|
||||
if(alpm_list_find(modified, depend, satisfycmp) &&
|
||||
!alpm_list_find(upgrade, depend, satisfycmp) &&
|
||||
!alpm_list_find(dblist, depend, satisfycmp)) {
|
||||
if(causingpkg &&
|
||||
!_alpm_find_dep_satisfier(upgrade, depend) &&
|
||||
!_alpm_find_dep_satisfier(dblist, depend)) {
|
||||
char *missdepstring = alpm_dep_get_string(depend);
|
||||
_alpm_log(PM_LOG_DEBUG, "checkdeps: transaction would break '%s' dependency of '%s'\n",
|
||||
missdepstring, alpm_pkg_get_name(lp));
|
||||
free(missdepstring);
|
||||
miss = _alpm_depmiss_new(lp->name, depend->mod,
|
||||
depend->name, depend->version);
|
||||
miss = _alpm_depmiss_new(lp->name, depend, alpm_pkg_get_name(causingpkg));
|
||||
baddeps = alpm_list_add(baddeps, miss);
|
||||
}
|
||||
}
|
||||
@@ -309,7 +321,7 @@ static int dep_vercmp(const char *version1, pmdepmod_t mod,
|
||||
if(mod == PM_DEP_MOD_ANY) {
|
||||
equal = 1;
|
||||
} else {
|
||||
int cmp = _alpm_versioncmp(version1, version2);
|
||||
int cmp = alpm_pkg_vercmp(version1, version2);
|
||||
switch(mod) {
|
||||
case PM_DEP_MOD_EQ: equal = (cmp == 0); break;
|
||||
case PM_DEP_MOD_GE: equal = (cmp >= 0); break;
|
||||
@@ -345,7 +357,6 @@ int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
||||
satisfy = (dep->mod == PM_DEP_MOD_ANY
|
||||
&& strcmp(provname, dep->name) == 0);
|
||||
} else {
|
||||
/* replace the space with a NULL byte, and advance ptr the version */
|
||||
*provver = '\0';
|
||||
provver += 1;
|
||||
satisfy = (strcmp(provname, dep->name) == 0
|
||||
@@ -357,7 +368,7 @@ int SYMEXPORT alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep)
|
||||
return(satisfy);
|
||||
}
|
||||
|
||||
pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||
pmdepend_t *_alpm_splitdep(const char *depstring)
|
||||
{
|
||||
pmdepend_t *depend;
|
||||
char *ptr = NULL;
|
||||
@@ -366,9 +377,9 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||
if(depstring == NULL) {
|
||||
return(NULL);
|
||||
}
|
||||
newstr = strdup(depstring);
|
||||
STRDUP(newstr, depstring, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
MALLOC(depend, sizeof(pmdepend_t), return(NULL));
|
||||
CALLOC(depend, 1, sizeof(pmdepend_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
/* Find a version comparator if one exists. If it does, set the type and
|
||||
* increment the ptr accordingly so we can copy the right strings. */
|
||||
@@ -392,25 +403,36 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||
depend->mod = PM_DEP_MOD_GT;
|
||||
*ptr = '\0';
|
||||
ptr += 1;
|
||||
|
||||
} else {
|
||||
/* no version specified - copy in the name and return it */
|
||||
/* no version specified - copy the name and return it */
|
||||
depend->mod = PM_DEP_MOD_ANY;
|
||||
strncpy(depend->name, newstr, PKG_NAME_LEN);
|
||||
depend->version[0] = '\0';
|
||||
STRDUP(depend->name, newstr, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
depend->version = NULL;
|
||||
free(newstr);
|
||||
return(depend);
|
||||
}
|
||||
|
||||
/* if we get here, we have a version comparator, copy the right parts
|
||||
* to the right places */
|
||||
strncpy(depend->name, newstr, PKG_NAME_LEN);
|
||||
strncpy(depend->version, ptr, PKG_VERSION_LEN);
|
||||
STRDUP(depend->name, newstr, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(depend->version, ptr, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
free(newstr);
|
||||
|
||||
return(depend);
|
||||
}
|
||||
|
||||
pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep)
|
||||
{
|
||||
pmdepend_t *newdep;
|
||||
CALLOC(newdep, 1, sizeof(pmdepend_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
STRDUP(newdep->name, dep->name, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(newdep->version, dep->version, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
newdep->mod = dep->mod;
|
||||
|
||||
return(newdep);
|
||||
}
|
||||
|
||||
/* These parameters are messy. We check if this package, given a list of
|
||||
* targets and a db is safe to remove. We do NOT remove it if it is in the
|
||||
* target list, or if if the package was explictly installed and
|
||||
@@ -418,9 +440,9 @@ pmdepend_t SYMEXPORT *alpm_splitdep(const char *depstring)
|
||||
static int can_remove_package(pmdb_t *db, pmpkg_t *pkg, alpm_list_t *targets,
|
||||
int include_explicit)
|
||||
{
|
||||
alpm_list_t *i, *requiredby;
|
||||
alpm_list_t *i;
|
||||
|
||||
if(_alpm_pkg_find(alpm_pkg_get_name(pkg), targets)) {
|
||||
if(_alpm_pkg_find(targets, alpm_pkg_get_name(pkg))) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -440,15 +462,12 @@ static int can_remove_package(pmdb_t *db, pmpkg_t *pkg, alpm_list_t *targets,
|
||||
* if checkdeps detected it would break something */
|
||||
|
||||
/* see if other packages need it */
|
||||
requiredby = alpm_pkg_compute_requiredby(pkg);
|
||||
for(i = requiredby; i; i = i->next) {
|
||||
pmpkg_t *reqpkg = _alpm_db_get_pkgfromcache(db, i->data);
|
||||
if(reqpkg && !_alpm_pkg_find(alpm_pkg_get_name(reqpkg), targets)) {
|
||||
FREELIST(requiredby);
|
||||
for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
|
||||
pmpkg_t *lpkg = i->data;
|
||||
if(_alpm_dep_edge(lpkg, pkg) && !_alpm_pkg_find(targets, lpkg->name)) {
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
FREELIST(requiredby);
|
||||
|
||||
/* it's ok to remove */
|
||||
return(1);
|
||||
@@ -466,7 +485,7 @@ static int can_remove_package(pmdb_t *db, pmpkg_t *pkg, alpm_list_t *targets,
|
||||
*/
|
||||
void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit)
|
||||
{
|
||||
alpm_list_t *i, *j, *k;
|
||||
alpm_list_t *i, *j;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -476,149 +495,133 @@ void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit)
|
||||
|
||||
for(i = targs; i; i = i->next) {
|
||||
pmpkg_t *pkg = i->data;
|
||||
for(j = alpm_pkg_get_depends(pkg); j; j = j->next) {
|
||||
pmdepend_t *depend = j->data;
|
||||
|
||||
for(k = _alpm_db_get_pkgcache(db); k; k = k->next) {
|
||||
pmpkg_t *deppkg = k->data;
|
||||
if(alpm_depcmp(deppkg,depend)
|
||||
&& can_remove_package(db, deppkg, targs, include_explicit)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "adding '%s' to the targets\n",
|
||||
alpm_pkg_get_name(deppkg));
|
||||
/* add it to the target list */
|
||||
targs = alpm_list_add(targs, _alpm_pkg_dup(deppkg));
|
||||
}
|
||||
for(j = _alpm_db_get_pkgcache(db); j; j = j->next) {
|
||||
pmpkg_t *deppkg = j->data;
|
||||
if(_alpm_dep_edge(pkg, deppkg)
|
||||
&& can_remove_package(db, deppkg, targs, include_explicit)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "adding '%s' to the targets\n",
|
||||
alpm_pkg_get_name(deppkg));
|
||||
/* add it to the target list */
|
||||
targs = alpm_list_add(targs, _alpm_pkg_dup(deppkg));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* populates *list with packages that need to be installed to satisfy all
|
||||
* dependencies (recursive) for syncpkg
|
||||
/* helper function for resolvedeps: search for dep satisfier in dbs */
|
||||
pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, pmpkg_t *tpkg)
|
||||
{
|
||||
alpm_list_t *i, *j;
|
||||
/* 1. literals */
|
||||
for(i = dbs; i; i = i->next) {
|
||||
pmpkg_t *pkg = _alpm_db_get_pkgfromcache(i->data, dep->name);
|
||||
if(pkg && alpm_depcmp(pkg, dep) && !_alpm_pkg_find(excluding, pkg->name)) {
|
||||
if(_alpm_pkg_should_ignore(pkg)) {
|
||||
int install;
|
||||
QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, pkg,
|
||||
tpkg, NULL, &install);
|
||||
if(!install) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return(pkg);
|
||||
}
|
||||
}
|
||||
/* 2. satisfiers (skip literals here) */
|
||||
for(i = dbs; i; i = i->next) {
|
||||
for(j = _alpm_db_get_pkgcache(i->data); j; j = j->next) {
|
||||
pmpkg_t *pkg = j->data;
|
||||
if(alpm_depcmp(pkg, dep) && strcmp(pkg->name, dep->name) &&
|
||||
!_alpm_pkg_find(excluding, pkg->name)) {
|
||||
if(_alpm_pkg_should_ignore(pkg)) {
|
||||
int install;
|
||||
QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, pkg,
|
||||
tpkg, NULL, &install);
|
||||
if(!install) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
_alpm_log(PM_LOG_WARNING, _("provider package was selected (%s provides %s)\n"),
|
||||
pkg->name, dep->name);
|
||||
return(pkg);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/* populates list with packages that need to be installed to satisfy all
|
||||
* dependencies of packages in list
|
||||
*
|
||||
* @param remove contains packages elected for removal
|
||||
* make sure **list is already initialized
|
||||
*/
|
||||
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
|
||||
alpm_list_t **list, alpm_list_t *remove, pmtrans_t *trans, alpm_list_t **data)
|
||||
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, alpm_list_t *list,
|
||||
alpm_list_t *remove, alpm_list_t **data)
|
||||
{
|
||||
alpm_list_t *i, *j, *k;
|
||||
alpm_list_t *i, *j;
|
||||
alpm_list_t *targ;
|
||||
alpm_list_t *deps = NULL;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(local == NULL || dbs_sync == NULL || syncpkg == NULL || list == NULL) {
|
||||
if(local == NULL || dbs_sync == NULL) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "started resolving dependencies\n");
|
||||
targ = alpm_list_add(NULL, syncpkg);
|
||||
deps = alpm_checkdeps(local, 0, remove, targ);
|
||||
alpm_list_free(targ);
|
||||
|
||||
if(deps == NULL) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
for(i = deps; i; i = i->next) {
|
||||
int found = 0;
|
||||
pmdepmissing_t *miss = i->data;
|
||||
pmdepend_t *missdep = &(miss->depend);
|
||||
pmpkg_t *sync = NULL;
|
||||
|
||||
/* check if one of the packages in *list already satisfies this dependency */
|
||||
for(j = *list; j && !found; j = j->next) {
|
||||
pmpkg_t *sp = j->data;
|
||||
if(alpm_depcmp(sp, missdep)) {
|
||||
for(i = list; i; i = i->next) {
|
||||
pmpkg_t *tpkg = i->data;
|
||||
targ = alpm_list_add(NULL, tpkg);
|
||||
deps = alpm_checkdeps(local, 0, remove, targ);
|
||||
alpm_list_free(targ);
|
||||
for(j = deps; j; j = j->next) {
|
||||
pmdepmissing_t *miss = j->data;
|
||||
pmdepend_t *missdep = alpm_miss_get_dep(miss);
|
||||
/* check if one of the packages in list already satisfies this dependency */
|
||||
if(_alpm_find_dep_satisfier(list, missdep)) {
|
||||
continue;
|
||||
}
|
||||
/* find a satisfier package in the given repositories */
|
||||
pmpkg_t *spkg = _alpm_resolvedep(missdep, dbs_sync, list, tpkg);
|
||||
if(!spkg) {
|
||||
pm_errno = PM_ERR_UNSATISFIED_DEPS;
|
||||
char *missdepstring = alpm_dep_get_string(missdep);
|
||||
_alpm_log(PM_LOG_DEBUG, "%s satisfies dependency %s -- skipping\n",
|
||||
alpm_pkg_get_name(sp), missdepstring);
|
||||
_alpm_log(PM_LOG_ERROR, _("cannot resolve \"%s\", a dependency of \"%s\"\n"),
|
||||
missdepstring, tpkg->name);
|
||||
free(missdepstring);
|
||||
found = 1;
|
||||
if(data) {
|
||||
pmdepmissing_t *missd = _alpm_depmiss_new(miss->target,
|
||||
miss->depend, miss->causingpkg);
|
||||
if(missd) {
|
||||
*data = alpm_list_add(*data, missd);
|
||||
}
|
||||
}
|
||||
alpm_list_free_inner(deps, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(deps);
|
||||
return(-1);
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "pulling dependency %s (needed by %s)\n",
|
||||
alpm_pkg_get_name(spkg), alpm_pkg_get_name(tpkg));
|
||||
list = alpm_list_add(list, spkg);
|
||||
}
|
||||
}
|
||||
if(found) {
|
||||
continue;
|
||||
}
|
||||
alpm_list_free_inner(deps, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(deps);
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "finished resolving dependencies\n");
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* find the package in one of the repositories */
|
||||
/* check literals */
|
||||
for(j = dbs_sync; j && !found; j = j->next) {
|
||||
sync = _alpm_db_get_pkgfromcache(j->data, missdep->name);
|
||||
if(!sync) {
|
||||
continue;
|
||||
}
|
||||
found = alpm_depcmp(sync, missdep) && !_alpm_pkg_find(alpm_pkg_get_name(sync), remove);
|
||||
if(!found) {
|
||||
continue;
|
||||
}
|
||||
/* If package is in the ignorepkg list, ask before we pull it */
|
||||
if(_alpm_pkg_should_ignore(sync)) {
|
||||
pmpkg_t *dummypkg = _alpm_pkg_new(miss->target, NULL);
|
||||
QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, sync, NULL, &found);
|
||||
_alpm_pkg_free(dummypkg);
|
||||
}
|
||||
}
|
||||
/*TODO this autoresolves the first 'satisfier' package... we should fix this
|
||||
* somehow */
|
||||
/* check provides */
|
||||
/* we don't check literals again to avoid duplicated PM_TRANS_CONV_INSTALL_IGNOREPKG messages */
|
||||
for(j = dbs_sync; j && !found; j = j->next) {
|
||||
for(k = _alpm_db_get_pkgcache(j->data); k && !found; k = k->next) {
|
||||
sync = k->data;
|
||||
if(!sync) {
|
||||
continue;
|
||||
}
|
||||
found = alpm_depcmp(sync, missdep) && strcmp(sync->name, missdep->name)
|
||||
&& !_alpm_pkg_find(alpm_pkg_get_name(sync), remove);
|
||||
if(!found) {
|
||||
continue;
|
||||
}
|
||||
if(_alpm_pkg_should_ignore(sync)) {
|
||||
pmpkg_t *dummypkg = _alpm_pkg_new(miss->target, NULL);
|
||||
QUESTION(trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, sync, NULL, &found);
|
||||
_alpm_pkg_free(dummypkg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!found) {
|
||||
char *missdepstring = alpm_dep_get_string(missdep);
|
||||
_alpm_log(PM_LOG_ERROR, _("cannot resolve \"%s\", a dependency of \"%s\"\n"),
|
||||
missdepstring, miss->target);
|
||||
free(missdepstring);
|
||||
if(data) {
|
||||
MALLOC(miss, sizeof(pmdepmissing_t),/*nothing*/);
|
||||
if(!miss) {
|
||||
pm_errno = PM_ERR_MEMORY;
|
||||
FREELIST(*data);
|
||||
goto error;
|
||||
}
|
||||
*miss = *(pmdepmissing_t *)i->data;
|
||||
*data = alpm_list_add(*data, miss);
|
||||
}
|
||||
pm_errno = PM_ERR_UNSATISFIED_DEPS;
|
||||
goto error;
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "pulling dependency %s (needed by %s)\n",
|
||||
alpm_pkg_get_name(sync), alpm_pkg_get_name(syncpkg));
|
||||
*list = alpm_list_add(*list, sync);
|
||||
if(_alpm_resolvedeps(local, dbs_sync, sync, list, remove, trans, data)) {
|
||||
goto error;
|
||||
}
|
||||
/* Does pkg1 depend on pkg2, ie. does pkg2 satisfy a dependency of pkg1? */
|
||||
int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2)
|
||||
{
|
||||
alpm_list_t *i;
|
||||
for(i = alpm_pkg_get_depends(pkg1); i; i = i->next) {
|
||||
if(alpm_depcmp(pkg2, i->data)) {
|
||||
return(1);
|
||||
}
|
||||
}
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "finished resolving dependencies\n");
|
||||
|
||||
FREELIST(deps);
|
||||
|
||||
return(0);
|
||||
|
||||
error:
|
||||
FREELIST(deps);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss)
|
||||
@@ -628,7 +631,17 @@ const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss)
|
||||
/* Sanity checks */
|
||||
ASSERT(miss != NULL, return(NULL));
|
||||
|
||||
return miss->target;
|
||||
return(miss->target);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_miss_get_causingpkg(const pmdepmissing_t *miss)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(miss != NULL, return(NULL));
|
||||
|
||||
return miss->causingpkg;
|
||||
}
|
||||
|
||||
pmdepend_t SYMEXPORT *alpm_miss_get_dep(pmdepmissing_t *miss)
|
||||
@@ -638,7 +651,7 @@ pmdepend_t SYMEXPORT *alpm_miss_get_dep(pmdepmissing_t *miss)
|
||||
/* Sanity checks */
|
||||
ASSERT(miss != NULL, return(NULL));
|
||||
|
||||
return &(miss->depend);
|
||||
return(miss->depend);
|
||||
}
|
||||
|
||||
pmdepmod_t SYMEXPORT alpm_dep_get_mod(const pmdepend_t *dep)
|
||||
@@ -648,7 +661,7 @@ pmdepmod_t SYMEXPORT alpm_dep_get_mod(const pmdepend_t *dep)
|
||||
/* Sanity checks */
|
||||
ASSERT(dep != NULL, return(-1));
|
||||
|
||||
return dep->mod;
|
||||
return(dep->mod);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_dep_get_name(const pmdepend_t *dep)
|
||||
@@ -658,7 +671,7 @@ const char SYMEXPORT *alpm_dep_get_name(const pmdepend_t *dep)
|
||||
/* Sanity checks */
|
||||
ASSERT(dep != NULL, return(NULL));
|
||||
|
||||
return dep->name;
|
||||
return(dep->name);
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
|
||||
@@ -668,7 +681,7 @@ const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
|
||||
/* Sanity checks */
|
||||
ASSERT(dep != NULL, return(NULL));
|
||||
|
||||
return dep->version;
|
||||
return(dep->version);
|
||||
}
|
||||
|
||||
/** Reverse of splitdep; make a dep string from a pmdepend_t struct.
|
||||
@@ -678,7 +691,7 @@ const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
|
||||
*/
|
||||
char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
|
||||
{
|
||||
char *opr, *str = NULL;
|
||||
char *name, *opr, *ver, *str = NULL;
|
||||
size_t len;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
@@ -686,6 +699,12 @@ char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
|
||||
/* Sanity checks */
|
||||
ASSERT(dep != NULL, return(NULL));
|
||||
|
||||
if(dep->name) {
|
||||
name = dep->name;
|
||||
} else {
|
||||
name = "";
|
||||
}
|
||||
|
||||
switch(dep->mod) {
|
||||
case PM_DEP_MOD_ANY:
|
||||
opr = "";
|
||||
@@ -710,11 +729,18 @@ char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
|
||||
break;
|
||||
}
|
||||
|
||||
if(dep->version) {
|
||||
ver = dep->version;
|
||||
} else {
|
||||
ver = "";
|
||||
}
|
||||
|
||||
/* we can always compute len and print the string like this because opr
|
||||
* and ver will be empty when PM_DEP_MOD_ANY is the depend type */
|
||||
len = strlen(dep->name) + strlen(opr) + strlen(dep->version) + 1;
|
||||
* and ver will be empty when PM_DEP_MOD_ANY is the depend type. the
|
||||
* reassignments above also ensure we do not do a strlen(NULL). */
|
||||
len = strlen(name) + strlen(opr) + strlen(ver) + 1;
|
||||
MALLOC(str, len, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
snprintf(str, len, "%s%s%s", dep->name, opr, dep->version);
|
||||
snprintf(str, len, "%s%s%s", name, opr, ver);
|
||||
|
||||
return(str);
|
||||
}
|
||||
|
||||
@@ -29,31 +29,30 @@
|
||||
/* Dependency */
|
||||
struct __pmdepend_t {
|
||||
pmdepmod_t mod;
|
||||
char name[PKG_NAME_LEN];
|
||||
char version[PKG_VERSION_LEN];
|
||||
char *name;
|
||||
char *version;
|
||||
};
|
||||
|
||||
/* Missing dependency */
|
||||
struct __pmdepmissing_t {
|
||||
char target[PKG_NAME_LEN];
|
||||
pmdepend_t depend;
|
||||
char *target;
|
||||
pmdepend_t *depend;
|
||||
char *causingpkg; /* this is used in case of remove dependency error only */
|
||||
};
|
||||
|
||||
/* Graphs */
|
||||
struct __pmgraph_t {
|
||||
int state; /* 0: untouched, -1: entered, other: leaving time */
|
||||
void *data;
|
||||
struct __pmgraph_t *parent; /* where did we come from? */
|
||||
alpm_list_t *children;
|
||||
alpm_list_t *childptr; /* points to a child in children list */
|
||||
};
|
||||
|
||||
pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepmod_t depmod,
|
||||
const char *depname, const char *depversion);
|
||||
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, pmtranstype_t mode);
|
||||
void _alpm_dep_free(pmdepend_t *dep);
|
||||
pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep);
|
||||
pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep,
|
||||
const char *causinpkg);
|
||||
void _alpm_depmiss_free(pmdepmissing_t *miss);
|
||||
alpm_list_t *_alpm_sortbydeps(alpm_list_t *targets, int reverse);
|
||||
void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit);
|
||||
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *syncpkg,
|
||||
alpm_list_t **list, alpm_list_t *remove, pmtrans_t *trans, alpm_list_t **data);
|
||||
pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, pmpkg_t *tpkg);
|
||||
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, alpm_list_t *list,
|
||||
alpm_list_t *remove, alpm_list_t **data);
|
||||
int _alpm_dep_edge(pmpkg_t *pkg1, pmpkg_t *pkg2);
|
||||
pmdepend_t *_alpm_splitdep(const char *depstring);
|
||||
pmpkg_t *_alpm_find_dep_satisfier(alpm_list_t *pkgs, pmdepend_t *dep);
|
||||
|
||||
#endif /* _ALPM_DEPS_H */
|
||||
|
||||
|
||||
449
lib/libalpm/dload.c
Normal file
449
lib/libalpm/dload.c
Normal file
@@ -0,0 +1,449 @@
|
||||
/*
|
||||
* download.c
|
||||
*
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
/* the following two are needed on BSD for libfetch */
|
||||
#if defined(HAVE_SYS_SYSLIMITS_H)
|
||||
#include <sys/syslimits.h> /* PATH_MAX */
|
||||
#endif
|
||||
#if defined(HAVE_SYS_PARAM_H)
|
||||
#include <sys/param.h> /* MAXHOSTNAMELEN */
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBDOWNLOAD)
|
||||
#include <download.h>
|
||||
#elif defined(HAVE_LIBFETCH)
|
||||
#include <fetch.h>
|
||||
#define downloadFreeURL fetchFreeURL
|
||||
#define downloadLastErrCode fetchLastErrCode
|
||||
#define downloadLastErrString fetchLastErrString
|
||||
#define downloadParseURL fetchParseURL
|
||||
#define downloadTimeout fetchTimeout
|
||||
#define downloadXGet fetchXGet
|
||||
#endif
|
||||
|
||||
/* libalpm */
|
||||
#include "dload.h"
|
||||
#include "alpm_list.h"
|
||||
#include "alpm.h"
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
#include "handle.h"
|
||||
|
||||
static char *get_filename(const char *url) {
|
||||
char *filename = strrchr(url, '/');
|
||||
if(filename != NULL) {
|
||||
filename++;
|
||||
}
|
||||
return(filename);
|
||||
}
|
||||
|
||||
static char *get_destfile(const char *path, const char *filename) {
|
||||
char *destfile;
|
||||
/* len = localpath len + filename len + null */
|
||||
int len = strlen(path) + strlen(filename) + 1;
|
||||
CALLOC(destfile, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
snprintf(destfile, len, "%s%s", path, filename);
|
||||
|
||||
return(destfile);
|
||||
}
|
||||
|
||||
static char *get_tempfile(const char *path, const char *filename) {
|
||||
char *tempfile;
|
||||
/* len = localpath len + filename len + '.part' len + null */
|
||||
int len = strlen(path) + strlen(filename) + 6;
|
||||
CALLOC(tempfile, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
snprintf(tempfile, len, "%s%s.part", path, filename);
|
||||
|
||||
return(tempfile);
|
||||
}
|
||||
|
||||
#if defined(INTERNAL_DOWNLOAD)
|
||||
/* Build a 'struct url' from an url. */
|
||||
static struct url *url_for_string(const char *url)
|
||||
{
|
||||
struct url *ret = NULL;
|
||||
ret = downloadParseURL(url);
|
||||
if(!ret) {
|
||||
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
|
||||
RET_ERR(PM_ERR_SERVER_BAD_URL, NULL);
|
||||
}
|
||||
|
||||
/* if no URL scheme specified, assume HTTP */
|
||||
if(strlen(ret->scheme) == 0) {
|
||||
_alpm_log(PM_LOG_WARNING, _("url scheme not specified, assuming HTTP\n"));
|
||||
strcpy(ret->scheme, SCHEME_HTTP);
|
||||
}
|
||||
/* add a user & password for anonymous FTP */
|
||||
if(strcmp(ret->scheme,SCHEME_FTP) == 0 && strlen(ret->user) == 0) {
|
||||
strcpy(ret->user, "anonymous");
|
||||
strcpy(ret->pwd, "libalpm@guest");
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
static int download_internal(const char *url, const char *localpath,
|
||||
time_t mtimeold, time_t *mtimenew) {
|
||||
FILE *dlf, *localf = NULL;
|
||||
struct url_stat ust;
|
||||
struct stat st;
|
||||
int chk_resume = 0;
|
||||
size_t dl_thisfile = 0;
|
||||
char *tempfile, *destfile, *filename;
|
||||
int ret = 0;
|
||||
struct url *fileurl = url_for_string(url);
|
||||
|
||||
if(!fileurl) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
filename = get_filename(url);
|
||||
if(!filename) {
|
||||
return(-1);
|
||||
}
|
||||
destfile = get_destfile(localpath, filename);
|
||||
tempfile = get_tempfile(localpath, filename);
|
||||
|
||||
/* pass the raw filename for passing to the callback function */
|
||||
_alpm_log(PM_LOG_DEBUG, "using '%s' for download progress\n", filename);
|
||||
|
||||
if(stat(tempfile, &st) == 0 && st.st_size > 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "existing file found, using it\n");
|
||||
fileurl->offset = (off_t)st.st_size;
|
||||
dl_thisfile = st.st_size;
|
||||
localf = fopen(tempfile, "ab");
|
||||
chk_resume = 1;
|
||||
} else {
|
||||
fileurl->offset = (off_t)0;
|
||||
dl_thisfile = 0;
|
||||
}
|
||||
|
||||
/* libdownload does not reset the error code, reset it in
|
||||
* the case of previous errors */
|
||||
downloadLastErrCode = 0;
|
||||
|
||||
/* 10s timeout - TODO make a config option */
|
||||
downloadTimeout = 10000;
|
||||
|
||||
dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
|
||||
|
||||
if(downloadLastErrCode != 0 || dlf == NULL) {
|
||||
const char *host = _("disk");
|
||||
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
|
||||
host = fileurl->host;
|
||||
}
|
||||
pm_errno = PM_ERR_LIBDOWNLOAD;
|
||||
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
|
||||
filename, host, downloadLastErrString);
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "connected to %s successfully\n", fileurl->host);
|
||||
}
|
||||
|
||||
if(ust.mtime && mtimeold && ust.mtime == mtimeold) {
|
||||
_alpm_log(PM_LOG_DEBUG, "mtimes are identical, skipping %s\n", filename);
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if(ust.mtime && mtimenew) {
|
||||
*mtimenew = ust.mtime;
|
||||
}
|
||||
|
||||
if(chk_resume && fileurl->offset == 0) {
|
||||
_alpm_log(PM_LOG_WARNING, _("cannot resume download, starting over\n"));
|
||||
if(localf != NULL) {
|
||||
fclose(localf);
|
||||
localf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if(localf == NULL) {
|
||||
_alpm_rmrf(tempfile);
|
||||
fileurl->offset = (off_t)0;
|
||||
dl_thisfile = 0;
|
||||
localf = fopen(tempfile, "wb");
|
||||
if(localf == NULL) { /* still null? */
|
||||
_alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'\n"), tempfile);
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* Progress 0 - initialize */
|
||||
if(handle->dlcb) {
|
||||
handle->dlcb(filename, 0, ust.size);
|
||||
}
|
||||
|
||||
size_t nread = 0;
|
||||
char buffer[PM_DLBUF_LEN];
|
||||
while((nread = fread(buffer, 1, PM_DLBUF_LEN, dlf)) > 0) {
|
||||
if(ferror(dlf)) {
|
||||
pm_errno = PM_ERR_LIBDOWNLOAD;
|
||||
_alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s\n"),
|
||||
filename, downloadLastErrString);
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
size_t nwritten = 0;
|
||||
while(nwritten < nread) {
|
||||
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
|
||||
if(ferror(localf)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
|
||||
destfile, strerror(errno));
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
dl_thisfile += nread;
|
||||
|
||||
if(handle->dlcb) {
|
||||
handle->dlcb(filename, dl_thisfile, ust.size);
|
||||
}
|
||||
}
|
||||
/* probably safer to close the file descriptors now before renaming the file,
|
||||
* for example to make sure the buffers are flushed.
|
||||
*/
|
||||
fclose(localf);
|
||||
localf = NULL;
|
||||
fclose(dlf);
|
||||
dlf = NULL;
|
||||
|
||||
rename(tempfile, destfile);
|
||||
ret = 0;
|
||||
|
||||
cleanup:
|
||||
FREE(tempfile);
|
||||
FREE(destfile);
|
||||
if(localf != NULL) {
|
||||
fclose(localf);
|
||||
}
|
||||
if(dlf != NULL) {
|
||||
fclose(dlf);
|
||||
}
|
||||
downloadFreeURL(fileurl);
|
||||
return(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int download_external(const char *url, const char *localpath,
|
||||
time_t mtimeold, time_t *mtimenew) {
|
||||
int ret = 0;
|
||||
int retval;
|
||||
int usepart = 0;
|
||||
char *ptr1, *ptr2;
|
||||
char origCmd[PATH_MAX];
|
||||
char parsedCmd[PATH_MAX] = "";
|
||||
char cwd[PATH_MAX];
|
||||
char *destfile, *tempfile, *filename;
|
||||
|
||||
if(!handle->xfercommand) {
|
||||
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
|
||||
}
|
||||
|
||||
filename = get_filename(url);
|
||||
if(!filename) {
|
||||
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
|
||||
}
|
||||
destfile = get_destfile(localpath, filename);
|
||||
tempfile = get_tempfile(localpath, filename);
|
||||
|
||||
/* replace all occurrences of %o with fn.part */
|
||||
strncpy(origCmd, handle->xfercommand, sizeof(origCmd));
|
||||
ptr1 = origCmd;
|
||||
while((ptr2 = strstr(ptr1, "%o"))) {
|
||||
usepart = 1;
|
||||
ptr2[0] = '\0';
|
||||
strcat(parsedCmd, ptr1);
|
||||
strcat(parsedCmd, tempfile);
|
||||
ptr1 = ptr2 + 2;
|
||||
}
|
||||
strcat(parsedCmd, ptr1);
|
||||
/* replace all occurrences of %u with the download URL */
|
||||
strncpy(origCmd, parsedCmd, sizeof(origCmd));
|
||||
parsedCmd[0] = '\0';
|
||||
ptr1 = origCmd;
|
||||
while((ptr2 = strstr(ptr1, "%u"))) {
|
||||
ptr2[0] = '\0';
|
||||
strcat(parsedCmd, ptr1);
|
||||
strcat(parsedCmd, url);
|
||||
ptr1 = ptr2 + 2;
|
||||
}
|
||||
strcat(parsedCmd, ptr1);
|
||||
/* cwd to the download directory */
|
||||
getcwd(cwd, PATH_MAX);
|
||||
if(chdir(localpath)) {
|
||||
_alpm_log(PM_LOG_WARNING, _("could not chdir to %s\n"), localpath);
|
||||
pm_errno = PM_ERR_EXTERNAL_DOWNLOAD;
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
/* execute the parsed command via /bin/sh -c */
|
||||
_alpm_log(PM_LOG_DEBUG, "running command: %s\n", parsedCmd);
|
||||
retval = system(parsedCmd);
|
||||
|
||||
if(retval == -1) {
|
||||
_alpm_log(PM_LOG_WARNING, _("running XferCommand: fork failed!\n"));
|
||||
pm_errno = PM_ERR_EXTERNAL_DOWNLOAD;
|
||||
ret = -1;
|
||||
} else if(retval != 0) {
|
||||
/* download failed */
|
||||
_alpm_log(PM_LOG_DEBUG, "XferCommand command returned non-zero status "
|
||||
"code (%d)\n", retval);
|
||||
ret = -1;
|
||||
} else {
|
||||
/* download was successful */
|
||||
if(usepart) {
|
||||
rename(tempfile, destfile);
|
||||
}
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
chdir(cwd);
|
||||
if(ret == -1) {
|
||||
/* hack to let an user the time to cancel a download */
|
||||
sleep(2);
|
||||
}
|
||||
FREE(destfile);
|
||||
FREE(tempfile);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
static int download(const char *url, const char *localpath,
|
||||
time_t mtimeold, time_t *mtimenew) {
|
||||
int ret;
|
||||
|
||||
/* We have a few things to take into account here.
|
||||
* 1. If we have both internal/external available, choose based on
|
||||
* whether xfercommand is populated.
|
||||
* 2. If we only have external available, we should first check
|
||||
* if a command was provided before we drop into download_external.
|
||||
*/
|
||||
if(handle->xfercommand == NULL) {
|
||||
#if defined(INTERNAL_DOWNLOAD)
|
||||
ret = download_internal(url, localpath, mtimeold, mtimenew);
|
||||
#else
|
||||
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
|
||||
#endif
|
||||
} else {
|
||||
ret = download_external(url, localpath, mtimeold, mtimenew);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Download a single file
|
||||
* - if mtimeold is non-NULL, then only download the file if it's different
|
||||
* than mtimeold.
|
||||
* - if *mtimenew is non-NULL, it will be filled with the mtime of the remote
|
||||
* file.
|
||||
* - servers must be a list of urls WITHOUT trailing slashes.
|
||||
*
|
||||
* RETURN: 0 for successful download
|
||||
* 1 if the mtimes are identical
|
||||
* -1 on error
|
||||
*/
|
||||
int _alpm_download_single_file(const char *filename,
|
||||
alpm_list_t *servers, const char *localpath,
|
||||
time_t mtimeold, time_t *mtimenew)
|
||||
{
|
||||
alpm_list_t *i;
|
||||
int ret = -1;
|
||||
|
||||
for(i = servers; i; i = i->next) {
|
||||
const char *server = i->data;
|
||||
char *fileurl = NULL;
|
||||
int len;
|
||||
|
||||
/* print server + filename into a buffer */
|
||||
len = strlen(server) + strlen(filename) + 2;
|
||||
CALLOC(fileurl, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, -1));
|
||||
snprintf(fileurl, len, "%s/%s", server, filename);
|
||||
|
||||
ret = download(fileurl, localpath, mtimeold, mtimenew);
|
||||
FREE(fileurl);
|
||||
if(ret != -1) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int _alpm_download_files(alpm_list_t *files,
|
||||
alpm_list_t *servers, const char *localpath)
|
||||
{
|
||||
int ret = 0;
|
||||
alpm_list_t *lp;
|
||||
|
||||
for(lp = files; lp; lp = lp->next) {
|
||||
char *filename = lp->data;
|
||||
if(_alpm_download_single_file(filename, servers,
|
||||
localpath, 0, NULL) == -1) {
|
||||
ret++;
|
||||
}
|
||||
}
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/** Fetch a remote pkg.
|
||||
* @param url URL of the package to download
|
||||
* @return the downloaded filepath on success, NULL on error
|
||||
* @addtogroup alpm_misc
|
||||
*/
|
||||
char SYMEXPORT *alpm_fetch_pkgurl(const char *url)
|
||||
{
|
||||
char *filename, *filepath;
|
||||
const char *cachedir;
|
||||
int ret;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
filename = get_filename(url);
|
||||
|
||||
/* find a valid cache dir to download to */
|
||||
cachedir = _alpm_filecache_setup();
|
||||
|
||||
/* download the file */
|
||||
ret = download(url, cachedir, 0, NULL);
|
||||
if(ret == -1) {
|
||||
_alpm_log(PM_LOG_WARNING, _("failed to download %s\n"), url);
|
||||
return(NULL);
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "successfully downloaded %s\n", url);
|
||||
|
||||
/* we should be able to find the file the second time around */
|
||||
filepath = _alpm_filecache_find(filename);
|
||||
return(filepath);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* error.h
|
||||
* dload.h
|
||||
*
|
||||
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -16,13 +16,23 @@
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _ALPM_ERROR_H
|
||||
#define _ALPM_ERROR_H
|
||||
#ifndef _ALPM_DLOAD_H
|
||||
#define _ALPM_DLOAD_H
|
||||
|
||||
#define RET_ERR(err, ret) do { pm_errno = (err); \
|
||||
_alpm_log(PM_LOG_DEBUG, "returning error %d from %s : %s\n", err, __func__, alpm_strerrorlast()); \
|
||||
return(ret); } while(0)
|
||||
#include "alpm_list.h"
|
||||
#include "alpm.h"
|
||||
|
||||
#endif /* _ALPM_ERROR_H */
|
||||
#include <time.h>
|
||||
|
||||
#define PM_DLBUF_LEN (1024 * 10)
|
||||
|
||||
int _alpm_download_single_file(const char *filename,
|
||||
alpm_list_t *servers, const char *localpath,
|
||||
time_t mtimeold, time_t *mtimenew);
|
||||
|
||||
int _alpm_download_files(alpm_list_t *files,
|
||||
alpm_list_t *servers, const char *localpath);
|
||||
|
||||
#endif /* _ALPM_DLOAD_H */
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
@@ -1,10 +1,7 @@
|
||||
/*
|
||||
* error.c
|
||||
*
|
||||
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
|
||||
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
|
||||
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>
|
||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -22,12 +19,28 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
/* TODO: needed for the libfetch stuff, unfortunately- we should kill it */
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
/* the following two are needed on BSD for libfetch */
|
||||
#if defined(HAVE_SYS_SYSLIMITS_H)
|
||||
#include <sys/syslimits.h> /* PATH_MAX */
|
||||
#endif
|
||||
#if defined(HAVE_SYS_PARAM_H)
|
||||
#include <sys/param.h> /* MAXHOSTNAMELEN */
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_LIBDOWNLOAD)
|
||||
#include <download.h> /* downloadLastErrString */
|
||||
#elif defined(HAVE_LIBFETCH)
|
||||
#include <fetch.h> /* fetchLastErrString */
|
||||
#define downloadLastErrString fetchLastErrString
|
||||
#endif
|
||||
|
||||
/* libalpm */
|
||||
#include "error.h"
|
||||
#include "util.h"
|
||||
#include "alpm.h"
|
||||
|
||||
/* TODO does this really need a file all on its own? */
|
||||
const char SYMEXPORT *alpm_strerrorlast(void)
|
||||
{
|
||||
return alpm_strerror(pm_errno);
|
||||
@@ -74,13 +87,6 @@ const char SYMEXPORT *alpm_strerror(int err)
|
||||
/* Servers */
|
||||
case PM_ERR_SERVER_BAD_URL:
|
||||
return _("invalid url for server");
|
||||
/* Configuration */
|
||||
case PM_ERR_OPT_LOGFILE:
|
||||
case PM_ERR_OPT_DBPATH:
|
||||
case PM_ERR_OPT_LOCALDB:
|
||||
case PM_ERR_OPT_SYNCDB:
|
||||
case PM_ERR_OPT_USESYSLOG:
|
||||
return _("could not set parameter");
|
||||
/* Transactions */
|
||||
case PM_ERR_TRANS_NOT_NULL:
|
||||
return _("transaction already initialized");
|
||||
@@ -109,21 +115,17 @@ const char SYMEXPORT *alpm_strerror(int err)
|
||||
return _("cannot open package file");
|
||||
case PM_ERR_PKG_LOAD:
|
||||
return _("cannot load package data");
|
||||
case PM_ERR_PKG_INSTALLED:
|
||||
return _("package already installed");
|
||||
case PM_ERR_PKG_CANT_FRESH:
|
||||
return _("package not installed or lesser version");
|
||||
case PM_ERR_PKG_CANT_REMOVE:
|
||||
return _("cannot remove all files for package");
|
||||
case PM_ERR_PKG_INVALID_NAME:
|
||||
return _("package name is not valid");
|
||||
case PM_ERR_PKG_CORRUPTED:
|
||||
return _("corrupted package");
|
||||
return _("package filename is not valid");
|
||||
case PM_ERR_PKG_REPO_NOT_FOUND:
|
||||
return _("no such repository");
|
||||
/* Deltas */
|
||||
case PM_ERR_DLT_CORRUPTED:
|
||||
return _("corrupted delta");
|
||||
case PM_ERR_DLT_INVALID:
|
||||
return _("invalid or corrupted delta");
|
||||
case PM_ERR_DLT_PATCHFAILED:
|
||||
return _("delta patch failed");
|
||||
/* Groups */
|
||||
@@ -141,16 +143,26 @@ const char SYMEXPORT *alpm_strerror(int err)
|
||||
return _("user aborted the operation");
|
||||
case PM_ERR_INTERNAL_ERROR:
|
||||
return _("internal error");
|
||||
case PM_ERR_LIBARCHIVE_ERROR:
|
||||
return _("libarchive error");
|
||||
case PM_ERR_PKG_HOLD:
|
||||
/* TODO wow this is not descriptive at all... what does this mean? */
|
||||
return _("not confirmed");
|
||||
case PM_ERR_INVALID_REGEX:
|
||||
return _("invalid regular expression");
|
||||
/* Downloading */
|
||||
case PM_ERR_CONNECT_FAILED:
|
||||
return _("connection to remote host failed");
|
||||
/* Errors from external libraries- our own wrapper error */
|
||||
case PM_ERR_LIBARCHIVE:
|
||||
/* it would be nice to use archive_error_string() here, but that
|
||||
* requires the archive struct, so we can't. Just use a generic
|
||||
* error string instead. */
|
||||
return _("libarchive error");
|
||||
case PM_ERR_LIBDOWNLOAD:
|
||||
#if defined(INTERNAL_DOWNLOAD)
|
||||
return downloadLastErrString;
|
||||
#else
|
||||
/* obviously shouldn't get here... */
|
||||
return _("download library error");
|
||||
#endif
|
||||
case PM_ERR_EXTERNAL_DOWNLOAD:
|
||||
return _("error invoking external downloader");
|
||||
/* Unknown error! */
|
||||
default:
|
||||
return _("unexpected error");
|
||||
|
||||
58
lib/libalpm/graph.h
Normal file
58
lib/libalpm/graph.h
Normal file
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* graph.h - helpful graph structure and setup/teardown methods
|
||||
*
|
||||
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <sys/types.h> /* off_t */
|
||||
|
||||
#include "alpm_list.h"
|
||||
#include "util.h" /* MALLOC() */
|
||||
#include "alpm.h"
|
||||
|
||||
struct __pmgraph_t {
|
||||
char state; /* 0: untouched, -1: entered, other: leaving time */
|
||||
void *data;
|
||||
off_t weight; /* weight of the node */
|
||||
struct __pmgraph_t *parent; /* where did we come from? */
|
||||
alpm_list_t *children;
|
||||
alpm_list_t *childptr; /* points to a child in children list */
|
||||
};
|
||||
typedef struct __pmgraph_t pmgraph_t;
|
||||
|
||||
static pmgraph_t *_alpm_graph_new(void)
|
||||
{
|
||||
pmgraph_t *graph = NULL;
|
||||
|
||||
MALLOC(graph, sizeof(pmgraph_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
if(graph) {
|
||||
graph->state = 0;
|
||||
graph->data = NULL;
|
||||
graph->parent = NULL;
|
||||
graph->children = NULL;
|
||||
graph->childptr = NULL;
|
||||
}
|
||||
return(graph);
|
||||
}
|
||||
|
||||
static void _alpm_graph_free(void *data)
|
||||
{
|
||||
pmgraph_t *graph = data;
|
||||
alpm_list_free(graph->children);
|
||||
free(graph);
|
||||
}
|
||||
|
||||
@@ -27,17 +27,17 @@
|
||||
#include "group.h"
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "log.h"
|
||||
#include "alpm.h"
|
||||
|
||||
pmgrp_t *_alpm_grp_new()
|
||||
pmgrp_t *_alpm_grp_new(const char *name)
|
||||
{
|
||||
pmgrp_t* grp;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
CALLOC(grp, 1, sizeof(pmgrp_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
STRDUP(grp->name, name, RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
return(grp);
|
||||
}
|
||||
@@ -50,20 +50,12 @@ void _alpm_grp_free(pmgrp_t *grp)
|
||||
return;
|
||||
}
|
||||
|
||||
FREELIST(grp->packages);
|
||||
FREE(grp->name);
|
||||
/* do NOT free the contents of the list, just the nodes */
|
||||
alpm_list_free(grp->packages);
|
||||
FREE(grp);
|
||||
}
|
||||
|
||||
/* Helper function for sorting groups
|
||||
*/
|
||||
int _alpm_grp_cmp(const void *g1, const void *g2)
|
||||
{
|
||||
pmgrp_t *grp1 = (pmgrp_t *)g1;
|
||||
pmgrp_t *grp2 = (pmgrp_t *)g2;
|
||||
|
||||
return(strcmp(grp1->name, grp2->name));
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_grp_get_name(const pmgrp_t *grp)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
@@ -74,7 +66,7 @@ const char SYMEXPORT *alpm_grp_get_name(const pmgrp_t *grp)
|
||||
return grp->name;
|
||||
}
|
||||
|
||||
const alpm_list_t SYMEXPORT *alpm_grp_get_pkgs(const pmgrp_t *grp)
|
||||
alpm_list_t SYMEXPORT *alpm_grp_get_pkgs(const pmgrp_t *grp)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
|
||||
@@ -19,19 +19,17 @@
|
||||
#ifndef _ALPM_GROUP_H
|
||||
#define _ALPM_GROUP_H
|
||||
|
||||
/* Groups */
|
||||
#define GRP_NAME_LEN 256
|
||||
|
||||
#include "alpm.h"
|
||||
|
||||
struct __pmgrp_t {
|
||||
char name[GRP_NAME_LEN];
|
||||
alpm_list_t *packages; /* List of strings */
|
||||
/** group name */
|
||||
char *name;
|
||||
/** list of pmpkg_t packages */
|
||||
alpm_list_t *packages;
|
||||
};
|
||||
|
||||
pmgrp_t *_alpm_grp_new(void);
|
||||
pmgrp_t *_alpm_grp_new(const char *name);
|
||||
void _alpm_grp_free(pmgrp_t *grp);
|
||||
int _alpm_grp_cmp(const void *g1, const void *g2);
|
||||
|
||||
#endif /* _ALPM_GROUP_H */
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <syslog.h>
|
||||
@@ -36,10 +35,8 @@
|
||||
#include "alpm_list.h"
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
#include "error.h"
|
||||
#include "trans.h"
|
||||
#include "alpm.h"
|
||||
#include "server.h"
|
||||
|
||||
/* global var for handle (private to libalpm) */
|
||||
pmhandle_t *handle = NULL;
|
||||
@@ -55,8 +52,6 @@ pmhandle_t *_alpm_handle_new()
|
||||
handle->lckfd = -1;
|
||||
handle->logstream = NULL;
|
||||
|
||||
/* see if we're root or not */
|
||||
handle->uid = geteuid();
|
||||
handle->root = NULL;
|
||||
handle->dbpath = NULL;
|
||||
handle->cachedirs = NULL;
|
||||
@@ -120,6 +115,15 @@ alpm_cb_download SYMEXPORT alpm_option_get_dlcb()
|
||||
return handle->dlcb;
|
||||
}
|
||||
|
||||
alpm_cb_totaldl SYMEXPORT alpm_option_get_totaldlcb()
|
||||
{
|
||||
if (handle == NULL) {
|
||||
pm_errno = PM_ERR_HANDLE_NULL;
|
||||
return NULL;
|
||||
}
|
||||
return handle->totaldlcb;
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_option_get_root()
|
||||
{
|
||||
if (handle == NULL) {
|
||||
@@ -273,6 +277,15 @@ void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb)
|
||||
handle->dlcb = cb;
|
||||
}
|
||||
|
||||
void SYMEXPORT alpm_option_set_totaldlcb(alpm_cb_totaldl cb)
|
||||
{
|
||||
if (handle == NULL) {
|
||||
pm_errno = PM_ERR_HANDLE_NULL;
|
||||
return;
|
||||
}
|
||||
handle->totaldlcb = cb;
|
||||
}
|
||||
|
||||
int SYMEXPORT alpm_option_set_root(const char *root)
|
||||
{
|
||||
struct stat st;
|
||||
@@ -386,7 +399,7 @@ void SYMEXPORT alpm_option_set_cachedirs(alpm_list_t *cachedirs)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_cachedir(const char *cachedir)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
char *vdata = NULL;
|
||||
char *newcachedir;
|
||||
size_t cachedirlen;
|
||||
/* verify cachedir ends in a '/' */
|
||||
@@ -397,8 +410,7 @@ int SYMEXPORT alpm_option_remove_cachedir(const char *cachedir)
|
||||
newcachedir = calloc(cachedirlen + 1, sizeof(char));
|
||||
strncpy(newcachedir, cachedir, cachedirlen);
|
||||
newcachedir[cachedirlen-1] = '/';
|
||||
handle->cachedirs = alpm_list_remove(handle->cachedirs, newcachedir,
|
||||
_alpm_str_cmp, &vdata);
|
||||
handle->cachedirs = alpm_list_remove_str(handle->cachedirs, newcachedir, &vdata);
|
||||
FREE(newcachedir);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
@@ -427,6 +439,7 @@ int SYMEXPORT alpm_option_set_logfile(const char *logfile)
|
||||
}
|
||||
if(handle->logstream) {
|
||||
fclose(handle->logstream);
|
||||
handle->logstream = NULL;
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "option 'logfile' = %s\n", handle->logfile);
|
||||
return(0);
|
||||
@@ -450,9 +463,8 @@ void SYMEXPORT alpm_option_set_noupgrades(alpm_list_t *noupgrade)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_noupgrade(const char *pkg)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
handle->noupgrade = alpm_list_remove(handle->noupgrade, pkg,
|
||||
_alpm_str_cmp, &vdata);
|
||||
char *vdata = NULL;
|
||||
handle->noupgrade = alpm_list_remove_str(handle->noupgrade, pkg, &vdata);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
return(1);
|
||||
@@ -473,9 +485,8 @@ void SYMEXPORT alpm_option_set_noextracts(alpm_list_t *noextract)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_noextract(const char *pkg)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
handle->noextract = alpm_list_remove(handle->noextract, pkg,
|
||||
_alpm_str_cmp, &vdata);
|
||||
char *vdata = NULL;
|
||||
handle->noextract = alpm_list_remove_str(handle->noextract, pkg, &vdata);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
return(1);
|
||||
@@ -496,9 +507,8 @@ void SYMEXPORT alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_ignorepkg(const char *pkg)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
handle->ignorepkg = alpm_list_remove(handle->ignorepkg, pkg,
|
||||
_alpm_str_cmp, &vdata);
|
||||
char *vdata = NULL;
|
||||
handle->ignorepkg = alpm_list_remove_str(handle->ignorepkg, pkg, &vdata);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
return(1);
|
||||
@@ -519,9 +529,8 @@ void SYMEXPORT alpm_option_set_holdpkgs(alpm_list_t *holdpkgs)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_holdpkg(const char *pkg)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
handle->holdpkg = alpm_list_remove(handle->holdpkg, pkg,
|
||||
_alpm_str_cmp, &vdata);
|
||||
char *vdata = NULL;
|
||||
handle->holdpkg = alpm_list_remove_str(handle->holdpkg, pkg, &vdata);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
return(1);
|
||||
@@ -542,9 +551,8 @@ void SYMEXPORT alpm_option_set_ignoregrps(alpm_list_t *ignoregrps)
|
||||
|
||||
int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
|
||||
{
|
||||
void *vdata = NULL;
|
||||
handle->ignoregrp = alpm_list_remove(handle->ignoregrp, grp,
|
||||
_alpm_str_cmp, &vdata);
|
||||
char *vdata = NULL;
|
||||
handle->ignoregrp = alpm_list_remove_str(handle->ignoregrp, grp, &vdata);
|
||||
if(vdata != NULL) {
|
||||
FREE(vdata);
|
||||
return(1);
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
|
||||
typedef struct _pmhandle_t {
|
||||
/* internal usage */
|
||||
uid_t uid; /* current UID */ /* TODO is this used? */
|
||||
pmdb_t *db_local; /* local db pointer */
|
||||
alpm_list_t *dbs_sync; /* List of (pmdb_t *) */
|
||||
FILE *logstream; /* log file stream pointer */
|
||||
@@ -40,6 +39,7 @@ typedef struct _pmhandle_t {
|
||||
/* callback functions */
|
||||
alpm_cb_log logcb; /* Log callback function */
|
||||
alpm_cb_download dlcb; /* Download callback function */
|
||||
alpm_cb_totaldl totaldlcb; /* Total download callback function */
|
||||
|
||||
/* filesystem paths */
|
||||
char *root; /* Root path, default '/' */
|
||||
@@ -50,7 +50,7 @@ typedef struct _pmhandle_t {
|
||||
|
||||
/* package lists */
|
||||
alpm_list_t *noupgrade; /* List of packages NOT to be upgraded */
|
||||
alpm_list_t *noextract; /* List of packages NOT to extract */ /*TODO is this used?*/
|
||||
alpm_list_t *noextract; /* List of files NOT to extract */
|
||||
alpm_list_t *ignorepkg; /* List of packages to ignore */
|
||||
alpm_list_t *holdpkg; /* List of packages which 'hold' pacman */
|
||||
alpm_list_t *ignoregrp; /* List of groups to ignore */
|
||||
|
||||
@@ -30,7 +30,6 @@
|
||||
#include "log.h"
|
||||
#include "handle.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "alpm.h"
|
||||
|
||||
/** \addtogroup alpm_log Logging Functions
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
*
|
||||
* Copyright (C) 2006-2007 Christophe Devine
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License, version 2.1 as published by the Free Software Foundation.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/*
|
||||
* The MD5 algorithm was designed by Ron Rivest in 1991.
|
||||
@@ -25,8 +25,9 @@
|
||||
* Pacman Notes:
|
||||
*
|
||||
* Taken from the XySSL project at www.xyssl.org under terms of the
|
||||
* LGPL. This is from version 0.7 of the library, and has been modified
|
||||
* GPL. This is from version 0.9 of the library, and has been modified
|
||||
* as following, which may be helpful for future updates:
|
||||
* * remove "xyssl/config.h" include
|
||||
* * change include from "xyssl/md5.h" to "md5.h"
|
||||
* * removal of HMAC code
|
||||
* * removal of SELF_TEST code
|
||||
@@ -35,12 +36,9 @@
|
||||
* int md5_file( char *path, unsigned char *output )
|
||||
* to
|
||||
* int md5_file( const char *path, unsigned char *output )
|
||||
* * various static/inline changes
|
||||
*/
|
||||
|
||||
#ifndef _CRT_SECURE_NO_DEPRECATE
|
||||
#define _CRT_SECURE_NO_DEPRECATE 1
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
@@ -49,8 +47,8 @@
|
||||
/*
|
||||
* 32-bit integer manipulation macros (little endian)
|
||||
*/
|
||||
#ifndef GET_UINT32_LE
|
||||
#define GET_UINT32_LE(n,b,i) \
|
||||
#ifndef GET_ULONG_LE
|
||||
#define GET_ULONG_LE(n,b,i) \
|
||||
{ \
|
||||
(n) = ( (unsigned long) (b)[(i) ] ) \
|
||||
| ( (unsigned long) (b)[(i) + 1] << 8 ) \
|
||||
@@ -59,8 +57,8 @@
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef PUT_UINT32_LE
|
||||
#define PUT_UINT32_LE(n,b,i) \
|
||||
#ifndef PUT_ULONG_LE
|
||||
#define PUT_ULONG_LE(n,b,i) \
|
||||
{ \
|
||||
(b)[(i) ] = (unsigned char) ( (n) ); \
|
||||
(b)[(i) + 1] = (unsigned char) ( (n) >> 8 ); \
|
||||
@@ -87,22 +85,22 @@ static inline void md5_process( md5_context *ctx, unsigned char data[64] )
|
||||
{
|
||||
unsigned long X[16], A, B, C, D;
|
||||
|
||||
GET_UINT32_LE( X[ 0], data, 0 );
|
||||
GET_UINT32_LE( X[ 1], data, 4 );
|
||||
GET_UINT32_LE( X[ 2], data, 8 );
|
||||
GET_UINT32_LE( X[ 3], data, 12 );
|
||||
GET_UINT32_LE( X[ 4], data, 16 );
|
||||
GET_UINT32_LE( X[ 5], data, 20 );
|
||||
GET_UINT32_LE( X[ 6], data, 24 );
|
||||
GET_UINT32_LE( X[ 7], data, 28 );
|
||||
GET_UINT32_LE( X[ 8], data, 32 );
|
||||
GET_UINT32_LE( X[ 9], data, 36 );
|
||||
GET_UINT32_LE( X[10], data, 40 );
|
||||
GET_UINT32_LE( X[11], data, 44 );
|
||||
GET_UINT32_LE( X[12], data, 48 );
|
||||
GET_UINT32_LE( X[13], data, 52 );
|
||||
GET_UINT32_LE( X[14], data, 56 );
|
||||
GET_UINT32_LE( X[15], data, 60 );
|
||||
GET_ULONG_LE( X[ 0], data, 0 );
|
||||
GET_ULONG_LE( X[ 1], data, 4 );
|
||||
GET_ULONG_LE( X[ 2], data, 8 );
|
||||
GET_ULONG_LE( X[ 3], data, 12 );
|
||||
GET_ULONG_LE( X[ 4], data, 16 );
|
||||
GET_ULONG_LE( X[ 5], data, 20 );
|
||||
GET_ULONG_LE( X[ 6], data, 24 );
|
||||
GET_ULONG_LE( X[ 7], data, 28 );
|
||||
GET_ULONG_LE( X[ 8], data, 32 );
|
||||
GET_ULONG_LE( X[ 9], data, 36 );
|
||||
GET_ULONG_LE( X[10], data, 40 );
|
||||
GET_ULONG_LE( X[11], data, 44 );
|
||||
GET_ULONG_LE( X[12], data, 48 );
|
||||
GET_ULONG_LE( X[13], data, 52 );
|
||||
GET_ULONG_LE( X[14], data, 56 );
|
||||
GET_ULONG_LE( X[15], data, 60 );
|
||||
|
||||
#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
|
||||
|
||||
@@ -250,7 +248,7 @@ static inline void md5_update( md5_context *ctx, unsigned char *input, int ilen
|
||||
}
|
||||
}
|
||||
|
||||
static unsigned char md5_padding[64] =
|
||||
static const unsigned char md5_padding[64] =
|
||||
{
|
||||
0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
@@ -261,7 +259,7 @@ static unsigned char md5_padding[64] =
|
||||
/*
|
||||
* MD5 final digest
|
||||
*/
|
||||
static inline void md5_finish( md5_context *ctx, unsigned char *output )
|
||||
static inline void md5_finish( md5_context *ctx, unsigned char output[16] )
|
||||
{
|
||||
unsigned long last, padn;
|
||||
unsigned long high, low;
|
||||
@@ -271,8 +269,8 @@ static inline void md5_finish( md5_context *ctx, unsigned char *output )
|
||||
| ( ctx->total[1] << 3 );
|
||||
low = ( ctx->total[0] << 3 );
|
||||
|
||||
PUT_UINT32_LE( low, msglen, 0 );
|
||||
PUT_UINT32_LE( high, msglen, 4 );
|
||||
PUT_ULONG_LE( low, msglen, 0 );
|
||||
PUT_ULONG_LE( high, msglen, 4 );
|
||||
|
||||
last = ctx->total[0] & 0x3F;
|
||||
padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last );
|
||||
@@ -280,17 +278,16 @@ static inline void md5_finish( md5_context *ctx, unsigned char *output )
|
||||
md5_update( ctx, (unsigned char *) md5_padding, padn );
|
||||
md5_update( ctx, msglen, 8 );
|
||||
|
||||
PUT_UINT32_LE( ctx->state[0], output, 0 );
|
||||
PUT_UINT32_LE( ctx->state[1], output, 4 );
|
||||
PUT_UINT32_LE( ctx->state[2], output, 8 );
|
||||
PUT_UINT32_LE( ctx->state[3], output, 12 );
|
||||
PUT_ULONG_LE( ctx->state[0], output, 0 );
|
||||
PUT_ULONG_LE( ctx->state[1], output, 4 );
|
||||
PUT_ULONG_LE( ctx->state[2], output, 8 );
|
||||
PUT_ULONG_LE( ctx->state[3], output, 12 );
|
||||
}
|
||||
|
||||
/*
|
||||
* Output = MD5( input buffer )
|
||||
* output = MD5( input buffer )
|
||||
*/
|
||||
void md5( unsigned char *input, int ilen,
|
||||
unsigned char *output )
|
||||
void md5( unsigned char *input, int ilen, unsigned char output[16] )
|
||||
{
|
||||
md5_context ctx;
|
||||
|
||||
@@ -302,9 +299,9 @@ void md5( unsigned char *input, int ilen,
|
||||
}
|
||||
|
||||
/*
|
||||
* Output = MD5( file contents )
|
||||
* output = MD5( file contents )
|
||||
*/
|
||||
int md5_file( const char *path, unsigned char *output )
|
||||
int md5_file( const char *path, unsigned char output[16] )
|
||||
{
|
||||
FILE *f;
|
||||
size_t n;
|
||||
|
||||
@@ -3,29 +3,24 @@
|
||||
*
|
||||
* Copyright (C) 2006-2007 Christophe Devine
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License, version 2.1 as published by the Free Software Foundation.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see
|
||||
* <http://www.gnu.org/licenses/>.
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _MD5_H
|
||||
#define _MD5_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \internal
|
||||
* \brief MD5 context structure
|
||||
*/
|
||||
typedef struct
|
||||
@@ -37,18 +32,15 @@ typedef struct
|
||||
md5_context;
|
||||
|
||||
/**
|
||||
* \internal
|
||||
* \brief Output = MD5( input buffer )
|
||||
*
|
||||
* \param input buffer holding the data
|
||||
* \param ilen length of the input data
|
||||
* \param output MD5 checksum result
|
||||
*/
|
||||
void md5( unsigned char *input, int ilen,
|
||||
unsigned char *output );
|
||||
void md5( unsigned char *input, int ilen, unsigned char output[16] );
|
||||
|
||||
/**
|
||||
* \internal
|
||||
* \brief Output = MD5( file contents )
|
||||
*
|
||||
* \param path input file name
|
||||
@@ -57,10 +49,6 @@ void md5( unsigned char *input, int ilen,
|
||||
* \return 0 if successful, 1 if fopen failed,
|
||||
* or 2 if fread failed
|
||||
*/
|
||||
int md5_file( const char *path, unsigned char *output );
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
int md5_file( const char *path, unsigned char output[16] );
|
||||
|
||||
#endif /* md5.h */
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <locale.h> /* setlocale */
|
||||
|
||||
/* libarchive */
|
||||
#include <archive.h>
|
||||
@@ -42,7 +41,6 @@
|
||||
#include "alpm_list.h"
|
||||
#include "log.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "db.h"
|
||||
#include "cache.h"
|
||||
#include "delta.h"
|
||||
@@ -54,39 +52,13 @@
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** Create a package from a file.
|
||||
* @param filename location of the package tarball
|
||||
* @param full whether to stop the load after metadata is read or continue
|
||||
* through the full archive
|
||||
* @param pkg address of the package pointer
|
||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||
*/
|
||||
int SYMEXPORT alpm_pkg_load(const char *filename, unsigned short full,
|
||||
pmpkg_t **pkg)
|
||||
{
|
||||
_alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_load\n");
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(filename != NULL && strlen(filename) != 0,
|
||||
RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
|
||||
*pkg = _alpm_pkg_load(filename, full);
|
||||
if(*pkg == NULL) {
|
||||
/* pm_errno is set by pkg_load */
|
||||
return(-1);
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
/** Free a package.
|
||||
* @param pkg package pointer to free
|
||||
* @return 0 on success, -1 on error (pm_errno is set accordingly)
|
||||
*/
|
||||
int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg)
|
||||
{
|
||||
_alpm_log(PM_LOG_FUNCTION, "enter alpm_pkg_free\n");
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
|
||||
@@ -105,8 +77,7 @@ int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg)
|
||||
int SYMEXPORT alpm_pkg_checkmd5sum(pmpkg_t *pkg)
|
||||
{
|
||||
char *fpath;
|
||||
char *md5sum = NULL;
|
||||
int retval = 0;
|
||||
int retval;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -116,44 +87,19 @@ int SYMEXPORT alpm_pkg_checkmd5sum(pmpkg_t *pkg)
|
||||
ASSERT(pkg->origin_data.db != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1));
|
||||
|
||||
fpath = _alpm_filecache_find(alpm_pkg_get_filename(pkg));
|
||||
md5sum = alpm_get_md5sum(fpath);
|
||||
|
||||
if(md5sum == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not get md5sum for package %s-%s\n"),
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
|
||||
pm_errno = PM_ERR_NOT_A_FILE;
|
||||
retval = _alpm_test_md5sum(fpath, alpm_pkg_get_md5sum(pkg));
|
||||
|
||||
if(retval == 0) {
|
||||
return(0);
|
||||
} else if (retval == 1) {
|
||||
pm_errno = PM_ERR_PKG_INVALID;
|
||||
retval = -1;
|
||||
} else {
|
||||
if(strcmp(md5sum, alpm_pkg_get_md5sum(pkg)) == 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "md5sums for package %s-%s match\n",
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
|
||||
} else {
|
||||
_alpm_log(PM_LOG_ERROR, _("md5sums do not match for package %s-%s\n"),
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
|
||||
pm_errno = PM_ERR_PKG_INVALID;
|
||||
retval = -1;
|
||||
}
|
||||
}
|
||||
|
||||
FREE(fpath);
|
||||
FREE(md5sum);
|
||||
|
||||
return(retval);
|
||||
}
|
||||
|
||||
/** Compare versions.
|
||||
* @param ver1 first version
|
||||
* @param ver2 secont version
|
||||
* @return postive, 0 or negative if ver1 is less, equal or more
|
||||
* than ver2, respectively.
|
||||
*/
|
||||
int SYMEXPORT alpm_pkg_vercmp(const char *ver1, const char *ver2)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
return(_alpm_versioncmp(ver1, ver2));
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
@@ -166,45 +112,18 @@ const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
|
||||
_alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
|
||||
}
|
||||
|
||||
if(!strlen(pkg->filename)) {
|
||||
/* construct the file name, it's not in the desc file */
|
||||
if(pkg->arch && strlen(pkg->arch) > 0) {
|
||||
snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PKGEXT,
|
||||
pkg->name, pkg->version, pkg->arch);
|
||||
} else {
|
||||
snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s" PKGEXT,
|
||||
pkg->name, pkg->version);
|
||||
}
|
||||
}
|
||||
|
||||
return pkg->filename;
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_pkg_get_name(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, return(NULL));
|
||||
ASSERT(pkg != NULL, return(NULL));
|
||||
|
||||
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
|
||||
_alpm_db_read(pkg->origin_data.db, pkg, INFRQ_BASE);
|
||||
}
|
||||
return pkg->name;
|
||||
}
|
||||
|
||||
const char SYMEXPORT *alpm_pkg_get_version(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, return(NULL));
|
||||
ASSERT(pkg != NULL, return(NULL));
|
||||
|
||||
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
|
||||
_alpm_db_read(pkg->origin_data.db, pkg, INFRQ_BASE);
|
||||
}
|
||||
return pkg->version;
|
||||
}
|
||||
|
||||
@@ -306,7 +225,7 @@ const char SYMEXPORT *alpm_pkg_get_arch(pmpkg_t *pkg)
|
||||
return pkg->arch;
|
||||
}
|
||||
|
||||
unsigned long SYMEXPORT alpm_pkg_get_size(pmpkg_t *pkg)
|
||||
off_t SYMEXPORT alpm_pkg_get_size(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -320,7 +239,7 @@ unsigned long SYMEXPORT alpm_pkg_get_size(pmpkg_t *pkg)
|
||||
return pkg->size;
|
||||
}
|
||||
|
||||
unsigned long SYMEXPORT alpm_pkg_get_isize(pmpkg_t *pkg)
|
||||
off_t SYMEXPORT alpm_pkg_get_isize(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
@@ -376,6 +295,20 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg)
|
||||
return pkg->groups;
|
||||
}
|
||||
|
||||
unsigned short SYMEXPORT alpm_pkg_has_force(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, return(-1));
|
||||
ASSERT(pkg != NULL, return(-1));
|
||||
|
||||
if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) {
|
||||
_alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
|
||||
}
|
||||
return pkg->force;
|
||||
}
|
||||
|
||||
alpm_list_t SYMEXPORT *alpm_pkg_get_depends(pmpkg_t *pkg)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
@@ -520,7 +453,7 @@ void SYMEXPORT *alpm_pkg_changelog_open(pmpkg_t *pkg)
|
||||
int ret = ARCHIVE_OK;
|
||||
|
||||
if((archive = archive_read_new()) == NULL) {
|
||||
RET_ERR(PM_ERR_LIBARCHIVE_ERROR, NULL);
|
||||
RET_ERR(PM_ERR_LIBARCHIVE, NULL);
|
||||
}
|
||||
|
||||
archive_read_support_compression_all(archive);
|
||||
@@ -618,12 +551,10 @@ unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
|
||||
* @brief Compute the packages requiring a given package.
|
||||
* @param pkg a package
|
||||
* @return the list of packages requiring pkg
|
||||
*
|
||||
* A depends on B through n depends <=> A listed in B's requiredby n times
|
||||
* n == 0 or 1 in almost all cases */
|
||||
*/
|
||||
alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
|
||||
{
|
||||
const alpm_list_t *i, *j;
|
||||
const alpm_list_t *i;
|
||||
alpm_list_t *reqs = NULL;
|
||||
|
||||
pmdb_t *localdb = alpm_option_get_localdb();
|
||||
@@ -632,123 +563,188 @@ alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
|
||||
continue;
|
||||
}
|
||||
pmpkg_t *cachepkg = i->data;
|
||||
const char *cachepkgname = alpm_pkg_get_name(cachepkg);
|
||||
|
||||
for(j = alpm_pkg_get_depends(cachepkg); j; j = j->next) {
|
||||
pmdepend_t *dep = j->data;
|
||||
|
||||
if(alpm_depcmp(pkg, dep)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "adding '%s' in requiredby field for '%s'\n",
|
||||
cachepkgname, pkg->name);
|
||||
reqs = alpm_list_add(reqs, strdup(cachepkgname));
|
||||
}
|
||||
if(_alpm_dep_edge(cachepkg, pkg)) {
|
||||
const char *cachepkgname = alpm_pkg_get_name(cachepkg);
|
||||
reqs = alpm_list_add(reqs, strdup(cachepkgname));
|
||||
}
|
||||
}
|
||||
return(reqs);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
/* this function was taken from rpm 4.0.4 and rewritten */
|
||||
int _alpm_versioncmp(const char *a, const char *b)
|
||||
/** 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.
|
||||
*
|
||||
* This function has been adopted from the rpmvercmp function located
|
||||
* at lib/rpmvercmp.c, and was most recently updated against rpm
|
||||
* version 4.4.2.3. Small modifications have been made to make it more
|
||||
* consistent with the libalpm coding style.
|
||||
*
|
||||
* 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 SYMEXPORT alpm_pkg_vercmp(const char *a, const char *b)
|
||||
{
|
||||
char str1[64], str2[64];
|
||||
char oldch1, oldch2;
|
||||
char *str1, *str2;
|
||||
char *ptr1, *ptr2;
|
||||
char *one, *two;
|
||||
char *rel1 = NULL, *rel2 = NULL;
|
||||
char oldch1, oldch2;
|
||||
int is1num, is2num;
|
||||
int rc;
|
||||
int isnum;
|
||||
int ret = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(!strcmp(a,b)) {
|
||||
return(0);
|
||||
/* libalpm added code. ensure our strings are not null */
|
||||
if(!a) {
|
||||
if(!b) return(0);
|
||||
return(-1);
|
||||
}
|
||||
if(!b) return(1);
|
||||
|
||||
strncpy(str1, a, 64);
|
||||
str1[63] = 0;
|
||||
strncpy(str2, b, 64);
|
||||
str2[63] = 0;
|
||||
/* easy comparison to see if versions are identical */
|
||||
if(strcmp(a, b) == 0) return(0);
|
||||
|
||||
/* lose the release number */
|
||||
for(one = str1; *one && *one != '-'; one++);
|
||||
if(one) {
|
||||
*one = '\0';
|
||||
rel1 = ++one;
|
||||
}
|
||||
for(two = str2; *two && *two != '-'; two++);
|
||||
if(two) {
|
||||
*two = '\0';
|
||||
rel2 = ++two;
|
||||
}
|
||||
str1 = strdup(a);
|
||||
str2 = strdup(b);
|
||||
|
||||
one = str1;
|
||||
two = str2;
|
||||
|
||||
while(*one || *two) {
|
||||
/* loop through each version segment of str1 and str2 and compare them */
|
||||
while(*one && *two) {
|
||||
while(*one && !isalnum((int)*one)) one++;
|
||||
while(*two && !isalnum((int)*two)) two++;
|
||||
|
||||
/* If we ran to the end of either, we are finished with the loop */
|
||||
if(!(*one && *two)) break;
|
||||
|
||||
ptr1 = one;
|
||||
ptr2 = two;
|
||||
|
||||
/* find the next segment for each string */
|
||||
/* grab first completely alpha or completely numeric segment */
|
||||
/* leave one and two pointing to the start of the alpha or numeric */
|
||||
/* segment and walk ptr1 and ptr2 to end of segment */
|
||||
if(isdigit((int)*ptr1)) {
|
||||
is1num = 1;
|
||||
while(*ptr1 && isdigit((int)*ptr1)) ptr1++;
|
||||
} else {
|
||||
is1num = 0;
|
||||
while(*ptr1 && isalpha((int)*ptr1)) ptr1++;
|
||||
}
|
||||
if(isdigit((int)*ptr2)) {
|
||||
is2num = 1;
|
||||
while(*ptr2 && isdigit((int)*ptr2)) ptr2++;
|
||||
isnum = 1;
|
||||
} else {
|
||||
is2num = 0;
|
||||
while(*ptr1 && isalpha((int)*ptr1)) ptr1++;
|
||||
while(*ptr2 && isalpha((int)*ptr2)) ptr2++;
|
||||
isnum = 0;
|
||||
}
|
||||
|
||||
/* save character at the end of the alpha or numeric segment */
|
||||
/* so that they can be restored after the comparison */
|
||||
oldch1 = *ptr1;
|
||||
*ptr1 = '\0';
|
||||
oldch2 = *ptr2;
|
||||
*ptr2 = '\0';
|
||||
|
||||
/* see if we ran out of segments on one string */
|
||||
if(one == ptr1 && two != ptr2) {
|
||||
return(is2num ? -1 : 1);
|
||||
}
|
||||
if(one != ptr1 && two == ptr2) {
|
||||
return(is1num ? 1 : -1);
|
||||
/* this cannot happen, as we previously tested to make sure that */
|
||||
/* the first string has a non-null segment */
|
||||
if (one == ptr1) {
|
||||
ret = -1; /* arbitrary */
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* see if we have a type mismatch (ie, one is alpha and one is digits) */
|
||||
if(is1num && !is2num) return(1);
|
||||
if(!is1num && is2num) return(-1);
|
||||
/* take care of the case where the two version segments are */
|
||||
/* different types: one numeric, the other alpha (i.e. empty) */
|
||||
/* numeric segments are always newer than alpha segments */
|
||||
/* XXX See patch #60884 (and details) from bugzilla #50977. */
|
||||
if (two == ptr2) {
|
||||
ret = isnum ? 1 : -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if(is1num) while(*one == '0') one++;
|
||||
if(is2num) while(*two == '0') two++;
|
||||
if (isnum) {
|
||||
/* this used to be done by converting the digit segments */
|
||||
/* to ints using atoi() - it's changed because long */
|
||||
/* digit segments can overflow an int - this should fix that. */
|
||||
|
||||
rc = strverscmp(one, two);
|
||||
if(rc) return(rc);
|
||||
/* throw away any leading zeros - it's a number, right? */
|
||||
while (*one == '0') one++;
|
||||
while (*two == '0') two++;
|
||||
|
||||
/* whichever number has more digits wins */
|
||||
if (strlen(one) > strlen(two)) {
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
if (strlen(two) > strlen(one)) {
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
/* strcmp will return which one is greater - even if the two */
|
||||
/* segments are alpha or if they are numeric. don't return */
|
||||
/* if they are equal because there might be more segments to */
|
||||
/* compare */
|
||||
rc = strcmp(one, two);
|
||||
if (rc) {
|
||||
ret = rc < 1 ? -1 : 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* restore character that was replaced by null above */
|
||||
*ptr1 = oldch1;
|
||||
*ptr2 = oldch2;
|
||||
one = ptr1;
|
||||
*ptr2 = oldch2;
|
||||
two = ptr2;
|
||||
|
||||
/* libalpm added code. check if version strings have hit the pkgrel
|
||||
* portion. depending on which strings have hit, take correct action.
|
||||
* this is all based on the premise that we only have one dash in
|
||||
* the version string, and it separates pkgver from pkgrel. */
|
||||
if(*ptr1 == '-' && *ptr2 == '-') {
|
||||
/* no-op, continue comparing since we are equivalent throughout */
|
||||
} else if(*ptr1 == '-') {
|
||||
/* ptr1 has hit the pkgrel and ptr2 has not. continue version
|
||||
* comparison after stripping the pkgrel from ptr1. */
|
||||
*ptr1 = '\0';
|
||||
} else if(*ptr2 == '-') {
|
||||
/* ptr2 has hit the pkgrel and ptr1 has not. continue version
|
||||
* comparison after stripping the pkgrel from ptr2. */
|
||||
*ptr2 = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
if((!*one) && (!*two)) {
|
||||
/* compare release numbers */
|
||||
if(rel1 && rel2 && strlen(rel1) && strlen(rel2)) return(_alpm_versioncmp(rel1, rel2));
|
||||
return(0);
|
||||
/* this catches the case where all numeric and alpha segments have */
|
||||
/* compared identically but the segment separating characters were */
|
||||
/* different */
|
||||
if ((!*one) && (!*two)) {
|
||||
ret = 0;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
return(*one ? 1 : -1);
|
||||
/* the final showdown. we never want a remaining alpha string to
|
||||
* beat an empty string. the logic is a bit weird, but:
|
||||
* - if one is empty and two is not an alpha, two is newer.
|
||||
* - if one is an alpha, two is newer.
|
||||
* - otherwise one is newer.
|
||||
* */
|
||||
if ( ( !*one && !isalpha((int)*two) )
|
||||
|| isalpha((int)*one) ) {
|
||||
ret = -1;
|
||||
} else {
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
free(str1);
|
||||
free(str2);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
||||
pmpkg_t *_alpm_pkg_new(const char *name, const char *version)
|
||||
pmpkg_t *_alpm_pkg_new(void)
|
||||
{
|
||||
pmpkg_t* pkg;
|
||||
|
||||
@@ -756,47 +752,55 @@ pmpkg_t *_alpm_pkg_new(const char *name, const char *version)
|
||||
|
||||
CALLOC(pkg, 1, sizeof(pmpkg_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
if(name && name[0] != 0) {
|
||||
strncpy(pkg->name, name, PKG_NAME_LEN);
|
||||
} else {
|
||||
pkg->name[0] = '\0';
|
||||
}
|
||||
if(version && version[0] != 0) {
|
||||
strncpy(pkg->version, version, PKG_VERSION_LEN);
|
||||
} else {
|
||||
pkg->version[0] = '\0';
|
||||
}
|
||||
|
||||
return(pkg);
|
||||
}
|
||||
|
||||
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg)
|
||||
{
|
||||
pmpkg_t* newpkg;
|
||||
pmpkg_t *newpkg;
|
||||
alpm_list_t *i;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
CALLOC(newpkg, 1, sizeof(pmpkg_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
memcpy(newpkg, pkg, sizeof(pmpkg_t));
|
||||
newpkg->licenses = alpm_list_strdup(alpm_pkg_get_licenses(pkg));
|
||||
newpkg->conflicts = alpm_list_strdup(alpm_pkg_get_conflicts(pkg));
|
||||
newpkg->files = alpm_list_strdup(alpm_pkg_get_files(pkg));
|
||||
newpkg->backup = alpm_list_strdup(alpm_pkg_get_backup(pkg));
|
||||
newpkg->depends = alpm_list_copy_data(alpm_pkg_get_depends(pkg),
|
||||
sizeof(pmdepend_t));
|
||||
newpkg->optdepends = alpm_list_strdup(alpm_pkg_get_optdepends(pkg));
|
||||
newpkg->groups = alpm_list_strdup(alpm_pkg_get_groups(pkg));
|
||||
newpkg->provides = alpm_list_strdup(alpm_pkg_get_provides(pkg));
|
||||
newpkg->replaces = alpm_list_strdup(alpm_pkg_get_replaces(pkg));
|
||||
newpkg->deltas = alpm_list_copy_data(alpm_pkg_get_deltas(pkg),
|
||||
sizeof(pmdelta_t));
|
||||
STRDUP(newpkg->filename, pkg->filename, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->name, pkg->name, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->version, pkg->version, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->desc, pkg->desc, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->url, pkg->url, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
newpkg->builddate = pkg->builddate;
|
||||
newpkg->installdate = pkg->installdate;
|
||||
STRDUP(newpkg->packager, pkg->packager, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->md5sum, pkg->md5sum, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
STRDUP(newpkg->arch, pkg->arch, RET_ERR(PM_ERR_MEMORY, newpkg));
|
||||
newpkg->size = pkg->size;
|
||||
newpkg->isize = pkg->isize;
|
||||
newpkg->scriptlet = pkg->scriptlet;
|
||||
newpkg->force = pkg->force;
|
||||
newpkg->reason = pkg->reason;
|
||||
|
||||
newpkg->licenses = alpm_list_strdup(pkg->licenses);
|
||||
newpkg->replaces = alpm_list_strdup(pkg->replaces);
|
||||
newpkg->groups = alpm_list_strdup(pkg->groups);
|
||||
newpkg->files = alpm_list_strdup(pkg->files);
|
||||
newpkg->backup = alpm_list_strdup(pkg->backup);
|
||||
for(i = pkg->depends; i; i = alpm_list_next(i)) {
|
||||
newpkg->depends = alpm_list_add(newpkg->depends, _alpm_dep_dup(i->data));
|
||||
}
|
||||
newpkg->optdepends = alpm_list_strdup(pkg->optdepends);
|
||||
newpkg->conflicts = alpm_list_strdup(pkg->conflicts);
|
||||
newpkg->provides = alpm_list_strdup(pkg->provides);
|
||||
newpkg->deltas = alpm_list_copy_data(pkg->deltas, sizeof(pmdelta_t));
|
||||
|
||||
/* internal */
|
||||
newpkg->origin = pkg->origin;
|
||||
if(newpkg->origin == PKG_FROM_FILE) {
|
||||
newpkg->origin_data.file = strdup(pkg->origin_data.file);
|
||||
} else {
|
||||
newpkg->origin_data.db = pkg->origin_data.db;
|
||||
}
|
||||
newpkg->infolevel = pkg->infolevel;
|
||||
|
||||
return(newpkg);
|
||||
}
|
||||
@@ -809,48 +813,46 @@ void _alpm_pkg_free(pmpkg_t *pkg)
|
||||
return;
|
||||
}
|
||||
|
||||
FREE(pkg->filename);
|
||||
FREE(pkg->name);
|
||||
FREE(pkg->version);
|
||||
FREE(pkg->desc);
|
||||
FREE(pkg->url);
|
||||
FREE(pkg->packager);
|
||||
FREE(pkg->md5sum);
|
||||
FREE(pkg->arch);
|
||||
FREELIST(pkg->licenses);
|
||||
FREELIST(pkg->replaces);
|
||||
FREELIST(pkg->groups);
|
||||
FREELIST(pkg->files);
|
||||
FREELIST(pkg->backup);
|
||||
FREELIST(pkg->depends);
|
||||
alpm_list_free_inner(pkg->depends, (alpm_list_fn_free)_alpm_dep_free);
|
||||
alpm_list_free(pkg->depends);
|
||||
FREELIST(pkg->optdepends);
|
||||
FREELIST(pkg->conflicts);
|
||||
FREELIST(pkg->groups);
|
||||
FREELIST(pkg->provides);
|
||||
FREELIST(pkg->replaces);
|
||||
FREELIST(pkg->deltas);
|
||||
alpm_list_free_inner(pkg->deltas, (alpm_list_fn_free)_alpm_delta_free);
|
||||
alpm_list_free(pkg->deltas);
|
||||
alpm_list_free(pkg->delta_path);
|
||||
|
||||
if(pkg->origin == PKG_FROM_FILE) {
|
||||
FREE(pkg->origin_data.file);
|
||||
}
|
||||
FREE(pkg);
|
||||
}
|
||||
|
||||
/* Is pkgB an upgrade for pkgA ? */
|
||||
int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
|
||||
/* Is spkg an upgrade for locapkg? */
|
||||
int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg)
|
||||
{
|
||||
int cmp = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(pkg->origin == PKG_FROM_CACHE) {
|
||||
/* ensure we have the /desc file, which contains the 'force' option */
|
||||
_alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC);
|
||||
}
|
||||
cmp = alpm_pkg_vercmp(alpm_pkg_get_version(spkg),
|
||||
alpm_pkg_get_version(localpkg));
|
||||
|
||||
/* compare versions and see if we need to upgrade */
|
||||
cmp = _alpm_versioncmp(alpm_pkg_get_version(pkg), alpm_pkg_get_version(local_pkg));
|
||||
|
||||
if(cmp != 0 && pkg->force) {
|
||||
if(cmp < 0 && alpm_pkg_has_force(spkg)) {
|
||||
cmp = 1;
|
||||
_alpm_log(PM_LOG_WARNING, _("%s: forcing upgrade to version %s\n"),
|
||||
alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg));
|
||||
} else if(cmp < 0) {
|
||||
/* local version is newer */
|
||||
pmdb_t *db = pkg->origin_data.db;
|
||||
_alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"),
|
||||
alpm_pkg_get_name(local_pkg), alpm_pkg_get_version(local_pkg),
|
||||
alpm_db_get_name(db), alpm_pkg_get_version(pkg));
|
||||
cmp = 0;
|
||||
}
|
||||
|
||||
return(cmp);
|
||||
@@ -860,269 +862,15 @@ int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg)
|
||||
*/
|
||||
int _alpm_pkg_cmp(const void *p1, const void *p2)
|
||||
{
|
||||
pmpkg_t *pk1 = (pmpkg_t *)p1;
|
||||
pmpkg_t *pk2 = (pmpkg_t *)p2;
|
||||
|
||||
return(strcmp(alpm_pkg_get_name(pk1), alpm_pkg_get_name(pk2)));
|
||||
}
|
||||
|
||||
/* Parses the package description file for the current package
|
||||
* TODO: this should ALL be in a backend interface (be_files), we should
|
||||
* be dealing with the abstracted concepts only in this file
|
||||
* Returns: 0 on success, 1 on error
|
||||
*
|
||||
*/
|
||||
static int parse_descfile(const char *descfile, pmpkg_t *info)
|
||||
{
|
||||
FILE* fp = NULL;
|
||||
char line[PATH_MAX];
|
||||
char *ptr = NULL;
|
||||
char *key = NULL;
|
||||
int linenum = 0;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if((fp = fopen(descfile, "r")) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), descfile, strerror(errno));
|
||||
return(-1);
|
||||
}
|
||||
|
||||
while(!feof(fp)) {
|
||||
fgets(line, PATH_MAX, fp);
|
||||
linenum++;
|
||||
_alpm_strtrim(line);
|
||||
if(strlen(line) == 0 || line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
ptr = line;
|
||||
key = strsep(&ptr, "=");
|
||||
if(key == NULL || ptr == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
|
||||
info->name[0] != '\0' ? info->name : "error", linenum);
|
||||
} else {
|
||||
_alpm_strtrim(key);
|
||||
_alpm_strtrim(ptr);
|
||||
if(!strcmp(key, "pkgname")) {
|
||||
strncpy(info->name, ptr, sizeof(info->name));
|
||||
} else if(!strcmp(key, "pkgver")) {
|
||||
strncpy(info->version, ptr, sizeof(info->version));
|
||||
} else if(!strcmp(key, "pkgdesc")) {
|
||||
strncpy(info->desc, ptr, sizeof(info->desc));
|
||||
} else if(!strcmp(key, "group")) {
|
||||
info->groups = alpm_list_add(info->groups, strdup(ptr));
|
||||
} else if(!strcmp(key, "url")) {
|
||||
strncpy(info->url, ptr, sizeof(info->url));
|
||||
} else if(!strcmp(key, "license")) {
|
||||
info->licenses = alpm_list_add(info->licenses, strdup(ptr));
|
||||
} else if(!strcmp(key, "builddate")) {
|
||||
char first = tolower(ptr[0]);
|
||||
if(first > 'a' && first < 'z') {
|
||||
struct tm tmp_tm = {0}; //initialize to null incase of failure
|
||||
setlocale(LC_TIME, "C");
|
||||
strptime(ptr, "%a %b %e %H:%M:%S %Y", &tmp_tm);
|
||||
info->builddate = mktime(&tmp_tm);
|
||||
setlocale(LC_TIME, "");
|
||||
} else {
|
||||
info->builddate = atol(ptr);
|
||||
}
|
||||
} else if(!strcmp(key, "packager")) {
|
||||
strncpy(info->packager, ptr, sizeof(info->packager));
|
||||
} else if(!strcmp(key, "arch")) {
|
||||
strncpy(info->arch, ptr, sizeof(info->arch));
|
||||
} else if(!strcmp(key, "size")) {
|
||||
/* size in the raw package is uncompressed (installed) size */
|
||||
info->isize = atol(ptr);
|
||||
} else if(!strcmp(key, "depend")) {
|
||||
pmdepend_t *dep = alpm_splitdep(ptr);
|
||||
info->depends = alpm_list_add(info->depends, dep);
|
||||
} else if(!strcmp(key, "optdepend")) {
|
||||
info->optdepends = alpm_list_add(info->optdepends, strdup(ptr));
|
||||
} else if(!strcmp(key, "conflict")) {
|
||||
info->conflicts = alpm_list_add(info->conflicts, strdup(ptr));
|
||||
} else if(!strcmp(key, "replaces")) {
|
||||
info->replaces = alpm_list_add(info->replaces, strdup(ptr));
|
||||
} else if(!strcmp(key, "provides")) {
|
||||
info->provides = alpm_list_add(info->provides, strdup(ptr));
|
||||
} else if(!strcmp(key, "backup")) {
|
||||
info->backup = alpm_list_add(info->backup, strdup(ptr));
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
|
||||
info->name[0] != '\0' ? info->name : "error", linenum);
|
||||
}
|
||||
}
|
||||
line[0] = '\0';
|
||||
}
|
||||
fclose(fp);
|
||||
unlink(descfile);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load a package and create the corresponding pmpkg_t struct.
|
||||
* @param pkgfile path to the package file
|
||||
* @param full whether to stop the load after metadata is read or continue
|
||||
* through the full archive
|
||||
* @return An information filled pmpkg_t struct
|
||||
*/
|
||||
pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full)
|
||||
{
|
||||
int ret = ARCHIVE_OK;
|
||||
int config = 0;
|
||||
struct archive *archive;
|
||||
struct archive_entry *entry;
|
||||
pmpkg_t *info = NULL;
|
||||
char *descfile = NULL;
|
||||
int fd = -1;
|
||||
struct stat st;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(pkgfile == NULL || strlen(pkgfile) == 0) {
|
||||
RET_ERR(PM_ERR_WRONG_ARGS, NULL);
|
||||
}
|
||||
|
||||
if((archive = archive_read_new()) == NULL) {
|
||||
RET_ERR(PM_ERR_LIBARCHIVE_ERROR, NULL);
|
||||
}
|
||||
|
||||
archive_read_support_compression_all(archive);
|
||||
archive_read_support_format_all(archive);
|
||||
|
||||
if (archive_read_open_filename(archive, pkgfile,
|
||||
ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
|
||||
RET_ERR(PM_ERR_PKG_OPEN, NULL);
|
||||
}
|
||||
|
||||
info = _alpm_pkg_new(NULL, NULL);
|
||||
if(info == NULL) {
|
||||
archive_read_finish(archive);
|
||||
RET_ERR(PM_ERR_MEMORY, NULL);
|
||||
}
|
||||
|
||||
if(stat(pkgfile, &st) == 0) {
|
||||
info->size = st.st_size;
|
||||
}
|
||||
|
||||
/* TODO there is no reason to make temp files to read
|
||||
* from a libarchive archive, it can be done by reading
|
||||
* directly from the archive
|
||||
* See: archive_read_data_into_buffer
|
||||
* requires changes 'parse_descfile' as well
|
||||
* */
|
||||
|
||||
/* If full is false, only read through the archive until we find our needed
|
||||
* metadata. If it is true, read through the entire archive, which serves
|
||||
* as a verfication of integrity and allows us to create the filelist. */
|
||||
while((ret = archive_read_next_header(archive, &entry)) == ARCHIVE_OK) {
|
||||
const char *entry_name = archive_entry_pathname(entry);
|
||||
|
||||
/* NOTE: we used to look for .FILELIST, but it is easier (and safer) for
|
||||
* us to just generate this on our own. */
|
||||
if(strcmp(entry_name, ".PKGINFO") == 0) {
|
||||
/* extract this file into /tmp. it has info for us */
|
||||
descfile = strdup("/tmp/alpm_XXXXXX");
|
||||
fd = mkstemp(descfile);
|
||||
if(archive_read_data_into_fd(archive, fd) != ARCHIVE_OK) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error extracting package description file to %s\n"),
|
||||
descfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
/* parse the info file */
|
||||
if(parse_descfile(descfile, info) == -1) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not parse package description file in %s\n"),
|
||||
pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
if(!strlen(info->name)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package name in %s\n"), pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
if(!strlen(info->version)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package version in %s\n"), pkgfile);
|
||||
goto pkg_invalid;
|
||||
}
|
||||
config = 1;
|
||||
unlink(descfile);
|
||||
FREE(descfile);
|
||||
close(fd);
|
||||
continue;
|
||||
} else if(strcmp(entry_name, ".INSTALL") == 0) {
|
||||
info->scriptlet = 1;
|
||||
} else if(*entry_name == '.') {
|
||||
/* for now, ignore all files starting with '.' that haven't
|
||||
* already been handled (for future possibilities) */
|
||||
} else {
|
||||
/* Keep track of all files for filelist generation */
|
||||
info->files = alpm_list_add(info->files, strdup(entry_name));
|
||||
}
|
||||
|
||||
if(archive_read_data_skip(archive)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
|
||||
pkgfile, archive_error_string(archive));
|
||||
pm_errno = PM_ERR_LIBARCHIVE_ERROR;
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* if we are not doing a full read, see if we have all we need */
|
||||
if(!full && config) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(ret != ARCHIVE_EOF && ret != ARCHIVE_OK) { /* An error occured */
|
||||
_alpm_log(PM_LOG_ERROR, _("error while reading package %s: %s\n"),
|
||||
pkgfile, archive_error_string(archive));
|
||||
pm_errno = PM_ERR_LIBARCHIVE_ERROR;
|
||||
goto error;
|
||||
}
|
||||
|
||||
if(!config) {
|
||||
_alpm_log(PM_LOG_ERROR, _("missing package metadata in %s\n"), pkgfile);
|
||||
goto error;
|
||||
}
|
||||
|
||||
archive_read_finish(archive);
|
||||
|
||||
/* internal fields for package struct */
|
||||
info->origin = PKG_FROM_FILE;
|
||||
info->origin_data.file = strdup(pkgfile);
|
||||
|
||||
if(full) {
|
||||
/* "checking for conflicts" requires a sorted list, so we ensure that here */
|
||||
_alpm_log(PM_LOG_DEBUG, "sorting package filelist for %s\n", pkgfile);
|
||||
info->files = alpm_list_msort(info->files, alpm_list_count(info->files),
|
||||
_alpm_str_cmp);
|
||||
info->infolevel = INFRQ_ALL;
|
||||
} else {
|
||||
/* get rid of any partial filelist we may have collected, as it is invalid */
|
||||
FREELIST(info->files);
|
||||
info->infolevel = INFRQ_BASE | INFRQ_DESC | INFRQ_DEPENDS;
|
||||
}
|
||||
|
||||
return(info);
|
||||
|
||||
pkg_invalid:
|
||||
pm_errno = PM_ERR_PKG_INVALID;
|
||||
if(descfile) {
|
||||
unlink(descfile);
|
||||
FREE(descfile);
|
||||
}
|
||||
if(fd != -1) {
|
||||
close(fd);
|
||||
}
|
||||
error:
|
||||
_alpm_pkg_free(info);
|
||||
archive_read_finish(archive);
|
||||
|
||||
return(NULL);
|
||||
pmpkg_t *pkg1 = (pmpkg_t *)p1;
|
||||
pmpkg_t *pkg2 = (pmpkg_t *)p2;
|
||||
return(strcmp(alpm_pkg_get_name(pkg1), alpm_pkg_get_name(pkg2)));
|
||||
}
|
||||
|
||||
/* Test for existence of a package in a alpm_list_t*
|
||||
* of pmpkg_t*
|
||||
*/
|
||||
pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack)
|
||||
pmpkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle)
|
||||
{
|
||||
alpm_list_t *lp;
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
#ifndef _ALPM_PACKAGE_H
|
||||
#define _ALPM_PACKAGE_H
|
||||
|
||||
#include <time.h>
|
||||
#include <sys/types.h> /* off_t */
|
||||
#include <time.h> /* time_t */
|
||||
|
||||
#include "alpm.h"
|
||||
#include "db.h"
|
||||
@@ -33,32 +34,20 @@ typedef enum _pmpkgfrom_t {
|
||||
PKG_FROM_FILE
|
||||
} pmpkgfrom_t;
|
||||
|
||||
/* Packages */
|
||||
#define PKG_FILENAME_LEN 512
|
||||
#define PKG_NAME_LEN 256
|
||||
#define PKG_VERSION_LEN 64
|
||||
#define PKG_FULLNAME_LEN (PKG_NAME_LEN + PKG_VERSION_LEN)
|
||||
#define PKG_DESC_LEN 512
|
||||
#define PKG_URL_LEN 256
|
||||
#define PKG_DATE_LEN 32
|
||||
#define PKG_TYPE_LEN 32
|
||||
#define PKG_PACKAGER_LEN 64
|
||||
#define PKG_MD5SUM_LEN 33
|
||||
#define PKG_ARCH_LEN 32
|
||||
|
||||
struct __pmpkg_t {
|
||||
char filename[PKG_FILENAME_LEN];
|
||||
char name[PKG_NAME_LEN];
|
||||
char version[PKG_VERSION_LEN];
|
||||
char desc[PKG_DESC_LEN];
|
||||
char url[PKG_URL_LEN];
|
||||
char *filename;
|
||||
char *name;
|
||||
char *version;
|
||||
char *desc;
|
||||
char *url;
|
||||
time_t builddate;
|
||||
time_t installdate;
|
||||
char packager[PKG_PACKAGER_LEN];
|
||||
char md5sum[PKG_MD5SUM_LEN];
|
||||
char arch[PKG_ARCH_LEN];
|
||||
unsigned long size;
|
||||
unsigned long isize;
|
||||
char *packager;
|
||||
char *md5sum;
|
||||
char *arch;
|
||||
off_t size;
|
||||
off_t isize;
|
||||
off_t download_size;
|
||||
unsigned short scriptlet;
|
||||
unsigned short force;
|
||||
pmpkgreason_t reason;
|
||||
@@ -72,6 +61,7 @@ struct __pmpkg_t {
|
||||
alpm_list_t *conflicts;
|
||||
alpm_list_t *provides;
|
||||
alpm_list_t *deltas;
|
||||
alpm_list_t *delta_path;
|
||||
/* internal */
|
||||
pmpkgfrom_t origin;
|
||||
/* Replaced 'void *data' with this union as follows:
|
||||
@@ -85,14 +75,12 @@ struct __pmpkg_t {
|
||||
pmdbinfrq_t infolevel;
|
||||
};
|
||||
|
||||
int _alpm_versioncmp(const char *a, const char *b);
|
||||
pmpkg_t* _alpm_pkg_new(const char *name, const char *version);
|
||||
pmpkg_t* _alpm_pkg_new(void);
|
||||
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg);
|
||||
void _alpm_pkg_free(pmpkg_t *pkg);
|
||||
int _alpm_pkg_cmp(const void *p1, const void *p2);
|
||||
int _alpm_pkg_compare_versions(pmpkg_t *local_pkg, pmpkg_t *pkg);
|
||||
pmpkg_t *_alpm_pkg_load(const char *pkgfile, unsigned short full);
|
||||
pmpkg_t *_alpm_pkg_find(const char *needle, alpm_list_t *haystack);
|
||||
pmpkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle);
|
||||
int _alpm_pkg_should_ignore(pmpkg_t *pkg);
|
||||
|
||||
#endif /* _ALPM_PACKAGE_H */
|
||||
|
||||
@@ -9,3 +9,6 @@ it
|
||||
pl
|
||||
pt_BR
|
||||
ru
|
||||
tr
|
||||
uk
|
||||
zh_CN
|
||||
|
||||
@@ -8,9 +8,9 @@ subdir = po
|
||||
top_builddir = ../../../
|
||||
|
||||
# These options get passed to xgettext.
|
||||
XGETTEXT_OPTIONS = \
|
||||
--keyword=_ --flag=_:1:pass-c-format \
|
||||
--keyword=N_ --flag=N_:1:pass-c-format
|
||||
XGETTEXT_OPTIONS = --no-location \
|
||||
--keyword=_ --flag=_:1:c-format \
|
||||
--keyword=N_ --flag=N_:1:c-format
|
||||
|
||||
# This is the copyright holder that gets inserted into the header of the
|
||||
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
# List of source files with translatable strings
|
||||
# If a file is commented out, it is because it shouldn't have any
|
||||
# translatable strings
|
||||
|
||||
lib/libalpm/add.c
|
||||
lib/libalpm/alpm.c
|
||||
lib/libalpm/alpm_list.c
|
||||
#lib/libalpm/alpm_list.c
|
||||
lib/libalpm/backup.c
|
||||
lib/libalpm/be_files.c
|
||||
lib/libalpm/be_package.c
|
||||
lib/libalpm/cache.c
|
||||
lib/libalpm/conflict.c
|
||||
lib/libalpm/db.c
|
||||
lib/libalpm/delta.c
|
||||
lib/libalpm/deps.c
|
||||
lib/libalpm/dload.c
|
||||
lib/libalpm/error.c
|
||||
lib/libalpm/group.c
|
||||
lib/libalpm/handle.c
|
||||
lib/libalpm/log.c
|
||||
lib/libalpm/md5.c
|
||||
#lib/libalpm/md5.c
|
||||
lib/libalpm/package.c
|
||||
lib/libalpm/remove.c
|
||||
lib/libalpm/server.c
|
||||
lib/libalpm/sync.c
|
||||
lib/libalpm/trans.c
|
||||
lib/libalpm/util.c
|
||||
|
||||
@@ -2,47 +2,45 @@
|
||||
# Copyright (C) YEAR Judd Vinet <jvinet@zeroflux.org>
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Vojtěch Gondžala <vogo@seznam.cz>, 2007, 2008.
|
||||
# Vojtěch Gondžala <vojtech.gondzala@gmail.com>, 2007, 2008.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: cs\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-02-12 09:28+0100\n"
|
||||
"Last-Translator: Vojtěch Gondžala <vogo@seznam.cz>\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-24 08:16+0200\n"
|
||||
"Last-Translator: Vojtěch Gondžala <vojtech.gondzala@gmail.com>\n"
|
||||
"Language-Team: Čeština\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "v seznamu cílů nahrazuji starší verzi %s-%s za %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "v seznamu cílů je novější veze %s-%s -- přeskakuji\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "přeskakuji %s-%s protože v seznamu cílů je novější veze %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "v seznamu cílů byly nalezeny konfliktní balíčky\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "nemůžete instalovat dva konfliktní balíčky společně\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "nahrazování balíčků pomocí -A a -U není nyní podporováno\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "nahrazování balíčků pomocí -U není nyní podporováno\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "balíčky můžete nahradit ručně použitím -Rd a -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -51,604 +49,510 @@ msgstr ""
|
||||
"přístupová práva adresáře %s se neshodují\n"
|
||||
"souborový systém: %o balíček: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "rozbalení: symbolický odkaz %s neodkazuje na adresář\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "rozbalení: nepřepisuji adresář souborem %s\n"
|
||||
msgstr "rozbalení: adresář nebyl přepsán souborem %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "nelze rozbalit %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "nelze přejmenovat %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "nelze přejmenovat %s na %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nelze zkopírovat dočasný soubor do %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s uložen jako %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "nelze nainstalovat %s jako %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "nelze nainstalovat %s jako %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s nainstalován jako %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "rozbaluji %s jako %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "nelze určit aktuální pracovní adresář\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "nastal problém při aktualizaci %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "nastal problém při instalaci %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "nelze aktualizovat záznam databáze %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "nelze přidat položku '%s' do cache\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "chybný název záznamu v databázi '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nelze otevřít soubor %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "nelze odstranit záznam v databázi %s%s\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "pokus o opětovné zaregistrování databáze 'local'\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "cesta k databázi nebyla určena\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "zjištěna cyklická závislost:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s bude odstraněn po %s, na kterém závisí\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "chybný název záznamu v databázi '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s bude nainstalován před %s, na kterém závisí\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "poškozený záznam v databázi '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nemohu vyřešit \"%s\", závislost \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nelze otevřít soubor %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "nedostatek paměti!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "neočekávaná systémová chyba"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "nedostatečná oprávnění"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "nelze najít nebo číst soubor"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nelze najít nebo číst adresář"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "předán chybný nebo NULL argument"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "knihovna nebyla inicializována"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "knihovna inicializována"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "nelze zamknout databázi"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "nelze otevřít databázi"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "nelze vytvořit databázi"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "databáze nebyla inicializována"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "databáze zaregistrována"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "nelze nalézt databázi"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "nelze aktualizovat databázi"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nelze odstranit záznam v databázi"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "nesprávná url pro server"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "nelze nastavit parametr"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transakce inicializována"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transakce neinicializována"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "duplicitní cíl"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transakce nepřipravena"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "transakce zrušena"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operace není kompatibilní s typem transakce"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nelze provést transakci"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "nelze stáhnout všechny soubory"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "nelze nalézt nebo přečíst balíček"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "neplatný nebo poškozený balíček"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "nelze otevřít soubor balíčku"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "nelze načíst data z balíčku"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "balíček je již nainstalován"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "balíček není nainstalovaný nebo má nižší verzi"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nelze odstranit všechny soubory balíčku"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "jméno balíčku není platné"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "poškozený balíček"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "není žádný takový repositář"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "poškozený delta rozdíl"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "aplikace delta rozdílu selhala"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "skupina nenalezena"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nelze vyřešit závislosti"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "konfliktní závislosti"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "konfliktní soubory"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "uživatel zrušil operaci"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "interní chyba"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "chyba knihovny libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "nepotvrzeno"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "nesprávný regulární výraz"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "spojení se vzdáleným hostitelem selhalo"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "neočekávaná chyba"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "nelze zjistit md5 kontrolní součet balíčku %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "databáze %s je nekonzistentní: nesouhlasí jméno balíčku %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "md5 kontrolní součet balíčku %s-%s nesouhlasí\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "databáze %s je nekonzistentní: nesouhlasí verze balíčku %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: vynucená aktualizace na verzi %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: lokální (%s) je novější než %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "nelze získat soubor s popisem balíčku k %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "nelze zpracovat soubor s popisem balíčku v %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "chybí jméno balíčku v %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "chybí veze balíčku v %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "chyba při čtení balíčku %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "chybí metadata balíčku v %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nelze nalézt %s v databázi -- přeskakuji\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "pokus o opětovné zaregistrování databáze 'local'\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nelze odstranit soubor '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "cesta k databázi nebyla určena\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nelze odstranit záznam databáze %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "zjištěna cyklická závislost:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nelze odstranit položku '%s' z cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s bude odstraněn po %s, na kterém závisí\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "url '%s' je chybná, ignoruji\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s bude nainstalován před %s, na kterém závisí\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "schéma url nedefinováno, předpokládám http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "byl vybrán nahrazující balíček (%s poskytuje %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nemohu vyřešit \"%s\", závislost \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "url '%s' je chybná\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "schéma url nedefinováno, předpokládám HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disk"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "selhalo získání souboru '%s' z %s: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "nelze navázat stahování, začínám znovu\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "nelze zapisovat do souboru '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "chyba při stahování '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "chyba při zápisu do souboru '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "nelze změnit adresář na %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "spouštím XferCommand: větvení selhalo!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL neobsahuje soubor pro stažení\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "selhalo stahování %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "nedostatek paměti!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "neočekávaná systémová chyba"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "nedostatečná oprávnění"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "nelze najít nebo číst soubor"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nelze najít nebo číst adresář"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "předán chybný nebo NULL argument"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "knihovna nebyla inicializována"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "knihovna inicializována"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "nelze zamknout databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "nelze otevřít databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "nelze vytvořit databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "databáze nebyla inicializována"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "databáze zaregistrována"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "nelze nalézt databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "nelze aktualizovat databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nelze odstranit záznam v databázi"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "nesprávná url pro server"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transakce inicializována"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transakce neinicializována"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "duplicitní cíl"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transakce nepřipravena"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "transakce zrušena"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operace není kompatibilní s typem transakce"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nelze provést transakci"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "nelze stáhnout všechny soubory"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "nelze nalézt nebo přečíst balíček"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "neplatný nebo poškozený balíček"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "nelze otevřít soubor balíčku"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "nelze načíst data z balíčku"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "balíček není nainstalovaný nebo má nižší verzi"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nelze odstranit všechny soubory balíčku"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "jméno souboru balíčku není platné"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "není žádný takový repositář"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "neplatný nebo poškozený rozdíl"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "aplikace delta rozdílu selhala"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "skupina nenalezena"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nelze vyřešit závislosti"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "konfliktní závislosti"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "konfliktní soubory"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "uživatel zrušil operaci"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "interní chyba"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "nepotvrzeno"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "nesprávný regulární výraz"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "chyba knihovny libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "chyba knihovny pro stahování souborů"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "chyba volání externího programu pro stahování souborů"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "neočekávaná chyba"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nelze nalézt %s v databázi -- přeskakuji\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nelze odstranit soubor '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nelze odstranit záznam databáze %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nelze odstranit položku '%s' z cache\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: ignoruji aktualizaci balíčku (bude nahrazen %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: lokální (%s) je novější než %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignoruji aktualizaci balíčku (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "repositář '%s' nenalezen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s je aktuální -- přeskakuji\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s je aktuální -- přeinstalovávám\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "ponížení verze balíčku %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "zjištěn konflikt nerozlišitelných balíčků\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "selhala alokace paměti: nelze alokovat %zd bytů\n"
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "odstraňuji '%s' ze seznamu cílů, protože je konfliktní s '%s'\n"
|
||||
|
||||
#: lib/libalpm/sync.c:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "příkaz: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "nelze získat md5 kontrolní součet pro soubor %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "soubor %s byl poškozen (nesouhlasí MD5 kontrolní součet)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "selhalo stažení některých souborů z %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "nelze vytvořit transakci pro odstranění\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "nelze inicializovat transakci pro odstranění\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "nelze připravit transakci pro odstranění\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "nelze provést transakci pro odstranění\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "nelze vytvořit transakci\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "nelze inicializovat transakci\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "nelze připravit transakci\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "nelze provést transakci\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "nelze odstranit zamykací soubor %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "V rodičovském prostředí chybí /bin/sh, ruším provádění skriptů\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "nelze vytvořit dočasný adresář\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nelze zkopírovat dočasný soubor do %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "nelze změnit adresář na %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "nelze spustit nový proces (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "nelze změnit kořenový adresář (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "nelze změnit adresář na / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "volání popen selhalo (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "volání waitpid selhalo (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "správné spuštění skriptu selhalo\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "nelze odstranit dočasný adresář %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "selhalo vytvoření cesty '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "nelze otevřít %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "neexistuje cache %s, vytvářím...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "nelze vytvořit cache balíčků, používám /tmp\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s nemohl být otevřen\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s nemohl být přečten\n"
|
||||
|
||||
@@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: de\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-02-15 09:26+0100\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-24 12:41+0100\n"
|
||||
"Last-Translator: Matthias Gorissen <matthias@archlinux.de>\n"
|
||||
"Language-Team: German <archlinux.de>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -21,35 +21,32 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);X-Generator: KBabel 1.11.4\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "Ersetze ältere Version %s-%s durch %s in der Ziel-Liste\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "Neuere Version %s-%s ist in der Ziel-Liste -- Überspringe\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "Überspringe %s-%s, da die Ziel-Liste die neuere Version %s enthält\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "In Konflikt stehende Pakete wurden in Ziel-Liste gefunden\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr ""
|
||||
"Sie können nicht zwei in Konflikt stehende Pakete zur selben Zeit "
|
||||
"installieren\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "Das Ersetzen von Paketen mit -A und -U wird noch nicht unterstützt\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "Das Ersetzen von Paketen mit -U wird noch nicht unterstützt\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "Sie können Pakete manuell mit -Rd und -U ersetzen\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -58,619 +55,515 @@ msgstr ""
|
||||
"Verzeichnis-Berechtigungen unterscheiden sich für %s\n"
|
||||
"Dateisystem: %o Paket: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "Entpacken: Symlink %s zeigt nicht zum Verzeichnis\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "Entpacken: Überschreibe Verzeichnis nicht mit Datei %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466
|
||||
#: lib/libalpm/add.c:610
|
||||
#: lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "Konnte %s nicht entpacken (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "Konnte %s nicht umbenennen (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "Konnte %s nicht in %s umbenennen (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524
|
||||
#: lib/libalpm/add.c:544
|
||||
#: lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "Konnte temporäre Datei nicht nach %s kopieren (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529
|
||||
#: lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s gespeichert als %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "Konnte %s nicht als %s installieren: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "Konnte %s nicht als %s installieren (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s installiert als %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "Entpacke %s als %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723
|
||||
#: lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "Konnte aktuelles Arbeitsverzeichnis nicht ermitteln\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "Fehler traten auf, während %s aktualisiert wurde\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "Fehler traten bei der Installation von %s auf\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "Konnte Datenbankeintrag %s-%s nicht aktualisieren\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "Konnte Eintrag '%s' nicht zum Pufferspeicher hinzufügen\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "Ungültiger Name für Datenbank-Eintrag '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291
|
||||
#: lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451
|
||||
#: lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640
|
||||
#: lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "Konnte Datei %s nicht öffnen: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "Konnte Datenbank-Eintrag %s%s nicht entfernen\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "Versuche die lokale Datenbank neu zu registrieren\n"
|
||||
|
||||
#: lib/libalpm/db.c:560
|
||||
#: lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "Datenbank-Pfad ist nicht definiert\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "Abhängigkeits-Zyklus entdeckt:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s wird nach seiner Abhängigkeit %s entfernt werden\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "Ungültiger Name für Datenbank-Eintrag '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s wird vor seiner Abhängigkeit %s installiert werden\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "Beschädigter Datenbank-Eintrag '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "Kann \"%s\" nicht auflösen (eine Abhängigkeit von \"%s\")\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "Konnte Datei %s nicht öffnen: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "Speicher ist voll!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "Unerwarteter Systemfehler"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "Unzureichende Rechte"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "Konnte Datei nicht finden oder lesen"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "Konnte Verzeichnis nicht finden oder lesen"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "Falsches oder NULL-Argument übergeben"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "Bibliothek nicht initialisiert"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "Bibliothek bereits initialisiert"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "Kann Datenbank nicht sperren"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "Konnte Datenbank nicht öffnen"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "Konnte Datenbank nicht erstellen"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "Datenbank nicht initialisiert"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "Datenbank bereits registriert"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "Konnte Datenbank nicht finden"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "Konnte Datenbank nicht aktualisieren"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "Konnte Datenbank-Eintrag nicht entfernen"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "Ungültige URL für den Server"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "Konnte Parameter nicht setzen"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "Vorgang bereits gestartet"
|
||||
|
||||
#: lib/libalpm/error.c:88
|
||||
#: lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "Vorgang nicht gestartet"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "Doppelte Ziele"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "Vorgang nicht vorbereitet"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "Vorgang abgebrochen"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "Operation nicht mit dem Vorgangs-Typ kompatibel"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "Konnte den Vorgang nicht durchführen"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "Konnte nicht alle Dateien herunterladen"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "Konnte Paket nicht finden oder lesen"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "Ungültiges oder beschädigtes Paket"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "Kann Paketdatei nicht öffnen"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "Kann Paketdaten nicht laden"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "Paket ist bereits installiert"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "Paket ist nicht installiert oder ältere Version"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "Konnte nicht alle Dateien des Paketes entfernen"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "Paketname ist nicht gültig"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "Beschädigtes Paket"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "Kein solches Repositorium"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "Beschädigtes Delta"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "Delta-Patch versagte"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "Gruppe nicht gefunden"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "Kann Abhängigkeiten nicht erfüllen"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "In Konflikt stehende Abhängigkeiten"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "In Konflikt stehende Dateien"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "Benutzer brach die Aktion ab"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "Interner Fehler"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive-Fehler"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "Nicht bestätigt"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "Ungültiger Regulärer Ausdruck"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "Verbindung zum Server fehlgeschlagen"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "Unerwarteter Fehler"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "Konnte MD5-Prüfsumme für Paket %s-%s nicht ermitteln\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"Die Datenbank von %s ist inkonsistent: Die Paketnamen für %s stimmen nicht "
|
||||
"überein\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "MD5-Prüfsummen für Paket %s-%s stimmen nicht überein\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"Die Datenbank von %s ist inkonsistent: Die Versionsnummern für das Paket %s "
|
||||
"stimmen nicht überein\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: Erzwungene Aktualisierung auf Version %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: Lokale Version (%s) ist neuer als %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "Fehler beim Entpacken der Paket-Beschreibungsdatei nach %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "Konnte Paket-Beschreibungsdatei in %s nicht analysieren\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "Fehlender Paketname in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "Fehlende Paket-Version in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061
|
||||
#: lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "Fehler beim Lesen des Paketes %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "Fehlende Paket-Metadaten in %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "Konnte %s nicht in Datenbank finden -- Überspringe\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "Versuche die lokale Datenbank neu zu registrieren\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172
|
||||
#: lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "Kann Datei '%s' nicht entfernen: %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "Datenbank-Pfad ist nicht definiert\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "Konnte Datenbank-Eintrag %s-%s nicht entfernen\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "Abhängigkeits-Zyklus entdeckt:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "Konnte Eintrag '%s' nicht aus dem Puffer entfernen\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s wird nach seiner Abhängigkeit %s entfernt werden\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "URL '%s' ist ungültig, wird ignoriert\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s wird vor seiner Abhängigkeit %s installiert werden\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "URL-Schema nicht spezifiziert, vermute http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "Bereitstellendes Paket wurde ausgewählt (%s enthält %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "Kann \"%s\" nicht auflösen (eine Abhängigkeit von \"%s\")\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "URL '%s' ist ungültig\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "URL-Schema nicht spezifiziert, vermute HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "Platte"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "Konnte Datei '%s' nicht von %s übertragen : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "Kann den Download nicht wieder aufnehmen, starte neu\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "Kann Datei '%s' nicht beschreiben\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "Fehler beim Download von '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "Fehler beim Beschreiben von Datei '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "Konnte nicht zu Verzeichnis %s wechseln\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "Nutze XferCommand: Zweig versagte!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "Die URL enthält keine Datei zum Download\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "Konnte %s nicht herunterladen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "Speicher ist voll!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "Unerwarteter Systemfehler"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "Unzureichende Rechte"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "Konnte Datei nicht finden oder lesen"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "Konnte Verzeichnis nicht finden oder lesen"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "Falsches oder NULL-Argument übergeben"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "Bibliothek nicht initialisiert"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "Bibliothek bereits initialisiert"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "Kann Datenbank nicht sperren"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "Konnte Datenbank nicht öffnen"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "Konnte Datenbank nicht erstellen"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "Datenbank nicht initialisiert"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "Datenbank bereits registriert"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "Konnte Datenbank nicht finden"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "Konnte Datenbank nicht aktualisieren"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "Konnte Datenbank-Eintrag nicht entfernen"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "Ungültige URL für den Server"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "Vorgang bereits gestartet"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "Vorgang nicht gestartet"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "Doppelte Ziele"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "Vorgang nicht vorbereitet"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "Vorgang abgebrochen"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "Operation nicht mit dem Vorgangs-Typ kompatibel"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "Konnte den Vorgang nicht durchführen"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "Konnte nicht alle Dateien herunterladen"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "Konnte Paket nicht finden oder lesen"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "Ungültiges oder beschädigtes Paket"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "Kann Paketdatei nicht öffnen"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "Kann Paketdaten nicht laden"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "Paket ist nicht installiert oder ältere Version"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "Konnte nicht alle Dateien des Paketes entfernen"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "Der Dateiname des Paketes ist nicht gültig"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "Kein solches Repositorium"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "Ungültiges oder beschädigtes Delta"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "Delta-Patch versagte"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "Gruppe nicht gefunden"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "Kann Abhängigkeiten nicht erfüllen"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "In Konflikt stehende Abhängigkeiten"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "In Konflikt stehende Dateien"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "Benutzer brach die Aktion ab"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "Interner Fehler"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "Nicht bestätigt"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "Ungültiger Regulärer Ausdruck"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive-Fehler"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "Fehler in der Bibliothek für Downloads"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "Fehler beim Aufruf eines externen Downloaders"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "Unerwarteter Fehler"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "Konnte %s nicht in Datenbank finden -- Überspringe\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "Kann Datei '%s' nicht entfernen: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "Konnte Datenbank-Eintrag %s-%s nicht entfernen\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "Konnte Eintrag '%s' nicht aus dem Puffer entfernen\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: Ignoriere zu aktualisierendes Paket (zu ersetzen durch %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: Lokale Version (%s) ist neuer als %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: Ignoriere Paket-Aktualisierung (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "Repositorium '%s' nicht gefunden\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s ist aktuell -- Überspringe\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s ist aktuell -- Überspringe\n"
|
||||
msgstr "%s-%s ist aktuell -- Reinstalliere\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596
|
||||
#: lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "Downgrade des Paketes %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "Nicht lösbare Paketkonflikte gefunden\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "malloc-Fehler: Konnte %zd Bytes nicht zuweisen\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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "Befehl: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876
|
||||
#: lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "Kann MD5-Prüfsumme für Paket %s nicht ermitteln\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "Datei %s war beschädigt (falsche MD5-Prüfsumme)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "Konnte manche Dateien von %s nicht übertragen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "Konnte den Lösch-Vorgang nicht erstellen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "Konnte den Lösch-Vorgang nicht beginnen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "Konnte Lösch-Vorgang nicht vorbereiten\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "Konnte Lösch-Vorgang nicht durchführen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "Konnte den Vorgang nicht erstellen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "Konnte den Vorgang nicht beginnen\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "Konnte den Vorgang nicht vorbereiten\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "Konnte den Vorgang nicht durchführen\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "Konnte Sperrdatei %s nicht entfernen\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "Kein /bin/sh im übergeordneten Verzeichnis, breche Skript ab\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "Konnte temporäres Verzeichnis nicht erstellen\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "Konnte temporäre Datei nicht nach %s kopieren (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "Konnte keinen neuen Prozess starten (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "Konnte Root-Verzeichnis nicht wechseln (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "Konnte nicht zu Verzeichnis / (%s) wechseln\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "Aufruf von 'popen' fehlgeschlagen (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "Aufruf von 'waitpid' fehlgeschlagen (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "Skript konnte nicht korrekt ausgeführt werden\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "Konnte temporäres Verzeichnis %s nicht entfernen\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "Konnte Pfad '%s' nicht erstellen: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "Konnte Datei %s nicht öffnen: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "Es existiert kein %s-Puffer. Erstelle... \n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "Konnte Paketpuffer nicht erstellen, benutze stattdessen /tmp\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s kann nicht geöffnet werden\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s kann nicht gelesen werden\n"
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pacman package manager 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-01-16 10:40+1000\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-23 23:38+0200\n"
|
||||
"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
|
||||
"Language-Team: English <en_gb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -16,33 +16,30 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "replacing older version %s-%s by %s in target list\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "skipping %s-%s because newer version %s is in the target list\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "conflicting packages were found in the target list\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "you cannot install two conflicting packages at the same time\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "replacing packages with -A and -U is not supported yet\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "replacing packages with -U is not supported yet\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "you can replace packages manually using -Rd and -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -51,620 +48,511 @@ msgstr ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "extract: symlink %s does not point to dir\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "extract: not overwriting dir with file %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466
|
||||
#: lib/libalpm/add.c:610
|
||||
#: lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "could not extract %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "could not rename %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "could not rename %s to %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524
|
||||
#: lib/libalpm/add.c:544
|
||||
#: lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "could not copy tempfile to %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529
|
||||
#: lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s saved as %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "could not install %s as %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "could not install %s as %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s installed as %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "extracting %s as %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723
|
||||
#: lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "could not get current working directory\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "problem occurred while upgrading %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "problem occurred while installing %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "could not update database entry %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "could not add entry '%s' in cache\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "invalid name for database entry '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291
|
||||
#: lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451
|
||||
#: lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640
|
||||
#: lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "could not open file %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "could not remove database entry %s%s\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "attempt to re-register the 'local' DB\n"
|
||||
|
||||
#: lib/libalpm/db.c:560
|
||||
#: lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "database path is undefined\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "dependency cycle detected:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s will be removed after its %s dependency\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "invalid name for database entry '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s will be installed before its %s dependency\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "corrupted database entry '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "could not open file %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "out of memory!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "unexpected system error"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "insufficient privileges"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "could not find or read file"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "could not find or read directory"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "wrong or NULL argument passed"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "library not initialised"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "library already initialised"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "unable to lock database"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "could not open database"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "could not create database"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "database not initialised"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "database already registered"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "could not find database"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "could not update database"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "could not remove database entry"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "invalid url for server"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "could not set parameter"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transaction already initialised"
|
||||
|
||||
#: lib/libalpm/error.c:88
|
||||
#: lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transaction not initialised"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "duplicate target"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transaction not prepared"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "transaction aborted"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operation not compatible with the transaction type"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "could not commit transaction"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "could not download all files"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "could not find or read package"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "invalid or corrupted package"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "cannot open package file"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "cannot load package data"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "package already installed"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "package not installed or lesser version"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "cannot remove all files for package"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "package name is not valid"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "corrupted package"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "no such repository"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "corrupted delta"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "delta patch failed"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "group not found"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "could not satisfy dependencies"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "conflicting dependencies"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "conflicting files"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "user aborted the operation"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "internal error"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive error"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "not confirmed"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "invalid regular expression"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "connection to remote host failed"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "unexpected error"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "could not get md5sum for package %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "%s database is inconsistent: name mismatch on package %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "md5sums do not match for package %s-%s\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "%s database is inconsistent: version mismatch on package %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: forcing upgrade to version %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) is newer than %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "error extracting package description file to %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "could not parse package description file in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "missing package name in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "missing package version in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061
|
||||
#: lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "error while reading package %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "missing package metadata in %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "could not find %s in database -- skipping\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "attempt to re-register the 'local' DB\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172
|
||||
#: lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "cannot remove file '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "database path is undefined\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "could not remove database entry %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "dependency cycle detected:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "could not remove entry '%s' from cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s will be removed after its %s dependency\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "URL '%s' is invalid, ignoring\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s will be installed before its %s dependency\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "URL scheme not specified, assuming http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "provider package was selected (%s provides %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "URL '%s' is invalid\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "URL scheme not specified, assuming HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disk"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "failed retrieving file '%s' from %s : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "cannot resume download, starting over\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "cannot write to file '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "error downloading '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "error writing to file '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "could not chdir to %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "running XferCommand: fork failed!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL does not contain a file for download\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "failed to download %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "out of memory!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "unexpected system error"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "insufficient privileges"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "could not find or read file"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "could not find or read directory"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "wrong or NULL argument passed"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "library not initialised"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "library already initialised"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "unable to lock database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "could not open database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "could not create database"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "database not initialised"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "database already registered"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "could not find database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "could not update database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "could not remove database entry"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "invalid url for server"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transaction already initialised"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transaction not initialised"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "duplicate target"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transaction not prepared"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "transaction aborted"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operation not compatible with the transaction type"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "could not commit transaction"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "could not download all files"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "could not find or read package"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "invalid or corrupted package"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "cannot open package file"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "cannot load package data"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "package not installed or lesser version"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "cannot remove all files for package"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "package filename is not valid"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "no such repository"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "invalid or corrupted delta"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "delta patch failed"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "group not found"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "could not satisfy dependencies"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "conflicting dependencies"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "conflicting files"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "user aborted the operation"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "internal error"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "not confirmed"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "invalid regular expression"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive error"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "download library error"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "error invoking external downloader"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "unexpected error"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "could not find %s in database -- skipping\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "cannot remove file '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "could not remove database entry %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "could not remove entry '%s' from cache\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) is newer than %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignoring package upgrade (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "repository '%s' not found\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s is up to date -- skipping\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s is up to date -- reinstalling\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596
|
||||
#: lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "downgrading package %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "unresolvable package conflicts detected\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "malloc failure: could not allocate %zd bytes\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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "command: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876
|
||||
#: lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "can't get md5 checksum for file %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "file %s was corrupted (bad MD5 checksum)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "failed to retrieve some files from %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "could not create removal transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "could not initialise the removal transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "could not prepare removal transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "could not commit removal transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "could not create transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "could not initialise transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "could not prepare transaction\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "could not commit transaction\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "could not remove lock file %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "could not create temp directory\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "could not copy tempfile to %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "could not change directory to %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "could not fork a new process (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "could not change the root directory (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "could not change directory to / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "call to popen failed (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "call to waitpid failed (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "scriptlet failed to execute correctly\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "could not remove tmpdir %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "failed to make path '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "could not open %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "no %s cache exists, creating...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "couldn't create package cache, using /tmp instead\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s can't be opened\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s can't be read\n"
|
||||
|
||||
|
||||
@@ -1,50 +1,48 @@
|
||||
# translation of es.po to
|
||||
# Juan Pablo Gonzalez <jotapesan@gmail.com>, 2008.
|
||||
# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2008.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: es\n"
|
||||
"Project-Id-Version: libalpm\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-01-16 16:04-0300\n"
|
||||
"Last-Translator: Juan Pablo Gonzalez <jotapesan@gmail.com>\n"
|
||||
"Language-Team: <es@li.org>\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-23 23:35+0200\n"
|
||||
"Last-Translator: Juan Pablo González Tognarelli <jotapesan@gmail.com>\n"
|
||||
"Language-Team: Spanish <kde-i18n-doc@lists.kde.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Spanish\n"
|
||||
"X-Poedit-Country: CHILE\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
"X-Generator: Lokalize 0.2\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "reemplazando la versión antigua %s-%s por %s en la lista de objetivos\n"
|
||||
msgstr ""
|
||||
"reemplazando la versión antigua %s-%s por %s en la lista de objetivos\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "una nueva versión %s-%s esta en la lista de objetivos list -- saltándola\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "saltando %s-%s debido a que una nueva versión de %s esta en la lista\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "paquetes con conflictos fueron encontrados en la lista\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr ""
|
||||
"usted no puede instalar simultáneamente dos paquetes que poseen conflictos "
|
||||
"entre si\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "el reemplazo de paquetes con -A y -U aún no esta soportado\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "reemplazar paquetes con -U aún no esta soportado\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "usted puede reemplazar manualmente los paquetes usando -Rd y -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -53,607 +51,519 @@ msgstr ""
|
||||
"los permisos de directorio difieren en %s\n"
|
||||
"sistema de archivos: %o paquete: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "extract: el link simbólico %s no apunta al directorio\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "extract: no sobrescribiendo el dir. con el archivo %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "no se pudo extraer %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "no se pudo renombrar %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "no se pudo renombrar %s a %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "no se pudo copiar el archivo temporal a %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s guardado como %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "no se pudo instalar %s como %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "no se pudo instalar %s como %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s instalado como %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "descomprimiendo %s como %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "no se pudo obtener el directorio de trabajo actual\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "ocurrieron errores mientras actualizando %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "ocurrieron errores mientras instalando %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "no se pudo actualizar en la base de datos la entrada %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "no se pudo agregar '%s' en la cache\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nombre invalido para la entrada de la base de datos '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "no se pudo abrir el archivo %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "no se pudo quitar la entrada %s%s en la base de datos\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "intento para re-registrar la base de datos 'local'\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "ruta para la base de datos no es definido\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "ciclo de dependencias detectado:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s será quitado tras su dependencia %s\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nombre invalido para la entrada de la base de datos '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s será instalado antes de su dependencia %s\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "entrada corrupta en la base de datos '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "no se pudo resolver \"%s\", una dependencia para \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "no se pudo abrir el archivo %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "no hay memoria!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "error de sistema inesperado"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilegios insuficientes"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "no se pudo encontrar o leer el archivo"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "no se pudo leer el directorio"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "argumento erroneo o NULO"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "librería no inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "la librería ya fue inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "no se pudo bloquear la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "no se pudo abrir la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "no se pudo crear la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "base de datos no inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "base de datos ya registrada"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "no se pudo encontrar la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "no se pudo actualizar la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "no se pudo quitar la entrada de la base de datos"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "dirección inválida para el servidor"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "no se pudo fijar el parámetro"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "la operación ya se inicializó"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "operación no inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "objetivo duplicado"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "operación no lista"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "operación abortada"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "la operación no es compatible con el tipo de transacción"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "no se pudo hacer la transacción"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "no se pudo descargar todos los archivos"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "no se pudo encontrar o leer el paquete"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "paquete invalido o corrupto"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "no se pudo abrir el archivo de paquetes"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "no se pudo cargar la información del paquete"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "el paquete ya está instalado"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "el paquete no está instalado o es una versión menor"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "no se pudo quitar todos los archivos del paquete"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "el nombre del paquete no es válido"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "paquete corrupto"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "no existe el repositorio"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "delta corrupto"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "parche delta fallado"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "grupo no encontrado"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "no se pudieron satisfacer las dependencias"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dependencias en conflicto"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "archivos en conflicto"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "el usuario abortó la operación"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "error interno"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "error de libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "no confirmado"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expresión regular inválida"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "falló la conexión con el host remoto"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "error inesperado"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "no se pudo obtener la verificación md5 para %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"la base de datos %s es inconsistente: nombre mal emparejado en el paquete %"
|
||||
"s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "la verificación md5 para el paquete %s-%s no concuerda\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"la base de datos %s es inconsistente: versión mal emparejada en el paquete %"
|
||||
"s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: forzando la actualización a la versión %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) es más nuevo que %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "error descomprimiendo el paquete de descripción a %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "no se pudo interpretar el archivo de descripción en %s\n"
|
||||
msgstr "no se pudo analizar sintácticamente el archivo de descripción en %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "nombre de paquete perdido en %s\n"
|
||||
msgstr "nombre de paquete ausente en %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "versión de paquete perdida en %s\n"
|
||||
msgstr "versión del paquete ausente en %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "error mientras se leía el paquete %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "faltan los metadatos del paquete en %s\n"
|
||||
msgstr "metadatos del paquete faltantes en %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "no se pudo encontrar %s en la base de datos -- saltando\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "intento para re-registrar la base de datos 'local'\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "no se pudo quitar el archivo '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "ruta para la base de datos no es definido\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "no se pudo quitar de la base de datos %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "ciclo de dependencias detectado:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "no se pudo quitar la entrada '%s' de la cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s será quitado tras su dependencia %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "la url %s no es válida, ignorando\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s será instalado antes de su dependencia %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "no fue especificado el esquema de url, asumiendo http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "El paquete proveedor fue seleccionado (%s provee %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "no se pudo resolver \"%s\", una dependencia para \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "la url %s no es válida\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "no fue especificado el esquema de url, asumiendo HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disco"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "fallo al obtener archivo '%s' desde %s: %s\n"
|
||||
msgstr "falló al obtener archivo '%s' desde %s: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "no se puede resumir la descarga, empezando de nuevo\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "no se pudo escribir al archivo '%s'\n"
|
||||
msgstr "no se puede escribir en el archivo '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "error descargando %s: %s\n"
|
||||
msgstr "error descargando '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "no se pudo escribir al archivo '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "no se pudo cambiar el directorio a %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "ejecutando XferCommand: fallo en el fork\n"
|
||||
msgstr "ejecutando XferCommand: falló en el fork\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "la URL no contiene un archivo para descargar\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "no se pudo descargar %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "memoria insuficiente!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "error de sistema inesperado"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilegios insuficientes"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "no se pudo encontrar o leer el archivo"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "no se pudo leer el directorio"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "argumento erroneo o NULO"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "biblioteca no inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "la biblioteca ya fue inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "no se pudo bloquear la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "no se pudo abrir la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "no se pudo crear la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "base de datos no inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "base de datos ya registrada"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "no se pudo encontrar la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "no se pudo actualizar la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "no se pudo quitar la entrada de la base de datos"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "dirección inválida para el servidor"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "la operación ya se inicializó"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "operación no inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "objetivo duplicado"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "operación no lista"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "operación abortada"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "la operación no es compatible con el tipo de transacción"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "no se pudo hacer la transacción"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "no se pudo descargar todos los archivos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "no se pudo encontrar o leer el paquete"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "paquete invalido o corrupto"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "no se pudo abrir el archivo de paquetes"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "no se pudo cargar la información del paquete"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "el paquete no está instalado o es una versión menor"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "no se pudo quitar todos los archivos del paquete"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "el nombre de archivo del paquete no es válido"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "no existe el repositorio"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "invalido o diferencial corrupto"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "parche delta fallado"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "grupo no encontrado"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "no se pudieron satisfacer las dependencias"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dependencias en conflicto"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "archivos en conflicto"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "el usuario abortó la operación"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "error interno"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "no confirmado"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expresión regular inválida"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "error de libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "error de descarga de biblioteca"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "error invocando el descargador externo"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "error inesperado"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "no se pudo encontrar %s en la base de datos -- saltando\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "no se pudo quitar el archivo '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "no se pudo quitar de la base de datos %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "no se pudo quitar la entrada '%s' de la cache\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr ""
|
||||
"%s-%s: ignorando la actualización del paquete (para ser reemplazado por %s-%"
|
||||
"s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) es más nuevo que %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignorando la actualización del paquete (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "repositorio '%s' no encontrado\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s esta al día -- saltando\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s esta al día -- re-instalando\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "decrementando la versión del paquete %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "se han detectado paquetes con conflictos no resueltos\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "falla en malloc: no se pudo alocar %zd bytes\n"
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr ""
|
||||
"quitando '%s' de la lista de objetivos debido a que posee conflictos con '%"
|
||||
"s'\n"
|
||||
|
||||
#: lib/libalpm/sync.c:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "comando: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "no se pudo verificar md5 para el paquete %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "el archivo %s estaba corrupto (no coincidió la verificación MD5)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "fallo al descargar algunos archivos desde %s\n"
|
||||
msgstr "falló al descargar algunos archivos desde %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "no se pudo crear la operación de eliminación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "no se pudo iniciar la operación de eliminación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "no se pudo preparar la operación de eliminación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "no se pudo enviar la operación de eliminación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "no se pudo crear la operación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "no se pudo iniciar la operación\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "no se pudo preparar la transacción\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "no se pudo asignar la transacción\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "no se pudo eliminar el archivo de bloqueo %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "No existe /bin/sh en el ambiente padre, abortando los scripts\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "no se puede crear el directorio temporal\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "no se pudo copiar el archivo temporal a %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "no se pudo cambiar el directorio a %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "no se pudo crear un nuevo proceso (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "no se pudo cambiar el directorio raíz (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "no se pudo cambiar el directorio a / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "llamada a popen fallida (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "llamada a waitpid fallida (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "scriplet falló en ejecutarse correctamente\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "no se pudo eliminar el directorio temporal %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "fallo al crear la ruta '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "no se pudo abrir %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "no existe la cache %s, creando...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "no se pudo crear la cache de paquetes, usando /tmp en su lugar\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: no se puede abrir %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: no se puede leer %s\n"
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pacman package manager 3.0.1\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2007-12-22 22:29+0100\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-23 22:51+0200\n"
|
||||
"Last-Translator: Xavier <shiningxc@gmail.com>\n"
|
||||
"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -15,37 +15,34 @@ msgstr ""
|
||||
"X-Poedit-Language: French\n"
|
||||
"X-Poedit-Country: FRANCE\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr ""
|
||||
"remplacement de l'ancienne version %s-%s par %s dans la liste des cibles\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr ""
|
||||
"une version plus récente %s-%s est dans la liste des cibles -- paquet "
|
||||
"ignoré\n"
|
||||
"ignore le paquet %s-%s car une version plus récente %s est dans la liste des "
|
||||
"cibles\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "Des paquets en conflit ont été trouvés dans la liste des cibles\n"
|
||||
msgstr "des paquets en conflit ont été trouvés dans la liste des cibles\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "vous ne pouvez pas installer deux paquets en conflit en même temps\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "remplacer un paquet avec -A ou -U n'est pas encore possible\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "remplacer un paquet avec -U n'est pas encore possible\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr ""
|
||||
"vous pouvez remplacer les paquets manuellement en utilisant -Rd et -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -54,606 +51,513 @@ msgstr ""
|
||||
"Les permissions pour le répertoire %s sont différentes\n"
|
||||
"système de fichier: %o paquet : %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "extraction: le lien %s ne pointe pas vers un répertoire\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "extraction: n'écrase pas le répertoire par le fichier %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "l'extraction de %s a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "renommer %s a échoué (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "impossible de renommer %s en %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "la copie du fichier temporaire vers %s a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s enregistré en tant que %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "l'installation de %s en tant que %s a échoué: (%s)\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "l'installation de %s en tant que %s a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s installé en tant que %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "extraction de %s comme %s.pacnew\n"
|
||||
|
||||
# j'ai traduit chaque fois "could not" par "a échoué"
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "déterminer le répertoire courant a échoué\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "des erreurs sont survenues pendant la mise à jour de %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "des erreurs sont survenues pendant l'installation de %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "la mise à jour l'entrée de base de données %s-%s a échoué\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "l'ajout au cache de l'entrée '%s' a échoué\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nom invalide pour l'entrée de base de données '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "l'ouverture du fichier %s a échoué: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "la suppression de l'entrée de base de données %s%s a échoué\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentative de ré-enregistrer la base de données locale\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "base de données non initialisée\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "cycle de dépendances détecté:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s sera supprimé après sa dépendance %s\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nom invalide pour l'entrée de base de données '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s sera installé avant sa dépendance %s\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "l'entrée '%s' de la base de données est corrompue\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "impossible de résoudre \"%s\", une dépendance de \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "l'ouverture du fichier %s a échoué: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "dépassement de mémoire!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "erreur système non prévue"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "autorisation insuffisante"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "trouver ou lire le fichier a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "trouver ou lire le répertoire a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "un argument erroné ou nul a été fourni"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "librairie non initialisée"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "librairie déjà initialisée"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "verrouillage de la base de données impossible"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "l'ouverture de la base de données a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "la création de la base de données a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "base de données non initialisée"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "base de données déjà enregistrée"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "trouver la base de données a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "la mise à jour de la base de données a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "la suppression de l'entrée de base de données a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "URL invalide pour le serveur"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "définir le paramètre a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transaction déjà initialisée"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transaction non initialisée"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "cible répétée"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transaction non préparée"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "transaction annulée"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "opération incompatible avec le type de transaction"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "appliquer la transaction a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "tous les fichiers n'ont pas pu être téléchargés"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "trouver ou de lire le paquet a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "paquet invalide ou corrompu"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "ouverture du fichier paquet impossible"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "chargement des données du paquet impossible"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "paquet déjà installé"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "paquet non installé ou version plus ancienne"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "suppression de certains fichiers du paquet impossible"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "nom de paquet invalide"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "paquet corrompu"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "ce dépôt n'existe pas"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "delta corrompu"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "l'application du delta a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "groupe non trouvé"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "la satisfaction des dépendances a échoué"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "conflit de dépendances"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "conflit de fichiers"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "opération annulée par l'utilisateur"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "erreur interne"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "erreur de libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "non confirmé"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expression régulière incorrecte"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "échec de connexion à l'hôte distant "
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "erreur non prévue"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "l'obtention du hache md5 pour le paquet %s-%s a échoué\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "Le dépôt %s est inconsistant: noms différents pour le paquet %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "les 'haches' md5 ne correspondent pas pour le paquet %s-%s\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "Le dépôt %s est inconsistant: versions différentes pour le paquet %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: force la mise à jour à la version %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: la version locale (%s) est plus récente que %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "l'extraction du fichier de description vers %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "l'analyse du fichier de description a échoué dans %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "nom de paquet manquant dans %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "version de paquet manquante dans %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "erreur lors de la lecture du paquet %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "méta-données du paquet manquantes dans %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "trouver %s dans la base de données a échoué -- ignoré\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentative de ré-enregistrer la base de données locale\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "suppression du fichier '%s' impossible: %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "base de données non initialisée\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "la suppression de l'entrée de base de données %s-%s a échoué\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "cycle de dépendances détecté:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "la suppression du cache de l'entrée '%s' a échoué\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s sera supprimé après sa dépendance %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "l'url '%s' est invalide, ignorée\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s sera installé avant sa dépendance %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "Une provision a été sélectionnée (%s fournit %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "impossible de résoudre \"%s\", une dépendance de \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "l'url '%s' est invalide\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "Le protocole n'a pas été spécifié dans l'url, assume http\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disque"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, 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/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "le téléchargement ne peut pas être repris, relance\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "écriture dans le fichier '%s' impossible\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "erreur lors du téléchargement de '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "écriture dans le fichier '%s' impossible: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "changer de répertoire vers %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "lancement de XferCommand: le fork a échoué!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "l'URL ne contient pas un fichier à télécharger\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "le fichier %s n'a pas pu être téléchargé\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "dépassement de mémoire!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "erreur système non prévue"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "autorisation insuffisante"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "trouver ou lire le fichier a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "trouver ou lire le répertoire a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "un argument erroné ou nul a été fourni"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "librairie non initialisée"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "librairie déjà initialisée"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "verrouillage de la base de données impossible"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "l'ouverture de la base de données a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "la création de la base de données a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "base de données non initialisée"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "base de données déjà enregistrée"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "trouver la base de données a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "la mise à jour de la base de données a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "la suppression de l'entrée de base de données a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "URL invalide pour le serveur"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transaction déjà initialisée"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transaction non initialisée"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "cible répétée"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transaction non préparée"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "transaction annulée"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "opération incompatible avec le type de transaction"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "appliquer la transaction a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "tous les fichiers n'ont pas pu être téléchargés"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "trouver ou de lire le paquet a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "paquet invalide ou corrompu"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "ouverture du fichier paquet impossible"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "chargement des données du paquet impossible"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "paquet non installé ou version plus ancienne"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "suppression de certains fichiers du paquet impossible"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "nom de paquet invalide"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "ce dépôt n'existe pas"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "delta invalide ou corrompu"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "l'application du delta a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "groupe non trouvé"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "la satisfaction des dépendances a échoué"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "conflit de dépendances"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "conflit de fichiers"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "opération annulée par l'utilisateur"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "erreur interne"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "non confirmé"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expression régulière incorrecte"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "erreur de libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "erreur de la bibliothèque de téléchargement"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "erreur en invoquant le client externe de téléchargement"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "erreur non prévue"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "trouver %s dans la base de données a échoué -- ignoré\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "suppression du fichier '%s' impossible: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "la suppression de l'entrée de base de données %s-%s a échoué\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "la suppression du cache de l'entrée '%s' a échoué\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: ignore la mise à jour du paquet (à remplacer par %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: la version locale (%s) est plus récente que %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignore la mise à jour du paquet (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "dépôt '%s' non trouvé\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s est à jour -- ignoré\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s est à jour -- réinstalle\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "retourne à la version antérieure du paquet %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "un conflit de paquets impossible à résoudre a été détecté\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "erreur malloc: n'a pas pu allouer %zd bytes\n"
|
||||
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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "commande: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "ne peut obtenir le 'hach' md5 pour le paquet %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "l'archive %s était corrompue (mauvaise somme MD5)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "échec de récupération de certains fichiers depuis %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "la création de la transaction de suppression a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "l'initialisation de la transaction de suppression a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "la préparation de la transaction de suppression a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "appliquer la transaction de suppression a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "la création de la transaction a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "l'initialisation de la transaction a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "la préparation de la transaction a échoué\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "appliquer la transaction a échoué\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "la suppression du fichier de verrouillage %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr ""
|
||||
"Pas de /bin/sh dans l'environnement parent, interruption du scriptlet\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "la création du répertoire temporaire a échoué\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "la copie du fichier temporaire vers %s a échoué (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "changer de répertoire vers %s a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "la génération d'un nouveau processus a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "changer le répertoire racine a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "changer de répertoire vers / a échoué (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "call to popen failed (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "call to waitpid failed (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "le scriptlet n'a pas pu être exécuté correctement\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "la suppression du répertoire temporaire %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "échec de la création du chemin '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "l'ouverture de %s: %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "le cache %s n'existe pas, création...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "n'a pas pu créer le cache de paquets, /tmp sera utilisé à la place\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: l'ouverture de %s a échoué\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: la lecture de %s a échoué\n"
|
||||
|
||||
@@ -7,649 +7,552 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hu\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2007-03-14 13:45+0100\n"
|
||||
"Last-Translator: Nagy Gabor <ngaba@bibl.u-szeged.hu>\n"
|
||||
"Language-Team: <hu@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ISO-8859-2\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "r<EFBFBD>gebbi verzi<EFBFBD> (%s-%s) lecser<EFBFBD>l<EFBFBD>se %s verzi<EFBFBD>ra a c<EFBFBD>l list<EFBFBD>ban\n"
|
||||
msgstr "régebbi verzió (%s-%s) lecserélése %s verzióra a célok listájában\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "<EFBFBD>jabb verzi<EFBFBD> (%s-%s) m<>r megtal<61>lhat<61> a c<>l list<73>ban -- kihagy<67>s\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "%s-%s kihagyása, mert újabb verzió (%s) van a célok között\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "<EFBFBD>tk<EFBFBD>z<EFBFBD> csomagokat tal<EFBFBD>ltam a c<EFBFBD>l list<73>ban\n"
|
||||
msgstr "ütköző csomagokat találtam a célok között\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "nem telep<EFBFBD>thet<EFBFBD> k<EFBFBD>t <EFBFBD>tk<EFBFBD>z<EFBFBD> csomag egyszerre\n"
|
||||
msgstr "nem telepíthető két ütköző csomag egyszerre\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "csomagok lecser<EFBFBD>l<EFBFBD>se m<EFBFBD>g nem t<EFBFBD>mogatott -A <20>s -U eset<EFBFBD>n\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "csomagok lecserélése még nem támogatott -U esetén\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "a -Rd <EFBFBD>s -U haszn<EFBFBD>lat<EFBFBD>val elv<EFBFBD>gezhet<EFBFBD> a csere\n"
|
||||
msgstr "a -Rd és -U használatával elvégezhető a csere\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
msgstr ""
|
||||
"elt<EFBFBD>r<EFBFBD> k<EFBFBD>nyvt<EFBFBD>r-jogosults<EFBFBD>gok: %s\n"
|
||||
"f<EFBFBD>jlrendszer: %o csomag: %o\n"
|
||||
"eltérő könyvtár-jogosultságok: %s\n"
|
||||
"fájlrendszer: %o csomag: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "kicsomagol<EFBFBD>s: %s szimbolikus link nem k<EFBFBD>nyvt<EFBFBD>rra mutat\n"
|
||||
msgstr "kicsomagolás: %s szimbolikus link nem könyvtárra mutat\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "kicsomagol<EFBFBD>s: nem <EFBFBD>rok fel<EFBFBD>l k<EFBFBD>nyvt<EFBFBD>rat a %s f<EFBFBD>jllal\n"
|
||||
msgstr "kicsomagolás: nem írok felül könyvtárat a %s fájllal\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt kicsomagolni: %s (%s)\n"
|
||||
msgstr "nem sikerült kicsomagolni: %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt <EFBFBD>tnevezni: %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "nem sikerült az átnevezés: %s -> %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nem siker<65>lt az ideiglenes f<>jlt ide m<>solni: %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s elmentve %s n<EFBFBD>ven\n"
|
||||
msgstr "%s elmentve %s néven\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt %s telep<EFBFBD>t<EFBFBD>se %s n<EFBFBD>ven: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "nem sikerült %s telepítése %s néven (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s %s n<EFBFBD>ven lett telep<EFBFBD>tve\n"
|
||||
msgstr "%s %s néven lett telepítve\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "%s kicsomagol<EFBFBD>sa %s.pacnew n<EFBFBD>ven\n"
|
||||
msgstr "%s kicsomagolása %s.pacnew néven\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "a jelenlegi munkak<EFBFBD>nyvt<EFBFBD>r nem kaphat<EFBFBD> meg\n"
|
||||
msgstr "a jelenlegi munkakönyvtár nem kapható meg\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "hiba t<EFBFBD>rt<EFBFBD>nt a(z) %s friss<EFBFBD>t<EFBFBD>se k<EFBFBD>zben\n"
|
||||
msgstr "hiba történt a(z) %s frissítése közben\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "hiba t<EFBFBD>rt<EFBFBD>nt a(z) %s telep<EFBFBD>t<EFBFBD>se k<EFBFBD>zben\n"
|
||||
msgstr "hiba történt a(z) %s telepítése közben\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "nem siker<EFBFBD>lt a(z) %s-%s adatb<EFBFBD>zisbejegyz<EFBFBD>s friss<EFBFBD>t<EFBFBD>se\n"
|
||||
msgstr "nem sikerült a(z) %s-%s adatbázisbejegyzés frissítése\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "sikertelen a '%s' bejegyz<EFBFBD>s hozz<EFBFBD>ad<EFBFBD>sa a gyors<EFBFBD>t<EFBFBD>t<EFBFBD>rhoz\n"
|
||||
msgstr "sikertelen a '%s' bejegyzés hozzáadása a gyorsítótárhoz\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "<22>rv<72>nytelen n<>v a '%s' adatb<74>zis-bejegyz<79>s sz<73>m<EFBFBD>ra\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nem siker<65>lt megnyitni a %s f<>jlt: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "sikertelen a %s%s adatb<EFBFBD>zis-bejegyz<EFBFBD>s elt<EFBFBD>vol<EFBFBD>t<EFBFBD>sa\n"
|
||||
msgstr "sikertelen a %s%s adatbázis-bejegyzés eltávolítása\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "k<>s<EFBFBD>rlet a 'local' adatb<74>zis <20>jraregisztr<74>l<EFBFBD>s<EFBFBD>ra\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "az adatb<74>zis-<2D>tvonal nincs megadva\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "k<>rk<72>r<EFBFBD>s f<>gg<67>s<EFBFBD>get <20>szleltem:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "a(z) %s csomag saj<61>t %s f<>gg<67>s<EFBFBD>ge ut<75>n lesz elt<6C>vol<6F>tva\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "hibás név a '%s' adatbázis-bejegyzés számára\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "a(z) %s csomag saj<61>t %s f<>gg<67>s<EFBFBD>ge el<65>tt lesz telep<65>tve\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "sérült adatbázis bejegyzés: '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nem siker<EFBFBD>lt a(z) \"%s\" csomag \"%s\" f<>gg<67>s<EFBFBD>g<EFBFBD>t feloldani\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "elfogyott a mem<65>ria!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "nemv<6D>rt hiba"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "el<65>gtelen jogosults<74>gok"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "nem tal<61>lhat<61> vagy nem olvashat<61> a f<>jl"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nem tal<61>lhat<61> vagy nem olvashat<61> a k<>nyvt<76>r"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "rossz vagy NULL argumentum <20>rkezett"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "a k<>nyvt<76>r nem inicializ<69>lt"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "a k<>nyvt<76>r m<>r inicializ<69>lt"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "nem siker<65>lt z<>rolni az adatb<74>zist"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "nem siker<65>lt megnyitni az adatb<74>zist"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "nem siker<65>lt l<>trehozni az adatb<74>zist"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "az adatb<74>zis nem inicializ<69>lt"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "az adatb<74>zis m<>r regisztr<74>lt"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "nem tal<61>lhat<61> az adatb<74>zis"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "nem siker<65>lt megnyitni az adatb<74>zist"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nem siker<65>lt elt<6C>vol<6F>tani az adatb<74>zis-bejegyz<79>st"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "<22>rv<72>nytelen szerver-URL"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "nem siker<65>lt be<62>ll<6C>tani a param<61>tert"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "a tranzakci<63> m<>r inicializ<69>lt"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "a tranzakci<63> nem inicializ<69>lt"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "k<>t azonos c<>lcsomag"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "a tranzakci<63> nincs el<65>k<EFBFBD>sz<73>tve"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "a tranzakci<63> f<>lbeszak<61>tva"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "a m<>velet nem egyeztethet<65> <20>ssze a jelenlegi tranzakci<63>t<EFBFBD>pussal"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nem siker<65>lt v<>grahajtani a tranzakci<63>t"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "nem siker<65>lt let<65>lteni az <20>sszes f<>jlt"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "nem tal<61>lhat<61> vagy nem olvashat<61> a csomag"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "nem <20>rv<72>nyes vagy s<>r<EFBFBD>lt csomag"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "nem siker<65>lt megnyitni a csomagf<67>jlt"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "nem siker<65>lt bet<65>lteni a csomagadatokat"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "a csomag m<>r telep<65>tve van"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "a csomag nincs telep<65>tve vagy kisebb verzi<7A>j<EFBFBD>"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nem siker<65>lt elt<6C>vol<6F>tani a csomag <20>sszes f<>jlj<6C>t"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "nem <20>rv<72>nyes a csomagn<67>v"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "s<>r<EFBFBD>lt csomag"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "nincs ilyen rep<65>"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "s<>r<EFBFBD>lt delta"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "delta patchel<65>s sikertelen"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "a csoport nem tal<61>lhat<61>"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nem siker<65>lt kiel<65>g<EFBFBD>teni a f<>gg<67>s<EFBFBD>geket"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "<22>tk<74>z<EFBFBD> f<>gg<67>s<EFBFBD>gek"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "<22>tk<74>z<EFBFBD> f<>jlok"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "felhaszn<7A>l<EFBFBD>i megszak<61>t<EFBFBD>s"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "bels<6C> hiba"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive hiba"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "nem meger<65>s<EFBFBD>tett"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "<22>rv<72>nytelen regul<75>ris kifejez<65>s"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "nem siker<65>lt csatlakozni a t<>voli g<>phez"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "nemv<6D>rt hiba"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "nem siker<65>lt meghat<61>rozni a(z) %s-%s csomag md5 ellen<65>rz<72> <20>sszeg<65>t\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "a(z) %s adatbázis inkonzisztens: eltérő nevek a(z) %s csomagnál\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "a(z) %s-%s csomag md5 ellen<65>rz<72> <20>sszegei nem egyeznek meg\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "a(z) %s adatbázis inkonzisztens: eltérő verziók a(z) %s csomagnál\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: er<65>ltetett friss<73>t<EFBFBD>s a %s verzi<7A>ra\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: a helyi (%s) <20>jabb, mint %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "nem siker<65>lt kicsomagolni a csomagle<6C>r<EFBFBD> f<>jlt %s-k<>nt\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt <EFBFBD>rtelmezni a(z) %s csomagle<EFBFBD>r<EFBFBD> f<EFBFBD>jlj<EFBFBD>t\n"
|
||||
msgstr "nem sikerült értelmezni a(z) %s csomagleíró fájlját\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "hi<EFBFBD>nyz<EFBFBD> csomagn<EFBFBD>v itt: %s\n"
|
||||
msgstr "hiányzó csomagnév itt: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "hi<EFBFBD>nyz<EFBFBD> csomagverzi<EFBFBD> itt: %s\n"
|
||||
msgstr "hiányzó csomagverzió itt: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "hiba a(z) %s csomag olvas<EFBFBD>sa k<EFBFBD>zben: %s\n"
|
||||
msgstr "hiba a(z) %s csomag olvasása közben: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "hi<EFBFBD>nyz<EFBFBD> csomaginform<EFBFBD>ci<EFBFBD>s f<EFBFBD>jl itt: %s\n"
|
||||
msgstr "hiányzó csomaginformációs fájl itt: %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nem tal<61>lhat<61> a(z) %s az adatb<EFBFBD>zisban -- kihagy<67>s\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "kísérlet a 'local' adatbázis újraregisztrálására\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nem siker<65>lt elt<6C>vol<6F>tani a '%s' f<>jlt : %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "az adatbázis-útvonal nincs megadva\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nem siker<65>lt elt<6C>vol<6F>tani a(z) %s-%s adatb<74>zis-bejegyz<79>st\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "körkörös függőséget észleltem:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nem siker<65>lt elt<6C>vol<6F>tani a(z) '%s' bejegyz<79>st a gyors<72>t<EFBFBD>t<EFBFBD>rb<72>l\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "a(z) %s csomag saját %s függősége után lesz eltávolítva\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "a '%s' URL <20>rv<72>nytelen, figyelmen k<>v<EFBFBD>l hagyom\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "a(z) %s csomag saját %s függősége előtt lesz telepítve\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "az URL s<>ma nem defini<6E>lt, http felt<6C>telez<65>se\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "közvetett csomagválasztás (%s szolgáltatja %s-t)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nem sikerült a(z) \"%2$s\" csomag \"%1$s\" függőségét feloldani\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "a '%s' URL hibás\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "az URL séma nem definiált, http feltételezése\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "diszk"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt a(z) '%s' f<EFBFBD>jlt let<EFBFBD>lteni a %s helyr<EFBFBD>l : %s\n"
|
||||
msgstr "nem sikerült a(z) '%s' fájlt letölteni a %s helyről : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "nem tudom folytatni a let<EFBFBD>lt<EFBFBD>st, <EFBFBD>jrakezdem\n"
|
||||
msgstr "nem tudom folytatni a letöltést, újrakezdem\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "nem siker<EFBFBD>lt a(z) '%s' f<EFBFBD>jlba <EFBFBD>rni\n"
|
||||
msgstr "nem sikerült a(z) '%s' fájlba írni\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "hiba '%s' let<EFBFBD>lt<EFBFBD>se k<EFBFBD>zben: %s\n"
|
||||
msgstr "hiba '%s' letöltése közben: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "hiba a(z) '%s' f<EFBFBD>jl <EFBFBD>r<EFBFBD>sa sor<EFBFBD>n: %s\n"
|
||||
msgstr "hiba a(z) '%s' fájl írása során: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt a k<EFBFBD>nyvt<EFBFBD>rv<EFBFBD>lt<EFBFBD>s ide: %s\n"
|
||||
msgstr "nem sikerült a könyvtárváltás ide: %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "XferCommand futtat<EFBFBD>sa: sikertelen fork!\n"
|
||||
msgstr "XferCommand futtatása: sikertelen fork!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "az URL nem tartalmaz let<65>ltend<6E> f<>jlt\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt a(z) %s let<EFBFBD>lt<EFBFBD>se\n"
|
||||
msgstr "nem sikerült a(z) %s letöltése\n"
|
||||
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "elfogyott a memória!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "nemvárt hiba"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "elégtelen jogosultságok"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "nem található vagy nem olvasható a fájl"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nem található vagy nem olvasható a könyvtár"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "rossz vagy NULL argumentum érkezett"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "a könyvtár nem inicializált"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "a könyvtár már inicializált"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "nem sikerült zárolni az adatbázist"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "nem sikerült megnyitni az adatbázist"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "nem sikerült létrehozni az adatbázist"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "az adatbázis nem inicializált"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "az adatbázis már regisztrált"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "nem található az adatbázis"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "nem sikerült megnyitni az adatbázist"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nem sikerült eltávolítani az adatbázis-bejegyzést"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "hibás szerver-URL"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "a tranzakció már inicializált"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "a tranzakció nem inicializált"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "két azonos célcsomag"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "a tranzakció nincs előkészítve"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "a tranzakció félbeszakítva"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "a művelet nem egyeztethető össze a jelenlegi tranzakciótípussal"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nem sikerült végrahajtani a tranzakciót"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "nem sikerült letölteni az összes fájlt"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "nem található vagy nem olvasható a csomag"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "hibás vagy sérült csomag"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "nem sikerült megnyitni a csomagfájlt"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "nem sikerült betölteni a csomagadatokat"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "a csomag nincs telepítve vagy kisebb verziójú"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nem sikerült eltávolítani a csomag összes fájlját"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "érvénytelen csomagnév"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "nincs ilyen repó"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "hibás vagy sérült delta"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "delta patchelés sikertelen"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "a csoport nem található"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nem sikerült kielégíteni a függőségeket"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "ütköző függőségek"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "ütköző fájlok"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "felhasználói megszakítás"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "belső hiba"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "nem megerősített"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "hibás reguláris kifejezés"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive hiba"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "letöltőkönyvtár hiba"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "hiba a külső letöltő meghívásakor"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "nemvárt hiba"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nem található a(z) %s az adatbázisban -- kihagyás\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nem sikerült eltávolítani a '%s' fájlt : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nem sikerült eltávolítani a(z) %s-%s adatbázis-bejegyzést\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nem sikerült eltávolítani a(z) '%s' bejegyzést a gyorsítótárból\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: csomagfriss<EFBFBD>t<EFBFBD>s kihagy<EFBFBD>sa (a(z) %s-%s le fogja cser<EFBFBD>lni)\n"
|
||||
msgstr "%s-%s: csomagfrissítés kihagyása (a(z) %s-%s le fogja cserélni)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: a helyi (%s) újabb, mint %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: csomagfriss<EFBFBD>t<EFBFBD>s kihagy<EFBFBD>sa (%s => %s)\n"
|
||||
msgstr "%s: csomagfrissítés kihagyása (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "a(z) '%s' rep<EFBFBD> nem tal<EFBFBD>lhat<EFBFBD>\n"
|
||||
msgstr "a(z) '%s' repó nem található\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "a(z) %s-%s naprak<EFBFBD>sz -- kihagy<EFBFBD>s\n"
|
||||
msgstr "a(z) %s-%s naprakész -- kihagyás\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "a(z) %s-%s naprak<EFBFBD>sz -- <EFBFBD>jratelep<EFBFBD>t<EFBFBD>s\n"
|
||||
msgstr "a(z) %s-%s naprakész -- újratelepítés\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "feloldhatatlan csomag<61>tk<74>z<EFBFBD>seket tal<61>ltam\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "malloc hiba: nem siker<65>lt lefoglalni %zd byte-ot\n"
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "visszatérés egy régebbi %s verzióhoz (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "feloldhatatlan csomagütközéseket találtam\n"
|
||||
|
||||
#, c-format
|
||||
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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "parancs: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "nem siker<65>lt meghat<61>rozni a(z) %s f<>jl md5 ellen<65>rz<72> <20>sszeg<65>t\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "a(z) %s f<>jl s<>r<EFBFBD>lt volt (rossz MD5 <20>sszeg)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt n<EFBFBD>h<EFBFBD>ny f<EFBFBD>jlt let<EFBFBD>lteni innen: %s\n"
|
||||
msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt l<EFBFBD>trehozni az elt<EFBFBD>vol<EFBFBD>t<EFBFBD> tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült létrehozni az eltávolító tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt inicializ<EFBFBD>lni az elt<EFBFBD>vol<EFBFBD>t<EFBFBD> tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült inicializálni az eltávolító tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt el<EFBFBD>k<EFBFBD>sz<EFBFBD>teni az elt<EFBFBD>vol<EFBFBD>t<EFBFBD> tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült előkészíteni az eltávolító tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt v<EFBFBD>grehajtani az elt<EFBFBD>vol<EFBFBD>t<EFBFBD> tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült végrehajtani az eltávolító tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt l<EFBFBD>trehozni a tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült létrehozni a tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt inicializ<EFBFBD>lni a tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült inicializálni a tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt el<EFBFBD>k<EFBFBD>sz<EFBFBD>teni a tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült előkészíteni a tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "nem siker<EFBFBD>lt v<EFBFBD>grehajtani a tranzakci<EFBFBD>t\n"
|
||||
msgstr "nem sikerült végrehajtani a tranzakciót\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt a z<EFBFBD>rol<EFBFBD> f<EFBFBD>jl (%s) elt<EFBFBD>vol<EFBFBD>t<EFBFBD>sa\n"
|
||||
msgstr "nem sikerült a zároló fájl (%s) eltávolítása\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "Nincs /bin/sh a sz<EFBFBD>l<EFBFBD> k<EFBFBD>rnyezetben, szkript megszak<EFBFBD>t<EFBFBD>sa\n"
|
||||
msgstr "Nincs /bin/sh a szülő környezetben, szkript megszakítása\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "nem siker<EFBFBD>lt l<EFBFBD>trehozni az ideiglenes k<EFBFBD>nyvt<EFBFBD>rat\n"
|
||||
msgstr "nem sikerült létrehozni az ideiglenes könyvtárat\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nem sikerült az ideiglenes fájlt ide másolni: %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt a k<EFBFBD>nyvt<EFBFBD>rv<EFBFBD>lt<EFBFBD>s ide: %s (%s)\n"
|
||||
msgstr "nem sikerült a könyvtárváltás ide: %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt forkolni egy <EFBFBD>j folyamatot (%s)\n"
|
||||
msgstr "nem sikerült forkolni egy új folyamatot (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt a chroot (%s)\n"
|
||||
msgstr "nem sikerült a chroot (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "nem siker<EFBFBD>lt a k<EFBFBD>nyvt<EFBFBD>rat a /-re v<EFBFBD>ltani (%s)\n"
|
||||
msgstr "nem sikerült a könyvtárat a /-re váltani (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "popen h<EFBFBD>v<EFBFBD>s sikertelen (%s)"
|
||||
msgstr "popen hívás sikertelen (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "waitpid h<EFBFBD>v<EFBFBD>s sikertelen (%s)\n"
|
||||
msgstr "waitpid hívás sikertelen (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "a szkript hib<EFBFBD>san futott\n"
|
||||
msgstr "a szkript hibásan futott\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt elt<EFBFBD>vol<EFBFBD>tani a %s ideiglenes k<EFBFBD>nyvt<EFBFBD>rat\n"
|
||||
msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "nem siker<65>lt a '%s' <20>tvonal l<>trehoz<6F>sa: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "nem siker<EFBFBD>lt megnyitni a %s f<EFBFBD>jlt: %s\n"
|
||||
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "nem l<EFBFBD>tezik a(z) %s gyors<EFBFBD>t<EFBFBD>t<EFBFBD>r. l<EFBFBD>trehoz<EFBFBD>s...\n"
|
||||
msgstr "nem létezik a(z) %s gyorsítótár. létrehozás...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "nem siker<EFBFBD>lt l<EFBFBD>trehozni a csomaggyors<EFBFBD>t<EFBFBD>t<EFBFBD>rat, a /tmp haszn<EFBFBD>lata\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: nem siker<65>lt megnyitni a k<>vetkez<65>t: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: nem siker<65>lt olvasni a k<>vetkez<65>t: %s\n"
|
||||
msgstr "nem sikerült létrehozni a csomaggyorsítótárat, a /tmp használata\n"
|
||||
|
||||
@@ -1,50 +1,48 @@
|
||||
# Italian translation of libalpm.
|
||||
# Copyright (C) 2007 THE libalpm'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the libalpm package.
|
||||
# Giovanni 'voidnull' Scafora <linuxmania@gmail.com>, 2007.
|
||||
# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007.
|
||||
# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007.
|
||||
# Giovanni 'voidnull' Scafora <linuxmania@gmail.com>, 2007, 2008
|
||||
# Andrea 'bash' Scarpino <bash.lnx@gmail.com>, 2008
|
||||
# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007
|
||||
# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libalpm VERSION\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2007-12-18 23:30+0100\n"
|
||||
"Last-Translator: Giovanni Scafora <linuxmania@gmail.com>\n"
|
||||
"Language-Team: Arch Linux Italian Team <linuxmania@gmail.com>\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-23 19:30+0200\n"
|
||||
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
|
||||
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bitPlural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "sostituzione in corso della vecchia versione di %s-%s con %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "la versione di %s-%s è più recente e sarà ignorata\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "salto %s-%s perché la nuova versione %s è nella lista\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "sono stati individuati dei pacchetti che vanno in conflitto\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "impossibile installare due pacchetti che vanno in conflitto\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "la sostituzione dei pacchetti con -A e -U non è ancora supportata\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "la sostituzione dei pacchetti con -U non è ancora supportata\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr ""
|
||||
"è possibile sostituire manualmente i pacchetti, usando le opzioni -Rd e -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -53,626 +51,516 @@ msgstr ""
|
||||
"i permessi delle directory differiscono su %s\n"
|
||||
"filesystem: %o pacchetto: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "estrazione: il link simbolico %s non punta alla directory\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "estrazione: non sovrascrivere la directory con il file %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "impossibile estrarre %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "impossibile rinominare %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "impossibile rinominare %s in %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "impossibile copiare il file temporaneo in %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s salvato come %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "impossibile installare %s come %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "impossibile installare %s come %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s installato come %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "estrazione di %s come %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "impossibile ottenere la directory corrente\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "si sono verificati degli errori durante l'aggiornamento di %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "si sono verificati degli errori durante l'installazione di %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "impossibile aggiornare la voce %s-%s nel database\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "impossible includere la voce '%s' nella cache\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nome non valido per la voce del database '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "impossibile aprire il file %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "impossibile rimuovere la voce %s%s dal database\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentativo in corso di registrare di nuovo il database 'locale'\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "il percorso del database non è definito\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "individuato un possibile ciclo di dipendenze:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s sarà rimosso dopo la sua dipendenza %s\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nome non valido per la voce del database '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s sarà installato prima della sua dipendenza %s\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "la voce nel database '%s' non è valida\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "impossibile risolvere \"%s\", una dipendenza di \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "impossibile aprire il file %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "memoria insufficiente!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "errore di sistema inaspettato"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilegi insufficienti"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "impossibile trovare o leggere il file"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "impossibile trovare o leggere la directory"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "è stato passato un argomento sbagliato o NULL"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "libreria non inizializzata"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "libreria già inizializzata"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "impossibile bloccare il database"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "impossibile aprire il database"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "impossibile creare il database"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "database non inizializzato"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "il database è già registrato"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "impossibile trovare il database"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "impossibile aggiornare il database"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "impossibile rimuovere la voce dal database"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "url non valido per il server"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "impossibile impostare il parametro"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "operazione già inizializzata"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "operazione non inizializzata"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "pacchetto doppio"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "operazione non preparata"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "operazione annullata"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operazione incompatibile con il tipo di transazione"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "impossibile eseguire l'operazione"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "impossibile prelevare tutti i file"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "impossibile trovare o leggere il pacchetto"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "pacchetto non valido o corrotto"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "impossibile aprire il pacchetto"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "impossibile caricare i dati del pacchetto"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "pacchetto già installato"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pacchetto non installato o una versione precedente"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "impossibile rimuovere tutti i file del pacchetto"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "il nome del pacchetto non è valido"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "pacchetto corrotto"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "nessun repository corrispondente"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "il delta è corrotto"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "si sono verificati degli errori con la patch di delta"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "gruppo non trovato"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "impossibile soddisfare le dipendenze"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dipendenze in conflitto"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "file in conflitto"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "operazione annullata"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "errore interno"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "errore di libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "non confermato"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "espressione regolare non valida"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "impossibile stabilire una connessione con l'host remoto"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "errore inaspettato"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "impossibile recuperare la somma md5 del pacchetto %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "il database %s è corrotto: il nome del pacchetto %s è sbagliato\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "la somma md5 del pacchetto %s-%s non corrisponde\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "il database %s è corrotto: la versione del pacchetto %s è sbagliata\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: aggiornamento forzato alla versione %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr ""
|
||||
"%s: la versione installata (%s) è più recente di quella presente in %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "impossibile estrarre il file di descrizione del pacchetto in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "impossibile analizzare il file di descrizione del pacchetto in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "manca il nome del pacchetto in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "manca la versione del pacchetto in %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "si è verificato un errore durante la lettura del pacchetto %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "manca il metadata del pacchetto in %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "impossibile trovare %s nel database, sarà ignorato\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentativo in corso di registrare di nuovo il database 'locale'\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "impossibile rimuovere il file '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "il percorso del database non è definito\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "impossibile rimuovere la voce %s-%s dal database\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "individuato un possibile ciclo di dipendenze:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "impossibile rimuovere la voce '%s' dalla cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s sarà rimosso dopo la sua dipendenza %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "l'url '%s' non è corretto, sarà ignorato\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s sarà installato prima della sua dipendenza %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "il protocollo dell'url non è specificato, sarà usato http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "il pacchetto fornito era selezionato (%s fornisce %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "impossibile risolvere \"%s\", una dipendenza di \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "l'url '%s' non è corretto\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "il protocollo dell'url non è specificato, sarà usato HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disco"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "impossibile recuperare il file '%s' da %s : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "impossibile riprendere il download\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "impossibile scrivere nel file '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "si è verificato un errore durante il download di '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "si è verificato un errore durante la scrittura nel file '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "impossibile spostarsi nella directory %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "avvio di XferCommand: processo non riuscito!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL non contiene nessun file da scaricare\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "impossibile scaricare %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "memoria insufficiente!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "errore di sistema inaspettato"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilegi insufficienti"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "impossibile trovare o leggere il file"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "impossibile trovare o leggere la directory"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "è stato passato un argomento sbagliato o NULL"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "libreria non inizializzata"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "libreria già inizializzata"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "impossibile bloccare il database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "impossibile aprire il database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "impossibile creare il database"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "database non inizializzato"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "il database è già registrato"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "impossibile trovare il database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "impossibile aggiornare il database"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "impossibile rimuovere la voce dal database"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "url non valido per il server"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "operazione già inizializzata"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "operazione non inizializzata"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "pacchetto doppio"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "operazione non preparata"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "operazione annullata"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operazione incompatibile con il tipo di transazione"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "impossibile eseguire l'operazione"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "impossibile prelevare tutti i file"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "impossibile trovare o leggere il pacchetto"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "pacchetto non valido o corrotto"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "impossibile aprire il pacchetto"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "impossibile caricare i dati del pacchetto"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pacchetto non installato o una versione precedente"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "impossibile rimuovere tutti i file del pacchetto"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "il nome del pacchetto non è valido"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "nessun repository corrispondente"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "delta non valido o corrotto"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "si sono verificati degli errori con la patch di delta"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "gruppo non trovato"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "impossibile soddisfare le dipendenze"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dipendenze in conflitto"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "file in conflitto"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "operazione annullata"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "errore interno"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "non confermato"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "espressione regolare non valida"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "errore di libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "si è verificato un errore della libreria durante il download"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "errore nell'inizializzare il download"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "errore inaspettato"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "impossibile trovare %s nel database, sarà ignorato\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "impossibile rimuovere il file '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "impossibile rimuovere la voce %s-%s dal database\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "impossibile rimuovere la voce '%s' dalla cache\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr ""
|
||||
"%s-%s: aggiornamento del pacchetto ignorato (per essere sostituito con %s-%"
|
||||
"s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr ""
|
||||
"%s: la versione installata (%s) è più recente di quella presente in %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: aggiornamento del pacchetto ignorato (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "impossibile trovare il repository '%s'\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s è aggiornato, sarà ignorato\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s è aggiornato, sarà reinstallato\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr ""
|
||||
"installazione in corso di una versione meno recente del pacchetto %s (%s => %"
|
||||
"s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "sono stati rilevati dei conflitti irrisolvibili\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "malloc failure: impossibile allocare %zd byte\n"
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "rimozione di '%s' dalla lista perché va in conflitto con '%s'\n"
|
||||
|
||||
#: lib/libalpm/sync.c:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "comando: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "impossibile recuperare il checksum md5 del file %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "il file %s è corrotto (MD5 errato)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "impossibile recuperare alcuni file da %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "impossibile avviare l'operazione di rimozione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "impossibile inizializzare l'operazione di rimozione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "impossibile preparare l'operazione di rimozione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "impossibile eseguire l'operazione di rimozione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "impossibile avviare l'operazione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "impossibile inizializzare l'operazione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "impossibile preparare l'operazione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "impossibile eseguire l'operazione\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "impossibile rimuovere il file di lock %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "/bin/sh non è presente nell'ambiente, lo scriptlet sarà interrotto\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "impossibile creare la directory temporanea\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "impossibile copiare il file temporaneo in %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "impossibile spostarsi nella directory %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "impossibile effettuare il fork di un nuovo processo (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "impossibile cambiare la root directory (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "impossibile spostarsi nella directory / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "chiamata a popen non riuscita (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "chiamata a waitpid non riuscita (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "L'esecuzione dello scriptlet non è riuscita correttamente\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "impossibile rimuovere la directory temporanea %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "impossibile seguire il percorso '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "impossibile aprire %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "la cache di %s non esiste, creazione in corso...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr ""
|
||||
"impossibile creare la cache del pacchetto, al suo posto sarà usata /tmp\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: impossibile aprire %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: impossibile leggere %s\n"
|
||||
|
||||
#~ msgid "loading package data for %s : level=%d\n"
|
||||
#~ msgstr "caricamento in corso dei dati del pacchetto %s : livello=%d\n"
|
||||
|
||||
#~ msgid "adding '%s' to package cache for db '%s'\n"
|
||||
#~ msgstr "aggiunta di '%s' alla cache del pacchetto per il database '%s'\n"
|
||||
|
||||
#~ msgid "could not remove tempfile %s\n"
|
||||
#~ msgstr "impossibile rimuovere il file temporaneo %s\n"
|
||||
|
||||
#~ msgid "please remove '%s' first, using -Rd\n"
|
||||
#~ msgstr "Si consiglia di rimuovere prima '%s', usando l'opzione -Rd\n"
|
||||
|
||||
#~ msgid "cannot resolve dependencies for \"%s\"\n"
|
||||
#~ msgstr "impossibile risolvere le dipendenze per \"%s\"\n"
|
||||
|
||||
#~ msgid "could not update new database entry %s-%s\n"
|
||||
#~ msgstr "impossibile aggiornare la nuova voce del database %s-%s\n"
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\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"
|
||||
@@ -16,637 +16,540 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr ""
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr ""
|
||||
|
||||
@@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pacman package manager 3.0.1\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2007-04-12 04:23+0200\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-07-19 20:58+0200\n"
|
||||
"Last-Translator: Mateusz Herych <heniekk@gmail.com>\n"
|
||||
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -19,36 +19,34 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "zastępowanie starszej wersji %s-%s na %s z listy celów\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "nowsza wersja %s-%s znajduje się w liście celów -- pomijam\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "pomijam %s-%s ponieważ na liście celów znajduje się nowsza wersja %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr ""
|
||||
"konfliktujące pakiety znalazły się na liście pakietów do zainstalowania\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr ""
|
||||
"nie możesz mieć zainstalowanych dwóch konfliktujących ze sobą pakietów w tym "
|
||||
"samym czasie\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "zastępowanie pakietów za pomocą -A i -U nie jest jeszcze wspierane\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "zastępowanie pakietów za pomocą -U nie jest już wspierane\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
# hmm
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "możesz zastąpić pakiety ręcznie, używając opcji -Rd oraz -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -57,652 +55,514 @@ msgstr ""
|
||||
"Różne prawa dla %s\n"
|
||||
"system plików: %o pakiet: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "rozpakowywanie: dowiązanie symboliczne %s nie kieruje do katalogu\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "rozpakowywanie: nie nadpisuję katalogu plikiem %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "nie udało się rozpakować %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "nie udało się zmienić nazwy %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "nie udało się zmienić nazwy %s na %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nie udało się skopiować pliku tymczasowego do %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s zachowane jako %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "nie udało się zainstalować %s jako %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "nie udało się zainstalować %s jako %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s zainstalowano jako %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "rozpakowywanie %s jako %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "nie można znaleźć obecnego katalogu\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "wystąpiły błędy podczas aktualizacji %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "wystąpiły błędy podczas instalacji %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "nie udało się zaktualizować pozycji bazy danych %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "nie udało się dodać pozycji '%s' w pliku podręcznym\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nieprawidłowa nazwa dla wpisu bazy danych '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nie udało się otworzyć pliku %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "nie udało się usunąć wpisu %s%s z bazy danych\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "próba ponownej rejestracji 'lokalnej' BD\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "ścieżka bazy danych jest niezdefiniowana\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "wykryto cykl zależności: %s\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s zostanie usunięta po zależniościach %s\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nieprawidłowa nazwa dla wpisu bazy danych '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s zostanie zainstalowane przed zależnościami %s\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "zepsuty wpis w bazie danych '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nie można rozwiązać \"%s\", zależności od \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "nie udało się otworzyć pliku %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "brak pamięci!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "niespodziewany błąd systemu"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "niewystarczające przywileje"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "nie udało się znaleźć bądź odczytać pliku"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nie udało się znaleźć bądź odczytać katalogu"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "Dany został błędny bądź ZEROWY argument"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "biblioteka nie została zainicjowana"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "biblioteka już została zainicjowana"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "nie udało się zablokować bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "nie udało się otworzyć bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "nie udało się stworzyć bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "baza danych nie została zainicjowana"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "baza danych już zarejestrowana"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "nie udało się odnaleźć bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "nie udało się zaktualizować bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nie udało się usunąć wpisu do bazy danych"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "nieprawidłowy url dla serwera"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "nie udało się ustawić parametru"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "tranzakcja została już zainicjowana"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "tranzakcja nie została zainicjowana"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "duplikat celu"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "tranzakcja nie została przygotowana"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "tranzakcja zaniechana"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operacja niekompatybilna z typem tranzakcji"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nie udało się wykonać tranzakcji"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "nie udało się pobrać wszystkich plików"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "nie udało się znaleźć bądź odczytać pakietu"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "nieprawidłowy bądź uszkodzony pakiet"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "nie udało się otworzyć pliku pakietu"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "nie udało się załadować danych pakietu"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "pakiet został już zainstalowany"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pakiet nie zainstalowany lub zainstalowany w niższej wersji"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nie udało się usunąć wszystkich plików pakietu"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "nieprawidłowa nazwa pakietu"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "uszkodzony pakiet"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "nie ma takiego repozytorium"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "Pakiet przyrostowy jest uszkodzony"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "Łatanie pakietem przyrostowym nie powiodło się"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "grupa nie została odnaleziona"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nie udało się usatysfakcjonować zależności"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "konfliktujące zależności"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "konfliktujące pliki"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "użytkownik zaniechał operacji"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "błąd wewnętrzny"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "błąd libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "nie potwierdzono"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "nieprawidłowe wyrażenie regularne"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "połączenie ze zdalnym hostem nieudane"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "niespodziewany błąd"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "nie udało się otrzymać sumy md5 dla pakietu %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "baza danych %s jest sprzeczna: niedopasowana nazwa w pakiecie %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "sumy kontrolne md5 dla pakietu %s-%s nie zgadzają się\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "baza danych %s jest sprzeczna: niedopasowana wersja w pakiecie %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: wymuszanie aktualizacji do wersji %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) jest nowsze niż %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "nie udało się przeczytać opisu do %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "nie udało się przeczytać opisu pliku w %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "brak nazwy pakietu w %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "brak wersji pakietu w %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "błąd odczytywania pakietu: %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "brak metadanych pakietu w %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nie udało się odnaleźć %s w bazie danych -- pomijanie\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "próba ponownej rejestracji 'lokalnej' BD\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nie udało się usunąć pliku '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "ścieżka bazy danych jest niezdefiniowana\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nie udało się usunąć wpisu %s-%s z bazy danych\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "wykryto cykl zależności:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nie udało się usunąć wpisu '%s' z pamięci podręcznej\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s zostanie usunięta po zależniościach %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "url '%s' jest błędny, ignoruję\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s zostanie zainstalowane przed zależnościami %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "schemat url nie został sprecyzowany, wybieranie http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "dostawca pakietu został wybrany (%s dostarcza %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "nie można rozwiązać \"%s\", zależności od \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "url '%s' jest błędny\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "schemat url nie został sprecyzowany, wybieranie HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "dysk"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, 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/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "nie można kontynuować pobieranie, zaczynanie od początku\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "nie można zapisywać do pliku '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "błąd podczas pobierania '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "Błąd podczas zapisywania do pliku '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "nie udało się zmienić katalogu na / %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "uruchamianie XferCommand: klonowanie nieudane!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL nie wskazuje na plik do pobrania\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "nie udało się pobrać %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "brak pamięci!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "niespodziewany błąd systemu"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "niewystarczające przywileje"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "nie udało się znaleźć bądź odczytać pliku"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "nie udało się znaleźć bądź odczytać katalogu"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "Dany został błędny bądź ZEROWY argument"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "biblioteka nie została zainicjowana"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "biblioteka już została zainicjowana"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "nie udało się zablokować bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "nie udało się otworzyć bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "nie udało się stworzyć bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "baza danych nie została zainicjowana"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "baza danych już zarejestrowana"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "nie udało się odnaleźć bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "nie udało się zaktualizować bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "nie udało się usunąć wpisu do bazy danych"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "nieprawidłowy url dla serwera"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "tranzakcja została już zainicjowana"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "tranzakcja nie została zainicjowana"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "duplikat celu"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "tranzakcja nie została przygotowana"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "tranzakcja zaniechana"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operacja niekompatybilna z typem tranzakcji"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "nie udało się wykonać tranzakcji"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "nie udało się pobrać wszystkich plików"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "nie udało się znaleźć bądź odczytać pakietu"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "nieprawidłowy bądź uszkodzony pakiet"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "nie udało się otworzyć pliku pakietu"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "nie udało się załadować danych pakietu"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pakiet nie zainstalowany lub zainstalowany w niższej wersji"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "nie udało się usunąć wszystkich plików pakietu"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "nazwa pakietu jest nieprawidłowa"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "nie ma takiego repozytorium"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "nieprawidłowy bądź uszkodzony pakiet przyrostowy"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "Łatanie pakietem przyrostowym nie powiodło się"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "grupa nie została odnaleziona"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "nie udało się usatysfakcjonować zależności"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "konfliktujące zależności"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "konfliktujące pliki"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "użytkownik zaniechał operacji"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "błąd wewnętrzny"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "nie potwierdzono"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "nieprawidłowe wyrażenie regularne"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "błąd libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "błąd pobierania biblioteki"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr ""
|
||||
"wystąpił błąd podczas odwoływania się do zewnętrznego programu pobierającego"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "niespodziewany błąd"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "nie udało się odnaleźć %s w bazie danych -- pomijanie\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "nie udało się usunąć pliku '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "nie udało się usunąć wpisu %s-%s z bazy danych\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "nie udało się usunąć wpisu '%s' z pamięci podręcznej\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr ""
|
||||
"%s-%s: ignorowanie aktualizowania pakietu (do zastąpienia przez %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) jest nowsze niż %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignorowanie aktualizacji pakietu (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "repozytorium '%s' nie zostało znalezione\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s jest w najnowszej wersji -- pomijanie\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s jest w najnowszej wersji -- ponowne instalowanie\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "dezaktualizowanie pakietu %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "odkryto nierozwiązywalne konflikty pakietów\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "błąd malloc: nie udało się zaalokować %zd bajtó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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "komenda: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "nie udało się otrzymać sum kontrolnych md5 dla pliku %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "plik %s był uszkodzony (błąd sumy kontrolnej MD5)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "nie udało się pobrać niektórych plików z %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "nie udało się utworzyć tranzakcji usuwania\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "nie udało się zainicjować tranzakcji usuwania\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "nie udało się przygotować tranzakcji usuwania\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "nie udało się wykonać tranzakcji usuwania\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "nie udało się stworzyć tranzakcji\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "nie udało się zainicjować tranzakcji\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "nie udało się przygotować tranzakcji\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "nie udało się wykonać tranzakcji\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "nie udało się usunąć pliku blokującego %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "Brak /bin/sh w środowisku, przerywanie wykonywania skryptu\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "nie udało się stworzyć katalogu tymczasowego\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "nie udało się skopiować pliku tymczasowego do %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "nie udało się zmienić katalogu na %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "nie udało się odwidlić nowego procesu (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "nie udało się zmienić katalogu głównego (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "nie udało się zmienić katalogu na / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "zawołanie do popen nieudane (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "zawołanie do waitpid nieudane (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "skrypt nie mógł zostać poprawnie wykonany\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "nie udało się usunąć katalogu tymczasowego %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "nie udało się stworzyć ścieżki '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "nie udało się otworzyć %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "brak pamięci podręcznej dla %s, tworzenie...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr ""
|
||||
"nie udało się stworzyć pamięci podręcznej pakietu, używanie /tmp w zamian\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s nie może zostać otwarte\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s nie może zostać przeczytane\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "loading package data for %s : level=%d\n"
|
||||
#~ msgstr "ładowanie danych pakietu dla %s : poziom=%d"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "adding '%s' to package cache for db '%s'\n"
|
||||
#~ msgstr "dodawanie '%s' do pamięci podręcznej pakietów dla bd '%s'"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "could not remove tempfile %s\n"
|
||||
#~ msgstr "nie udało się usunąć pliku tymczasowego %s"
|
||||
|
||||
#~ msgid "please remove '%s' first, using -Rd"
|
||||
#~ msgstr "proszę usunąć pierw '%s', korzystając z -Rd"
|
||||
|
||||
#~ msgid "could not extract %s (%s)"
|
||||
#~ msgstr "nie udało się rozpakować %s (%s)"
|
||||
|
||||
#~ msgid "could not update provision '%s' from '%s'"
|
||||
#~ msgstr "nie udało się zaktualizować zasobu '%s' z '%s'"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "%s: description file is missing"
|
||||
#~ msgstr "%s: błąd składni w pliku opisu linia %d"
|
||||
|
||||
#~ msgid "malloc failed: could not allocate %d bytes"
|
||||
#~ msgstr "błąd malloc: nie udało się zaalokować %d bajtów"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "cannot resolve dependencies for \"%s\" (\"%s\" is not in the package set)"
|
||||
#~ msgstr ""
|
||||
#~ "nie udało się rozwiązać zależności dla \"%s\" (\"%s\" nie znajduje się w "
|
||||
#~ "zbiorze pakietów)"
|
||||
|
||||
#~ msgid "cannot canonicalize specified root path '%s'"
|
||||
#~ msgstr "nie udało się skanonizować podanej ścieżki docelowej '%s'"
|
||||
|
||||
#~ msgid "cannot remove file %s: %s"
|
||||
#~ msgstr "nie udało się usunąć pliku %s: %s"
|
||||
|
||||
#~ msgid "sha1: %s can't be opened\n"
|
||||
#~ msgstr "sha1: %s nie może zostać otwarty\n"
|
||||
|
||||
#~ msgid "could not update new database entry %s-%s"
|
||||
#~ msgstr "nie udało się zaktualizować nowego wpisu %s-%s w bazie danych"
|
||||
|
||||
@@ -3,51 +3,54 @@
|
||||
# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
|
||||
# This file is distributed under the same license as the Pacman package manager package.
|
||||
# Lincoln de Sousa <lincoln@archlinux-br.org>, 2007.
|
||||
# Hugo Doria <hugodoria@archlinux-br.org>, 2008.
|
||||
# Hugo Doria <hugodoria@archlinux-br.org>, 2007-2008.
|
||||
# Douglas Soares de Andrade <dsandrade@gmail.com>, 2008.
|
||||
# João Felipe Santos <jfsantos@archlinux-br.org>, 2008.
|
||||
# Kayo Hamid <kayohf@archlinux-br.org>, 2008
|
||||
# Armando M. Baratti <ambaratti@archlinux-br.org>, 2008.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: pt_BR\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-01-18 08:04-0200\n"
|
||||
"Last-Translator: João Felipe Santos <jfsantos@archlinux-br.org>\n"
|
||||
"Language-Team: Português do Brasil <contato@archlinux-br.org>\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-24 11:24-0300\n"
|
||||
"Last-Translator: Hugo Doria <hugo@archlinux.org>\n"
|
||||
"Language-Team: Português do Brasil <www.archlinux-br.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "substituindo a versão antiga %s-%s por %s na lista de alvos\n"
|
||||
msgstr ""
|
||||
"substituindo a versão antiga %s-%s por %s na lista de pacotes a serem "
|
||||
"atualizados\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "versão atualizada %s-%s está na lista de alvos -- pulando\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr ""
|
||||
"ignorando %s-%s porque uma nova versão %s está na lista de pacotes a serem "
|
||||
"atualizados\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "pacotes conflitantes foram encontrados na lista de alvos\n"
|
||||
msgstr ""
|
||||
"pacotes conflitantes foram encontrados na lista de pacotes a serem "
|
||||
"atualizados\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "você não pode instalar dois pacotes conflitantes ao mesmo tempo\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
msgstr "substituir pacotes com -A e -U ainda não é suportado\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "substituir pacotes com -U ainda não é suportado\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "você pode substituir pacotes manualmente usando as opções -Rd e -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -56,604 +59,512 @@ msgstr ""
|
||||
"permissões de diretório diferem em %s\n"
|
||||
"sistema de arquivos: %o pacote: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "extração: symlink %s não aponta para diretório\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "extração: não sobrescrevendo diretório com arquivo %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "não foi possível extrair %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "não foi possível renomear %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "não foi possível renomear %s para %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "não foi possível copiar arquivo temporário para %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s salvo como %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgstr "não foi possível instalar %s como %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "não foi possível instalar %s como %s: (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s instalado como %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "extraindo %s como %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "não foi possível obter o diretório de trabalho atual\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "erros ocorreram durante o upgrade de %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "erros ocorreram durante a instalação de %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "não foi possível atualizar a entrada na base de dados %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "não foi possível adicionar a entrada '%s' ao cache\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nome inválido para a entrada na base de dados '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "não foi possível abrir o arquivo %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "não foi possível remover a entrada da base de dados %s%s\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentativa de re-registrar a base de dados 'local'\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "caminho da base de dados não definido\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "dependência cíclica detectada:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s será removido após sua dependência %s\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "nome inválido para a entrada na base de dados '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s será instalado antes de sua dependência %s\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "entrada corrompida na base de dados '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "não é possível resolver \"%s\", uma dependência de \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "não foi possível abrir o arquivo %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "sem memória!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "erro inesperado do sistema"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilégios insuficientes"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "não foi possível encontrar ou ler o arquivo"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "não foi possível encontrar ou ler o diretório"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "argumento errado ou NULO passado"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "biblioteca não inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "biblioteca já inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "não foi possível travar a base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "não foi possível abrir a base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "não foi possível criar a base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "base de dados não inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "base de dados já registrada"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "não foi possível encontrar a base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "não foi possível atualizar a base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "não foi possível remover a entrada da base de dados"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "url inválida para servidor"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "não foi possível setar parâmetro"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transação já inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transação não inicializada"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "alvo duplicado"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transação não preparada"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "transação abortada"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operação não compatível com tipo de transação"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "não foi possível realizar transação"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "não foi possível fazer o download de todos os arquivos"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "não foi possível ler ou escrever o pacote"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "pacote inválido ou corrompido"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "não foi possível abrir arquivo do pacote"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "não foi possível carregar dados do pacote"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "pacote já instalado"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pacote não instalado ou versão inferior"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "não foi possível remover todos os arquivos para o pacote"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "o nome do pacote não é valido"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "pacote corrompido"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "repositório não existe"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "delta corrompido"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "patch do delta falhou"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "grupo não encontrado"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "não foi possível satisfazer as dependências"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dependências conflitantes"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "arquivos conflitantes"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "usuário abortou a operação"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "erro interno"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "erro da libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "não confirmado"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expressão regular inválida"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "conexão ao host remoto falhou"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "erro inesperado"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "não foi possível obter a soma md5 para o pacote %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "%s base de dados está inconsistente: nome no pacote %s não coincide\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "somas md5 não coincidem para o pacote %s-%s\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"%s base de dados está inconsistente: versão no pacote %s não coincide\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: forçando upgrade para a versão %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) é mais novo que %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "erro ao extrair o arquivo de descrição do pacote para %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "não foi possível interpretar o arquivo de descrição do pacote em %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "faltando o nome do pacote em %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "faltando a versão do pacote em %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "erro ao ler o pacote %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "faltando metadata do pacote em %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "não foi possível encontrar %s na base de dados - pulando\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "tentativa de registrar a base de dados 'local' novamente\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "não foi possível remover o arquivo '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "caminho da base de dados não definido\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "não foi possível remover a entrada da base de dados %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "dependência cíclica detectada:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "não foi possível remover a entrada '%s' da cache\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s será removido após sua dependência %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "url '%s' é inválida, ignorando\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s será instalado antes de sua dependência %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "esquema da url não especificado, assumindo http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "pacote provedor foi selecionado (%s provê %s)\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "não é possível resolver \"%s\", uma dependência de \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "url '%s' é inválida\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "esquema da url não especificado, assumindo HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disco"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "falha ao obter arquivo '%s' de %s : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "não foi possível resumir o download, reiniciando\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "não foi possível escrever no arquivo '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "erro no download de '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "erro ao escrever no arquivo '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "não foi possível mudar para o diretório %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "rodando XferCommand: fork falhou!\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL não contém um arquivo para download\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "falha ao fazer o download de %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "sem memória!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "erro inesperado do sistema"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "privilégios insuficientes"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "não foi possível encontrar ou ler o arquivo"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "não foi possível encontrar ou ler o diretório"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "argumento passo está errado ou NULO"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "biblioteca não inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "biblioteca já inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "não foi possível travar a base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "não foi possível abrir a base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "não foi possível criar a base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "base de dados não inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "base de dados já registrada"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "não foi possível encontrar a base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "não foi possível atualizar a base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "não foi possível remover a entrada da base de dados"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "url inválida para servidor"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "transação já inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "transação não inicializada"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "pacote duplicado"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "transação não preparada"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "transação abortada"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operação não compatível com tipo de transação"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "não foi possível realizar transação"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "não foi possível fazer o download de todos os arquivos"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "não foi possível ler ou escrever o pacote"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "pacote inválido ou corrompido"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "não foi possível abrir arquivo do pacote"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "não foi possível carregar dados do pacote"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "pacote não instalado ou versão inferior"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "não foi possível remover todos os arquivos para o pacote"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "o nome do arquivo do pacote não é valido"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "repositório não existe"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "delta inválido ou corrompido"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "patch do delta falhou"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "grupo não encontrado"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "não foi possível satisfazer as dependências"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "dependências conflitantes"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "arquivos conflitantes"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "usuário abortou a operação"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "erro interno"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "não confirmado"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "expressão regular inválida"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "erro da libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "erro na biblioteca de download"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "erro invocando programa de download externo"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "erro inesperado"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "não foi possível encontrar %s na base de dados - pulando\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "não foi possível remover o arquivo '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "não foi possível remover a entrada da base de dados %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "não foi possível remover a entrada '%s' da cache\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: ignorando upgrade do pacote (a ser substituido por %s-%s)\n"
|
||||
msgstr "%s-%s: ignorando atualização do pacote (a ser substituido por %s-%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: local (%s) é mais novo que %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ignorando upgrade do pacote (%s => %s)\n"
|
||||
msgstr "%s: ignorando atualização do pacote (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "repositório '%s' não encontrado\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s está atualizado -- pulando\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s está atualizado -- reinstalando\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "fazendo downgrade do pacote %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "conflito de pacotes não solucionável detectado\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "falha de malloc: não foi possível alocar %zd bytes\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:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "comando: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "não foi possível obter a soma md5 para o pacote %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "arquivo %s estava corrompido (checksum MD5 inválida)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "falha ao obter alguns arquivos de %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "não foi possível criar transação de remoção\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "não foi possível inicializar a transação de remoção\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "não foi possível preparar a transação de remoção\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, 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:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "não foi possível criar a transação\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "não foi possível inicializar a transação\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "não foi possível preparar a transação\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "não foi possível efetuar a transação\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "não foi possível remover o arquivo de trava %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "/bin/sh não encontrado no diretório pai, abortando scriptlet\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "não foi possível criar diretório temporário\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "não foi possível copiar arquivo temporário para %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "não foi possível mudar diretório para %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "não foi possível fazer fork de um novo processo (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "não foi possível mudar o diretório raiz (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "não foi possível mudar o diretório para / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "chamada para popen falhou (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "chamada para waitpid falhou (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "scriptlet falhou em executar corretamente\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "não foi possível remover o diretório temporário %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "falha ao criar caminho '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "não foi possível abrir %s : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "cache %s não existe, criando...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "não foi possível criar cache de pacotes, usando /tmp\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s não pôde ser aberto\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s não pôde ser lido\n"
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# Russian translations for Pacman package manager package.
|
||||
# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
|
||||
# This file is distributed under the same license as the Pacman package manager package.
|
||||
# <4rayven@gmail.com>, 2007.
|
||||
# <4rayven@gmail.com>, 2007. <serg.partizan@gmail.com> 2008
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pacman package manager 3.0.0\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-01-14 23:08-0600\n"
|
||||
"PO-Revision-Date: 2008-02-18 19:46+0300\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-24 02:00+0200\n"
|
||||
"Last-Translator: Sergey Tereschenko <serg.partizan@gmail.com>\n"
|
||||
"Language-Team: Russian\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -17,33 +17,30 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
|
||||
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: lib/libalpm/add.c:86
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "заменяю устаревшую версию %s-%s на %s в списке целей\n"
|
||||
|
||||
#: lib/libalpm/add.c:95
|
||||
#, c-format
|
||||
msgid "newer version %s-%s is in the target list -- skipping\n"
|
||||
msgstr "новая версия %s-%s в списке целей -- пропускаю\n"
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "пропускается %s-%s, поскольку новая версия %s в списке целей\n"
|
||||
|
||||
#: lib/libalpm/add.c:166
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "в списке целей найдены конфликтующие пакеты\n"
|
||||
|
||||
#: lib/libalpm/add.c:167
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "вы не можете установить два конфликтующих пакета одновременно\n"
|
||||
|
||||
#: lib/libalpm/add.c:170
|
||||
msgid "replacing packages with -A and -U is not supported yet\n"
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "замещение пакетов с использованием опций -A и -U еще не реализовано\n"
|
||||
|
||||
#: lib/libalpm/add.c:171
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "вы можете заменить пакеты вручную, используя -Rd и -U\n"
|
||||
|
||||
#: lib/libalpm/add.c:377
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
@@ -52,631 +49,513 @@ msgstr ""
|
||||
"права доступа различаются у директории %s\n"
|
||||
"файловая система: %o пакет: %o\n"
|
||||
|
||||
#: lib/libalpm/add.c:404
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "извлечение: символическая ссылка %s не указывает на директорию\n"
|
||||
|
||||
#: lib/libalpm/add.c:411
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "извлечение: не перезаписываю директорию файлом %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:466 lib/libalpm/add.c:610 lib/libalpm/util.c:428
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "не могу извлечь %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:517
|
||||
#, c-format
|
||||
msgid "could not rename %s (%s)\n"
|
||||
msgstr "не могу переименовать %s (%s)\n"
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "не могу переименовать %s в %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:524 lib/libalpm/add.c:544 lib/libalpm/trans.c:508
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "не могу скопировать временный файл в %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/add.c:529 lib/libalpm/remove.c:238
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s сохранен как %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:568
|
||||
#, c-format
|
||||
msgid "could not install %s as %s: %s\n"
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "не могу установить %s как %s: %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:571
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s установлен как %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:588
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "извлекаю %s как %s.pacnew\n"
|
||||
|
||||
#: lib/libalpm/add.c:723 lib/libalpm/trans.c:526
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "не могу определить текущую рабочую директорию\n"
|
||||
|
||||
#: lib/libalpm/add.c:777
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "обнаружена проблема во время обновления %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:782
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "обнаружена проблема во время установки %s\n"
|
||||
|
||||
#: lib/libalpm/add.c:797
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "не могу обновить в базе данных запись %s-%s\n"
|
||||
|
||||
#: lib/libalpm/add.c:805
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "не могу добавить запись '%s' в кэш\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:221
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "неправильное имя для записи базы данных '%s'\n"
|
||||
|
||||
#: lib/libalpm/be_files.c:291 lib/libalpm/be_files.c:428
|
||||
#: lib/libalpm/be_files.c:451 lib/libalpm/be_files.c:562
|
||||
#: lib/libalpm/be_files.c:640 lib/libalpm/be_files.c:668
|
||||
#: lib/libalpm/package.c:885
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "не могу открыть файл %s: %s\n"
|
||||
|
||||
#: lib/libalpm/db.c:283
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "не могу удалить из базы данных запись %s%s\n"
|
||||
|
||||
#: lib/libalpm/db.c:551
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "попытка перерегистрировать локальную базу данных\n"
|
||||
|
||||
#: lib/libalpm/db.c:560 lib/libalpm/db.c:611
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "путь к базе данных не определён\n"
|
||||
|
||||
#: lib/libalpm/deps.c:171
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "обнаружена циклическая зависимость:\n"
|
||||
|
||||
#: lib/libalpm/deps.c:173
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s будет удалён после %s, как зависимость\n"
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "неправильное имя для записи базы данных '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:175
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s будет установлен перед %s, как зависимость\n"
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "повреждённая запись в базе данных '%s'\n"
|
||||
|
||||
#: lib/libalpm/deps.c:588
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "не удается разрешить \"%s\", зависимость \"%s\"\n"
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "не могу открыть файл %s: %s\n"
|
||||
|
||||
#: lib/libalpm/error.c:41
|
||||
msgid "out of memory!"
|
||||
msgstr "недостаточно памяти!"
|
||||
|
||||
#: lib/libalpm/error.c:43
|
||||
msgid "unexpected system error"
|
||||
msgstr "неожиданная ошибка"
|
||||
|
||||
#: lib/libalpm/error.c:45
|
||||
msgid "insufficient privileges"
|
||||
msgstr "недостаточно привилегий"
|
||||
|
||||
#: lib/libalpm/error.c:47
|
||||
msgid "could not find or read file"
|
||||
msgstr "не могу найти или прочитать файл"
|
||||
|
||||
#: lib/libalpm/error.c:49
|
||||
msgid "could not find or read directory"
|
||||
msgstr "не удается найти или прочитать директорию"
|
||||
|
||||
#: lib/libalpm/error.c:51
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "неправильный или нулевой аргумент"
|
||||
|
||||
#: lib/libalpm/error.c:54
|
||||
msgid "library not initialized"
|
||||
msgstr "библиотека не инициализирована"
|
||||
|
||||
#: lib/libalpm/error.c:56
|
||||
msgid "library already initialized"
|
||||
msgstr "библиотека уже инициализирована"
|
||||
|
||||
#: lib/libalpm/error.c:58
|
||||
msgid "unable to lock database"
|
||||
msgstr "не удается заблокировать базу данных"
|
||||
|
||||
#: lib/libalpm/error.c:61
|
||||
msgid "could not open database"
|
||||
msgstr "не удается открыть базу данных"
|
||||
|
||||
#: lib/libalpm/error.c:63
|
||||
msgid "could not create database"
|
||||
msgstr "не удается создать базу данных"
|
||||
|
||||
#: lib/libalpm/error.c:65
|
||||
msgid "database not initialized"
|
||||
msgstr "база данных не инициализирована"
|
||||
|
||||
#: lib/libalpm/error.c:67
|
||||
msgid "database already registered"
|
||||
msgstr "база данных уже зарегистрирована"
|
||||
|
||||
#: lib/libalpm/error.c:69
|
||||
msgid "could not find database"
|
||||
msgstr "не удается найти базу данных"
|
||||
|
||||
#: lib/libalpm/error.c:71
|
||||
msgid "could not update database"
|
||||
msgstr "не удается обновить базу данных"
|
||||
|
||||
#: lib/libalpm/error.c:73
|
||||
msgid "could not remove database entry"
|
||||
msgstr "не удается удалить запись в базе данных"
|
||||
|
||||
#: lib/libalpm/error.c:76
|
||||
msgid "invalid url for server"
|
||||
msgstr "неверный url"
|
||||
|
||||
#: lib/libalpm/error.c:83
|
||||
msgid "could not set parameter"
|
||||
msgstr "ну могу установить параметр"
|
||||
|
||||
#: lib/libalpm/error.c:86
|
||||
msgid "transaction already initialized"
|
||||
msgstr "запрос уже инициализирован"
|
||||
|
||||
#: lib/libalpm/error.c:88 lib/libalpm/error.c:92
|
||||
msgid "transaction not initialized"
|
||||
msgstr "запрос не инициализирован"
|
||||
|
||||
#: lib/libalpm/error.c:90
|
||||
msgid "duplicate target"
|
||||
msgstr "повторение целей"
|
||||
|
||||
#: lib/libalpm/error.c:94
|
||||
msgid "transaction not prepared"
|
||||
msgstr "запрос не подготовлен"
|
||||
|
||||
#: lib/libalpm/error.c:96
|
||||
msgid "transaction aborted"
|
||||
msgstr "запрос отменён"
|
||||
|
||||
#: lib/libalpm/error.c:98
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "операция не совместима с типом запроса"
|
||||
|
||||
#: lib/libalpm/error.c:100
|
||||
msgid "could not commit transaction"
|
||||
msgstr "не могу совершить запрос"
|
||||
|
||||
#: lib/libalpm/error.c:102
|
||||
msgid "could not download all files"
|
||||
msgstr "не могу загрузить все файлы"
|
||||
|
||||
#: lib/libalpm/error.c:105
|
||||
msgid "could not find or read package"
|
||||
msgstr "не удается найти или прочитать пакет"
|
||||
|
||||
#: lib/libalpm/error.c:107
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "пакет неправильный или поврежден"
|
||||
|
||||
#: lib/libalpm/error.c:109
|
||||
msgid "cannot open package file"
|
||||
msgstr "не удается открыть файл пакета"
|
||||
|
||||
#: lib/libalpm/error.c:111
|
||||
msgid "cannot load package data"
|
||||
msgstr "не удается загрузить данные пакета"
|
||||
|
||||
#: lib/libalpm/error.c:113
|
||||
msgid "package already installed"
|
||||
msgstr "пакет уже установлен"
|
||||
|
||||
#: lib/libalpm/error.c:115
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "пекет не установлен или ранней версии"
|
||||
|
||||
#: lib/libalpm/error.c:117
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "не могу удалить все файлы пакета"
|
||||
|
||||
#: lib/libalpm/error.c:119
|
||||
msgid "package name is not valid"
|
||||
msgstr "неверное имя пакета"
|
||||
|
||||
#: lib/libalpm/error.c:121
|
||||
msgid "corrupted package"
|
||||
msgstr "пакет поврежден"
|
||||
|
||||
#: lib/libalpm/error.c:123
|
||||
msgid "no such repository"
|
||||
msgstr "нет такого репозитория"
|
||||
|
||||
#: lib/libalpm/error.c:126
|
||||
msgid "corrupted delta"
|
||||
msgstr "дельта-патчи повреждены"
|
||||
|
||||
#: lib/libalpm/error.c:128
|
||||
msgid "delta patch failed"
|
||||
msgstr "не удалось применить дельта-патч"
|
||||
|
||||
#: lib/libalpm/error.c:131
|
||||
msgid "group not found"
|
||||
msgstr "группа не найдена"
|
||||
|
||||
#: lib/libalpm/error.c:134
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "не удается удовлетворить зависимости"
|
||||
|
||||
#: lib/libalpm/error.c:136
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "конфликтующие зависимости"
|
||||
|
||||
#: lib/libalpm/error.c:138
|
||||
msgid "conflicting files"
|
||||
msgstr "конфликрующие файлы"
|
||||
|
||||
#: lib/libalpm/error.c:141
|
||||
msgid "user aborted the operation"
|
||||
msgstr "пользователь прервал операцию"
|
||||
|
||||
#: lib/libalpm/error.c:143
|
||||
msgid "internal error"
|
||||
msgstr "внутренняя ошибка"
|
||||
|
||||
#: lib/libalpm/error.c:145
|
||||
msgid "libarchive error"
|
||||
msgstr "ошибка в libarchive"
|
||||
|
||||
#: lib/libalpm/error.c:148
|
||||
msgid "not confirmed"
|
||||
msgstr "не подтверждено"
|
||||
|
||||
#: lib/libalpm/error.c:150
|
||||
msgid "invalid regular expression"
|
||||
msgstr "неверное регулярное выражение"
|
||||
|
||||
#: lib/libalpm/error.c:153
|
||||
msgid "connection to remote host failed"
|
||||
msgstr "не удалось подключиться к удаленному хосту"
|
||||
|
||||
#: lib/libalpm/error.c:156
|
||||
msgid "unexpected error"
|
||||
msgstr "непредвиденная ошибка"
|
||||
|
||||
#: lib/libalpm/package.c:122
|
||||
#, c-format
|
||||
msgid "could not get md5sum for package %s-%s\n"
|
||||
msgstr "не могу получить контрольную сумму md5 для пакета %s-%s\n"
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"противоречивая информация в базе данных %s: не совпадает имя пакета %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:131
|
||||
#, c-format
|
||||
msgid "md5sums do not match for package %s-%s\n"
|
||||
msgstr "контрольные суммы md5 для пакета %s-%s не совпали\n"
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr ""
|
||||
"противоречивая информация в базе данных %s: не совпадает версия пакета %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:844
|
||||
#, c-format
|
||||
msgid "%s: forcing upgrade to version %s\n"
|
||||
msgstr "%s: принудительно обновляю до версии %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:849
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: установленная версия (%s) новее, чем %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/package.c:1027
|
||||
#, c-format
|
||||
msgid "error extracting package description file to %s\n"
|
||||
msgstr "ошибка извлечения файла описания пакета в %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1033
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "не могу проанализировать файл с описанием пакета в %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1038
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "пропущено имя пакета в %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1042
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "пропущена версия пакета в %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1061 lib/libalpm/package.c:1074
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "ошибка при чтении пакета %s: %s\n"
|
||||
|
||||
#: lib/libalpm/package.c:1081
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "отсутствуют метаданые пакета в %s\n"
|
||||
|
||||
#: lib/libalpm/remove.c:119
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "не могу найти %s в базе данных -- пропускаю\n"
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "попытка перерегистрировать локальную базу данных\n"
|
||||
|
||||
#: lib/libalpm/remove.c:172 lib/libalpm/remove.c:247
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "не могу удалить файл '%s': %s\n"
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "путь к базе данных не определён\n"
|
||||
|
||||
#: lib/libalpm/remove.c:341
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "не могу удалить из базы данных запись %s-%s\n"
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "обнаружена циклическая зависимость:\n"
|
||||
|
||||
#: lib/libalpm/remove.c:346
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "не могу удалить запись '%s' из кеша\n"
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s будет удалён после %s, как зависимость\n"
|
||||
|
||||
#: lib/libalpm/server.c:54
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid, ignoring\n"
|
||||
msgstr "url '%s' недействительный, пропускаю\n"
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s будет установлен перед %s, как зависимость\n"
|
||||
|
||||
#: lib/libalpm/server.c:58
|
||||
msgid "url scheme not specified, assuming http\n"
|
||||
msgstr "url не определён, подразумевается http\n"
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "выбран пакет %s, предоставляющий %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:239
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "не удается разрешить \"%s\", зависимость \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "ссылка '%s' недействительна\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "схема ссылки не определена, подразумевается HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "диск"
|
||||
|
||||
#: lib/libalpm/server.c:243
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "не удалось получить файл '%s' из %s : %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:273
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "не удалось продолжить закачку, начинаю заново\n"
|
||||
|
||||
#: lib/libalpm/server.c:286
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "не могу записать в файл '%s'\n"
|
||||
|
||||
#: lib/libalpm/server.c:305
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "ошибка загрузки '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:317
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "не могу записать в файл '%s': %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:385
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "не могу изменить директорию на %s\n"
|
||||
|
||||
#: lib/libalpm/server.c:392
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "запуск XferCommand: неудача\n"
|
||||
|
||||
#: lib/libalpm/server.c:443
|
||||
msgid "URL does not contain a file for download\n"
|
||||
msgstr "URL не содержит имени файла для загрузки\n"
|
||||
|
||||
#: lib/libalpm/server.c:456
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "не могу загрузить %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:133
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "недостаточно памяти!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "неожиданная ошибка"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "недостаточно привилегий"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "не могу найти или прочитать файл"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "не удается найти или прочитать директорию"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "неправильный или нулевой аргумент"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "библиотека не инициализирована"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "библиотека уже инициализирована"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "не удается заблокировать базу данных"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "не удается открыть базу данных"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "не удается создать базу данных"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "база данных не инициализирована"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "база данных уже зарегистрирована"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "не удается найти базу данных"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "не удается обновить базу данных"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "не удается удалить запись в базе данных"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "неверный url"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "запрос уже инициализирован"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "запрос не инициализирован"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "повторение целей"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "запрос не подготовлен"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "запрос отменён"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "операция не совместима с типом запроса"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "не могу совершить запрос"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "не могу загрузить все файлы"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "не удается найти или прочитать пакет"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "пакет неправильный или поврежден"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "не удается открыть файл пакета"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "не удается загрузить данные пакета"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "пекет не установлен или ранней версии"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "не могу удалить все файлы пакета"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "неверное имя файла пакета"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "нет такого репозитория"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "ошибка или повреждение в дельта-файле"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "не удалось применить дельта-патч"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "группа не найдена"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "не удается удовлетворить зависимости"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "конфликтующие зависимости"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "конфликрующие файлы"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "пользователь прервал операцию"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "внутренняя ошибка"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "не подтверждено"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "неверное регулярное выражение"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "ошибка в libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "ошибка в download library"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "ошибка вызова внешнего менеджера загрузки"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "непредвиденная ошибка"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "не могу найти %s в базе данных -- пропускаю\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "не могу удалить файл '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "не могу удалить из базы данных запись %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "не могу удалить запись '%s' из кеша\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: игнорирую обновление пакета (он будет заменен на %s-%s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:248
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: установленная версия (%s) новее, чем в %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: игнорирую обновление пакета (%s => %s)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:309
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "репозиторий '%s' не найден\n"
|
||||
|
||||
#: lib/libalpm/sync.c:336
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s не устарел -- пропускаю\n"
|
||||
|
||||
#: lib/libalpm/sync.c:340
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s не устарел -- переустанавливаю\n"
|
||||
|
||||
#: lib/libalpm/sync.c:596 lib/libalpm/sync.c:601
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "откат версии пакета %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "обнаружен неразрешимый конфликт пакетов\n"
|
||||
|
||||
#: lib/libalpm/sync.c:611
|
||||
#, c-format
|
||||
msgid "malloc failure: could not allocate %zd bytes\n"
|
||||
msgstr "сбой malloc: не удалось выделить %zd байт\n"
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "удаляю '%s' из списка целей, поскольку он конфликтует с '%s'\n"
|
||||
|
||||
#: lib/libalpm/sync.c:812
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "комманда: %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:876 lib/libalpm/sync.c:886
|
||||
#, c-format
|
||||
msgid "can't get md5 checksum for file %s\n"
|
||||
msgstr "не удалось получить md5 контрольную сумму для файла %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:902
|
||||
#, c-format
|
||||
msgid "file %s was corrupted (bad MD5 checksum)\n"
|
||||
msgstr "архив %s поврежден (не сходится MD5 контрольная сумма)\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1049
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "не удалось получить некоторые файлы с %s\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1130
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "не удалось создать запрос на удаление\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1136
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "не удалось инициализировать запрос на удаление\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1158
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "не удалось подготовить запрос на удаление\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1164
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "не удалось совершить запрос на удаление\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1175
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "не удалось создать запрос\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1180
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "не удалось инициализировать запрос\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1207
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "не удалось подготовить запрос\n"
|
||||
|
||||
#: lib/libalpm/sync.c:1212
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "не удалось совершить запрос\n"
|
||||
|
||||
#: lib/libalpm/trans.c:212
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "не могу удалить lock-файл %s\n"
|
||||
|
||||
#: lib/libalpm/trans.c:483
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "Нету /bin/sh в родительском окружении, отмена скрипта\n"
|
||||
|
||||
#: lib/libalpm/trans.c:494
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "не удалось создать временную директорию\n"
|
||||
|
||||
#: lib/libalpm/trans.c:533
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "не могу скопировать временный файл в %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "не удалось изменить директорию на %s (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:551
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "не не удалось создать новый процесс (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:561
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "не удалось изменить корневую директорию (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:566
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "не удалось изменить директорию на / (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:575
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "вызов popen не удался (%s)"
|
||||
|
||||
#: lib/libalpm/trans.c:594
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "вызов waitpid не удался (%s)\n"
|
||||
|
||||
#: lib/libalpm/trans.c:603
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "не удалось корректно выполнить скрипт\n"
|
||||
|
||||
#: lib/libalpm/trans.c:612
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "не могу удалить tmpdir %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:207
|
||||
#, c-format
|
||||
msgid "failed to make path '%s' : %s\n"
|
||||
msgstr "не удалось создать путь '%s' : %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:392
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "не удалось откруть %s: %s\n"
|
||||
|
||||
#: lib/libalpm/util.c:579
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "кэш %s не существует, создаю...\n"
|
||||
|
||||
#: lib/libalpm/util.c:595
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "не могу создать кэш пакетов, будет использован /tmp\n"
|
||||
|
||||
#: lib/libalpm/util.c:644
|
||||
#, c-format
|
||||
msgid "md5: %s can't be opened\n"
|
||||
msgstr "md5: %s не может быть открыт\n"
|
||||
|
||||
#: lib/libalpm/util.c:646
|
||||
#, c-format
|
||||
msgid "md5: %s can't be read\n"
|
||||
msgstr "md5: %s не может быть прочитан\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "loading package data for %s : level=%d\n"
|
||||
#~ msgstr "загружаю данные пакета %s : уровень=%d\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "could not remove tempfile %s\n"
|
||||
#~ msgstr "не могу удалить временный файл %s\n"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "missing package filelist in %s, generating one\n"
|
||||
#~ msgstr "отсутствует список файлов пакета в %s, генерирую его\n"
|
||||
|
||||
#~ msgid "please remove '%s' first, using -Rd"
|
||||
#~ msgstr "пожалуйста, уделите сначала '%s' используя -Rd\n"
|
||||
|
||||
#~ msgid "could not extract %s (%s)"
|
||||
#~ msgstr "не могу извлечь %s (%s)"
|
||||
|
||||
#~ msgid "could not update provision '%s' from '%s'"
|
||||
#~ msgstr "не могу обновить '%s' из '%s'"
|
||||
|
||||
#~ msgid "cannot remove file %s: %s"
|
||||
#~ msgstr "не могу удалить файл %s: %s"
|
||||
|
||||
#~ msgid "archive %s is corrupted (bad MD5 or SHA1 checksum)\n"
|
||||
#~ msgstr "архив %s поврежден (не сходится MD5 или SHA1 контрольная сумма)\n"
|
||||
|
||||
558
lib/libalpm/po/tr.po
Normal file
558
lib/libalpm/po/tr.po
Normal file
@@ -0,0 +1,558 @@
|
||||
# Turkish translation for libalpm.
|
||||
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
|
||||
# This file is distributed under the same license as the libalpm package.
|
||||
# Samed BEYRİBEY <ras0ir@eventualis.org>, 2008.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 3.1.4-1\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-25 12:57+0200\n"
|
||||
"Last-Translator: Samed Beyribey <beyribey@gmail.com>\n"
|
||||
"Language-Team: Turkish Arch Linux Users <tr@archlinuxtr.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "eski sürüm %s-%s hedef listesindeki %s ile değiştiriliyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "%s-%s yeni sürüm %s hedef listesinde olduğundan atlanıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "hedef listesinde çelişen paketler bulundu\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "çelişen iki paketi aynı anda kuramazsınız\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "-A ve -U kullanarak paket değiştirme henüz desteklenmemektedir\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "paketleri -Rd ve -U kullanarak değiştirebilirsiniz\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
msgstr ""
|
||||
"%s paketi üzerinde dizin izinleri farklı\n"
|
||||
"dosya sistemi: %o paket: %o\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "aç: %s sembolik bağı dizine yöneltilmemiş\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "aç: dizin %s dosyası ile baştan yazılmıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "%s açılamadı (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "%s dosyasının ismi %s olarak değiştirilemiyor (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s, %s olarak kaydedildi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "%s, %s olarak kurulamadı: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s, %s olarak kuruldu\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "%s dosyası %s.pacnew olarak açılıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "üzerinde çalışılan dizin algılanamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "%s güncellenirken bir sorun meydana geldi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "%s yüklenirken bir sorun meydana geldi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "%s-%s veritabanı kaydı güncellenemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "'%s' kaydı tampona eklenemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "%s%s veritabanı kaydı kaldırılamıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "veritabanı kaydı için geçersiz isim '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "bozuk veritabanı kaydı '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "%s dosyası açılamadı: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "%s veritabanı tutarsız: %s paketinde isim uyuşmazlığı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "%s veritabanı tutarsız: %s paketinde sürüm uyuşmazlığı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "%s içerisindeki paket açıklama dosyası ayrıştırılamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "%s içerisinde paket adı bulunmuyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "%s içerisinde paket sürümü bulunmuyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "%s paketi okunurken hata meydana geldi: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "%s içerisinde eksik paket bilgisi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "'yerel' veritabanı tekrar kaydedilmeye çalışılıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "veritabanı yolu belirtilmemiş\n"
|
||||
|
||||
#, c-format
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "dolaylı bağımlılıklar bulundu:\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s paketi %s bağımlılığından sonra kaldırılacak\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s paketi %s bağımlılığından önce kurulacak\n"
|
||||
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "sağlayan paket seçildi ( %s %s'i sağlıyor)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "\"%s\" paketi \"%s\" paketinin bağımlılığı olarak çözümlenemiyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "'%s' adresi geçersiz\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "adres şeması belirtilmemiş, http kullanılacak\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "disk"
|
||||
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "'%s' dosyası %s : %s 'ten alınamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "indirmeye devam edilemiyor, baştan başlanıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "'%s' dosyasına yazılamıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "'%s' indirilirken hata oluştu: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "'%s' dosyasına yazılamıyor: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "%s dizinine geçilemiyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "XferCommand çalıştırılıyor: çatallanma başarısız!\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "%s dosyası indirilemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "bellek yetersiz!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "beklenmedik sistem hatası"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "yetersiz yetki"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "dosya bulunamadı veya okunamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "klasör bulunamadı veya okunamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "eksik ya da geçersiz parametre geçilmiş"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "kütüphane başlatılamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "kütüphane zaten başlatıldı"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "veritabanı kilitlenemiyor"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "veritabanı açılamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "veritabanı oluşturulamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "veritabanı başlatılamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "veritabanı zaten kayıtlı"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "veritabanı bulunamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "veritabanı güncellenemedi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "veritabanı kaydı kaldırılamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "hatalı sunucu adresi"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "işlem zaten başlatılmış"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "işlem başlatılmamış"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "birden fazla hedef"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "işlem hazırlanamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "işlem iptal edildi"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "operasyon, işlem tipiyle uyumlu değil"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "işlem teslim edilemiyor"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "tüm dosyalar indirilemedi"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "paket bulunamadı veya okunamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "geçersiz veya bozuk paket"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "paket dosyası açılamıyor"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "paket verisi yüklenemiyor"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "paket kurulamadı ya da önceki sürümü kurulu"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "paketle alakalı tüm dosyalar kaldırılamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "paket dosya adı geçerli değil"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "depo bulunmuyor"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "geçersiz ya da bozuk veri"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "fark yaması başarısız oldu"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "grup bulunamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "bağımlılıklar sağlanamadı"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "çelişen bağımlılıklar"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "çelişen dosyalar"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "işlem kullanıcı tarafından durduruldu"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "dahili hata"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "onaylanmadı"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "geçersiz düzenli ifade"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive hatası"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "kütüphane indirilirken hata oluştu"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "harici indiriciyi çağırırken hata oluştu"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "beklenmedik hata"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "%s veritabanında bulunamadı -- atlanıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "'%s' dosyası silinemiyor: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "veritabanı kaydı %s-%s silinemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "'%s' kaydı tampondan silinemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr ""
|
||||
"%s-%s: paket güncellemesi göz ardı ediliyor (%s-%s ile değiştirilecek)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: yereldeki paket (%s) %s (%s) paketinden daha güncel\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: paket güncellemesi göz ardı ediliyor (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "'%s' deposu bulunamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s güncel -- atlanıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s güncel -- yeniden kuruluyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "%s paketi eski sürümüne çevriliyor (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "çözülemeyen paket çakışmaları bulundu\n"
|
||||
|
||||
#, c-format
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "'%s' hedef listesinden '%s' ile çeliştiği için kaldırıldı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "komut: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "%s deposundan bazı dosyalar alınamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "kaldırma işlemi oluşturulamıyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "kaldırma işlemi başlatılamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "kaldırma işlemi hazırlanamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "kaldırma işlemi teslim edilemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "işlem oluşturulamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "işlem başlatılamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "işlem hazırlanamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "işlem teslim edilemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "kilit dosyası %s silinemedi\n"
|
||||
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "Bir üst ortamda /bin/sh bulunamadı, betik iptal ediliyor\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "geçici dizin oluşturulamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "geçici dosya %s üzerine kopyalanamadı (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "%s dizinine geçilemedi (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "yeni bir süreç çatallanamadı (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "kök dizini değiştirilemedi (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "/ dizinine gidilemedi (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "popen çağrısı başarısız (%s)"
|
||||
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "waitpid çağrısı başarısız (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "betik düzgün çalıştırılamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "geçici dizin %s kaldırılamadı\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "%s açılamadı: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "%s tamponu bulunmuyor, oluşturuluyor...\n"
|
||||
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "paket tamponu oluşturulamadı, /tmp kullanılacak\n"
|
||||
|
||||
554
lib/libalpm/po/uk.po
Normal file
554
lib/libalpm/po/uk.po
Normal file
@@ -0,0 +1,554 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: libalpm 3.2.1\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Roman Kyrylych <roman@archlinux.org>\n"
|
||||
"Language-Team: http://archlinux.org.ua\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Ukrainian\n"
|
||||
"X-Poedit-Country: UKRAINE\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "старіша версія %s-%s замінюється на %s в цільовому списку пакетів\n"
|
||||
|
||||
#, c-format
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "%s-%s пропускається, бо в списку цільових пакетів є новіша версія %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "в списку цільових пакетів були знайдені конфліктуючі пакунки\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "ви не можете одночасно встановити два пакунки, що конфліктують\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "заміна пакунків за допомогою -U поки не підтримується\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "ви можете власноруч замінити пакунки використавши -Rd та -U\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
msgstr ""
|
||||
"права каталога відрізняються на\n"
|
||||
"файловій системі %s: %o пакунок: %o\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "розпакування: символьне посилання %s не вказує на каталог\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "розпакування: каталог не було перезаписано файлом %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "неможливо розпакувати %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "неможливо перейменувати %s на %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s збережено як %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "неможливо встановити %s як %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s встановлено як %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "розпакування %s як %s.pacnew\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "неможливо отримати поточний робочий каталог\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "з'явилась проблема при поновленні %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "з'явилась проблема при встановленні %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "неможливо поновити запис бази даних %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "неможливо додати запис '%s' у кеш\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "неможливо видалити запис бази даних %s%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "невірне ім'я для запису бази даних '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "пошкоджений запис у базі даних '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "неможливо відкрити файл %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "база даних %s неоднорідна: неспівпадіння назви для пакунка %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "база даних %s неоднорідна: неспівпадіння версій для пакунка %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "неможливо розібрати файл опису пакунка %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "бракує імені пакунку в %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "бракує версії пакунку в %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "помилка при читанні пакунку %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "бракує метаданих пакунку в %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "спроба перереєструвати базу даних 'local'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "шлях до бази даних не вказано\n"
|
||||
|
||||
#, c-format
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "виявлено цикл залежностей:\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s буде видалено після його залежності %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s буде встановлено перед його %s залежністю\n"
|
||||
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "був вибраний пакунок %s, що забезпечує %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "неможливо розв'язати \"%s\", залежність \"%s\"\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "посилання '%s' невірне\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "протокол посилання не вказано, вважається HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "диск"
|
||||
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "не вдалося отримати файл '%s' з %s : %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "неможливо продовжити завантаження, починається з початку\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "неможливо писати у файл '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "помилка при завантаженні '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "помилка при запису до файлу '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "неможливо змінити каталог на %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "виконання XferCommand: старт процесу невдалий!\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "не вдалося завантажити %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "не вистачає пам'яті!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "неочікувана системна помилка"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "недостатньо прав"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "неможливо знайти чи прочитати файл"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "неможливо знайти чи прочитати каталог"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "передано невірний аргумент чи NULL"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "бібліотека не ініціалізована"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "бібліотека вже ініціалізована"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "неможливо заблокувати базу даних"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "неможливо відкрити базу даних"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "неможливо створити базу даних"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "база даних не ініціалізована"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "база даних вже зареєстрована"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "неможливо знайти базу даних"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "неможливо поновити базу даних"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "неможливо видалити запис з бази даних"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "невірне посилання чи сервер"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "транзакція вже ініціалізована"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "транзакція не ініціалізована"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "продубльований цільовий пакунок"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "транзакція не підготовлена"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "транзакцію перервано"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "операція несумісна з типом транзакції"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "неможливо здійснити транзакцію"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "неможиво завантажити усі файли"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "неможливо знайти чи прочитати пакунок"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "невірний чи пошкоджений пакунок"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "неможливо відкрити файл пакунку"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "неможливо завантажити дані пакунку"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "пакунок не встановлено, або існує старіша версія"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "неможливо видалити всі файли для пакунку"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "ім'я файлу пакунку невірне"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "немає такого репозиторію"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "невірний чи пошкоджений дельта-патч"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "накладення дельта-патчу невдале"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "група не знадена"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "неможливо забезпечити залежності"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "конфліктуючі залежності"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "конфліктуючі файли"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "користувач перервав операцію"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "внутрішня помилка"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "не підтверджено"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "невірний регулярний вираз"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "помилка libarchive"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "помилка бібліотеки завантаження"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "помилка виклику зовнішнього завантажувача"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "неочікувана помилка"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "неможливо знайти %s в базі даних -- пропускається\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "неможливо видалити файл '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "неможливо видалити запис бази даних %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "неможливо видалити запис '%s' з кешу\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s: ігнорування поновлення пакунку (буде замінено на %s-%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s: локальна версія (%s) новіша за %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s: ігнорування поновлення пакунку (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "репозиторій '%s' не знайдено\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s не потребує поновлення -- пропускається\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s не потребує поновлення -- перевстановлюється\n"
|
||||
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "пониження версії пакунку %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "виявлені нерозв'язні конфлікти пакетів\n"
|
||||
|
||||
#, c-format
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "видалення '%s' з списку пакунків, бо він конфліктує з '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "команда: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "не вдалося отримати деякі файли з %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "неможливо створити транзакцію видалення\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "неможливо почати транзакцію видалення\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "неможливо підготувати транзакцію видалення\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "неможливо здійснити транзакцію видалення\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "неможливо створити транзакцію\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "неможливо почати транзакцію\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "неможливо підготувати транзакцію\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "неможливо здійснити транзакцію\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "неможливо видалити файл блокування %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr ""
|
||||
"В батьківському середовищі немає /bin/sh, переривання скрипту виконання\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "неиожливо створити тимчасовий каталог\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "неможливо скопіювати тимчасовий файл до %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "неможливо змінити каталог на %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "неможливо почати новий процес (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "неможливо змінити кореневий каталог (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "неможливо змінити каталог на / (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "виклик popen невдалий (%s)"
|
||||
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "виклик waitpid невдалий (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "скрипт встановлення не зміг виконатися коректно\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "неможливо видалити тимчасовий каталог %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "неможливо відкрити %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "кеш %s не існує, створюється...\n"
|
||||
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "неможливо створити кеш пакунку, використовуватиметься /tmp\n"
|
||||
559
lib/libalpm/po/zh_CN.po
Normal file
559
lib/libalpm/po/zh_CN.po
Normal file
@@ -0,0 +1,559 @@
|
||||
# Chinese/Simplified translation of Pacman package manager package.
|
||||
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
|
||||
# This file is distributed under the same license as the Pacman package manager package.
|
||||
# 甘露(Lu.Gan) <rhythm.gan@gmail.com>, 2008.
|
||||
#
|
||||
#
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Pacman package manager 3.2.1\n"
|
||||
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
|
||||
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
|
||||
"PO-Revision-Date: 2008-08-25 08:33+0200\n"
|
||||
"Last-Translator: 甘露(Lu Gan) <rhythm.gan@gmail.com>\n"
|
||||
"Language-Team: Chinese/Simplified <i18n-translation@lists.linux.net.cn>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing older version %s-%s by %s in target list\n"
|
||||
msgstr "正在替换老版本 %s-%s 通过在目标清单中的%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "skipping %s-%s because newer version %s is in the target list\n"
|
||||
msgstr "跳过 %s-%s,因为较新版本的 %s 在目标清单中\n"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting packages were found in the target list\n"
|
||||
msgstr "目标清单中发现有冲突的软件包\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you cannot install two conflicting packages at the same time\n"
|
||||
msgstr "你不能同时安装有冲突的两个软件包\n"
|
||||
|
||||
#, c-format
|
||||
msgid "replacing packages with -U is not supported yet\n"
|
||||
msgstr "正在覆盖软件包, -U 目前尚不支持\n"
|
||||
|
||||
#, c-format
|
||||
msgid "you can replace packages manually using -Rd and -U\n"
|
||||
msgstr "你可以使用 -Rd 及 -U 来手动替代软件包\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"directory permissions differ on %s\n"
|
||||
"filesystem: %o package: %o\n"
|
||||
msgstr ""
|
||||
"目录权限不一致 %s\n"
|
||||
"文件系统:%o 软件包:%o\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: symlink %s does not point to dir\n"
|
||||
msgstr "解压缩:链接 %s 没有指向目录\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extract: not overwriting dir with file %s\n"
|
||||
msgstr "解压缩:没有用 %s 覆盖目录\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not extract %s (%s)\n"
|
||||
msgstr "无法解压缩 %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not rename %s to %s (%s)\n"
|
||||
msgstr "无法重命名 %s 为 %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s saved as %s\n"
|
||||
msgstr "%s 已另存为 %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not install %s as %s (%s)\n"
|
||||
msgstr "无法安装 %s 作为 %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s installed as %s\n"
|
||||
msgstr "%s 已作为 %s 安装\n"
|
||||
|
||||
#, c-format
|
||||
msgid "extracting %s as %s.pacnew\n"
|
||||
msgstr "正在解压缩 %s 作为 %s.pacnew\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not get current working directory\n"
|
||||
msgstr "无法得到当前的工作目录\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while upgrading %s\n"
|
||||
msgstr "更新 %s 时出现错误\n"
|
||||
|
||||
#, c-format
|
||||
msgid "problem occurred while installing %s\n"
|
||||
msgstr "安装 %s 时出现错误\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database entry %s-%s\n"
|
||||
msgstr "无法更新数据库记录 %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not add entry '%s' in cache\n"
|
||||
msgstr "无法在缓存中添加记录 '%s' \n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s%s\n"
|
||||
msgstr "无法删除数据库记录 %s%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid name for database entry '%s'\n"
|
||||
msgstr "数据库记录 '%s' 名字无效\n"
|
||||
|
||||
#, c-format
|
||||
msgid "corrupted database entry '%s'\n"
|
||||
msgstr "损坏的数据库记录 '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open file %s: %s\n"
|
||||
msgstr "无法打开文件 %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: name mismatch on package %s\n"
|
||||
msgstr "%s 数据库不一致:名字和软件包中的 %s 不一致\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s database is inconsistent: version mismatch on package %s\n"
|
||||
msgstr "%s 数据库不一致:版本和软件包中的 %s 不一致\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not parse package description file in %s\n"
|
||||
msgstr "无法分析 %s 中的软件包描述文件\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package name in %s\n"
|
||||
msgstr "%s 中缺少软件包名字\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package version in %s\n"
|
||||
msgstr "%s 中缺少软件包版本号\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error while reading package %s: %s\n"
|
||||
msgstr "读取软件包%s: %s发生错误\n"
|
||||
|
||||
#, c-format
|
||||
msgid "missing package metadata in %s\n"
|
||||
msgstr "%s 中缺少软件包元数据\n"
|
||||
|
||||
#, c-format
|
||||
msgid "attempt to re-register the 'local' DB\n"
|
||||
msgstr "尝试重新登记“本地”数据库\n"
|
||||
|
||||
#, c-format
|
||||
msgid "database path is undefined\n"
|
||||
msgstr "没有指定数据库路径\n"
|
||||
|
||||
#, c-format
|
||||
msgid "dependency cycle detected:\n"
|
||||
msgstr "探测到依赖关系循环:\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be removed after its %s dependency\n"
|
||||
msgstr "%s 将在它 %s 的依赖关系之后被删除\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s will be installed before its %s dependency\n"
|
||||
msgstr "%s 将在它 %s 的依赖关系之前被安装\n"
|
||||
|
||||
#, c-format
|
||||
msgid "provider package was selected (%s provides %s)\n"
|
||||
msgstr "已选定提供软件包 (%s 提供 %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
|
||||
msgstr "无法解决 \"%s\",\"%s\" 的依赖关系\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url '%s' is invalid\n"
|
||||
msgstr "url %s' 无效\n"
|
||||
|
||||
#, c-format
|
||||
msgid "url scheme not specified, assuming HTTP\n"
|
||||
msgstr "url 结构没有指定,假定为 HTTP\n"
|
||||
|
||||
#, c-format
|
||||
msgid "disk"
|
||||
msgstr "硬盘"
|
||||
|
||||
#, c-format
|
||||
msgid "failed retrieving file '%s' from %s : %s\n"
|
||||
msgstr "无法从 %s : %s 获取文件 '%s' \n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot resume download, starting over\n"
|
||||
msgstr "无法恢复下载,重新开始\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot write to file '%s'\n"
|
||||
msgstr "无法写入文件 '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error downloading '%s': %s\n"
|
||||
msgstr "下载 '%s': %s 时出错\n"
|
||||
|
||||
#, c-format
|
||||
msgid "error writing to file '%s': %s\n"
|
||||
msgstr "写入文件 '%s': %s 时出错\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not chdir to %s\n"
|
||||
msgstr "无法改变目录到 %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "running XferCommand: fork failed!\n"
|
||||
msgstr "运行 XferCommand:分支失败!\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to download %s\n"
|
||||
msgstr "下载%s失败\n"
|
||||
|
||||
#, c-format
|
||||
msgid "out of memory!"
|
||||
msgstr "没有内存可用!"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected system error"
|
||||
msgstr "未预计的系统错误"
|
||||
|
||||
#, c-format
|
||||
msgid "insufficient privileges"
|
||||
msgstr "权限不充分"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read file"
|
||||
msgstr "无法找到或读取文件"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read directory"
|
||||
msgstr "无法找到或读取目录"
|
||||
|
||||
#, c-format
|
||||
msgid "wrong or NULL argument passed"
|
||||
msgstr "传递了错误的或空的参数"
|
||||
|
||||
#, c-format
|
||||
msgid "library not initialized"
|
||||
msgstr "无法初始化函数库"
|
||||
|
||||
#, c-format
|
||||
msgid "library already initialized"
|
||||
msgstr "函数库已初始化"
|
||||
|
||||
#, c-format
|
||||
msgid "unable to lock database"
|
||||
msgstr "无法锁定数据库"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open database"
|
||||
msgstr "无法打开数据库"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create database"
|
||||
msgstr "无法创建数据库"
|
||||
|
||||
#, c-format
|
||||
msgid "database not initialized"
|
||||
msgstr "数据库无法初始化"
|
||||
|
||||
#, c-format
|
||||
msgid "database already registered"
|
||||
msgstr "数据库已登记"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find database"
|
||||
msgstr "无法找到数据库"
|
||||
|
||||
#, c-format
|
||||
msgid "could not update database"
|
||||
msgstr "无法更新数据库"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry"
|
||||
msgstr "无法删除数据库记录"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid url for server"
|
||||
msgstr "无效的服务器url"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction already initialized"
|
||||
msgstr "处理已初始化"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not initialized"
|
||||
msgstr "处理无法初始化"
|
||||
|
||||
#, c-format
|
||||
msgid "duplicate target"
|
||||
msgstr "重复的目标"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction not prepared"
|
||||
msgstr "处理未准备好"
|
||||
|
||||
#, c-format
|
||||
msgid "transaction aborted"
|
||||
msgstr "处理已放弃"
|
||||
|
||||
#, c-format
|
||||
msgid "operation not compatible with the transaction type"
|
||||
msgstr "操作与处理类型不兼容"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction"
|
||||
msgstr "无法交付处理"
|
||||
|
||||
#, c-format
|
||||
msgid "could not download all files"
|
||||
msgstr "无法下载全部文件"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find or read package"
|
||||
msgstr "无法找到或读取软件包"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted package"
|
||||
msgstr "无效的或已损坏的软件包"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot open package file"
|
||||
msgstr "无法打开软件包文件"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot load package data"
|
||||
msgstr "无法加载软件包数据"
|
||||
|
||||
#, c-format
|
||||
msgid "package not installed or lesser version"
|
||||
msgstr "软件包没有安装或版本较低"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove all files for package"
|
||||
msgstr "无法删除软件包全部文件"
|
||||
|
||||
#, c-format
|
||||
msgid "package filename is not valid"
|
||||
msgstr "软件包文件名无效"
|
||||
|
||||
#, c-format
|
||||
msgid "no such repository"
|
||||
msgstr "没有该软件库"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid or corrupted delta"
|
||||
msgstr "无效的或已损坏的 delta 包"
|
||||
|
||||
#, c-format
|
||||
msgid "delta patch failed"
|
||||
msgstr "delta 补丁失败"
|
||||
|
||||
#, c-format
|
||||
msgid "group not found"
|
||||
msgstr "没有找到软件包组"
|
||||
|
||||
#, c-format
|
||||
msgid "could not satisfy dependencies"
|
||||
msgstr "无法满足依赖关系"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting dependencies"
|
||||
msgstr "有冲突的依赖关系"
|
||||
|
||||
#, c-format
|
||||
msgid "conflicting files"
|
||||
msgstr "有冲突的文件"
|
||||
|
||||
#, c-format
|
||||
msgid "user aborted the operation"
|
||||
msgstr "用户中断操作"
|
||||
|
||||
#, c-format
|
||||
msgid "internal error"
|
||||
msgstr "内部错误"
|
||||
|
||||
#, c-format
|
||||
msgid "not confirmed"
|
||||
msgstr "不能确认"
|
||||
|
||||
#, c-format
|
||||
msgid "invalid regular expression"
|
||||
msgstr "无效的常规表达式"
|
||||
|
||||
#, c-format
|
||||
msgid "libarchive error"
|
||||
msgstr "libarchive 错误"
|
||||
|
||||
#, c-format
|
||||
msgid "download library error"
|
||||
msgstr "下载函数库出错"
|
||||
|
||||
#, c-format
|
||||
msgid "error invoking external downloader"
|
||||
msgstr "激活外部下载程序时出现错误"
|
||||
|
||||
#, c-format
|
||||
msgid "unexpected error"
|
||||
msgstr "未预期的错误"
|
||||
|
||||
#, c-format
|
||||
msgid "could not find %s in database -- skipping\n"
|
||||
msgstr "无法在数据库中找到 %s -- 跳过\n"
|
||||
|
||||
#, c-format
|
||||
msgid "cannot remove file '%s': %s\n"
|
||||
msgstr "无法删除文件 '%s': %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove database entry %s-%s\n"
|
||||
msgstr "无法删除数据库记录 %s-%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove entry '%s' from cache\n"
|
||||
msgstr "无法从缓存中删除记录 '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
|
||||
msgstr "%s-%s:忽略软件包更新(由%s-%s替代)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: local (%s) is newer than %s (%s)\n"
|
||||
msgstr "%s:本地(%s)比 %s 的版本更新(%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s: ignoring package upgrade (%s => %s)\n"
|
||||
msgstr "%s:忽略软件包更新(%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "repository '%s' not found\n"
|
||||
msgstr "没有找到软件库 '%s'\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- skipping\n"
|
||||
msgstr "%s-%s 已经为最新 -- 跳过\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%s-%s is up to date -- reinstalling\n"
|
||||
msgstr "%s-%s 已经为最新 -- 重新安装\n"
|
||||
|
||||
#, c-format
|
||||
msgid "downgrading package %s (%s => %s)\n"
|
||||
msgstr "正在降级软件包 %s (%s => %s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "unresolvable package conflicts detected\n"
|
||||
msgstr "探测到无法解决的软件包冲突\n"
|
||||
|
||||
#, c-format
|
||||
msgid "removing '%s' from target list because it conflicts with '%s'\n"
|
||||
msgstr "正在从目标清单中删除 '%s' ,因为它和 '%s' 有冲突\n"
|
||||
|
||||
#, c-format
|
||||
msgid "command: %s\n"
|
||||
msgstr "命令:%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "failed to retrieve some files from %s\n"
|
||||
msgstr "某些文件无法从%s取回\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create removal transaction\n"
|
||||
msgstr "无法生成可删除处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize the removal transaction\n"
|
||||
msgstr "无法初始化可删除处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare removal transaction\n"
|
||||
msgstr "无法准备可删除处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit removal transaction\n"
|
||||
msgstr "无法交付可删除处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create transaction\n"
|
||||
msgstr "无法创建处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not initialize transaction\n"
|
||||
msgstr "无法初始化处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not prepare transaction\n"
|
||||
msgstr "无法准备处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not commit transaction\n"
|
||||
msgstr "无法交付处理\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove lock file %s\n"
|
||||
msgstr "无法删除锁定文件 %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
|
||||
msgstr "父环境中没有 /bin/sh,正在中断脚本\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not create temp directory\n"
|
||||
msgstr "无法创建临时目录\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not copy tempfile to %s (%s)\n"
|
||||
msgstr "无法复制临时文件到 %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to %s (%s)\n"
|
||||
msgstr "无法更改目录到 %s (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not fork a new process (%s)\n"
|
||||
msgstr "无法分支新进程(%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change the root directory (%s)\n"
|
||||
msgstr "无法更改根目录(%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not change directory to / (%s)\n"
|
||||
msgstr "无法更改目录到/ (%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "call to popen failed (%s)"
|
||||
msgstr "调用 popen 失败(%s)"
|
||||
|
||||
#, c-format
|
||||
msgid "call to waitpid failed (%s)\n"
|
||||
msgstr "调用 waitpid 失败(%s)\n"
|
||||
|
||||
#, c-format
|
||||
msgid "scriptlet failed to execute correctly\n"
|
||||
msgstr "脚本没有被正确执行\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not remove tmpdir %s\n"
|
||||
msgstr "无法删除临时目录%s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "could not open %s: %s\n"
|
||||
msgstr "无法打开 %s: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "no %s cache exists, creating...\n"
|
||||
msgstr "没有 %s 缓存存在,正在创建...\n"
|
||||
|
||||
#, c-format
|
||||
msgid "couldn't create package cache, using /tmp instead\n"
|
||||
msgstr "无法创建软件包缓存,正在使用 /tmp 代替\n"
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
#include "alpm_list.h"
|
||||
#include "trans.h"
|
||||
#include "util.h"
|
||||
#include "error.h"
|
||||
#include "log.h"
|
||||
#include "backup.h"
|
||||
#include "package.h"
|
||||
@@ -57,12 +56,11 @@ int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
|
||||
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
|
||||
ASSERT(name != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
|
||||
if(_alpm_pkg_find(name, trans->packages)) {
|
||||
if(_alpm_pkg_find(trans->packages, name)) {
|
||||
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
|
||||
}
|
||||
|
||||
if((info = _alpm_db_scan(db, name)) == NULL) {
|
||||
/* Unimportant - just ignore it if we can't find it */
|
||||
if((info = _alpm_db_get_pkgfromcache(db, name)) == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", name);
|
||||
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
|
||||
}
|
||||
@@ -78,11 +76,68 @@ int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
|
||||
}
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "adding %s in the targets list\n", info->name);
|
||||
trans->packages = alpm_list_add(trans->packages, info);
|
||||
trans->packages = alpm_list_add(trans->packages, _alpm_pkg_dup(info));
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
static void remove_prepare_cascade(pmtrans_t *trans, pmdb_t *db,
|
||||
alpm_list_t *lp)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
while(lp) {
|
||||
alpm_list_t *i;
|
||||
for(i = lp; i; i = i->next) {
|
||||
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
|
||||
pmpkg_t *info = _alpm_db_get_pkgfromcache(db, miss->target);
|
||||
if(info) {
|
||||
if(!_alpm_pkg_find(trans->packages, alpm_pkg_get_name(info))) {
|
||||
_alpm_log(PM_LOG_DEBUG, "pulling %s in the targets list\n",
|
||||
alpm_pkg_get_name(info));
|
||||
trans->packages = alpm_list_add(trans->packages, _alpm_pkg_dup(info));
|
||||
}
|
||||
} else {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not find %s in database -- skipping\n"),
|
||||
miss->target);
|
||||
}
|
||||
}
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(lp);
|
||||
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void remove_prepare_keep_needed(pmtrans_t *trans, pmdb_t *db,
|
||||
alpm_list_t *lp)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
/* Remove needed packages (which break dependencies) from the target list */
|
||||
while(lp != NULL) {
|
||||
alpm_list_t *i;
|
||||
for(i = lp; i; i = i->next) {
|
||||
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
|
||||
void *vpkg;
|
||||
pmpkg_t *pkg = _alpm_pkg_find(trans->packages, miss->causingpkg);
|
||||
if(pkg == NULL) {
|
||||
continue;
|
||||
}
|
||||
trans->packages = alpm_list_remove(trans->packages, pkg, _alpm_pkg_cmp,
|
||||
&vpkg);
|
||||
pkg = vpkg;
|
||||
if(pkg) {
|
||||
_alpm_log(PM_LOG_WARNING, "removing %s from the target-list\n",
|
||||
alpm_pkg_get_name(pkg));
|
||||
_alpm_pkg_free(pkg);
|
||||
}
|
||||
}
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(lp);
|
||||
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
{
|
||||
alpm_list_t *lp;
|
||||
@@ -97,37 +152,30 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
return(0);
|
||||
}
|
||||
|
||||
if((trans->flags & PM_TRANS_FLAG_RECURSE) && !(trans->flags & PM_TRANS_FLAG_CASCADE)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "finding removable dependencies\n");
|
||||
_alpm_recursedeps(db, trans->packages, trans->flags & PM_TRANS_FLAG_RECURSEALL);
|
||||
}
|
||||
|
||||
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
|
||||
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
|
||||
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
|
||||
if(lp != NULL) {
|
||||
|
||||
if(trans->flags & PM_TRANS_FLAG_CASCADE) {
|
||||
while(lp) {
|
||||
alpm_list_t *i;
|
||||
for(i = lp; i; i = i->next) {
|
||||
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
|
||||
pmpkg_t *info = _alpm_db_scan(db, miss->target);
|
||||
if(info) {
|
||||
if(!_alpm_pkg_find(alpm_pkg_get_name(info), trans->packages)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "pulling %s in the targets list\n",
|
||||
alpm_pkg_get_name(info));
|
||||
trans->packages = alpm_list_add(trans->packages, info);
|
||||
}
|
||||
} else {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not find %s in database -- skipping\n"),
|
||||
miss->target);
|
||||
}
|
||||
}
|
||||
FREELIST(lp);
|
||||
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
|
||||
}
|
||||
remove_prepare_cascade(trans, db, lp);
|
||||
} else if (trans->flags & PM_TRANS_FLAG_UNNEEDED) {
|
||||
/* Remove needed packages (which would break dependencies)
|
||||
* from the target list */
|
||||
remove_prepare_keep_needed(trans, db, lp);
|
||||
} else {
|
||||
if(data) {
|
||||
*data = lp;
|
||||
} else {
|
||||
FREELIST(lp);
|
||||
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
|
||||
alpm_list_free(lp);
|
||||
}
|
||||
RET_ERR(PM_ERR_UNSATISFIED_DEPS, -1);
|
||||
}
|
||||
@@ -136,14 +184,15 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
|
||||
|
||||
/* re-order w.r.t. dependencies */
|
||||
_alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
|
||||
lp = _alpm_sortbydeps(trans->packages, PM_TRANS_TYPE_REMOVE);
|
||||
lp = _alpm_sortbydeps(trans->packages, 1);
|
||||
/* free the old alltargs */
|
||||
alpm_list_free(trans->packages);
|
||||
trans->packages = lp;
|
||||
|
||||
if(trans->flags & PM_TRANS_FLAG_RECURSE) {
|
||||
/* -Rcs == -Rc then -Rs */
|
||||
if((trans->flags & PM_TRANS_FLAG_CASCADE) && (trans->flags & PM_TRANS_FLAG_RECURSE)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "finding removable dependencies\n");
|
||||
_alpm_recursedeps(db, trans->packages, 0);
|
||||
_alpm_recursedeps(db, trans->packages, trans->flags & PM_TRANS_FLAG_RECURSEALL);
|
||||
}
|
||||
|
||||
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
|
||||
|
||||
@@ -1,469 +0,0 @@
|
||||
/*
|
||||
* server.c
|
||||
*
|
||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <download.h>
|
||||
|
||||
/* libalpm */
|
||||
#include "server.h"
|
||||
#include "alpm_list.h"
|
||||
#include "error.h"
|
||||
#include "log.h"
|
||||
#include "alpm.h"
|
||||
#include "util.h"
|
||||
#include "handle.h"
|
||||
#include "package.h"
|
||||
|
||||
pmserver_t *_alpm_server_new(const char *url)
|
||||
{
|
||||
struct url *u;
|
||||
pmserver_t *server;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
CALLOC(server, 1, sizeof(pmserver_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
u = downloadParseURL(url);
|
||||
if(!u) {
|
||||
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid, ignoring\n"), url);
|
||||
RET_ERR(PM_ERR_SERVER_BAD_URL, NULL);
|
||||
}
|
||||
if(strlen(u->scheme) == 0) {
|
||||
_alpm_log(PM_LOG_WARNING, _("url scheme not specified, assuming http\n"));
|
||||
strcpy(u->scheme, "http");
|
||||
}
|
||||
|
||||
if(strcmp(u->scheme,"ftp") == 0 && strlen(u->user) == 0) {
|
||||
strcpy(u->user, "anonymous");
|
||||
strcpy(u->pwd, "libalpm@guest");
|
||||
}
|
||||
|
||||
/* remove trailing slashes, just to clean up the rest of the code */
|
||||
for(int i = strlen(u->doc) - 1; u->doc[i] == '/'; --i)
|
||||
u->doc[i] = '\0';
|
||||
|
||||
server->s_url = u;
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
void _alpm_server_free(pmserver_t *server)
|
||||
{
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(server == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* free memory */
|
||||
downloadFreeURL(server->s_url);
|
||||
FREE(server);
|
||||
}
|
||||
|
||||
/* remove filename info from "s_url->doc" and return it */
|
||||
static char *strip_filename(pmserver_t *server)
|
||||
{
|
||||
char *p = NULL, *fname = NULL;
|
||||
if(!server) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
p = strrchr(server->s_url->doc, '/');
|
||||
if(p && *(++p)) {
|
||||
fname = strdup(p);
|
||||
_alpm_log(PM_LOG_DEBUG, "stripping '%s' from '%s'\n",
|
||||
fname, server->s_url->doc);
|
||||
*p = 0;
|
||||
}
|
||||
|
||||
/* s_url->doc now contains ONLY path information. return value
|
||||
* if the file information from the original URL */
|
||||
return(fname);
|
||||
}
|
||||
|
||||
/* Return a 'struct url' for this server, for downloading 'filename'. */
|
||||
static struct url *url_for_file(pmserver_t *server, const char *filename)
|
||||
{
|
||||
struct url *ret = NULL;
|
||||
char *doc = NULL;
|
||||
int doclen = 0;
|
||||
|
||||
doclen = strlen(server->s_url->doc) + strlen(filename) + 2;
|
||||
CALLOC(doc, doclen, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
snprintf(doc, doclen, "%s/%s", server->s_url->doc, filename);
|
||||
ret = downloadMakeURL(server->s_url->scheme,
|
||||
server->s_url->host,
|
||||
server->s_url->port,
|
||||
doc,
|
||||
server->s_url->user,
|
||||
server->s_url->pwd);
|
||||
FREE(doc);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* Download a list of files from a list of servers
|
||||
* - if one server fails, we try the next one in the list
|
||||
* - if *dl_total is non-NULL, then it will be used as the starting
|
||||
* download amount when TotalDownload is set. It will also be
|
||||
* set to the final download amount for the calling function to use.
|
||||
* - totalsize is the total download size for use when TotalDownload
|
||||
* is set. Use 0 if the total download size is not known.
|
||||
*
|
||||
* RETURN: 0 for successful download, 1 on error
|
||||
*/
|
||||
int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath,
|
||||
alpm_list_t *files, int *dl_total, unsigned long totalsize)
|
||||
{
|
||||
return(_alpm_downloadfiles_forreal(servers, localpath, files, 0, NULL,
|
||||
dl_total, totalsize));
|
||||
}
|
||||
|
||||
/*
|
||||
* This is the real downloadfiles, used directly by sync_synctree() to check
|
||||
* modtimes on remote files.
|
||||
* - if mtime1 is non-NULL, then only download files if they are different
|
||||
* than mtime1.
|
||||
* - if *mtime2 is non-NULL, it will be filled with the mtime of the remote
|
||||
* file.
|
||||
* - if *dl_total is non-NULL, then it will be used as the starting
|
||||
* download amount when TotalDownload is set. It will also be
|
||||
* set to the final download amount for the calling function to use.
|
||||
* - totalsize is the total download size for use when TotalDownload
|
||||
* is set. Use 0 if the total download size is not known.
|
||||
*
|
||||
* RETURN: 0 for successful download
|
||||
* 1 if the mtimes are identical
|
||||
* -1 on error
|
||||
*/
|
||||
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
|
||||
alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
|
||||
unsigned long totalsize)
|
||||
{
|
||||
int dl_thisfile = 0;
|
||||
alpm_list_t *lp;
|
||||
int done = 0;
|
||||
alpm_list_t *complete = NULL;
|
||||
alpm_list_t *i;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(files == NULL) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
for(i = servers; i && !done; i = i->next) {
|
||||
pmserver_t *server = i->data;
|
||||
|
||||
/* get each file in the list */
|
||||
for(lp = files; lp; lp = lp->next) {
|
||||
struct url *fileurl = NULL;
|
||||
char realfile[PATH_MAX];
|
||||
char output[PATH_MAX];
|
||||
char *fn = (char *)lp->data;
|
||||
char pkgname[PKG_NAME_LEN];
|
||||
|
||||
fileurl = url_for_file(server, fn);
|
||||
if(!fileurl) {
|
||||
return(-1);
|
||||
}
|
||||
|
||||
/* pass the raw filename for passing to the callback function */
|
||||
strncpy(pkgname, fn, PKG_NAME_LEN);
|
||||
_alpm_log(PM_LOG_DEBUG, "using '%s' for download progress\n", pkgname);
|
||||
|
||||
snprintf(realfile, PATH_MAX, "%s%s", localpath, fn);
|
||||
snprintf(output, PATH_MAX, "%s%s.part", localpath, fn);
|
||||
|
||||
if(alpm_list_find_str(complete, fn)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!handle->xfercommand || !strcmp(fileurl->scheme, "file")) {
|
||||
FILE *dlf, *localf = NULL;
|
||||
struct url_stat ust;
|
||||
struct stat st;
|
||||
int chk_resume = 0;
|
||||
|
||||
if(stat(output, &st) == 0 && st.st_size > 0) {
|
||||
_alpm_log(PM_LOG_DEBUG, "existing file found, using it\n");
|
||||
fileurl->offset = (off_t)st.st_size;
|
||||
dl_thisfile = st.st_size;
|
||||
if (dl_total != NULL) {
|
||||
*dl_total += st.st_size;
|
||||
}
|
||||
localf = fopen(output, "a");
|
||||
chk_resume = 1;
|
||||
} else {
|
||||
fileurl->offset = (off_t)0;
|
||||
dl_thisfile = 0;
|
||||
}
|
||||
|
||||
/* libdownload does not reset the error code, reset it in
|
||||
* the case of previous errors */
|
||||
downloadLastErrCode = 0;
|
||||
|
||||
/* 10s timeout - TODO make a config option */
|
||||
downloadTimeout = 10000;
|
||||
|
||||
dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
|
||||
|
||||
if(downloadLastErrCode != 0 || dlf == NULL) {
|
||||
const char *host = _("disk");
|
||||
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
|
||||
host = fileurl->host;
|
||||
}
|
||||
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
|
||||
fn, host, downloadLastErrString);
|
||||
if(localf != NULL) {
|
||||
fclose(localf);
|
||||
}
|
||||
/* try the next server */
|
||||
downloadFreeURL(fileurl);
|
||||
continue;
|
||||
} else {
|
||||
_alpm_log(PM_LOG_DEBUG, "connected to %s successfully\n", fileurl->host);
|
||||
}
|
||||
|
||||
if(ust.mtime && mtime1 && ust.mtime == mtime1) {
|
||||
_alpm_log(PM_LOG_DEBUG, "mtimes are identical, skipping %s\n", fn);
|
||||
complete = alpm_list_add(complete, fn);
|
||||
if(localf != NULL) {
|
||||
fclose(localf);
|
||||
}
|
||||
if(dlf != NULL) {
|
||||
fclose(dlf);
|
||||
}
|
||||
downloadFreeURL(fileurl);
|
||||
return(1);
|
||||
}
|
||||
|
||||
if(ust.mtime && mtime2) {
|
||||
*mtime2 = ust.mtime;
|
||||
}
|
||||
|
||||
if(chk_resume && fileurl->offset == 0) {
|
||||
_alpm_log(PM_LOG_WARNING, _("cannot resume download, starting over\n"));
|
||||
if(localf != NULL) {
|
||||
fclose(localf);
|
||||
localf = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if(localf == NULL) {
|
||||
_alpm_rmrf(output);
|
||||
fileurl->offset = (off_t)0;
|
||||
dl_thisfile = 0;
|
||||
localf = fopen(output, "w");
|
||||
if(localf == NULL) { /* still null? */
|
||||
_alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'\n"), output);
|
||||
if(dlf != NULL) {
|
||||
fclose(dlf);
|
||||
}
|
||||
downloadFreeURL(fileurl);
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Progress 0 - initialize */
|
||||
if(handle->dlcb) {
|
||||
handle->dlcb(pkgname, 0, ust.size, dl_total ? *dl_total : 0,
|
||||
totalsize);
|
||||
}
|
||||
|
||||
int nread = 0;
|
||||
char buffer[PM_DLBUF_LEN];
|
||||
while((nread = fread(buffer, 1, PM_DLBUF_LEN, dlf)) > 0) {
|
||||
if(ferror(dlf)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s\n"),
|
||||
fn, downloadLastErrString);
|
||||
fclose(localf);
|
||||
fclose(dlf);
|
||||
downloadFreeURL(fileurl);
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int nwritten = 0;
|
||||
while(nwritten < nread) {
|
||||
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
|
||||
if(ferror(localf)) {
|
||||
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
|
||||
realfile, strerror(errno));
|
||||
fclose(localf);
|
||||
fclose(dlf);
|
||||
downloadFreeURL(fileurl);
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
if(nwritten != nread) {
|
||||
|
||||
}
|
||||
dl_thisfile += nread;
|
||||
if (dl_total != NULL) {
|
||||
*dl_total += nread;
|
||||
}
|
||||
|
||||
if(handle->dlcb) {
|
||||
handle->dlcb(pkgname, dl_thisfile, ust.size,
|
||||
dl_total ? *dl_total : 0, totalsize);
|
||||
}
|
||||
}
|
||||
|
||||
downloadFreeURL(fileurl);
|
||||
fclose(localf);
|
||||
fclose(dlf);
|
||||
rename(output, realfile);
|
||||
complete = alpm_list_add(complete, fn);
|
||||
} else {
|
||||
int ret;
|
||||
int usepart = 0;
|
||||
char *ptr1, *ptr2;
|
||||
char origCmd[PATH_MAX];
|
||||
char parsedCmd[PATH_MAX] = "";
|
||||
char url[PATH_MAX];
|
||||
char cwd[PATH_MAX];
|
||||
|
||||
/* build the full download url */
|
||||
snprintf(url, PATH_MAX, "%s://%s%s", fileurl->scheme,
|
||||
fileurl->host, fileurl->doc);
|
||||
/* we don't need this anymore */
|
||||
downloadFreeURL(fileurl);
|
||||
|
||||
/* replace all occurrences of %o with fn.part */
|
||||
strncpy(origCmd, handle->xfercommand, sizeof(origCmd));
|
||||
ptr1 = origCmd;
|
||||
while((ptr2 = strstr(ptr1, "%o"))) {
|
||||
usepart = 1;
|
||||
ptr2[0] = '\0';
|
||||
strcat(parsedCmd, ptr1);
|
||||
strcat(parsedCmd, output);
|
||||
ptr1 = ptr2 + 2;
|
||||
}
|
||||
strcat(parsedCmd, ptr1);
|
||||
/* replace all occurrences of %u with the download URL */
|
||||
strncpy(origCmd, parsedCmd, sizeof(origCmd));
|
||||
parsedCmd[0] = '\0';
|
||||
ptr1 = origCmd;
|
||||
while((ptr2 = strstr(ptr1, "%u"))) {
|
||||
ptr2[0] = '\0';
|
||||
strcat(parsedCmd, ptr1);
|
||||
strcat(parsedCmd, url);
|
||||
ptr1 = ptr2 + 2;
|
||||
}
|
||||
strcat(parsedCmd, ptr1);
|
||||
/* cwd to the download directory */
|
||||
getcwd(cwd, PATH_MAX);
|
||||
if(chdir(localpath)) {
|
||||
_alpm_log(PM_LOG_WARNING, _("could not chdir to %s\n"), localpath);
|
||||
return(PM_ERR_CONNECT_FAILED);
|
||||
}
|
||||
/* execute the parsed command via /bin/sh -c */
|
||||
_alpm_log(PM_LOG_DEBUG, "running command: %s\n", parsedCmd);
|
||||
ret = system(parsedCmd);
|
||||
if(ret == -1) {
|
||||
_alpm_log(PM_LOG_WARNING, _("running XferCommand: fork failed!\n"));
|
||||
return(PM_ERR_FORK_FAILED);
|
||||
} else if(ret != 0) {
|
||||
/* download failed */
|
||||
_alpm_log(PM_LOG_DEBUG, "XferCommand command returned non-zero status code (%d)\n", ret);
|
||||
} else {
|
||||
/* download was successful */
|
||||
complete = alpm_list_add(complete, fn);
|
||||
if(usepart) {
|
||||
rename(output, realfile);
|
||||
}
|
||||
}
|
||||
chdir(cwd);
|
||||
}
|
||||
}
|
||||
|
||||
if(alpm_list_count(complete) == alpm_list_count(files)) {
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
alpm_list_free(complete);
|
||||
|
||||
return(done ? 0 : -1);
|
||||
}
|
||||
|
||||
/** Fetch a remote pkg.
|
||||
* @param url URL of the package to download
|
||||
* @return the downloaded filepath on success, NULL on error
|
||||
* @addtogroup alpm_misc
|
||||
*/
|
||||
char SYMEXPORT *alpm_fetch_pkgurl(const char *url)
|
||||
{
|
||||
pmserver_t *server;
|
||||
char *filename, *filepath;
|
||||
const char *cachedir;
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(strstr(url, "://") == NULL) {
|
||||
_alpm_log(PM_LOG_DEBUG, "Invalid URL passed to alpm_fetch_pkgurl\n");
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
server = _alpm_server_new(url);
|
||||
if(!server) {
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/* strip path information from the filename */
|
||||
filename = strip_filename(server);
|
||||
if(!filename) {
|
||||
_alpm_log(PM_LOG_ERROR, _("URL does not contain a file for download\n"));
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
/* find a valid cache dir to download to */
|
||||
cachedir = _alpm_filecache_setup();
|
||||
|
||||
/* TODO this seems like needless complexity just to download one file */
|
||||
alpm_list_t *servers = alpm_list_add(NULL, server);
|
||||
alpm_list_t *files = alpm_list_add(NULL, filename);
|
||||
|
||||
/* download the file */
|
||||
if(_alpm_downloadfiles(servers, cachedir, files, NULL, 0)) {
|
||||
_alpm_log(PM_LOG_WARNING, _("failed to download %s\n"), url);
|
||||
return(NULL);
|
||||
}
|
||||
_alpm_log(PM_LOG_DEBUG, "successfully downloaded %s\n", filename);
|
||||
alpm_list_free(files);
|
||||
alpm_list_free(servers);
|
||||
_alpm_server_free(server);
|
||||
|
||||
/* we should be able to find the file the second time around */
|
||||
filepath = _alpm_filecache_find(filename);
|
||||
return(filepath);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* server.h
|
||||
*
|
||||
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _ALPM_SERVER_H
|
||||
#define _ALPM_SERVER_H
|
||||
|
||||
#include "alpm_list.h"
|
||||
#include "alpm.h"
|
||||
|
||||
#include <time.h>
|
||||
#include <download.h>
|
||||
|
||||
/* Servers */
|
||||
struct __pmserver_t {
|
||||
/* useless abstraction now? */
|
||||
struct url *s_url;
|
||||
};
|
||||
|
||||
#define PM_DLBUF_LEN (1024 * 10)
|
||||
|
||||
pmserver_t *_alpm_server_new(const char *url);
|
||||
void _alpm_server_free(pmserver_t *server);
|
||||
int _alpm_downloadfiles(alpm_list_t *servers, const char *localpath,
|
||||
alpm_list_t *files, int *dl_total, unsigned long totalsize);
|
||||
int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
|
||||
alpm_list_t *files, time_t mtime1, time_t *mtime2, int *dl_total,
|
||||
unsigned long totalsize);
|
||||
|
||||
#endif /* _ALPM_SERVER_H */
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
1135
lib/libalpm/sync.c
1135
lib/libalpm/sync.c
File diff suppressed because it is too large
Load Diff
@@ -25,12 +25,12 @@
|
||||
|
||||
/* Sync package */
|
||||
struct __pmsyncpkg_t {
|
||||
pmsynctype_t type;
|
||||
pmpkgreason_t newreason;
|
||||
pmpkg_t *pkg;
|
||||
void *data;
|
||||
alpm_list_t *removes;
|
||||
};
|
||||
|
||||
pmsyncpkg_t *_alpm_sync_new(int type, pmpkg_t *spkg, void *data);
|
||||
pmsyncpkg_t *_alpm_sync_new(pmpkgreason_t newreason, pmpkg_t *spkg, alpm_list_t *removes);
|
||||
void _alpm_sync_free(pmsyncpkg_t *data);
|
||||
|
||||
int _alpm_sync_sysupgrade(pmtrans_t *trans,
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
@@ -35,7 +36,6 @@
|
||||
/* libalpm */
|
||||
#include "trans.h"
|
||||
#include "alpm_list.h"
|
||||
#include "error.h"
|
||||
#include "package.h"
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
@@ -228,7 +228,6 @@ pmtrans_t *_alpm_trans_new()
|
||||
|
||||
CALLOC(trans, 1, sizeof(pmtrans_t), RET_ERR(PM_ERR_MEMORY, NULL));
|
||||
|
||||
trans->targets = NULL;
|
||||
trans->packages = NULL;
|
||||
trans->skip_add = NULL;
|
||||
trans->skip_remove = NULL;
|
||||
@@ -250,7 +249,6 @@ void _alpm_trans_free(pmtrans_t *trans)
|
||||
return;
|
||||
}
|
||||
|
||||
FREELIST(trans->targets);
|
||||
if(trans->type == PM_TRANS_TYPE_SYNC) {
|
||||
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_sync_free);
|
||||
} else {
|
||||
@@ -307,13 +305,7 @@ int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
|
||||
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
|
||||
ASSERT(target != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
|
||||
|
||||
if(alpm_list_find_str(trans->targets, target)) {
|
||||
return(0);
|
||||
//RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
|
||||
}
|
||||
|
||||
switch(trans->type) {
|
||||
case PM_TRANS_TYPE_ADD:
|
||||
case PM_TRANS_TYPE_UPGRADE:
|
||||
if(_alpm_add_loadtarget(trans, handle->db_local, target) == -1) {
|
||||
/* pm_errno is set by _alpm_add_loadtarget() */
|
||||
@@ -335,8 +327,6 @@ int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
|
||||
break;
|
||||
}
|
||||
|
||||
trans->targets = alpm_list_add(trans->targets, strdup(target));
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -357,7 +347,6 @@ int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data)
|
||||
}
|
||||
|
||||
switch(trans->type) {
|
||||
case PM_TRANS_TYPE_ADD:
|
||||
case PM_TRANS_TYPE_UPGRADE:
|
||||
if(_alpm_add_prepare(trans, handle->db_local, data) == -1) {
|
||||
/* pm_errno is set by _alpm_add_prepare() */
|
||||
@@ -402,7 +391,6 @@ int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data)
|
||||
trans->state = STATE_COMMITING;
|
||||
|
||||
switch(trans->type) {
|
||||
case PM_TRANS_TYPE_ADD:
|
||||
case PM_TRANS_TYPE_UPGRADE:
|
||||
if(_alpm_add_commit(trans, handle->db_local) == -1) {
|
||||
/* pm_errno is set by _alpm_add_commit() */
|
||||
@@ -463,7 +451,6 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
|
||||
char tmpdir[PATH_MAX];
|
||||
char cwd[PATH_MAX];
|
||||
char *scriptpath;
|
||||
struct stat buf;
|
||||
pid_t pid;
|
||||
int clean_tmpdir = 0;
|
||||
int restore_cwd = 0;
|
||||
@@ -471,14 +458,14 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
|
||||
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if(stat(installfn, &buf)) {
|
||||
if(access(installfn, R_OK)) {
|
||||
/* not found */
|
||||
_alpm_log(PM_LOG_DEBUG, "scriptlet '%s' not found\n", installfn);
|
||||
return(0);
|
||||
}
|
||||
|
||||
/* NOTE: popen will use the PARENT's /bin/sh, not the chroot's */
|
||||
if(stat("/bin/sh", &buf)) {
|
||||
if(access("/bin/sh", X_OK)) {
|
||||
/* not found */
|
||||
_alpm_log(PM_LOG_ERROR, _("No /bin/sh in parent environment, aborting scriptlet\n"));
|
||||
return(0);
|
||||
@@ -486,7 +473,7 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
|
||||
|
||||
/* creates a directory in $root/tmp/ for copying/extracting the scriptlet */
|
||||
snprintf(tmpdir, PATH_MAX, "%stmp/", root);
|
||||
if(stat(tmpdir, &buf)) {
|
||||
if(access(tmpdir, F_OK) != 0) {
|
||||
_alpm_makepath_mode(tmpdir, 01777);
|
||||
}
|
||||
snprintf(tmpdir, PATH_MAX, "%stmp/alpm_XXXXXX", root);
|
||||
@@ -636,15 +623,6 @@ unsigned int SYMEXPORT alpm_trans_get_flags()
|
||||
return handle->trans->flags;
|
||||
}
|
||||
|
||||
alpm_list_t SYMEXPORT * alpm_trans_get_targets()
|
||||
{
|
||||
/* Sanity checks */
|
||||
ASSERT(handle != NULL, return(NULL));
|
||||
ASSERT(handle->trans != NULL, return(NULL));
|
||||
|
||||
return handle->trans->targets;
|
||||
}
|
||||
|
||||
alpm_list_t SYMEXPORT * alpm_trans_get_pkgs()
|
||||
{
|
||||
/* Sanity checks */
|
||||
|
||||
@@ -39,7 +39,6 @@ struct __pmtrans_t {
|
||||
pmtranstype_t type;
|
||||
pmtransflag_t flags;
|
||||
pmtransstate_t state;
|
||||
alpm_list_t *targets; /* list of (char *) */
|
||||
alpm_list_t *packages; /* list of (pmpkg_t *) or (pmsyncpkg_t *) */
|
||||
alpm_list_t *skip_add; /* list of (char *) */
|
||||
alpm_list_t *skip_remove; /* list of (char *) */
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
@@ -43,114 +44,11 @@
|
||||
/* libalpm */
|
||||
#include "util.h"
|
||||
#include "log.h"
|
||||
#include "error.h"
|
||||
#include "package.h"
|
||||
#include "alpm.h"
|
||||
#include "alpm_list.h"
|
||||
#include "md5.h"
|
||||
|
||||
#ifndef HAVE_STRVERSCMP
|
||||
/* GNU's strverscmp() function, taken from glibc 2.3.2 sources
|
||||
*/
|
||||
|
||||
/* Compare strings while treating digits characters numerically.
|
||||
Copyright (C) 1997, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
/* states: S_N: normal, S_I: comparing integral part, S_F: comparing
|
||||
fractionnal parts, S_Z: idem but with leading Zeroes only */
|
||||
#define S_N 0x0
|
||||
#define S_I 0x4
|
||||
#define S_F 0x8
|
||||
#define S_Z 0xC
|
||||
|
||||
/* result_type: CMP: return diff; LEN: compare using len_diff/diff */
|
||||
#define CMP 2
|
||||
#define LEN 3
|
||||
|
||||
/* Compare S1 and S2 as strings holding indices/version numbers,
|
||||
returning less than, equal to or greater than zero if S1 is less than,
|
||||
equal to or greater than S2 (for more info, see the texinfo doc).
|
||||
*/
|
||||
|
||||
int strverscmp (s1, s2)
|
||||
const char *s1;
|
||||
const char *s2;
|
||||
{
|
||||
const unsigned char *p1 = (const unsigned char *) s1;
|
||||
const unsigned char *p2 = (const unsigned char *) s2;
|
||||
unsigned char c1, c2;
|
||||
int state;
|
||||
int diff;
|
||||
|
||||
/* Symbol(s) 0 [1-9] others (padding)
|
||||
Transition (10) 0 (01) d (00) x (11) - */
|
||||
static const unsigned int next_state[] =
|
||||
{
|
||||
/* state x d 0 - */
|
||||
/* S_N */ S_N, S_I, S_Z, S_N,
|
||||
/* S_I */ S_N, S_I, S_I, S_I,
|
||||
/* S_F */ S_N, S_F, S_F, S_F,
|
||||
/* S_Z */ S_N, S_F, S_Z, S_Z
|
||||
};
|
||||
|
||||
static const int result_type[] =
|
||||
{
|
||||
/* state x/x x/d x/0 x/- d/x d/d d/0 d/-
|
||||
0/x 0/d 0/0 0/- -/x -/d -/0 -/- */
|
||||
|
||||
/* S_N */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
|
||||
CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
|
||||
/* S_I */ CMP, -1, -1, CMP, +1, LEN, LEN, CMP,
|
||||
+1, LEN, LEN, CMP, CMP, CMP, CMP, CMP,
|
||||
/* S_F */ CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,
|
||||
CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,
|
||||
/* S_Z */ CMP, +1, +1, CMP, -1, CMP, CMP, CMP,
|
||||
-1, CMP, CMP, CMP
|
||||
};
|
||||
|
||||
if (p1 == p2)
|
||||
return 0;
|
||||
|
||||
c1 = *p1++;
|
||||
c2 = *p2++;
|
||||
/* Hint: '0' is a digit too. */
|
||||
state = S_N | ((c1 == '0') + (isdigit (c1) != 0));
|
||||
|
||||
while ((diff = c1 - c2) == 0 && c1 != '\0')
|
||||
{
|
||||
state = next_state[state];
|
||||
c1 = *p1++;
|
||||
c2 = *p2++;
|
||||
state |= (c1 == '0') + (isdigit (c1) != 0);
|
||||
}
|
||||
|
||||
state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case CMP:
|
||||
return diff;
|
||||
|
||||
case LEN:
|
||||
while (isdigit (*p1++))
|
||||
if (!isdigit (*p2++))
|
||||
return 1;
|
||||
|
||||
return isdigit (*p2) ? -1 : diff;
|
||||
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_STRSEP
|
||||
/* This is a replacement for strsep which is not portable (missing on Solaris).
|
||||
* Copyright (c) 2001 by François Gouget <fgouget_at_codeweavers.com> */
|
||||
@@ -186,57 +84,64 @@ int _alpm_makepath(const char *path)
|
||||
/* does the same thing as 'mkdir -p' */
|
||||
int _alpm_makepath_mode(const char *path, mode_t mode)
|
||||
{
|
||||
char *orig, *str, *ptr;
|
||||
char full[PATH_MAX] = "";
|
||||
mode_t oldmask;
|
||||
|
||||
oldmask = umask(0000);
|
||||
/* A bit of pointer hell here. Descriptions:
|
||||
* orig - a copy of path so we can safely butcher it with strsep
|
||||
* str - the current position in the path string (after the delimiter)
|
||||
* ptr - the original position of str after calling strsep
|
||||
* incr - incrementally generated path for use in stat/mkdir call
|
||||
*/
|
||||
char *orig, *str, *ptr, *incr;
|
||||
mode_t oldmask = umask(0000);
|
||||
int ret = 0;
|
||||
|
||||
orig = strdup(path);
|
||||
incr = calloc(strlen(orig) + 1, sizeof(char));
|
||||
str = orig;
|
||||
while((ptr = strsep(&str, "/"))) {
|
||||
if(strlen(ptr)) {
|
||||
struct stat buf;
|
||||
|
||||
strcat(full, "/");
|
||||
strcat(full, ptr);
|
||||
if(stat(full, &buf)) {
|
||||
if(mkdir(full, mode)) {
|
||||
FREE(orig);
|
||||
umask(oldmask);
|
||||
_alpm_log(PM_LOG_ERROR, _("failed to make path '%s' : %s\n"),
|
||||
path, strerror(errno));
|
||||
return(1);
|
||||
/* we have another path component- append the newest component to
|
||||
* existing string and create one more level of dir structure */
|
||||
strcat(incr, "/");
|
||||
strcat(incr, ptr);
|
||||
if(access(incr, F_OK)) {
|
||||
if(mkdir(incr, mode)) {
|
||||
ret = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
FREE(orig);
|
||||
free(orig);
|
||||
free(incr);
|
||||
umask(oldmask);
|
||||
return(0);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
#define CPBUFSIZE 8 * 1024
|
||||
|
||||
int _alpm_copyfile(const char *src, const char *dest)
|
||||
{
|
||||
FILE *in, *out;
|
||||
size_t len;
|
||||
char buf[4097];
|
||||
char *buf;
|
||||
int ret = 0;
|
||||
|
||||
in = fopen(src, "r");
|
||||
in = fopen(src, "rb");
|
||||
if(in == NULL) {
|
||||
return(1);
|
||||
}
|
||||
out = fopen(dest, "w");
|
||||
out = fopen(dest, "wb");
|
||||
if(out == NULL) {
|
||||
fclose(in);
|
||||
return(1);
|
||||
}
|
||||
|
||||
CALLOC(buf, (size_t)CPBUFSIZE, (size_t)1, ret = 1; goto cleanup;);
|
||||
|
||||
/* do the actual file copy */
|
||||
while((len = fread(buf, 1, 4096, in))) {
|
||||
while((len = fread(buf, 1, CPBUFSIZE, in))) {
|
||||
fwrite(buf, 1, len, out);
|
||||
}
|
||||
fclose(in);
|
||||
|
||||
/* chmod dest to permissions of src, as long as it is not a symlink */
|
||||
struct stat statbuf;
|
||||
@@ -246,12 +151,14 @@ int _alpm_copyfile(const char *src, const char *dest)
|
||||
}
|
||||
} else {
|
||||
/* stat was unsuccessful */
|
||||
fclose(out);
|
||||
return(1);
|
||||
ret = 1;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
fclose(in);
|
||||
fclose(out);
|
||||
return(0);
|
||||
FREE(buf);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
/* Trim whitespace and newlines from a string
|
||||
@@ -334,7 +241,7 @@ char *_alpm_strreplace(const char *str, const char *needle, const char *replace)
|
||||
/* Create a lock file */
|
||||
int _alpm_lckmk()
|
||||
{
|
||||
int fd, count = 0;
|
||||
int fd;
|
||||
char *dir, *ptr;
|
||||
const char *file = alpm_option_get_lockfile();
|
||||
|
||||
@@ -345,17 +252,9 @@ int _alpm_lckmk()
|
||||
*ptr = '\0';
|
||||
}
|
||||
_alpm_makepath(dir);
|
||||
|
||||
while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1 && errno == EACCES) {
|
||||
if(++count < 1) {
|
||||
sleep(1);
|
||||
} else {
|
||||
return(-1);
|
||||
}
|
||||
}
|
||||
|
||||
FREE(dir);
|
||||
|
||||
fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000);
|
||||
return(fd > 0 ? fd : -1);
|
||||
}
|
||||
|
||||
@@ -371,6 +270,13 @@ int _alpm_lckrm()
|
||||
|
||||
/* Compression functions */
|
||||
|
||||
/**
|
||||
* @brief Unpack a specific file or all files in an archive.
|
||||
*
|
||||
* @param archive the archive to unpack
|
||||
* @param prefix where to extract the files
|
||||
* @param fn a file within the archive to unpack or NULL for all
|
||||
*/
|
||||
int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
|
||||
{
|
||||
int ret = 1;
|
||||
@@ -382,7 +288,7 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
|
||||
ALPM_LOG_FUNC;
|
||||
|
||||
if((_archive = archive_read_new()) == NULL)
|
||||
RET_ERR(PM_ERR_LIBARCHIVE_ERROR, -1);
|
||||
RET_ERR(PM_ERR_LIBARCHIVE, -1);
|
||||
|
||||
archive_read_support_compression_all(_archive);
|
||||
archive_read_support_format_all(_archive);
|
||||
@@ -408,13 +314,17 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
|
||||
archive_entry_set_mode(entry, 0755);
|
||||
}
|
||||
|
||||
/* If a specific file was requested skip entries that don't match. */
|
||||
if (fn && strcmp(fn, entryname)) {
|
||||
_alpm_log(PM_LOG_DEBUG, "skipping: %s\n", entryname);
|
||||
if (archive_read_data_skip(_archive) != ARCHIVE_OK) {
|
||||
ret = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Extract the archive entry. */
|
||||
ret = 0;
|
||||
snprintf(expath, PATH_MAX, "%s/%s", prefix, entryname);
|
||||
archive_entry_set_pathname(entry, expath);
|
||||
@@ -484,12 +394,18 @@ int _alpm_rmrf(const char *path)
|
||||
return(0);
|
||||
}
|
||||
|
||||
int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list args)
|
||||
int _alpm_logaction(unsigned short usesyslog, FILE *f,
|
||||
const char *fmt, va_list args)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
if(usesyslog) {
|
||||
vsyslog(LOG_WARNING, fmt, args);
|
||||
/* we can't use a va_list more than once, so we need to copy it
|
||||
* so we can use the original when calling vfprintf below. */
|
||||
va_list args_syslog;
|
||||
va_copy(args_syslog, args);
|
||||
vsyslog(LOG_WARNING, fmt, args_syslog);
|
||||
va_end(args_syslog);
|
||||
}
|
||||
|
||||
if(f) {
|
||||
@@ -513,12 +429,11 @@ int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list
|
||||
int _alpm_ldconfig(const char *root)
|
||||
{
|
||||
char line[PATH_MAX];
|
||||
struct stat buf;
|
||||
|
||||
snprintf(line, PATH_MAX, "%setc/ld.so.conf", root);
|
||||
if(stat(line, &buf) == 0) {
|
||||
if(access(line, F_OK) == 0) {
|
||||
snprintf(line, PATH_MAX, "%ssbin/ldconfig", root);
|
||||
if(stat(line, &buf) == 0) {
|
||||
if(access(line, X_OK) == 0) {
|
||||
char cmd[PATH_MAX];
|
||||
snprintf(cmd, PATH_MAX, "%s -r %s", line, root);
|
||||
system(cmd);
|
||||
@@ -535,13 +450,12 @@ int _alpm_str_cmp(const void *s1, const void *s2)
|
||||
return(strcmp(s1, s2));
|
||||
}
|
||||
|
||||
/** Find a package file in an alpm cachedir.
|
||||
* @param filename name of package file to find
|
||||
/** Find a filename in a registered alpm cachedir.
|
||||
* @param filename name of file to find
|
||||
* @return malloced path of file, NULL if not found
|
||||
*/
|
||||
char *_alpm_filecache_find(const char* filename)
|
||||
{
|
||||
struct stat buf;
|
||||
char path[PATH_MAX];
|
||||
char *retpath;
|
||||
alpm_list_t *i;
|
||||
@@ -550,8 +464,7 @@ char *_alpm_filecache_find(const char* filename)
|
||||
for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) {
|
||||
snprintf(path, PATH_MAX, "%s%s", (char*)alpm_list_getdata(i),
|
||||
filename);
|
||||
if(stat(path, &buf) == 0) {
|
||||
/* TODO maybe check to make sure it is readable? */
|
||||
if(access(path, R_OK) == 0) {
|
||||
retpath = strdup(path);
|
||||
_alpm_log(PM_LOG_DEBUG, "found cached pkg: %s\n", retpath);
|
||||
return(retpath);
|
||||
@@ -640,13 +553,7 @@ char SYMEXPORT *alpm_get_md5sum(const char *filename)
|
||||
ret = md5_file(filename, output);
|
||||
|
||||
if (ret > 0) {
|
||||
if (ret == 1) {
|
||||
_alpm_log(PM_LOG_ERROR, _("md5: %s can't be opened\n"), filename);
|
||||
} else if (ret == 2) {
|
||||
_alpm_log(PM_LOG_ERROR, _("md5: %s can't be read\n"), filename);
|
||||
}
|
||||
|
||||
return(NULL);
|
||||
RET_ERR(PM_ERR_NOT_A_FILE, NULL);
|
||||
}
|
||||
|
||||
/* Convert the result to something readable */
|
||||
@@ -660,4 +567,52 @@ char SYMEXPORT *alpm_get_md5sum(const char *filename)
|
||||
return(md5sum);
|
||||
}
|
||||
|
||||
int _alpm_test_md5sum(const char *filepath, const char *md5sum)
|
||||
{
|
||||
char *md5sum2;
|
||||
int ret;
|
||||
|
||||
md5sum2 = alpm_get_md5sum(filepath);
|
||||
|
||||
if(md5sum == NULL || md5sum2 == NULL) {
|
||||
ret = -1;
|
||||
} else if(strcmp(md5sum, md5sum2) != 0) {
|
||||
ret = 1;
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
FREE(md5sum2);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
char *_alpm_archive_fgets(char *line, size_t size, struct archive *a)
|
||||
{
|
||||
/* for now, just read one char at a time until we get to a
|
||||
* '\n' char. we can optimize this later with an internal
|
||||
* buffer. */
|
||||
/* leave room for zero terminator */
|
||||
char *last = line + size - 1;
|
||||
char *i;
|
||||
|
||||
for(i = line; i < last; i++) {
|
||||
int ret = archive_read_data(a, i, 1);
|
||||
/* special check for first read- if null, return null,
|
||||
* this indicates EOF */
|
||||
if(i == line && (ret <= 0 || *i == '\0')) {
|
||||
return(NULL);
|
||||
}
|
||||
/* check if read value was null or newline */
|
||||
if(ret <= 0 || *i == '\0' || *i == '\n') {
|
||||
last = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* always null terminate the buffer */
|
||||
*last = '\0';
|
||||
|
||||
return(line);
|
||||
}
|
||||
|
||||
/* vim: set ts=2 sw=2 noet: */
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
#include <sys/stat.h> /* struct stat */
|
||||
#include <archive.h> /* struct archive */
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
#include <libintl.h> /* here so it doesn't need to be included elsewhere */
|
||||
@@ -43,12 +44,17 @@
|
||||
|
||||
#define MALLOC(p, s, action) do { p = calloc(1, s); if(p == NULL) { ALLOC_FAIL(s); action; } } while(0)
|
||||
#define CALLOC(p, l, s, action) do { p = calloc(l, s); if(p == NULL) { ALLOC_FAIL(s); action; } } while(0)
|
||||
#define STRDUP(r, s, action) do { r = strdup(s); if(r == NULL) { ALLOC_FAIL(strlen(s)); action; } } while(0)
|
||||
/* This strdup macro is NULL safe- copying NULL will yield NULL */
|
||||
#define STRDUP(r, s, action) do { if(s != NULL) { r = strdup(s); if(r == NULL) { ALLOC_FAIL(strlen(s)); action; } } else { r = NULL; } } while(0)
|
||||
|
||||
#define FREE(p) do { if(p) { free(p); p = NULL; } } while(0)
|
||||
#define FREE(p) do { free(p); p = NULL; } while(0)
|
||||
|
||||
#define ASSERT(cond, action) do { if(!(cond)) { action; } } while(0)
|
||||
|
||||
#define RET_ERR(err, ret) do { pm_errno = (err); \
|
||||
_alpm_log(PM_LOG_DEBUG, "returning error %d from %s : %s\n", err, __func__, alpm_strerrorlast()); \
|
||||
return(ret); } while(0)
|
||||
|
||||
int _alpm_makepath(const char *path);
|
||||
int _alpm_makepath_mode(const char *path, mode_t mode);
|
||||
int _alpm_copyfile(const char *src, const char *dest);
|
||||
@@ -64,10 +70,9 @@ int _alpm_str_cmp(const void *s1, const void *s2);
|
||||
char *_alpm_filecache_find(const char *filename);
|
||||
const char *_alpm_filecache_setup(void);
|
||||
int _alpm_lstat(const char *path, struct stat *buf);
|
||||
int _alpm_test_md5sum(const char *filepath, const char *md5sum);
|
||||
char *_alpm_archive_fgets(char *line, size_t size, struct archive *a);
|
||||
|
||||
#ifndef HAVE_STRVERSCMP
|
||||
int strverscmp(const char *, const char *);
|
||||
#endif
|
||||
#ifndef HAVE_STRSEP
|
||||
char *strsep(char **, const char *);
|
||||
#endif
|
||||
|
||||
58
ltmain.sh
58
ltmain.sh
@@ -2,7 +2,7 @@
|
||||
# NOTE: Changing this file will not affect anything until you rerun configure.
|
||||
#
|
||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
||||
# 2007 Free Software Foundation, Inc.
|
||||
# 2007, 2008 Free Software Foundation, Inc.
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@@ -43,8 +43,8 @@ EXIT_FAILURE=1
|
||||
|
||||
PROGRAM=ltmain.sh
|
||||
PACKAGE=libtool
|
||||
VERSION=1.5.24
|
||||
TIMESTAMP=" (1.1220.2.455 2007/06/24 02:13:29)"
|
||||
VERSION=1.5.26
|
||||
TIMESTAMP=" (1.1220.2.492 2008/01/30 06:40:56)"
|
||||
|
||||
# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
|
||||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
||||
@@ -113,15 +113,21 @@ esac
|
||||
# These must not be set unconditionally because not all systems understand
|
||||
# e.g. LANG=C (notably SCO).
|
||||
# We save the old values to restore during execute mode.
|
||||
for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
||||
lt_env=
|
||||
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
||||
do
|
||||
eval "if test \"\${$lt_var+set}\" = set; then
|
||||
save_$lt_var=\$$lt_var
|
||||
lt_env=\"$lt_var=\$$lt_var \$lt_env\"
|
||||
$lt_var=C
|
||||
export $lt_var
|
||||
fi"
|
||||
done
|
||||
|
||||
if test -n "$lt_env"; then
|
||||
lt_env="env $lt_env"
|
||||
fi
|
||||
|
||||
# Make sure IFS has a sensible default
|
||||
lt_nl='
|
||||
'
|
||||
@@ -485,7 +491,7 @@ do
|
||||
echo "\
|
||||
$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
exit $?
|
||||
@@ -788,6 +794,7 @@ if test -z "$show_help"; then
|
||||
*.for) xform=for ;;
|
||||
*.java) xform=java ;;
|
||||
*.obj) xform=obj ;;
|
||||
*.sx) xform=sx ;;
|
||||
esac
|
||||
|
||||
libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
|
||||
@@ -956,7 +963,7 @@ EOF
|
||||
$run $rm "$lobj" "$output_obj"
|
||||
|
||||
$show "$command"
|
||||
if $run eval "$command"; then :
|
||||
if $run eval $lt_env "$command"; then :
|
||||
else
|
||||
test -n "$output_obj" && $run $rm $removelist
|
||||
exit $EXIT_FAILURE
|
||||
@@ -1028,7 +1035,7 @@ EOF
|
||||
command="$command$suppress_output"
|
||||
$run $rm "$obj" "$output_obj"
|
||||
$show "$command"
|
||||
if $run eval "$command"; then :
|
||||
if $run eval $lt_env "$command"; then :
|
||||
else
|
||||
$run $rm $removelist
|
||||
exit $EXIT_FAILURE
|
||||
@@ -1161,6 +1168,7 @@ EOF
|
||||
thread_safe=no
|
||||
vinfo=
|
||||
vinfo_number=no
|
||||
single_module="${wl}-single_module"
|
||||
|
||||
func_infer_tag $base_compile
|
||||
|
||||
@@ -1646,6 +1654,11 @@ EOF
|
||||
continue
|
||||
;;
|
||||
|
||||
-multi_module)
|
||||
single_module="${wl}-multi_module"
|
||||
continue
|
||||
;;
|
||||
|
||||
-module)
|
||||
module=yes
|
||||
continue
|
||||
@@ -2149,7 +2162,12 @@ EOF
|
||||
continue
|
||||
fi
|
||||
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
|
||||
for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
|
||||
if test "$linkmode" = lib; then
|
||||
searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
|
||||
else
|
||||
searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
|
||||
fi
|
||||
for searchdir in $searchdirs; do
|
||||
for search_ext in .la $std_shrext .so .a; do
|
||||
# Search the libtool library
|
||||
lib="$searchdir/lib${name}${search_ext}"
|
||||
@@ -2945,12 +2963,18 @@ EOF
|
||||
# we do not want to link against static libs,
|
||||
# but need to link against shared
|
||||
eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
|
||||
eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
|
||||
if test -n "$deplibrary_names" ; then
|
||||
for tmp in $deplibrary_names ; do
|
||||
depdepl=$tmp
|
||||
done
|
||||
if test -f "$path/$depdepl" ; then
|
||||
if test -f "$deplibdir/$depdepl" ; then
|
||||
depdepl="$deplibdir/$depdepl"
|
||||
elif test -f "$path/$depdepl" ; then
|
||||
depdepl="$path/$depdepl"
|
||||
else
|
||||
# Can't find it, oh well...
|
||||
depdepl=
|
||||
fi
|
||||
# do not add paths which are already there
|
||||
case " $newlib_search_path " in
|
||||
@@ -3098,9 +3122,10 @@ EOF
|
||||
|
||||
case $linkmode in
|
||||
oldlib)
|
||||
if test -n "$deplibs"; then
|
||||
$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
|
||||
fi
|
||||
case " $deplibs" in
|
||||
*\ -l* | *\ -L*)
|
||||
$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
|
||||
esac
|
||||
|
||||
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
|
||||
$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
|
||||
@@ -4237,9 +4262,10 @@ EOF
|
||||
;;
|
||||
|
||||
obj)
|
||||
if test -n "$deplibs"; then
|
||||
$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
|
||||
fi
|
||||
case " $deplibs" in
|
||||
*\ -l* | *\ -L*)
|
||||
$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
|
||||
esac
|
||||
|
||||
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
|
||||
$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
|
||||
@@ -6478,7 +6504,7 @@ relink_command=\"$relink_command\""
|
||||
fi
|
||||
|
||||
# Restore saved environment variables
|
||||
for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
||||
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
||||
do
|
||||
eval "if test \"\${save_$lt_var+set}\" = set; then
|
||||
$lt_var=\$save_$lt_var; export $lt_var
|
||||
|
||||
@@ -8,7 +8,7 @@ check_SCRIPTS = \
|
||||
pmtest.py \
|
||||
util.py \
|
||||
$(wildcard tests/*.py) \
|
||||
tests/TESTS
|
||||
vercmptest.sh
|
||||
|
||||
noinst_SCRIPTS = $(check_SCRIPTS)
|
||||
|
||||
|
||||
@@ -288,7 +288,7 @@ Possible rules are:
|
||||
PKG_GROUPS=name|group
|
||||
PKG_PROVIDES=name|providename
|
||||
PKG_DEPENDS=name|depname
|
||||
PKG_REQUIREDBY=name|reqbyname
|
||||
PKG_OPTDEPENDS=name|depname
|
||||
PKG_REASON=name|intvalue
|
||||
PKG_FILES=name|filename
|
||||
PKG_BACKUP=name|backupname
|
||||
@@ -303,6 +303,8 @@ its DEPENDS field.
|
||||
|
||||
FILE_EXIST=path/to/file
|
||||
FILE_MODIFIED=path/to/file
|
||||
FILE_MODE=path/to/file|octal
|
||||
FILE_TYPE=path/to/file|type (possible types: dir, file, link)
|
||||
FILE_PACNEW=path/to/file
|
||||
FILE_PACSAVE=path/to/file
|
||||
FILE_PACORIG=path/to/file
|
||||
|
||||
@@ -93,13 +93,18 @@ if __name__ == "__main__":
|
||||
env.pacman["valgrind"] = opts.valgrind
|
||||
env.pacman["manual-confirm"] = opts.manualconfirm
|
||||
|
||||
if len(opts.testcases) == 0:
|
||||
if opts.testcases is None or len(opts.testcases) == 0:
|
||||
print "no tests defined, nothing to do"
|
||||
sys.exit(2)
|
||||
else:
|
||||
for i in opts.testcases: env.addtest(i)
|
||||
for i in opts.testcases:
|
||||
env.addtest(i)
|
||||
|
||||
# run tests and print overall results
|
||||
env.run()
|
||||
env.results()
|
||||
|
||||
if env.failed > 0:
|
||||
sys.exit(1)
|
||||
|
||||
# vim: set ts=4 sw=4 et:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user