1
0
forked from mirrors/pacman

Compare commits

...

304 Commits

Author SHA1 Message Date
Xavier Chantry
aba58e95ab TRANSLATORS: update pt_BR responsible
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-02 18:12:47 -05:00
Xavier Chantry
e8db103122 fix warning when internal download is not used
After commit 30c4d53ce5, get_destfile and
get_tempfile are only used for internal download, so move these two
functions inside the ifdef

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-02 12:16:02 -05:00
Allan McRae
b2dcacb5aa Remove unneed order arguements in zn_CN translation
Fixes FS#12812

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-02 12:06:27 -05:00
Sergey Tereschenko
a5ef0e072a minor fixes on russian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-02 12:05:41 -05:00
Gerardo Exequiel Pozzi
ac37e92449 Fix perms on files NEWS and TRANSLATORS
Recently changed accidentally from 644 to 755.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-01 17:13:32 -05:00
Armando M. Baratti
44359218ea Update Brazilian Portuguese translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-01 15:51:57 -05:00
Dan McGee
bc83ff76c6 French translation reformat
'make distcheck' had issues with this one and reformatted it. In addition,
it found a fuzzy message which is now fixed due to an inadvertent msgid
edit.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-01 13:36:07 -05:00
Dan McGee
4eb1469765 Version bump for 3.3.0
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-01 13:35:59 -05:00
Dan McGee
cfc4c24db2 Merge commit 'xavier/trans' 2009-08-01 13:06:28 -05:00
Xavier Chantry
bf9249e929 Add -Suu operation to the NEWS.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-01 13:03:54 -05:00
Jeff Bailes
4cadee4f08 update english british translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-31 01:49:07 +02:00
Nagy Gabor
fc29d0c990 update hungarian translation
Thanks to Avramucz Peter <muczyjoe@gmail.com>
for having translated all the scripts !

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-30 19:27:37 +02:00
Lu Gan
9a0122982c update simplified chinese translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-30 19:27:37 +02:00
Sergey Tereschenko
433c52bb91 update russian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-30 19:27:37 +02:00
Roman Kyrylych (Роман Кирилич)
78e92b1d02 update ukrainian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-30 19:27:36 +02:00
Matthias Gorissen
05533b8b11 update german translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:41:34 +02:00
Baurzhan Muftakhidinov
00c26338de update Kazakh translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:37:53 +02:00
Volodia Macovei
684047a764 update romanian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:27 +02:00
Mateusz Herych
e65d82afa1 update polish translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:27 +02:00
Samed Beyribey
734aa1ce59 update turkish translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:27 +02:00
Vojtech Gondzala
4e643a3dd7 update czech translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:26 +02:00
Juan Pablo Gonzalez Tognarelli
08c535e262 update spanish translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:26 +02:00
Giovanni Scafora
8fdab1e1f0 update italian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:34:26 +02:00
CalimeroTeknik
b9c6b41387 po/fr.po : corrections and improvements
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:33:39 +02:00
Xavier Chantry
04c31828b6 Update French translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-29 19:33:30 +02:00
Dan McGee
44272ca0c8 Regenerate pacman PO files
We missed a message. Commit 3a6ed1142 added the message to gettext, this
commit adds it to the PO files.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-28 07:00:42 -05:00
Nagy Gabor
3a6ed11428 Fix an untranslated message in src/callback.c
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-28 06:59:48 -05:00
Dan McGee
9b086d8b9e Update PO files in prep for 3.3 release 2009-07-27 21:42:16 -05:00
Dan McGee
fb1936bc19 Update POT files 2009-07-27 21:41:58 -05:00
Dan McGee
2f0fc0decb Update copyrights in gettext files 2009-07-27 21:40:43 -05:00
Nagy Gabor
5753c12e7b Update README file
1. API changes between 3.2 and 3.3 section has been added.
2. Corrections on alpm_option documentation.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-27 21:06:19 -05:00
Nagy Gabor
7f3a20612e Change the e-mail address of Nagy Gabor in AUTHORS
The old one is invalid now.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-27 21:03:47 -05:00
Cedric Staniewski
fb97d325a5 Do not allow pkgnames to start with a hyphen
Commandline arguments starting with a hyphen are usually recognized as
options by unix tools. Therefore, allowing hyphens at the beginning of a
package name requires a different handling of pkgnames as suggested by
rm's manpage.
It would be possible to make the scripts 'hyphen-safe', but
hyphen-prefixed packages will cause trouble for pacman users which do
not know these tricks.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
[Dan: remove the repo-add check]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-26 23:29:55 -05:00
Dan McGee
2013d06266 Ensure version screen fits in 80 cols
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-26 23:02:20 -05:00
Allan McRae
a8ddc7618f PKGBUILD-split.proto: pkgbase is a string not an array
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-26 22:59:13 -05:00
Dan McGee
597118ddd7 Revert "makepkg: Exit on failure within build() or package() functions"
As reported in FS#15210, we have some problems with split packages and
variable overrides because of this patch. For now, in prep for a release, it
is best to back it out and see what we can do later.

This reverts commit 621aa26e26.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-26 12:58:02 -05:00
Xavier Chantry
6fa5f2075a Use lstat instead of stat for -Qo
This fixes: FS#15675 - pacman can not determine ownership of dangling
symlinks

Using lstat seems more correct than stat for the -Qo operation anyway.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-25 17:25:50 -05:00
Sebastian Nowicki
30c4d53ce5 Add a fetch callback to allow front-end download support
This allows a frontend to define its own download algorithm so that the
libfetch dependency can be omitted without using an external process.
The callback will be used when if it is defined, otherwise the old
behavior applies.

Signed-off-by: Sebastian Nowicki <sebnow@gmail.com>
[Dan: minor cleanups]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-22 21:27:46 -05:00
Nagy Gabor
1d19f0896c Introduce -Suu
If the user switches from unstable repo to a stable one, it is quite hard to
sync its system with the new repo (the user will see many "Local is newer
than stable" messages, nothing more). That's why I introduced -Suu, which
treats a sync package like an upgrade, iff the package version doesn't match
with the local one's.

I added a new pactest (sync104.py) to test this, and I updated the
documentation of -Su.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
[Dan: slight doc reword]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-22 20:16:52 -05:00
Dan McGee
ca6ef852f9 New feature: files verification
This implements FS#13877. Add a new option "-Qk" which checks if all of the
files for a given package (or packages) are really on the system (i.e. not
accidentally deleted). This can be combined with filters and other display
options. It also respects both the --quiet and --verbose flags to give
varying levels of output.

Based on the original patch by Charly Coste <changaco@laposte.net>, thanks
for your work!

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-22 20:13:53 -05:00
Allan McRae
4b21504ffc makepkg: add pkgbase to .PKGINFO and database for split packages
With split packages, the pkgbase variable provides a useful way to
find out which packages were build from the same PKGBUILD. Add it
to the packages .PKGINFO file and the repo database only when
package splitting is used.

Original-patch-by: Pierre Schmitz <pierre@archlinux.de>
[Allan: restrict to including only with spilt packages
        and include after pkgname]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-22 06:37:33 -05:00
Nagy Gabor
cf669eda9c Fix a minor memleak
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-21 21:45:07 -05:00
Giovanni Scafora
1c4596b4be Update Italian Translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-21 20:24:06 -05:00
Xavier Chantry
344ced22c3 Fix one bug with .paccheck leftover file
This happens for example if you install a new package, and one of its
backup config file is already on the file system.

If the local file was different, it was saved to .pacorig which is fine.

However if the local file and pkg file were the same, the pkg file
(temporarily extracted as .paccheck) was left on the system.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 16:38:15 -05:00
Xavier Chantry
60b6cde637 Fix 2 minor memleaks
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 16:37:45 -05:00
Xavier Chantry
5d15bb68f7 Do not create .pacsave with -R, if the file is unchanged
This fixes FS#15546

Also fix the interface of unlink_file which was really stupid..
(alpm_list_t used with only one element)

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 16:37:37 -05:00
Xavier Chantry
45f90de0eb Fix klibc conflict case.
A package can now replace symdir->dir by dir without fileconflicts.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 10:13:42 -05:00
Xavier Chantry
bfd6817112 Fix fileconflict004
When one package wants to replace a directory by a file, we check that all
files in that directory were owned by that package.

Additionally pacman can be more verbose when the extraction of the symlink
(or file) fails. The patch to add.c looks more complex than it is, I just
moved and reindented code to handle cases 10 and 11 together.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 10:13:25 -05:00
Xavier Chantry
a3ecbec6b5 pactest : safety check with MODE
check that the file exists first, otherwise pactest just breaks.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-20 10:12:26 -05:00
Xavier Chantry
8ebc07744a Offer to clean up non-package files in cache directory.
This implements FS#15142.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-16 06:15:26 -05:00
Xavier Chantry
2e043aae36 Run ldconfig inside chroot.
This fixes FS#15294.

The code to run a command inside a chroot was refactored from the
_alpm_runscriptlet function to _alpm_run_chroot.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-07-16 06:12:04 -05:00
Volodia Macovei
41a55d4eff Update Romanian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-15 21:34:53 -05:00
Allan McRae
5dc0b80c26 makepkg: clean up BUILDSCRIPT usage
FS#15448 (which is made worse by the "fix" for FS#14727...), highlighted
some deficiencies in the usage of the BUILDSCRIPT variable. In particular,
only relative paths worked with "-p" and some output was very strange in
combination with the "-p" flag or reading from /dev/stdin. e.g.
"Please add a license line to your /dev/stdin!".

This patch adds a new variable, BUILDFILE, which contains the full path
to the BUILDSCRIPT.  This defaults to $startdir/$BUILDSCRIPT.

Also, fix a missed quoting of $BUILD{SCRIPT->FILE} and remove warning
about missing BUILDSCRIPT definition in makepkg.conf as the default
BUILDSCRIPT value is now specified during configure. Add check that
BUILDFILE is writable before updating VCS PKGBUILDs. When making a source
package, the BUILDSCRIPT always gets given the default name, regardless
of what it was originally called.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-12 17:32:57 +10:00
Allan McRae
104daa16a6 makepkg: allow spaces in source file names
The download command failed with sources that contained spaces.
Remainder of fix for FS#15323.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-12 01:17:25 +10:00
Dan McGee
caa0f2205a makepkg: fix breakage with '%' in source filenames
Ensure we don't pass a bare filename to printf that might contain a
lookalike '%' escape sequence. Fixes part of FS#15323.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-12 01:02:25 +10:00
Dan McGee
68c10690ea makepkg: quote filenames when extracting
We currently fall apart on files with spaces in the names.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-12 01:02:21 +10:00
Allan McRae
8d7764abae Quote values in the arch array in example PKGBUILD
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:58 +10:00
Allan McRae
6092dda177 makepkg: check for package functions when package splitting
Makes sure the required package functions are present when using package
splitting.  Also moves setting of pkgbase variable outside the
check_sanity function to somewhere more appropriate.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:58 +10:00
Allan McRae
e72cce352a makepkg: fix pkgdesc restoration with split packaging
A pkgdesc with spaces in it would get restored to an array and thus only
the first word would be restored (FS#15210). Convert that array back to a
string.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:58 +10:00
Allan McRae
621aa26e26 makepkg: Exit on failure within build() or package() functions
Errors in build() functions were only fatal, if "--log" was enabled. Errors in
package() functions were never fatal. Piping these functions through "cat -"
triggers error trapping. This prevents the need for "|| return 1" usage in
PKGBUILDs.

Original-patch-by: Juergen Hoetzel <juergen@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:58 +10:00
Allan McRae
b312c820c8 makepkg: fix check for previously built packages with package splitting
Checks if some or all packages are built before overwriting/installing.
Adds some new strings for translation.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:58 +10:00
Allan McRae
617e7d512f makepkg: clean up moving PKGINFO creation to a function
Someone forgot to commit this when pulling in the original patch
to his working branch...

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-07-10 16:29:57 +10:00
Dan McGee
c72b4543b6 Update copyright headers and messages
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-01 02:08:33 -05:00
Dan McGee
be7266155f Allow remove to accept 'local/' prefix
See FS#14642- this allows -Qs output to be fed back into pacman without
problems or having to strip off the 'local/' prefix manually.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-07-01 01:42:35 -05:00
Xavier Chantry
a21d1f99b8 Update NEWS for 3.3
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-30 23:37:36 -05:00
Volodia Macovei
6af163dd79 Add new Romanian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-30 23:34:18 -05:00
Dan McGee
a89eae99f6 Fix compile warning fail on older versions of GCC
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-30 23:14:18 -05:00
Nagy Gabor
6d2930cc5a Update the documentation of -Qs and -Ss
It was undocumented that multiple regexps are interpreted using logical AND.

Thanks to Recursive@#archlinux for his help.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-23 21:54:12 -05:00
Nagy Gabor
21fa09349b Document the .pacnew extension with NoUpgrade
See FS#13832.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-23 21:53:57 -05:00
Dan McGee
68813ca986 Merge commit 'allan/working' 2009-06-23 21:52:35 -05:00
Dan McGee
8c8fa2d82c Search package groups when searching a DB
See FS#13099. This makes sense especially for the pacman frontend, as we
show groups in the search output.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-23 21:51:49 -05:00
Dan McGee
8bbaf045b9 repo-add: use bsdtar optimization for better performance
When unzipping packages and the database archives, we don't need to look
through the entire archive to do what we need to do. For packages, .PKGINFO
should only be found once and should be the first file in the package. For
the database check, we only really need to look for one desc file.

The bsdtar -q option is very similar to the GNU tar --occurrence=1 option.

Example of speedup:

$ time repo-add junkdb.db.tar.gz *.pkg.tar.gz >/dev/null
real	0m16.159s
user	0m14.836s
sys	0m2.277s

$ time ./scripts/repo-add junkdb.db.tar.gz *.pkg.tar.gz >/dev/null
real	0m4.949s
user	0m3.730s
sys	0m2.093s

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-23 21:51:42 -05:00
Loui Chang
01f9ae63e7 makepkg: Move .PKGINFO creation into a function.
Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-06-22 17:09:16 +10:00
Loui Chang
02acf65ef3 makepkg: Download sources and check checksums for any source package.
It wouldn't be very nice to ship a PKGBUILD with the wrong checksums.

Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-06-21 20:32:17 +10:00
Allan McRae
b3a5535360 Fix typos in PKGBUILD man page
Original-patch-by: Jason Ribeiro
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-06-21 20:00:00 +10:00
Nagy Gabor
f250b034b4 Enable remove progressbar with -S (conflict resolving)
$ sudo pacman -S mc

Old output:
***********
:: mc conflicts with mc-mp. Remove mc-mp? [Y/n] y
...
(1/1) checking for file conflicts                   [################] 100%
(1/1) installing mc                                 [################] 100%

New output:
***********
:: mc conflicts with mc-mp. Remove mc-mp? [Y/n] y
...
(1/1) checking for file conflicts                   [################] 100%
(1/1) removing mc-mp                                [################] 100%
(1/1) installing mc                                 [################] 100%

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-13 09:57:59 -05:00
Allan McRae
ef500b44ce makepkg: fix variable backup/restore for splitpkg
The backup and restore of variables that can be overridden while
making split packages only dealt with the first element, not the
whole array (FS#15010).  Adjust the bash voodoo to fix it...

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-13 09:51:18 -05:00
Allan McRae
04d5c4294a makepkg: fix PKGBUILD sanity check
If PKGBUILD was good, the "insane" variable was not defined and so
the if statement failed.  Simplify and fix this check.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-13 09:50:53 -05:00
Dan McGee
aa579b8438 Give sensible feedback when a repo has no configured servers
This fixes FS#14899. When running an -Sp operation without servers
configured for a repository, we would segfault, so add an assert to the
backend method returning the first server preventing a null pointer
dereference.

In addition, add a new error code to libalpm that indicates we have no
servers configured for a repository. This makes -Sy and -S <package>
operations fail gracefully and helpfully when a repo is set up with no
servers, as the default mirrorlist in Arch is provided this way.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-08 20:02:17 -05:00
Nagy Gabor
19b8b63885 Introduce _alpm_pkg_free_trans()
The main purpose of this function to make our code more readable.
It frees transaction specific fields of pmpkg_t. (It is used when a package
is removed from the target list.)

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-07 15:11:16 -05:00
Dan McGee
e61ab1536f makepkg: refactor sanity checking into a function
No new checks, just move it into a function and return 1 rather than exit
directly. This also allows the use of local variables.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-06-07 15:07:37 -05:00
Xavier Chantry
13b281d743 xdelta : only handle gz compression specifically
There is apparently no need to handle the re-compression manually when
applying a xdelta patch in case of bzip2 or xz.

Only gzip needs to be handled specifically for disabling timestamp with the
-n option.

After this patch, if xdelta is enhanced with xz support (1-line patch), it
will be transparent from pacman side.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-06 11:16:45 -05:00
Nagy Gabor
9af9c0f328 Document -T in the manual
See FS#14833.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
[Dan: slight wording rework]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-06 10:46:56 -05:00
Nagy Gabor
f4ecc908ec We don't need root with -Sp
FS#8905 is fixed. The front-end passes PM_TRANS_FLAG_NOLOCK to the back-end,
so it doesn't lock the database. That's why we don't need root anymore.

I reworked (and renamed) needs_transaction() accordingly. I also added
missing -Sc check there (for example, -Sci didn't print non-root error, but
pacman wanted to lock the database).

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-01 22:01:04 -05:00
Nagy Gabor
c520d38451 Introduce PM_TRANS_FLAG_NOLOCK
This flag indicates that the front-end will not call alpm_trans_commit(),
so the database needn't be locked. This is the first step toward fixing
FS#8905.

If this flag is set, alpm_trans_commit() does nothing and returns with
an error (that has new code: PM_ERR_TRANS_NOT_LOCKED).

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-01 22:00:57 -05:00
Nagy Gabor
1b4135ca5d Change package to package(s) and file to file(s) in documentation
The pacman --help pages and the manual suggested that only one package can
be upgraded/removed per transaction.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-01 21:59:03 -05:00
Gerardo Exequiel Pozzi
6360fe0100 Remove unused string.h from src/pacman/remove.c
This header was used in the code for the function strdup()
that is not used anymore.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-06-01 21:57:58 -05:00
Xavier Chantry
30e2496775 repo-add: fail early if repo can not be created
Before this commit, the repo creation could fail after all packages have
been added to the database. Now this will be detected before adding
anything.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-23 12:27:32 -05:00
Gerardo Exequiel Pozzi
35b9dfc380 Remove unused included headers from testdb.c and testpkg.c
libgen.h was used for basename() in function main() from src/util/testdb.c
string.h was used for strlen() in function output_cb() from src/util/testpkg.c

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:22:38 -05:00
Pierre Schmitz
c301d6aa25 Add support for the xz archive format
This simple patch adds support for the xz archive format to makepkg and repo-
add.
Xz can be used as source, package and package db file type.

Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
[Dan: fixed a few alignment issues]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:16:59 -05:00
Nagy Gabor
0bf340f73c Remove unused error codes and handle PM_ERR_RETRIEVE by alpm_strerror()
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:11:43 -05:00
Nagy Gabor
882bff36ac Remove find_replacements()
"Foo replaces bar" simply means that "foo is a new version of bar".
So this patch refactors the code to use this "rule".

_alpm_sync_sysupgrade now does the following for each local package [bar]
(pseudo-code):
for db in syncdbs {
   if(db contains bar) {check if db/bar is an upgrade; break;}
   replacers = find(bar replacers in db);
   if(replacers!=NULL) {ask_user; break;}
}

Note:
1. Replacers are grouped per repo. If more than one package replace bar in
a repo, all of them are considered ("package set of bar replacers").
2. If repo1/foo1 and repo2/foo2 both replaces bar, only repo1/foo1 is
considered (if repo1 stands before repo2 in pacman.conf). FS#11737 is fixed.
3. It can happen that pacman doesn't consider any replacer, if it found a
literal "earlier", so sync132.py modified accordingly (btw, that situation
should not appear irl).

The new sysupgrade code doesn't use sync_newversion(), so I removed the
"local is newer than repo" message, which was annoying with -Qu and
SyncFirst.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:11:05 -05:00
Nagy Gabor
f89f7e136b Query documentation updates
The old documentation didn't emphasize our filtering options at all, and it
was a bit misleading. ("List ALL...")

I also clarified the description of -Qu.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:09:24 -05:00
Cedric Staniewski
212ea8a9ed repo-add: fix -n tests which are applicable only to strings
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:04:28 -05:00
Cedric Staniewski
a812ad4ea4 libarchive development has moved to Google Code
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:02:56 -05:00
Dan McGee
1bbb34365c Add pyc files to autoclean
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:02:56 -05:00
Dan McGee
1d8d932fa6 Remove recursive remove in autoclean.sh
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 23:02:46 -05:00
Gerardo Exequiel Pozzi
783e710839 Add more files to cleanup in autoclean.sh
Add files pactest/tests/Makefile.in , pactest/tests/Makefile
and contrib/Makefile.in , contrib/Makefile to list of cleanup script.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 22:57:16 -05:00
Gerardo Exequiel Pozzi
c5d9b999c7 Add repo-remove.8 to list of cleanup in doc/Makefile.am
repo-remove.8 is generated with Makefile but is not removed on clean.
This patch add it to list of untracked autoconf files.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 22:54:03 -05:00
Dan McGee
4a582fac2a Merge commit 'allan/working' 2009-05-18 22:51:25 -05:00
Gerardo Exequiel Pozzi
86cd72573b Add an initial pactest/test/.gitignore
Add an initial pactest/test/.gitignore to exclude sync200.py
that is generated from sync200.py.in

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-18 22:25:53 -05:00
Allan McRae
80caeabce0 NEWS file updates for makepkg and contrib
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-05-16 14:39:18 +10:00
Allan McRae
250e66e57b makepkg: fix sourcing BUILDSCRIPT and PATH issues
The bash source command looks in the users PATH for the file to source
before the local directory. This causes issues when someone has a
PKGBUILD somewhere in their path (for unknown some reason...).
Fixes FS#14727.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-05-16 13:48:10 +10:00
Allan McRae
5e32928a42 makepkg: Document package splitting
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-05-14 16:30:02 +10:00
Allan McRae
de44a0f474 makepkg: do not update pkgver when building source package
When making a source package for a SCM PKGBUILD, makepkg should not
update the pkgver/pkgrel.  Noted in FS#14456.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-05-14 16:30:01 +10:00
Dan McGee
20017354f7 Remove version information from -Qqo output
This was the only --quiet operation that showed version information; make it
consistent with the rest.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-11 21:43:36 -05:00
Nagy Gabor
a783f3fbf1 Introduce -Qlq
With --quiet flag, -Ql doesn't print the package name, just lists the files.
I made --quiet documentation up-to-date (I also added -Sgq/-Qgq).

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-11 21:36:43 -05:00
Allan McRae
f569c4a042 makepkg: several small fixes
1) Do not attempt to strip compressed binaries
Original-work-by: Marc - A. Dahlhaus <mad@wol.de>

2) Add "\" in "GPL\'ed" so quote mark does not break source code highlighting

3) Add local to docdir paths in makepkg.conf for consistency

4) Use full path to sed in MacOSX in case users have GNU sed earlier in
path

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-11 21:23:46 -05:00
Gerardo Exequiel Pozzi
ed848b1c54 Fix non-C style comments in libalpm
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-05-11 20:26:49 -05:00
Allan McRae
c27904661e makepkg: make in-place sed portable
Do a sed replacement in-place is not very portable.  On Mac OSX and
BSDs, the syntax is "sed -i ''" where as with GNU sed the command is
"sed -i''" or just "sed -i".  This patch detects which command should
be used during configure.

Credit to Kevin Barry who researched this issue and provided a patch
to work around this using temporary backup files.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-26 09:22:23 -05:00
Loui Chang
10584ec8ea Mention required libraries in INSTALL.
Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-15 22:44:10 -05:00
Bryan Ischo
db3e166503 Look in target-list first to resolve dependencies
This fixes a bug introduced by my previous changes which changes the
behavior of IgnorePkg/IgnoreGroup to allow the user to remove unresolvable
packages from the transaction.  The bug is that the target-list was no
longer being consulted first to resolve dependencies, which means that if
two packages in the sync database satisfied a dependency, and the user
explicitly requested one of those two packages in the sync, the other
package was still being pulled in.

A new test was added, sync993.py, to verify the desired behavior.

Signed-off-by: Bryan Ischo <bji-keyword-pacman.3644cb@www.ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 14:39:24 -05:00
Bryan Ischo
d70465decc Remove duplicates from the unresolvable list before prompting user
Signed-off-by: Bryan Ischo <bji-keyword-pacman.3644cb@www.ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 14:24:52 -05:00
Dan McGee
4b78852f7e const-ify endswith()
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 14:13:03 -05:00
Nagy Gabor
aefb4e0fa5 Remove pmsyncpkg_t
pmsyncpkg_t data sructure was removed:
1. pmpkg_t.reason is used instead of pmsyncpkg_t.newreason. (The target
packages come from sync repos, so we can use this field without any
problems. Upgrade transaction also uses this field to store this info.)
2. pmsyncpkg_t.removes was moved to pmpkg_t.removes.
This step requires careful programming, because we don't duplicate packages
when we add them to trans->packages. So we modify sync pkgcache when we
add this transaction-only info to our package. Hence it is important to
free this list when we remove any package from the target list
(remove_unresolvable, remove_conflicts, trans_free), otherwise this could
confuse the new sync transactions (with non-pacman GUI).

Overall, our code became ~100 line shorter, and we can call our helper
functions directly on trans->packages in sync.c, we don't need to maintain
parallel package lists.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 14:05:13 -05:00
Nagy Gabor
391952600d Fix for trans001.py (FS#9088)
From now on _alpm_db_find_fileconflicts() works with upgrade and remove
target lists (like checkdeps), which makes it transaction independent
(we still need a trans param because of the progressbar). This is a small
step towards the universal transaction. So we call this function directly
from sync.c before commiting the remove transaction. This is much safer,
but we can get false fileconflict error alarms in some tricky cases
("symlinks puzzle" etc).

The patch on find_fileconflict looks complex, but it is mainly an
"indent-patch", the new code-part can be found after the
/* check remove list ... */ comment, and I modified something around the
"file has changed hand" case (see comment modifications in the code).

Unfortunately sync.c became more ugly, because we have to create 2 parallel
internal transactions: to avoid duplicated work, upgrade transaction is
used to load package data (filelists). This problem will disappear, when
we finally get rid of internal transactions.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 13:59:55 -05:00
Nagy Gabor
634304feae Free *data list when user removes unresolvable packages
Resolvedeps reports error when it cannot resolve some dependencies, puts
them into the *data list, and set pm_errno. If user removes the
unresolvable packages from the target list, we have no error anymore,
so from now on we free *data list (we eliminate a memleak) and unset
pm_errno.

(Additionally I removed two needless lines from the code, unresolvable list
is always freed in cleanup.)

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 13:55:46 -05:00
Nagy Gabor
56fd24ecf8 Print warning in _alpm_resolvedep() if a satisfier package is ignored without QUESTION
After commit f57f8d3386 pacman *silently*
ignores packages from IgnorePkg/IgnoreGroup during dependency resolving,
if prompt == 0. This behavior is changed to "give warning + ignore".
(Otherwise the user is not informed about the fact that the package
resolving was blocked by ignorepkg.)

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 13:54:50 -05:00
Nagy Gabor
77efd51216 New error type: PM_ERR_PKG_IGNORED
This patch fixes FS#12059.
Now sync_addtarget can return with PM_ERR_PKG_IGNORED, which indicates that
although the requested package was found it is in ignorepkg, so alpm could
not add it to the transaction. So the front-end can decide what to do.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 13:54:25 -05:00
Dan McGee
93ca155b48 Merge branch 'xav/repo-add' 2009-04-11 13:50:56 -05:00
Dan McGee
101c16b3eb makepkg: fix double check on same path
Commit 142225fd typo-ed this one, as it should look like the rest of the
checks similar to it.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 13:30:38 -05:00
Loui Chang
52d184dae8 makepkg: Fix integrity check when files are missing.
The index in the for loop wasn't being incremented, so
if the first file wasn't found, the second file would be compared to the
first checksum, rather than the second.

Signed-off-by: Loui Chang <louipc.ist@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:52:11 -05:00
Sebastian Nowicki
63fc93607b Add detail documentation for alpm_db_update()
This adds alpm_db_update() to the alpm_databases Doxygen group. The function
is described in more detail and a code example is given.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:50:37 -05:00
Dan McGee
d15d4f923d Small cleanups to index.txt
Simplify the gitweb links.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:43:28 -05:00
Dan McGee
6fb0c5abd7 doc: move files around for consistency
Move some of our documentation files, even though they aren't manpages, to
the doc/ directory. This allows the new 'html' make target to manage them.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:38:20 -05:00
Dan McGee
20ab91fb79 doc: add 'html' target to Makefile.am
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:34:15 -05:00
Dan McGee
afb2f39291 doc: fix repo-add manpage
Now the comment was showing up in the generated manpage and HTML
documentation. Just kill it as asciidoc keeps screwing us over.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 12:33:33 -05:00
Dan McGee
e37ecbe8a4 Fix asciidoc formatting warnings and issues
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 11:14:28 -05:00
Dan McGee
22a4616550 Add the pacman home page to the doc directory
Also ignore .html files in doc/.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-11 11:00:22 -05:00
Allan McRae
cb8aee58eb Fix doc building for asciidoc >= 8.4.1
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-05 21:51:08 -05:00
Samed Beyribey
3cb4eaef4f fixed typos and alignment problem in Turkish translation
Signed-off-by: Samed Beyribey <ras0ir@eventualis.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-05 21:40:58 -05:00
Dan McGee
f385242f99 Merge commit 'allan/working' 2009-04-05 21:12:28 -05:00
Nagy Gabor
5fcc9ae7f4 Document --debug
After some irc/forum experiences, I decided to document this option.
However, I left the debug-level undocumented (--debug=2).

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-04-05 21:11:48 -05:00
Allan McRae
442b91a5dd makepkg: run tidy_install with no package() function
After the splitpkg implementation, the tidy_install function
was not being called in PKGBUILDs with only the build() function.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-30 17:41:34 +10:00
Allan McRae
deff57ce8b makepkg: do not bail on failure to install built package
Fixes FS#13417.  Do no exit makepkg on a failure to install the
built package(s).  This allows clean-up to still occur.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-29 16:49:57 +10:00
Allan McRae
7370fd595b makepkg: adjust log clean-up for new filenames
The log files now have -build or -package at the end and there
are separate log files for each *_package() function. Alter
clean_up() to deal with this. Also, move glob outside quotes so
this actually works.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-26 01:39:13 +10:00
Allan McRae
4c27a776bd makepkg: adjust install_package for split packages
Install all created packages when using the install option with
package splitting.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-25 23:52:27 +10:00
Allan McRae
7a8ba5a978 Refactor testing for color message output
Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-16 09:18:41 +10:00
Allan McRae
7df0d048d1 makepkg: add pkgbase variable
The pkgbase variable is added to improve informational output and
source package naming when using split packages.  Defaults to
${pkgname[0]} if not set.

Also:
 - move splitpkg detection to after pkgname presence is verified
 - add "cd" line to package_foo() functions in splitpkg proto

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-03-16 09:17:10 +10:00
Xavier Chantry
0c614c181e repo-add : rename gstmpdir to tmpdir
What does gstmpdir mean?

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:24 +01:00
Xavier Chantry
91d43ba4b4 repo-add : don't change the modification time on depends and desc
The modification time on depends and desc file were changed to match the
modification time of the package file. I don't see why and we are actualling
losing information here. If we want to know the date of the package file, we
can just look inside the depends file. If we want to know when the entry was
created, we should not alter the modification time of depends and desc.

Besides, this had the non-obvious and undocumented side effect that the
depends file was always created, even if it was empty. And pacman actually
does require that. So I added a "touch depends" to always create the file.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:24 +01:00
Xavier Chantry
59b4725bbb repo-add : new locking system
Weird things could happen if several repo-add were run concurrently on the
same database. The introduced locking system will prevent this to happen.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:24 +01:00
Xavier Chantry
a556bc57fc repo-add : fix package variables declaration
- arch was missing

- backup is not used by repo-add. However makepkg still needs to put it in
  PKGINFO because pacman uses it

- startdir is no longer used after the new delta implementation

- the declaration of group, depend, backup, etc is not needed because these
  variables are always declared before being used :
	declare $var="$val"
	case "$var" in
		group)    _groups="$_groups$group\n" ;;

- reorder the variables declaration to follow the same order than they are
  written to the depends and desc file, for making future checks easier

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:24 +01:00
Xavier Chantry
bbcf96230a repo-add : rewrite delta support
Use the correct database format

Use xdelta3 to get the source and destination files from the delta itself

Allow delta files to be added with repo-add just like package files. delta
files can also be removed with repo-remove. This is simply done by looking
for a .delta extension in the arguments, and calling the appropriate
db_write_delta or db_remove_delta functions.

Example usage:
repo-add repo/test.db.tar.gz repo/libx11-1.1.99.2-2-x86_64.pkg.tar.gz
repo-add repo/test.db.tar.gz repo/libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta
repo-remove repo/test.db.tar.gz libx11-1.1.5-2_to_1.1.99.2-2-x86_64.delta

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:23 +01:00
Xavier Chantry
89685bdb29 repo-add : drop delta support to rewrite it from scratch
The current implementation has several problems :

Wrong database format

All the info is taken from the filename, which is a bit ugly

It looks for .delta files in the current directory when adding a package,
which is not very flexible

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:23 +01:00
Xavier Chantry
994804f20e repo-add.sh.in : repo-remove improvements
* report when a package entry to be removed is not found

* backup and restore eventual "deltas" files

* slight optimization when looking for an entry : only look at the entries
starting with $pkgname

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:23 +01:00
Xavier Chantry
f8bb69c1d2 repo-add cleanup
Refactor the main loop, which was difficult to read.

Use case instead of if when appropriate.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:23 +01:00
Xavier Chantry
9fa18d9a4b Add pkgdelta script to create deltas.
This should obsolete the delta support in makepkg. Having a separate script
should be more flexible.

Example usage:
$ pkgdelta repo/tzdata-2009a-1-x86_64.pkg.tar.gz repo/tzdata-2009b-1-x86_64.pkg.tar.gz
==> Generating delta from version 2009a-1 to version 2009b-1
==> Generated delta : 'repo/tzdata-2009a-1_to_2009b-1-x86_64.delta'

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:10:15 +01:00
Xavier Chantry
c8beffa790 Fix several issues with xdelta
1) The changes to sync.c look big but there are mostly caused by
the indentation. Fix a bug where download_size == 0 because the packages and
deltas are already in the cache, but we still need to build the deltas list
and apply the deltas to create the final package.

2) Fix the gzip / md5sum issue by switching to xdelta3, disabling external
recompression and using gzip -n in pacman, and disable bsdtar compression
and using gzip -n in makepkg.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-03-15 18:08:36 +01:00
Xavier Chantry
9519d22df7 be_files.c : use %jd instead of %ju for intmax_t
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-03-15 11:41:37 -05:00
Xavier Chantry
de97282fbd Revert "popen does NOT require /bin/sh in a subchroot"
This reverts commit 9558639d80.

This change was wrong, popen does require /bin/sh in a subchroot.

1) pacman -S lilo -r root

Notice no error

2) rm root/bin/sh ; pacman -S lilo -r root

Notice an error :
error: scriptlet failed to execute correctly

Actually, we already get an explicit error here, when popen is run, so there
is no need to check for bin/sh explicitely.

Besides this check was problematic in some cases. For example, bash itself
has a scriptlet, but only post_install and post_upgrade, no pre_install and
pre_upgrade. However, since bash has a scriptlet, runscriptlet will also be
called before bash is installed. It won't do anything since the scriptlet
has no pre_install function. But if we keep the check, we will still get
"error : no /bin/sh".

Conflicts:

	lib/libalpm/trans.c

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-03-15 11:41:37 -05:00
Xavier Chantry
36863b968f runscriptlet : Flush open fds before fork() to avoid cloning buffers
This is a bug I noticed 2 years ago :
http://www.nabble.com/Re%3A-logging-output-crazy-to11437357.html#a11479679

I thought I fixed it with 57d77eab32

But the bug was still here. Reading man fork, this part caught my attention:

*  The child inherits copies of the parent's set  of  open  file
descriptors.  Each  file descriptor  in  the  child refers to the same open
file description (see open(2)) as the corresponding file descriptor in the
parent.  This means that the two descriptors  share open  file  status
flags, current file offset, and signal-driven I/O attributes (see the
description of F_SETOWN and F_SETSIG in fcntl(2)).

Since the open file descriptors are inherited, it is probably a good idea to
flush them before forking.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-03-15 11:40:49 -05:00
Allan McRae
687f04ab46 Only check checksums if there is a source file
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-03-15 11:38:54 -05:00
Allan McRae
a864a50bc6 contrib/pacscripts - print install scripts from a package
Prints the install script from a given package file or from a package
in the pacman repo.

Original-work-by: Giulio "giulivo" Fidente <giulivo.navigante@gmail.com>
Improvements-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-03-15 11:38:53 -05:00
Dan McGee
d8d9ab8c87 Update checks for python in configure
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-28 15:46:51 -06:00
Dan McGee
4458f71851 Merge branch 'maint' 2009-02-28 15:43:36 -06:00
Xavier Chantry
b4e1365657 makepkg : remove xdelta support
The pkgdelta script can be used instead.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-28 15:42:07 -06:00
Xavier Chantry
8c09c19139 libalpm: remove from_md5 and to_md5 from pmdelta_t
The from_md5 and to_md5 fields were a nice extra safety, which would avoid
trying to apply deltas on corrupted package files. However, they are not
strictly necessary, since xdelta should be able to detect that on its own.

The main problem is that it is impossible to compute these informations from
the delta only. So repo-add would not be able to compute the delta entry
based on just the delta file.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-28 15:33:46 -06:00
Xavier Chantry
f09f82ee59 repo-add: print warning if same version already exists
Simple fix for FS#13414.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-28 15:33:39 -06:00
Baurzhan Muftakhidinov
b3c67a195f Add new Kazakh translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-24 08:24:47 -06:00
Dan McGee
2268981ebf Merge branch 'maint' 2009-02-23 20:40:27 -06:00
Dan McGee
9d661240fe Update pactest to use hashlib
The md5 module is deprecated in favor of hashlib.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23 20:40:00 -06:00
Bryan Ischo
f57f8d3386 Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packages
Don't prompt the user for unignore of IgnorePkg/IgnoreGroup packages,
except for packages explicitly listed for sync by the user.  This
eliminates many unnecessary prompts when IgnorePkg/IgnoreGroup is
used.

Signed-off-by: Bryan Ischo <bryan@ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23 20:37:14 -06:00
Bryan Ischo
0268550401 Enabled new interactive prompt and updated some tests
Enabled a new prompt to ask the user if they'd like to remove
unresolvable packages from the transaction rather than failing it.

Many pactest tests that used to fail now return success codes, because
pacman now issues a prompt allowing the user to cancel rather than
failing many transactions, and the pactest scripts always choose to
cancel with no error rather than failing.  The only net effect is that
the return status of pacman is now 0 in cases where it used to be
nonzero.

Signed-off-by: Bryan Ischo <bryan@ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23 20:33:56 -06:00
Allan McRae
a309a016bf makepkg: fix updating pkgrel with pkgver in SCM packages
Commit 1e656c0a introduced the changing of pkgrel to 1 when the
pkgver was updated in SCM PKGBUILDs. However, the output in the
"Making package:" was wrong. Attempting to fix that created
another bug (FS#13416). Interestingly, pkgver was only ever
being updated in the fakeroot stage which caused this problem.
Now both pkgver and pkgrel are updated after the first
devel_check and devel_update. Enjoy the really long explaination
for a two line fix...

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-23 20:18:08 -06:00
Xavier Chantry
c8a41b7d6d repo-add : remove realpath usage
Rework slightly db_write_entry so that $pkgfile is no longer referenced
from the temporary dir. This means $pkgfile can be a relative path and does
not need to be converted with realpath anymore.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-19 19:20:27 -06:00
Xavier Chantry
c590ac0997 repo-add : remove the need of realpath for REPO_DB_FILE
REPO_DB_FILE does not need to be an absolute path anymore so no need to
call realpath.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-19 19:20:19 -06:00
Dan McGee
1c4633ea2c Merge branch 'maint' 2009-02-18 21:20:17 -06:00
Bryan Ischo
6c4d702cb1 Reorganize code for one-at-a-time resolving
This change reorganizes the internal code so that packages are
resolved one at a time instead of all at once from a list.  This will
allow a future checkin to prompt the user to see if they'd rather
remove unresolvable packages from the transaction and continue, or
fail the transaction.  This change does not affect the actual behavior
of libalpm and all tests pass without changes.

Signed-off-by: Bryan Ischo <bryan@ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-18 20:52:22 -06:00
Jan Stępień
e7daa59f84 A tiny fix in the Polish translation.
The previous translation of 'targets' meant literally 'it targets' and it
sounded awkwardly. The current version is a plural of a 'target'.

Signed-off-by: Jan Stępień <jstepien@users.sourceforge.net>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-18 19:25:57 -06:00
Xavier Chantry
e515d89969 repo-add : remove useless test_repo_db_file function
This function was used only once, was basically just one line, and was also
called with an unused argument.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-18 19:21:34 -06:00
Xavier Chantry
dce7aa8569 contrib/pacdiff : rework and cleanup
I initially only wanted to add a -l/--locate option to use locate instead of
find, which should have been easy.

Then I thought I would try to support filename with whitespace while I was
at it, and this was a bit more complex. The safest ways seem to be the
following ones : http://mywiki.wooledge.org/BashFAQ/020

Then I received a lot of suggestions on #bash about how to improve the
script, which I tried to address.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Dan: fix grouping of find arguments]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-18 19:20:10 -06:00
Dan McGee
48b209d612 Rework optdepends documentation for clarity
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-17 16:58:33 -06:00
Kevin Barry
14c1a4423e configure.ac: use full path of stat for Mac OS X
Change configure.ac to use the full path of stat when on darwin/mac.
This is needed for situations when a user installs the GNU/coreutils
and places it in their path before /usr/bin, but the SIZECMD is
already configured for Darwin's version of stat.

Signed-off-by: Kevin Barry <barryk gmail com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-16 08:06:29 -06:00
Dan McGee
eb1775e485 repo-add: fix eval and quote issues
eval was ugly and dirty, and bit us here. Instead, use a safer form of
variable declaration to ensure quotes don't foil us in pkgdesc or any other
fields.

This fixes FS#10837.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-15 21:16:21 -06:00
Dan McGee
04c2b9d4ed Merge branch 'maint' 2009-02-08 11:43:08 -06:00
Sebastian Nowicki
ea84819bbb makepkg: Make stripping debug symbols cross-platform
The Linux and BSD versions of strip have the --strip-debug option (as
well as the -S option), however Mac OS X only has -S.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-02-08 11:33:33 -06:00
Xavier Chantry
34e1413d75 Delay the creation of local and sync db dir.
We don't need to create the directories when local or sync dbs are
registered. For example, if a sync db does not exist, we cannot even do
"pacman -Q" as an user.

Instead, we can create the local db if needed during the db_prepare
operation, and sync dbs on db_update.

Also remove some more useless abstractions in db_update and switch to a much
more efficient way to remove a sync db : rm -rf.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-01-20 14:07:15 +01:00
Xavier Chantry
14230869e6 Remove some db abstraction crap.
These db_open and db_close looked quite useless. And they caused the db
directory to be opened on a simple registering of a database. This is
totally unneeded, this opening can be delayed to when we actually need it.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-01-20 14:04:54 +01:00
Xavier Chantry
eab9684837 alpm_unpack : change prefix handling to workaround FS#12148.
Instead of appending the prefix to each entry name, we can chdir to the
prefix before extracting, and restoring when it is done.
This seems to work better with the strange and special case of FS#12148
where an archive contained the "./" entry.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-01-20 14:03:46 +01:00
Dan McGee
c794661f1e Merge branch 'maint' 2009-01-18 13:48:48 -06:00
Dan McGee
8929769902 makepkg: test fixes, part 2
The goal of this fix was empty string comparisons:
-  if [ "$pkgname" != "" ]; then
+  if [ -n "$pkgname" ]; then

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-18 13:48:31 -06:00
Dan McGee
350c3eb6ec makepkg: clean up test usage
In a lot of places, we had the following construct:
  [ "$foobar" = "0" ]
which is better represented by using the integer tests:
  [ $foobar -eq 0 ]

Attempt to unify makepkg to use the latter rather than the former in all
places. From here on out we should ensure anything that is set to 0, 1, etc.
uses the -eq format rather than =.

In addition, fix a few other test anomalies including usage of double
equals.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-18 13:46:23 -06:00
Nagy Gabor
472e51b975 Use archive_entry_set_perm instead of archive_entry_set_mode
This patch fixes FS#12148 ('unstable' regular file).
I also changed the other archive_entry_set_mode usage in add.c to
archive_entry_set_perm.

Since I cannot find any relevant info in libarchive manual, I quote
Tim Kientzle (the author of libarchive) here, and I say thank you for
his help.

*** Tim Kientzle wrote *************************************

This is the problem in libalpm/util.c:

323    if(S_ISREG(st->st_mode)) {
324            archive_entry_set_mode(entry, 0644);
325    } else if(S_ISDIR(st->st_mode)) {
326            archive_entry_set_mode(entry, 0755);
327    }

Your example unstable.db.tar.gz is not empty.  It has
one entry in it, called "./".  That entry is marked
as a directory.  But, when you call archive_entry_set_mode(),
you are changing the file type!  archive_read_extract()
then creates the file /var/unstable as you requested.
(archive_read_extract() will replace an empty directory
with a file.)

You should either set the mode value correctly:

323    if(S_ISREG(st->st_mode)) {
324            archive_entry_set_mode(entry, IFREG | 0644);
325    } else if(S_ISDIR(st->st_mode)) {
326            archive_entry_set_mode(entry, IFDIR | 0755);
327    }

Or use archive_entry_set_perm(), which does not change
the file type:

323    if(S_ISREG(st->st_mode)) {
324            archive_entry_set_perm(entry, 0644);
325    } else if(S_ISDIR(st->st_mode)) {
326            archive_entry_set_perm(entry, 0755);
327    }

************************************************************

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-18 13:35:17 -06:00
Allan McRae
fba5771fa4 makepkg: repackage rework with package functions
When using the optional package() function or split packages, the
entire packaging step is rerun instead of just final package
creation step.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-17 09:19:35 -06:00
Bryan Ischo
5bc23bc05d Fixed some inconsistencies and errors in the pactest documentation.
Signed-off-by: Bryan Ischo <bryan@ischo.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-16 20:22:58 -06:00
Dan McGee
3d49d88009 Merge branch 'am/splitpkg'
* am/splitpkg:
  makepkg: implement creation of split packages
  makepkg: Optional argument for run_package and create_package
  makepkg: hack around tee in run_package function
  makepkg: add functions for backup and restore of package fields
  makepkg: add optional package function
  makepkg: Add PKGBUILD-split.proto
2009-01-16 19:45:02 -06:00
Allan McRae
e946ee7745 makepkg: implement creation of split packages
Adds the ability to create multiple packages from one PKGBUILD

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:32:05 +10:00
Allan McRae
21b8a5418d makepkg: Optional argument for run_package and create_package
Generalize run_package to allow the passing of a package name
directing the use of an alternative package function. A similar
adjustment to create_package to prepare split packages.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:26:52 +10:00
Allan McRae
708ce1480f makepkg: hack around tee in run_package function
Piping the package function through tee to log the outut also
clears any variables set in the package function.  This is a
problem in split packages as package variable overrides are done
in the package function.  This is fixed by creating a node which
the output is piped through and duplicated using the tee function.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:24:21 +10:00
Allan McRae
9804911c5f makepkg: add functions for backup and restore of package fields
Adds functions for the backup and restoration of package variables
that can be over-ridden during package splitting.  Variables which
can be overridden are given in the splitpkg_overrides variable.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:22:04 +10:00
Allan McRae
08034ceb17 makepkg: add optional package function
This patch allows us to split the building and packaging stages of
a PKGBUILD and minimize fakeroot usage. This can be done with less
code duplication (run_build and run_package look quite similiar) but
the run_package function will be where the package splitting logic
is implemented in the future.

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:20:05 +10:00
Allan McRae
219cb2eaac makepkg: Add PKGBUILD-split.proto
Prototype PKGBUILD for package splitting in makepkg

Signed-off-by: Allan McRae <allan@archlinux.org>
2009-01-16 22:16:18 +10:00
Aaron Griffin
a9f030e84c Make the repo-add quiet flag less quiet
Considering one can easily run:
   repo-add .... >/dev/null
to get only warnings and errors, the -q flag is mostly useless.

Make the -q flag silence only level 2 messages.

Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-14 19:18:08 -06:00
Dan McGee
7a3a718c7a makepkg: fix my own stupid mistake
We don't want to bail if a certain integrity check wasn't even provided.
Whoops.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-13 20:13:31 -06:00
Aaron Schaefer
e3a06961f6 makepkg: use INTEGRITY_CHECK only for generation of checksums
Signed-off-by: Aaron Schaefer <aaron@elasticdog.com>
[Dan: fail if checksum array is incorrectly sized]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-13 19:50:38 -06:00
Dan McGee
d7345da5ba doc: Consistency and formatting cleanups (for master)
Bring master in line with some things we just did on maint.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-13 00:11:17 -06:00
Dan McGee
b369f71fd6 Merge branch 'maint'
Conflicts:
	doc/makepkg.conf.5.txt
2009-01-13 00:10:36 -06:00
Dan McGee
1191303f8b doc: Consistency and formatting cleanups
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-13 00:06:58 -06:00
Dan McGee
e9ca40b56e doc: fix some more asciidoc fallout
They keep changing things on us. This gets rid of the '.ft C' text sprinkled
around our listing blocks.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-13 00:00:35 -06:00
Dan McGee
3d6da93093 doc: remove BUILDSCRIPT from makepkg.conf docs
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 23:59:44 -06:00
Nagy Gabor
cb7337eb64 db->pkgcache_loaded and db->grpcache_loaded
Clearly the old code was more elegant (NULL cache indicated "not loaded"),
but it had some drawbacks, so from now on we indicate the state of caches
explicitly.

Old drawbacks:
When we had an empty database (unstable), libalpm called db_populate after
every pkgcache access, because NULL pkgcache indicated "not loaded" state.
This is not a common case, but the same situation can happen with grpcache,
which is more problematic: If the user had a custom repo with no groups,
grpcache was always NULL. (grpcache is also loaded per database.) Thus
every get_grpcache call induced a load_grpcache operation, so the benefits
of grpcache was completely lost.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 23:59:37 -06:00
Nagy Gabor
4da70d800a Rename alpm_get_md5sum to alpm_compute_md5sum and alpm_dep_get_string to alpm_dep_compute_string
This patch introduces the following function name convention:
_compute_ in function name: the return value must be freed.
_get_ in function name: the return value must not be freed.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 23:59:30 -06:00
Nagy Gabor
a888f377a5 HoldPkg rework
The HoldPkg feature is even more important when the packages to be held are
pulled automatically by pacman, in a -Rc and -Rs operation. Before, it only
applied when the packages were explicitly requested by the user to be
removed. This patch extends holdpkg to -Rc and -Rs by doing the HoldPkg
check just before trans_commit.

Additionally, the whole HoldPkg stuff was moved to the front-end.

I changed the default behavior to "don't remove", so I modified remove030.py
pactest as well.

See also: FS#9173.

Original-work-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 22:44:00 -06:00
Xavier Chantry
8017b0bb8e Remove libdownload support and fix libfetch one.
Aaron said to consider libdownload a dead project so libdownload support was
removed to more easily fix libfetch one (otherwise many ifdef needed).

There was no direct replacement for ferror to detect an error while
downloading. So instead, I added a check at the end to see if the file was
fully downloaded, which is just a small chunk of code taken from here:
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/libfetch/files/fetch.c?only_with_tag=MAIN

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 22:40:15 -06:00
Xavier Chantry
4ec846f5ac makepkg : fix a lot of breakages caused by Allan
This patch started as a simple typo fix (pugre instead of purge in two
places), as well as a fix of a test which was using PURGE_TARGETS instead of
$PURGE_TARGETS.

It evolved in a slight handling change of the OPTIONS which have a variable
affecting their behavior (strip STRIP_DIRS, docs DOC_DIRS, zipman MAN_DIRS
and purge PURGE_TARGETS), as well as a clarification in makepkg.conf. Now
when a variable is undefined or empty, the corresponding option will have no
effect. It looked weird to have a fallback when a option is defined but
empty, it seems more natural to not have any fallbacks.

Also re-enable docs by default. It seems arbitrary to delete files from
packages by default, and it would be more vanilla and distro agnostic to
keep them. docs was also the only negated option.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-12 22:28:10 -06:00
Dan McGee
94c2830572 Fix linkman macro to work with asciidoc > 8.3.0
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-11 22:09:40 -06:00
Dan McGee
0501d340cd Merge branch 'maint' 2009-01-06 20:22:15 -06:00
Vojtěch Gondžala
c6bcdf4dc7 Update Czech translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-05 19:06:39 -06:00
Hugo Doria
9f5e1dc8cd Update Portuguese (Brazil) translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-05 07:05:40 -06:00
Dan McGee
cebe36c42c Update configure.ac for 3.2.2 release
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-04 11:34:47 -06:00
Dan McGee
301fe17f57 Update NEWS for 3.2.2
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-04 11:27:03 -06:00
Dan McGee
6f9539aefb Merge branch 'maint'
Conflicts:
	po/it.po
2009-01-04 11:12:28 -06:00
Mateusz Herych
997a611fa4 Update Polish translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 19:07:44 -06:00
Sergey Tereschenko
162e77ffdc Update Russian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 19:05:19 -06:00
Samed Beyribey
a2cbccb8c7 Update Turkish translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:25:24 -06:00
Sergey Tereschenko
c850786e43 Update Russian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:24:07 -06:00
Roman Kyrylych
3acc265f9d Update Unkranian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:20:41 -06:00
Giovanni Scafora
03a63e01a5 Update Italian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:17:50 -06:00
Matthias Gorissen
024012649f Update German translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:14:35 -06:00
Nagy Gabor
93d47ebbc0 Update Hungarian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:11:56 -06:00
甘露(Gan Lu)
c2dc05c065 Update Chinese translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 09:10:08 -06:00
Xavier Chantry
fb18679a00 Update French translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-01-03 11:49:06 +01:00
Juan Pablo González Tognarelli
792ee97645 Update Spanish translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:30:09 -06:00
Dan McGee
a30bf868ca Merge branch 'maint' 2009-01-03 00:18:22 -06:00
Allan McRae
1cc8ad6112 makepkg: Add support for specifying LDFLAGS
Provide support for specifying LDFLAGS within makepkg.conf but leaves
this undefined by default. Fixes FS#12542.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:17:15 -06:00
Allan McRae
8f26bb9052 makepkg: move BUILDSCRIPT from makepkg.conf
Commit 4b183bf9 moved makepkg.conf sourcing to after the parsing
of options, breaking the -p option and --help output.  The solution
is to move BUILDSCRIPT out of makepkg.conf.  This patch moves the
definition BUILDSCRIPT back to makepkg itself and adds configure
option to allow easy changing of this value during build time.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:13:54 -06:00
Allan McRae
9a7f68317a makepkg: Introduce purge option
The purge option, combined with the PURGE_TARGETS variable,
allows makepkg to automatically remove commonly confliting or
removed files (e.g. /usr/share/info/dir, *.pod).

Original work: Tim Yang
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:11:51 -06:00
Allan McRae
774c252753 makepkg: Add used options to PKGINFO file
Adds defined options to the PKGINFO file in the form of "makepkgopt =".
It may be useful to be able to add these to the pacman DB at some point
as that would allow (e.g.) checking which packages have had their docs
striped (FS#7092).

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:11:48 -06:00
Allan McRae
1b7ff7a636 makepkg: add fallback for when MAN_DIRS is unset
This prevents makepkg compressing every file when MAN_DIRS is not
supplied in makepkg.conf

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:08:42 -06:00
Allan McRae
bb9b19a6c4 makepkg: provide MAN_DIRS configuration variable
Provides a MAN_DIRS variable in makepkg.conf which can be used
to specify folders to look for manual (man and info) pages to be
compressed.  Useful for packages that install to /opt.  Also
clarifies that "zipman" means "zip manuals" and covers both man
and info pages.

Original work by: Tiago Pierezan Camargo <tcamargo at gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:06:51 -06:00
Allan McRae
b55f478042 libalpm: add PID to db.lck
This is the first step in being able to automatically remove phantom
lock files.

Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: fix compilation warnings]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-03 00:00:19 -06:00
Allan McRae
a73ad4f0e3 Separate local db directory creation and db write
Changelogs and install files were getting extracted into the local
db folder before it was manually created.  This created issues for
uses with 0077 umasks and was highlighted with the new sudo handling
of umasks (FS#12263).

This moves the local db creation to its own function which is called
before the start of package archive extraction.  Also, added a check
that the folder is actually created.

Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: rename to _alpm_db_prepare()]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 23:52:32 -06:00
Sterling Winter
b3169a5687 Log pacsave warnings to pacman.log
Pacman currently logs .pacnew warnings to pacman.log but a similar history
of .pacsave warnings isn't kept. The user should be able to search
pacman.log to discover when and where all .pac* files were created by
pacman.

Addresses FS#12531.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 23:40:20 -06:00
Dan McGee
e49adbea4c Add a .gitattributes file
This will make python diffs prettier.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:49:51 -06:00
Dan McGee
f8b689d48e Merge branch 'maint'
Conflicts:
	lib/libalpm/dload.c
	po/it.po
	scripts/makepkg.sh.in
2009-01-02 22:48:52 -06:00
Dan McGee
c31fcfd833 Add new po files in prep for 3.2.2 release
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:48 -06:00
Dan McGee
cb03817ee8 Small makefile update
Use the proper call for symlink creation

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:48 -06:00
Xavier Chantry
bd2de5cdf6 Fix asciidoc manpage creation.
As reported here, man pages could no longer be built :
http://archlinux.org/pipermail/pacman-dev/2008-December/007726.html

I found the explanation here :
http://www.methods.co.nz/asciidoc/source-highlight-filter.html

"If you use a2x(1) to generate PDF you need to include the --no-xmllint
option to suppress xmllint(1) checking — the programlisting language
attribute (required by the dblatex source highlighter) is not part of the
DocBook 4 specification (but it is in the newer DocBook 5 specification)."

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:47 -06:00
Allan McRae
2f59996c54 makepkg: detect incorrect usage of provides array
Using > or < in the provides array is wrong so make it cause an error.
Fixes FS#12540.

Also, use bash substitution rather than spawning new processes where
possible in the error checking.  Move split package detection to a
better position.

Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: backport to maint]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:47 -06:00
Allan McRae
f4651c49af makepkg: tidy version package tests
The use if "! -z" to check if a string is not null is not good practice
so replace with the "-n" option. Also use the AND comparison within one
test rather than on two separate tests.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:47 -06:00
Allan McRae
751d37e749 makepkg: quote all uses of BUILDSCRIPT
Allows specifying alternative build script with spaces in name

Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: backport some of the fixes to maint]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:46:37 -06:00
Allan McRae
08980fb4bc makepkg: Replace getopt with internal function
This will allow makepkg to work on systems like Mac OS X where the
default getopt is too old to properly handle long options.

The new parse_options function should replicate getopt's behaviour
completely.

Original work: Yun Zheng Hu <yunzheng.hu@gmail.com>
[Allan: Rewrite and bug fixes]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-01-02 22:17:24 -06:00
Dan McGee
cc7f3b705e Print proxy information when downloading
May help debug issues we come across with proxy behavior (e.g. those pesky
segfaults) as well as be informative to the user when things aren't working
quite right. Addresses FS#12396.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-10 19:45:15 -06:00
Dan McGee
89b0a76b3c Remove mention of -b from makepkg manpage
Fixes FS#12408.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-10 19:23:34 -06:00
Dan McGee
bd628274cc Merge branch 'maint' 2008-12-07 22:12:17 -06:00
Giovanni Scafora
9ae7eb1292 Update Italian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:11:43 -06:00
Dan McGee
818fae320f makepkg: ensure PKGBUILD does not contain CRLF characters
Do a simple check before sourcing the file to ensure we are a valid bash
script.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:11:37 -06:00
Allan McRae
69be73f68c makepkg: several small bits of tidying
1. Do not warn people about missing arch if they are using --ignorearch.

2. Remove unneed reference to bug report about using fakeroot as little
   as possible.  We want to do that, bug report of not.

3. Removes superfluous warning given when building as root. The user
   has already used the "--asroot" flag.

4. Move comment about skipping warning message to above where it occurs

5. Do not warn about skipping source retreval, integrety checks and
   extraction when using --repackage

6. Do not warn about skipping build when using --repackage

7. Move comment about fakeroot usage to above test condition

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:11:29 -06:00
Dan McGee
78cf32e194 Small documentation updates for clarity
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:09:24 -06:00
Dan McGee
59776ef306 makepkg: save and restore shell options before and after build()
Fix the issue uncovered by FS#12344. In this instance, the dotglob shopt was
being set in the build() function but never cleared, causing issues in the
remaining parts of the makepkg script.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:09:24 -06:00
Allan McRae
b373b1d16b contrib/pactree: fix option parsing
The option parsing was catching any "-d" in an argument so packages
with this in their name did not work.

Also removed commented code line that appears to be inserted during
testing.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-07 22:09:05 -06:00
Dan McGee
61c6552862 Merge branch 'maint'
Conflicts:
	lib/libalpm/dload.c
2008-12-02 22:15:02 -06:00
Allan McRae
a1f7c83dbf Add optdepends to PKGBUILD.proto
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-02 07:39:44 -06:00
Simo Leone
6d8a6aef09 Add flush after downloading message
When the output is going to a file, glibc seems to buffer way too much
making it hard to monitor progress while tailing a file.

Signed-off-by: Simo Leone <simo@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-12-02 07:39:32 -06:00
Dan McGee
b99bebc008 Add regex to delta code so we don't segfault when reading line
If the delta line doesn't match our regex, we won't go and process it,
possibly walking off the end of the string.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-11-30 17:17:00 -06:00
Nagy Gabor
a50b067470 Give an error message on alpm_db_register_sync() error
This patch slightly modifies pacman.c/_parseconfig():

See FS#12148. Now pacman prints the following error message in that case:
"error: could not register 'unstable' database (could not open database)"

I also added an error message for alpm_db_setserver() error.

I changed the "return(1);" scheme to "ret = 1; goto cleanup;" to make
sure that we free allocated memory and close open files.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-11-30 16:38:37 -06:00
Dan McGee
346139298b Simplify mercurial revision command
Not only does this require less sed-magic, it also fixes FS#12286 where
fetching the revision number fails if mercurial is in compact mode.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-11-30 16:07:06 -06:00
Dan McGee
f7192b5958 Minor code cleanups
Mostly noticed when compiling libalpm/pacman with ICC.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-11-17 21:47:55 -06:00
Dan McGee
9394f229a0 Merge branch 'maint' 2008-10-31 19:55:50 -05:00
Dan McGee
43f9eb1aa9 Set SIGPIPE handler to SIG_IGN when downloading
We don't want a failed write to kill our whole program when we are
downloading things, so set the SIGPIPE handler to ignore when downloading
and restore any previous signal handler when we complete the download.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-31 19:46:13 -05:00
Dan McGee
8d4e1e6754 Make libfetch the 'native' download library
Use libfetch naming in the code in place of libdownload names. This is in
preparation for dropping support for libdownload at some point as libfetch
can run on Linux.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-31 19:46:13 -05:00
Nagy Gabor
314b4462d2 -Qu rework
From now on -Qu is an "outdated package" filter on local database.
(This is a behaviour change.)

This patch fixes some memleaks and makes the code cleaner, for details see
my comment on FS#7884.

FS#11868 is implemented.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-31 19:46:13 -05:00
Allan McRae
c4b9991258 makepkg: actually fix passing PKGBUILD from pipe
If PKGBUILD (BUILDSCRIPT) is not found, test for information from a
pipe and use that.  Fixes FS#9187.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-31 19:46:13 -05:00
Dan McGee
2890114600 makepkg: fix bash substitution to work under older versions
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-31 18:59:19 -05:00
Allan McRae
8d33dcb81c makepkg: enable passing PKGBUILD from pipe
Do not attemp to update pkgver/pkgrel when reading a SCM based PKGBUILD
from a pipe.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-28 22:33:58 -05:00
Dan McGee
cd51abf0c8 Merge branch 'maint' 2008-10-28 22:20:09 -05:00
Xavier Chantry
2e431e1cc3 testdb : extend the tool to allow checking sync dbs too.
Example usage and output :

> src/util/testdb -h
usage:
testdb [-b <pacman db>]                : check the local database
testdb [-b <pacman db>] core extra ... : check the listed sync databases

> src/util/testdb
Checking the integrity of the local database in /var/lib/pacman/

> src/util/testdb core extra testing community
Checking the integrity of the sync databases in /var/lib/pacman/
missing dependency for archboot : bcm43xx-fwcutter>=006-2
missing dependency for xvattr : xfree86
missing dependency for eclipse-ve : eclipse<3.3
missing dependency for flumotion : twisted-web
missing dependency for gg2 : arts
missing dependency for man-pages-cs : groff-utf8
missing dependency for qc-usb : kernel26<2.6.26

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-28 22:18:53 -05:00
Dan McGee
a63aeed562 Give pacman-optimize a refresher
This patch addresses quite a few lingering issues in the pacman-optimize
script. FS#11767 provoked this look-over and the following issues were
noticed and fixed:

* If an alternate dbroot was specified, then the lockfile location was never
  updated to reflect it. The lockfile location is now set after all dbpath
  initialization.
* The inclusion of a trailing slash on dbroot was problematic and led to the
  following command being executed:
    bsdtar -xpf /tmp/pacman-optimize.p12Q4vAUWY/pacman-db.tar.gz \
	  -C /var/lib/pacman/.new/
  It is doubtful we meant to create a hidden directory like this below our
  database root, only to go and delete it a second later and then
  re-extract. Fix the whole thing by ensuring our dbpath has its trailing
  slash stripped and then appending it when necessary.
* The DB extraction was performed twice for no real apparent reason. This
  opens the door for extraction problems the second time around, leaving you
  with no original database to fall back to. Change the behavior so we only
  extract once, and then perform a directory shuffle once we verify the
  checksums are correct.
* Perform an explicit sync after we drop the new database on the disk. It
  should work better this way.
* Tighten up our check for a pacman lockfile and the time we create one.
  There is still a possible race condition but the window is shorter.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-28 22:18:22 -05:00
Lyman Li
2f5d792725 Update Chinese translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-28 22:06:34 -05:00
Allan McRae
1e656c0a6a makepkg: fix updating PKGBUILD when building SCM packages
Fixes a bug and resets pkgrel to 1 when bumping pkgver

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-28 21:46:40 -05:00
Dan McGee
50e3dc02bf repo-add: Use openssl instead of md5sum
This is similar to the change we made in makepkg so it is cross-platform
compatible and doesn't require coreutils.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-18 23:59:37 -05:00
Dan McGee
d1fec15d81 Correctly close the pipe used for scriptlet execution
We never had a call to pclose() in here before, leaving our file descriptor
in some sort of limbo state. In addition, clean up some of the other logic
such as directly calling exit(1) on a popen() failure rather than going to
our cleanup block, and handling and respecting the exit status of the
subprocess correctly.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-18 23:59:28 -05:00
Sergey Tereschenko
d24592cbcd Minor updates to Russian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 23:19:07 -05:00
Dan McGee
fa02a71abd Merge branch 'maint' 2008-10-12 21:36:45 -05:00
Dan McGee
91a013a879 makepkg: allow compression type to be autodetected
Inspired by commit 7e8f1469c4, use our given
PKGEXT or SRCEXT to determine what method of compression to use on the
package we create. If the extension is invalid, this should fall back to
creating a non-compressed tar file.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:36:40 -05:00
Dan McGee
f1f8f0e1c2 Quiet up the make process a bit
When we do our sed edits, we really don't need every command printed out to
the terminal. Now with "make -s", the output is quite palatable.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:36:30 -05:00
Dan McGee
30851a24ff Make interrupt handler async-safe
Calling printf() in a signal handler can be dangerous, so avoid it by
writing directly which is guaranteed to be safe according to signal(7).

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:35:30 -05:00
Dan McGee
f0e1846b51 Remove unnecessary unistd.h header inclusion
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:30:15 -05:00
Dan McGee
d7e502a467 Attempt to idiot-proof making and refreshing docs
I mess this up more often than not, and maybe this will do the trick. Remove
the --enable-asciidoc option as it has been superseded by the --disable-doc
option in usefulness. If you want to skip building docs, you skip building
all docs which is much easier when it comes to ensuring the make 'dist' and
'distcheck' targets will always build the manpages and always build the most
up to date manpages.

Developers shouldn't be affected in their normal builds, nor should end
users of the source tarball.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:29:33 -05:00
Dan McGee
927ce2b7a5 Rework fakechroot checking
Do the checks in the tests that need it, and get rid of some of the
cluttered output when it is not available (one line per test run).

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:29:04 -05:00
Dan McGee
ce3d70aa99 Reduce number of calls to getcols()
Every call to getcols() results in two ioctl() calls, which we really didn't
need as changing the number of columns in mid-print would be pretty crazy.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:28:05 -05:00
Dan McGee
f9be2334f7 libalpm: handle syscall interruption correctly
It is possible to throw EINTR from a system call such as open(), close(), or
waitpid() if custom signal handlers are set up and they are not initialized
with the SA_RESTART flag. This was noticed by Andreas Radke when ^C (SIGINT)
was given during the call to waitpid(), causing it to throw the EINTR error
and we could not accommodate it.

Simply wrap these calls in a simple loop that allows us to retry the call if
interrupted.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:28:05 -05:00
Dan McGee
18452a6c51 Ensure we don't have double slashes when creating frontend paths
Because libalpm always returns a root path with a trailing slash, when we
use it to create our unspecified paths we get double slashes in the result.
Use the fix suggested by Jürgen Hötzel to remedy this.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-10-12 21:27:52 -05:00
Dan McGee
da933c223e Remove unnecessary initialization in new functions
We don't need to zero things out, we are already using calloc for this
purpose.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-09-03 09:36:31 -05:00
Xavier Chantry
242e9e90f4 Another attempt at fixing totaldownload.
This fixes FS#11339, which is a regression of commit 89c2c5196:

When totaldownload is enabled, the database downloading percent (-Sy) is
always at 0. That is because we have no guarantee that the totaldownload
callback was called by libalpm. In particular, it is not called (and it
would not make sense to) when a single file is downloaded, like it is the
case with databases.

So the correct way to detect if totaldownload should be used is checking
both config->totaldownload and list_total, like it was already done in
several places in the cb_dl_progress function.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-09-02 09:38:01 -05:00
Xavier Chantry
95ea6fb3c1 Separate targets on -Qi/-Si with a newline.
This fixes FS#11331

The newline was lost with commit 9451b2e4f2.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2008-08-28 20:55:26 +02:00
Dan McGee
1c47500ea6 Merge branch 'maint' 2008-08-26 20:11:25 -05:00
Xavier Chantry
d05882db9e Rename alpm_db_get{pkg,grp}cache to alpm_db_get_{pkg,grp}cache
This is more consistent with the private functions :
_alpm_db_get_{pkg,grp}cache

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-25 18:10:03 -05:00
Xavier Chantry
0701356260 Change checkdeps and checkdbconflicts to be more flexible.
These two functions now take directly a package list rather than a database.

checkdbconflicts was renamed to checkconflicts.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2008-08-25 18:08:52 -05:00
Xavier Chantry
9dbe5c9d1e pacman : smarter optdepends handling.
During an upgrade, only the new optdepends will be displayed, to only keep
the useful information and not clutter pacman output too much.

The whole optdepends list is always available with -Si / -Qi.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-25 18:06:51 -05:00
Xavier Chantry
a06d0de104 makepkg.conf : some info / docs adjustements
After commit 7865fb9af4, info pages are now treated like man pages.
This means even with !docs, info pages will still be included. And including
info pages was the main reason the docs option was enabled by default
recently. So this is now longer needed, and we can revert back to !docs by
default for disabling gigantic html pages and other docs.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-25 18:05:25 -05:00
Dan McGee
a4100b3847 Merge branch 'maint' 2008-08-23 18:28:58 -05:00
Xavier Chantry
14203d77f4 Allow sync200 pactest to pass without libdownload.
This was a stupid and unimportant regression caused by commit
4476598e4e .

When libdownload is not available, a xfercommand is needed for this pactest
to run properly.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 18:01:45 -05:00
Henning Garus
ec928faad3 Add autotools magic for pactests
Added a Makefile.am for the pactest/tests dir. This is a blatant ripoff
of scripts/Makefile.am, which replaces predefined expressions in
NAME.py.in pactests with configure variables.
This can be used to write pactests which consider compile time options.

Signed-off-by: Henning Garus <henning.garus@gmail.com>
[Dan: autotools are tough, make a few adjustments for correctness]
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 18:00:37 -05:00
Xavier Chantry
4b183bf9a9 makepkg : add --config option for an alternate config file.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 17:46:56 -05:00
Xavier Chantry
7e8f1469c4 Remove DB_COMPRESSION and DB_CHECKSUMS from makepkg.conf
DB_COMPRESSION was only used in repo-add and DB_CHECKSUMS was not used
anywhere.
This also removes the dependency on makepkg.conf in repo-add, so repo-add no
longer needs to source makepkg.conf

And instead of DB_COMPRESSION, it seems better to just check the extension
of the repository file. It does not make sense to have a tar.gz file with a
tar.bz2 extension or whatever.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 17:39:58 -05:00
Dan McGee
496b687c3d makepkg: check all integrity sums found in the PKGBUILD
Currently we use the INTEGRITY_CHECK array from makepkg.conf to limit both
the integrity sums generated and checked. It doesn't make a whole lot of
sense to ignore integrity sums that are present in a PKGBUILD, so this patch
will enable checking any that are available, but will only print a warning
about missing sums for those types found in INTEGRITY_CHECK.

It also adds a slight optimization of checking for openssl- we only need to
check once now because we use the same program for all checks.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 10:19:17 -05:00
Nagy Gabor
baf5852555 Move -Sp implementation to the front-end
This patch kills one of our hackish pseudo transactions: PRINTURIS.
(The other one is -Sw)

From now on, front-end must not call trans_commit in case of -Sp,
it should print the uris of target packages "by hand" instead.

PRINTURIS flag was removed, NOCONFLICTS flag can be passed to skip
conflict checks.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:50:40 -05:00
Nagy Gabor
8146f6f1c6 New public alpm_pkg_get_db function
This function returns with the origin database of a package.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:44:47 -05:00
Xavier Chantry
adc4078b87 split yesno() into yesno() and noyes() functions.
The yesno function had a preset argument for specifying the default answer :
yes or no.

However, in all our calls to yesno, only one used the default "no" answer.
Having to specify preset==1 for all the other cases was rather cumbersome.

To make this easier, this commit adds a noyes function, with the following
behavior :
yesno() : default answer is yes
noyes() : default answer is no

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:22:34 -05:00
Allan McRae
7865fb9af4 Treat info pages like man pages
As far a package building is concerned, info pages need to be treated
in the same fashion as man pages in that they both can be compressed.
This separates them from other forms of documentation and so it makes
sense to make that distinction within makepkg.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:20:51 -05:00
Nagy Gabor
3ff7701e89 Pass the old package with PM_TRANS_EVT_UPGRADE_START
This is more rational and coherent with PM_TRANS_EVT_UPGRADE_DONE.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:20:32 -05:00
Dan McGee
b3033a59e9 pactest: remove need for pause when running tests
Instead of pausing 1.5 seconds on tests that check file mtimes, change the
mtimes to something in the far past so we can immediately tell if a file was
modified and/or touched. This saves a decent amount of time on the upgrade
tests which often check mtimes.

355 was a completely arbitrary time value, don't ask me why I picked it.

Signed-off-by: Dan McGee <dan@archlinux.org>
2008-08-23 09:20:32 -05:00
167 changed files with 15747 additions and 7185 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.py diff=python

View File

@@ -11,6 +11,6 @@ James Rosten <seinfeld90@gmail.com>
Roman Kyrylych <Roman.Kyrylych@gmail.com>
Andrew Fyfe <andrew@neptune-one.net>
Chantry Xavier <shiningxc@gmail.com>
Nagy Gabor <ngaba@petra.hos.u-szeged.hu>
Nagy Gabor <ngaba@bibl.u-szeged.hu>
Nathan Jones <nathanj@insightbb.com>
Allan McRae <mcrae_allan@hotmail.com>

13
INSTALL
View File

@@ -10,10 +10,19 @@ unlimited permission to copy, distribute and modify it.
Basic Installation
==================
You will need to build and install two libraries before you can
properly build pacman.
libarchive
http://code.google.com/p/libarchive/
libfetch
ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/net/libfetch/README.html
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
instructions are generic. Run `./configure --help` for specific
options.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses

View File

@@ -3,13 +3,16 @@ if WANT_DOC
SUBDIRS += doc
endif
# Make sure we test and build manpages when doing distcheck
DISTCHECK_CONFIGURE_FLAGS = --enable-doc --disable-git-version
# Some files automatically included, so they aren't specified below:
# AUTHORS, COPYING, NEWS, README
EXTRA_DIST = HACKING
# Sample makepkg prototype files
pkgdatadir = ${datadir}/${PACKAGE}
dist_pkgdata_DATA = PKGBUILD.proto proto.install ChangeLog.proto
dist_pkgdata_DATA = PKGBUILD.proto PKGBUILD-split.proto proto.install ChangeLog.proto
# run the pactest test suite and vercmp tests
check-local: pactest src/pacman src/util

55
NEWS
View File

@@ -1,5 +1,60 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
3.3.0 - xdelta: many fixes and improvements
- new pkgdelta script to create deltas
- repo-add can add both deltas and packages to a database
- xz archive format supported for packages and databases
- in case of unresolvable packages, pacman now asks
if they should be skipped instead of aborting
- -Suu synchronizes all packages with the version from the
repository (including upgrade and downgrade)
- replace libdownload dependency by the original libfetch
- better support of -q/--quiet flag with -Qo and -Ql
- -Sp works without root (FS#8905)
- fix a bug where the replacement of a package failed because
of a file conflict, and the package was lost (FS#9088)
- improved behavior of HoldPkg option (FS#9173)
- allow to ignore a package from a group (FS#12059)
- search package groups when searching a db (FS#13099)
- asciidoc fixes
- documentation updates
- repo-add: cleanups, improvements and speedup
- makepkg:
- package splitting support! - see PKGBUILD-split.proto
- limit fakeroot usage with addition of package() function
- info is handled like man pages and not other documentation
- configuration option for man/info page directories
- added ability to automatically remove files from package
- configuration option for default LDFLAGS
- specify alternative configuration file with --config flag
- check all integrity checksums provided in PKGBUILD
- fix pkgver/pkgrel updating in SCM packages
- BUILDSCRIPT option removed from makepkg.conf. Now specified
during configure
- enforce no ">" or "<" in provides array
- package compression autodetection
- check PKGBUILD for CRLF line endings
- fix reading PKGBUILD from pipe
- increase compatibility with BSDs & Mac OSX
- contrib
- pacdiff - improvements and new -l flag for using locate
- pacscripts - print install scripts for a package
3.2.2 - log pacsave warnings to pacman.log (FS#12531)
- separate local DB creation and writing (FS#12263)
- pacman-optimize: rewrite and refresh (FS#11767)
- repo-add: use openssl instead of md5sum
- simplify doc building process for ease of development
- ensure correct handling of syscall interruptions
- readd missing newline on -Qi/-Si output (FS#11331)
- fix TotalDownload regression (FS#11339)
- makepkg:
- replace getopt with an internal function
- detect incorrect usage of provides (FS#12540)
- fix bash substitution to work in older versions
- fix updating PKGBUILD and simplify logic for SCM packages
- save/restore shell options before/after build() (FS#12344)
- documentation updates and asciidoc build fix
- existing translation updates
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)

58
PKGBUILD-split.proto Normal file
View File

@@ -0,0 +1,58 @@
# This is an example of a PKGBUILD for splitting packages. Use this as a
# start to creating your own, and remove these comments. For more information,
# see 'man PKGBUILD'. NOTE: Please fill out the license field for your package!
# If it is unknown, then please put 'unknown'.
# Contributor: Your Name <youremail@domain.com>
pkgname=('pkg1' 'pkg2')
pkgbase=""
pkgver=VERSION
pkgrel=1
pkgdesc=""
arch=()
url=""
license=('GPL')
groups=()
depends=()
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
source=($pkgbase-$pkgver.tar.gz)
noextract=()
md5sums=() #generate with 'makepkg -g'
build() {
cd "$srcdir/$pkgbase-$pkgver"
./configure --prefix=/usr
make || return 1
}
package_pkg1() {
# options and directives that can be overridden
pkgdesc=""
license=()
groups=()
depends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
cd "$srcdir/$pkgbase-$pkgver"
make DESTDIR="$pkgdir/" install-pkg1
}
package_pkg2() {
# options and directives overrides
pkgdesc=""
cd "$srcdir/$pkgbase-$pkgver"
make DESTDIR="$pkgdir/" install-pkg2
}

View File

@@ -14,6 +14,7 @@ license=('GPL')
groups=()
depends=()
makedepends=()
optdepends=()
provides=()
conflicts=()
replaces=()

56
README
View File

@@ -51,13 +51,12 @@ library is initialized.
* logcb: The callback function for "log" operations.
* dlcb: The callback function for download progress of each package.
* fetchcb: Callback for custom download function.
* 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.
* nopassiveftp: Do not use passive FTP commands for ftp connections.
The following options also have `alpm_option_{add,remove}_*` functions, as the
@@ -70,7 +69,6 @@ alpm_option_{get,set}_noupgrades -> alpm_option_{add,remove}_noupgrade.
* noextracts: Files which will never be extracted at all (no .pacnew file)
* ignorepkgs: Packages to ignore when upgrading.
* 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:
@@ -246,3 +244,55 @@ API CHANGES BETWEEN 3.1 AND 3.2
- flags:
PM_TRANS_FLAG_ALLEXPLICIT, PM_TRANS_FLAG_UNNEEDED and
PM_TRANS_FLAG_RECURSEALL
API CHANGES BETWEEN 3.2 AND 3.3
===============================
[REMOVED]
- pmsyncpkg_t struct (pmpkg_t is used for all types of transaction targets):
- alpm_sync_get_pkg()
- alpm_sync_get_removes() (use alpm_pkg_get_removes() instead)
- HoldPkg handling (it is the front-end's task):
- alpm_option_get_holdpkgs()
- alpm_option_add_holdpkg()
- alpm_option_set_holdpkgs()
- alpm_option_remove_holdpkg()
- PM_TRANS_CONV_REMOVE_HOLDPKG conversation
- Print URIs feature (it is the front-end's task):
- flag: PM_TRANS_FLAG_PRINTURIS
- event: PM_TRANS_EVT_PRINTURI
- alpm_delta_get_from_md5sum() and alpm_delta_get_to_md5sum()
- alpm_sync_sysupgrade()
- error codes:
PM_ERR_TRANS_COMMITING, PM_ERR_TRANS_DOWNLOADING, PM_ERR_PKG_LOAD,
PM_ERR_PKG_CANT_FRESH, PM_ERR_GRP_NOT_FOUND, PM_ERR_USER_ABORT,
PM_ERR_INTERNAL_ERROR, PM_ERR_DB_SYNC, PM_ERR_PKG_HOLD and
PM_ERR_LIBDOWNLOAD
[CHANGED]
- XferCommand support was removed, any fetch callback function can be defined:
- alpm_option_get_xfercommand() and alpm_option_set_xfercommand() were removed
- alpm_option_get_fetchcb() and alpm_option_set_fetchcb() were added
- function renames:
- alpm_db_getpkgcache() -> alpm_db_get_pkgcache()
- alpm_db_getgrpcache() -> alpm_db_get_grpcache()
- alpm_dep_get_string() -> alpm_dep_compute_string()
- alpm_get_md5sum() -> alpm_compute_md5sum()
- alpm_checkdbconflicts() -> alpm_checkconflicts()
- alpm_trans_sysupgrade() has a new enable_downgrade parameter
- alpm_checkdeps() and alpm_checkconflicts() require local package list instead
of local database
- the to-be-upgraded package is passed to the callback function with
PM_TRANS_EVT_UPGRADE_START (as the second parameter)
- the "requiredby" package is never passed to the callback function with
PM_TRANS_CONV_INSTALL_IGNOREPKG (the second parameter is always NULL)
[ADDED]
- alpm_pkg_get_db()
- alpm_pkg_get_removes()
- conversation: PM_TRANS_CONV_REMOVE_PKGS (remove unresolvable targets)
- flag: PM_TRANS_FLAG_NOLOCK (do not lock database)
- error codes:
PM_ERR_SERVER_NONE, PM_ERR_TRANS_NOT_LOCKED, PM_ERR_PKG_IGNORED and
PM_ERR_LIBFETCH

View File

@@ -14,26 +14,30 @@ Czech (cs):
Vojtěch Gondžala <vojtech.gondzala@gmail.com>
German (de):
Matthias Gorissen <matthias@archlinux.de>
Benjamin Andresen <benny@in-ulm.de>
British English (en_GB):
Jeff Bailes <thepizzaking@gmail.com>
Spanish (es):
Juan Pablo González Tognarelli <jotapesan@gmail.com>
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>
Fernando Lagos <fernando@zerial.org>
French (fr):
Chantry Xavier <shiningxc@gmail.com>
Hungarian (hu):
Nagy Gabor <ngaba@bibl.u-szeged.hu>
Avramucz Péter <muczyjoe@gmail.com>
Italian (it):
Giovanni 'voidnull' Scafora <linuxmania@gmail.com>
Giovanni Scafora <giovanni@archlinux.org>
Kazakh (kk):
Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Polish (pl):
Mateusz Herych <heniekk@gmail.com>
Jaroslaw Swierczynski <swiergot@gmail.com>
Mateusz Jędrasik <m.jedrasik@gmail.com>
Brazilian Portuguese (pt_BR):
Hugo Doria <hugo@archlinux.org>
Armando M. Baratti <ambaratti@archlinux-br.org>
Leandro Inacio <leandro@archlinux-br.org>
Rodrigo Flores <flores@archlinux-br.org>
Marcelo Cavalcante <kalibslack@gmail.com>
Romanian (ro):
Volodia Macovei <blog@volodia.ro>
Russian (ru):
Sergey Tereschenko <serg.partizan@gmail.com>
Vitaly Dolgov <ferhiord@gmail.com>

View File

@@ -2,33 +2,36 @@
[ -f Makefile ] && make distclean
rm -rf autom4te.cache
rm -rf {Makefile.in,Makefile}
rm -rf {config.h.in,config.h}
rm -rf config.status
rm -rf configure
rm -rf stamp*
rm -rf aclocal.m4
rm -rf compile
rm -rf libtool
rm -f {Makefile.in,Makefile}
rm -f {config.h.in,config.h}
rm -f config.status
rm -f configure
rm -f stamp*
rm -f aclocal.m4
rm -f compile
rm -f libtool
rm -rf lib/libalpm/{Makefile.in,Makefile}
rm -rf src/util/{Makefile.in,Makefile}
rm -rf src/pacman/{Makefile.in,Makefile}
rm -rf scripts/{Makefile.in,Makefile}
rm -rf etc/{Makefile.in,Makefile}
rm -rf etc/pacman.d/{Makefile.in,Makefile}
rm -rf etc/abs/{Makefile.in,Makefile}
rm -rf pactest/{Makefile.in,Makefile}
rm -rf doc/{Makefile.in,Makefile}
rm -rf doc/html/*.html
rm -rf doc/man3/*.3
rm -f lib/libalpm/{Makefile.in,Makefile}
rm -f src/util/{Makefile.in,Makefile}
rm -f src/pacman/{Makefile.in,Makefile}
rm -f scripts/{Makefile.in,Makefile}
rm -f etc/{Makefile.in,Makefile}
rm -f etc/pacman.d/{Makefile.in,Makefile}
rm -f etc/abs/{Makefile.in,Makefile}
rm -f pactest{,/tests}/{Makefile.in,Makefile}
rm -f contrib/{Makefile.in,Makefile}
rm -f doc/{Makefile.in,Makefile}
rm -rf po/{Makefile.in,Makefile}
rm -rf po/POTFILES
rm -rf po/stamp-po
rm -rf po/*.gmo
rm -f pactest/*.pyc
rm -f doc/html/*.html
rm -f doc/man3/*.3
rm -rf lib/libalpm/po/{Makefile.in,Makefile}
rm -rf lib/libalpm/po/POTFILES
rm -rf lib/libalpm/po/stamp-po
rm -rf lib/libalpm/po/*.gmo
rm -f po/{Makefile.in,Makefile}
rm -f po/POTFILES
rm -f po/stamp-po
rm -f po/*.gmo
rm -f lib/libalpm/po/{Makefile.in,Makefile}
rm -f lib/libalpm/po/POTFILES
rm -f lib/libalpm/po/stamp-po
rm -f lib/libalpm/po/*.gmo

View File

@@ -43,11 +43,11 @@ AC_PREREQ(2.60)
m4_define([lib_current], [4])
m4_define([lib_revision], [0])
m4_define([lib_age], [1])
m4_define([lib_age], [0])
m4_define([pacman_version_major], [3])
m4_define([pacman_version_minor], [2])
m4_define([pacman_version_micro], [1])
m4_define([pacman_version_minor], [3])
m4_define([pacman_version_micro], [0])
m4_define([pacman_version],
[pacman_version_major.pacman_version_minor.pacman_version_micro])
@@ -88,9 +88,14 @@ AC_ARG_WITH(db-ext,
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
# Help line for buildscript filename
AC_ARG_WITH(buildscript,
AS_HELP_STRING([--with-buildscript=name], [set the build script name used by makepkg]),
[BUILDSCRIPT=$withval], [BUILDSCRIPT=PKGBUILD])
# Help line for libfetch
AC_ARG_ENABLE(internal-download,
AS_HELP_STRING([--disable-internal-download], [do not build with libdownload/libfetch support]),
AS_HELP_STRING([--disable-internal-download], [do not build with libfetch support]),
[internaldownload=$enableval], [internaldownload=yes])
# Help line for documentation
@@ -103,11 +108,6 @@ AC_ARG_ENABLE(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,
AS_HELP_STRING([--enable-asciidoc], [build your own manpages with Asciidoc]),
[wantasciidoc=$enableval], [wantasciidoc=no])
# Help line for debug
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug], [enable debugging support]),
@@ -126,7 +126,7 @@ AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_CHECK_PROGS([PYTHON], [python2.5 python2.4 python], [false])
AC_CHECK_PROGS([PYTHON], [python2.6 python2.5 python], [false])
# find installed gettext
AM_GNU_GETTEXT([external])
@@ -136,17 +136,14 @@ AM_GNU_GETTEXT_VERSION(0.13.1)
AC_CHECK_LIB([archive], [archive_read_data], ,
AC_MSG_ERROR([libarchive 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)
# Enable or disable usage of libfetch
AC_MSG_CHECKING(whether to link with libfetch)
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])) )
AC_CHECK_LIB([fetch], [fetchParseURL], ,
AC_MSG_ERROR([libfetch is needed to compile with internal download support]) )
else
AC_MSG_RESULT(no)
fi
@@ -183,9 +180,11 @@ GCC_GNU89_INLINE_CC
# Host-dependant definitions
SIZECMD="stat -c %s"
SEDINPLACE="sed -i"
case "${host_os}" in
*bsd*)
SIZECMD="stat -f %z"
SEDINPLACE="sed -i ''"
;;
cygwin*)
host_os_cygwin=yes
@@ -193,13 +192,15 @@ case "${host_os}" in
;;
darwin*)
host_os_darwin=yes
SIZECMD="stat -f %z"
SIZECMD="/usr/bin/stat -f %z"
SEDINPLACE="/usr/bin/sed -i ''"
;;
esac
AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes")
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
AC_SUBST(SIZECMD)
AC_SUBST(SEDINPLACE)
# Check for architecture, used in default makepkg.conf
# (Note single space left after CARCHFLAGS)
@@ -273,23 +274,6 @@ else
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
if test $ASCIIDOC ; then
AC_MSG_RESULT([yes])
useasciidoc=yes
else
AC_MSG_RESULT([no, asciidoc missing])
useasciidoc=no
fi
else
AC_MSG_RESULT([no, disabled by configure])
useasciidoc=no
fi
AM_CONDITIONAL(USE_ASCIIDOC, test "x$useasciidoc" = "xyes")
# Enable or disable debug code
AC_MSG_CHECKING(for debug mode request)
if test "x$debug" = "xyes" ; then
@@ -336,6 +320,9 @@ AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman sourc
# Set database file extension
AC_SUBST(DBEXT)
AC_DEFINE_UNQUOTED([DBEXT], "$DBEXT", [The file extension used by pacman databases])
# Set makepkg build script name
AC_SUBST(BUILDSCRIPT)
AC_DEFINE_UNQUOTED([BUILDSCRIPT], "$BUILDSCRIPT", [The build script name used by makepkg])
# Configuration files
AC_CONFIG_FILES([
@@ -348,6 +335,7 @@ doc/Makefile
etc/Makefile
po/Makefile.in
pactest/Makefile
pactest/tests/Makefile
contrib/Makefile
Makefile
])
@@ -372,6 +360,7 @@ ${PACKAGE_NAME}:
Architecture flags : ${CARCHFLAGS}
Host Type : ${CHOST}
Filesize command : ${SIZECMD}
In-place sed command : ${SEDINPLACE}
libalpm version : ${LIB_VERSION}
libalpm version info : ${LIB_VERSION_INFO}
@@ -383,12 +372,12 @@ ${PACKAGE_NAME}:
package extension : ${PKGEXT}
source pkg extension : ${SRCEXT}
database extension : ${DBEXT}
build script name : ${BUILDSCRIPT}
Compilation options:
Run make in doc/ dir : ${wantdoc}
Use download library : ${internaldownload}
Doxygen support : ${usedoxygen}
Asciidoc support : ${useasciidoc}
debug support : ${debug}
"

View File

@@ -5,6 +5,7 @@ EXTRA_DIST = \
gensync \
pacdiff \
paclist \
pacscripts \
pacsearch \
pactree \
updatesync \

View File

@@ -16,6 +16,9 @@ paclist - list all packages installed from a given repository. Useful for
seeing which packages you may have installed from the testing repository,
for instance.
pacscripts - tries to print out the {pre,post}_{install,remove,upgrade}
scripts of a given package.
pacsearch - a colorized search combining both -Ss and -Qs output. Installed
packages are easily identified with a *** and local-only packages are also
listed.

View File

@@ -183,6 +183,7 @@ _pacman ()
search) mod="${mod}s" ;;
upgrades) mod="${mod}u" ;;
cascade) mod="${mod}c" ;;
check) mod="${mod}k" ;;
dbonly) mod="${mod}k" ;;
nosave) mod="${mod}n" ;;
recursive) mod="${mod}s" ;;
@@ -294,6 +295,7 @@ _pacman ()
-g --groups \
-h --help \
-i --info \
-k --check \
-l --list \
-m --foreign \
-o --owns \

View File

@@ -2,7 +2,7 @@
#
# gensync
#
# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
# Copyright (c) 2002-2006 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
@@ -44,7 +44,7 @@ note: The <destfile> name is important. It must be of the form\n\
version() {
printf "gensync (pacman) %s\n" "$myver"
printf "\
Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
Copyright (C) 2002-2006 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"
}

View File

@@ -1,5 +1,5 @@
#!/bin/sh
# pacdiff : a simple pacnew/pacorig/pacsave updater for /etc/
#!/bin/bash
# pacdiff : a simple pacnew/pacorig/pacsave updater
#
# Copyright (c) 2007 Aaron Griffin <aaronmgriffin@gmail.com>
#
@@ -17,29 +17,60 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Original http://phraktured.net/config/bin/pacdiff
diffprog=${DIFFPROG:-vimdiff}
for x in $(find /etc/ -name "*.pacnew" -o -name "*.pacorig" -o -name "*.pacsave")
do
echo "File: ${x%.pac*}"
chk="$(cmp $x ${x%.pac*})"
if [ -z "${chk}" ]; then
echo " Files are identical, removing..."
rm $x
else
echo -n " File differences found. (V)iew, (S)kip, (R)emove: [v/s/r] "
read c
c="$(echo $c| tr A-Z a-z)" #tolower
if [ "$c" = "r" ]; then
rm $x
elif [ "$c" = "s" ]; then
continue
else
[ "$c" = "n" -o "$c" = "N" ] || $diffprog $x ${x%.pac*}
echo -n " Remove file? [Y/n] "
read c
[ "$c" = "n" -o "$c" = "N" ] || rm $x
fi
fi
done
locate=0
usage() {
echo "pacdiff : a simple pacnew/pacorig/pacsave updater"
echo "Usage : pacdiff [-l]"
echo "The -l/--locate flag makes pacdiff use locate rather than find"
}
cmd() {
if [ $locate -eq 1 ]; then
locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave
else
find /etc/ \( -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave \) -print0
fi
}
if [ $# -gt 0 ]; then
case $1 in
-l|--locate)
locate=1;;
*)
usage; exit 0;;
esac
fi
# see http://mywiki.wooledge.org/BashFAQ/020
while IFS= read -u 3 -r -d '' pacfile; do
file="${pacfile%.pac*}"
echo "File: $file"
if [ ! -f "$file" ]; then
echo " $file does not exist"
rm -i "$pacfile"
continue
fi
check="$(cmp "$pacfile" "$file")"
if [ -z "${check}" ]; then
echo " Files are identical, removing..."
rm "$pacfile"
else
echo -n " File differences found. (V)iew, (S)kip, (R)emove: [v/s/r] "
while read c; do
case $c in
r|R) rm "$pacfile"; break ;;
v|V)
$diffprog "$pacfile" "$file"
rm -i "$pacfile"; break ;;
s|S) break ;;
*) echo -n " Invalid answer. Try again: [v/s/r] "; continue ;;
esac
done
fi
done 3< <(cmd)
exit 0
# vim: set ts=2 sw=2 noet:

132
contrib/pacscripts Executable file
View File

@@ -0,0 +1,132 @@
#!/bin/bash
#
# pacscripts : tries to print out the {pre,post}_{install,remove,upgrade}
# scripts of a given package
#
# Copyright (c) 2009 Giulio "giulivo" Fidente <giulivo.navigante@gmail.com>
# Copyright (c) 2009 Xavier Chantry <shiningxc@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/>.
#
# bash options
set -o nounset
set -o errexit
progname=$(basename $0)
progver="0.4"
conf="/etc/pacman.conf"
if [ ! -r "$conf" ]; then
echo "ERROR: unable to read $conf"
exit 1
fi
eval $(awk '/DBPath/ {print $1$2$3}' "$conf")
eval $(awk '/CacheDir/ {print $1$2$3}' "$conf")
pac_db="${DBPath:-/var/lib/pacman}/local"
pac_cache="${CacheDir:-/var/cache/pacman/pkg}"
error() {
local mesg=$1; shift
printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2
}
usage() {
echo "This program prints out the {pre,post}_{install,remove,upgrade} scripts"
echo "of a given package."
echo "Usage: $progname pkgname|pkgfile"
echo
echo " OPTIONS:"
echo " -h, --help Print this help message"
echo " -v, --version Print program name and version"
echo
echo "Example: $progname gconf-editor"
echo "Example: $progname gconf-editor-2.24.1-1-x86_64.pkg.tar.gz"
}
spacman() {
if [ $EUID -eq 0 ]; then
pacman "$@"
else
if [ ! "$(type -p sudo)" ]; then
error "Cannot find the sudo binary! Is sudo installed?"
error "Otherwise try to run the program as root"
exit 1
else
sudo pacman "$@"
fi
fi
}
print_db() {
pkg=$(pacman -Q "$1")
pkg=${pkg/ /-}
if [ -f $pac_db/$pkg*/install ]; then
cat $pac_db/$pkg*/install
echo
return 0
else
error "Package $1 does not include any .INSTALL script"
return 1
fi
}
print_pkg() {
if ! bsdtar -xOf "$1" .INSTALL 2>/dev/null; then
error "Package $1 does not include any .INSTALL script"
return 1
fi
echo
}
print_scriptlet() {
if [ -f "$1" ]; then
if bsdtar tf "$1" .PKGINFO &>/dev/null; then
print_pkg "$1"
return
fi
fi
if pacman -Q "$1" &>/dev/null; then
print_db "$1"
return
fi
if ! pacman -Si $1 &>/dev/null; then
error "Package $1 not found"
return 1
fi
url=$(spacman -Sdp $1 | tail -n1)
filename=$(basename $url)
if [ ! -f "$pac_cache/$filename" ]; then
if ! spacman -Sdw --noconfirm $1 >&2; then
error "Failed to download $1"
return 1
fi
echo >&2
fi
print_pkg "$pac_cache/$filename"
return
}
if [ $# -ne 1 ] ; then
usage
exit 1
fi
case "$1" in
--help|-h) usage; exit 0 ;;
--version|-v) echo "$progname version $progver"; exit 0 ;;
*) print_scriptlet $1 ;;
esac

View File

@@ -208,11 +208,10 @@ for (( n=0 ; n < $len_options ; n++ )); do
continue
fi
if [[ "${options[$n]}" =~ -d[[:digit:]]* || "${options[$n]}" == "--depth" ]]; then
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))

View File

@@ -50,6 +50,7 @@ _pacman_opts_query_modifiers=(
'-e[List packages explicitly installed]'
'-i[View package information]'
'-ii[View package information including backup files]'
'-k[Check package files]'
'-l[List package contents]'
'-m[List installed packages not found in sync db(s)]'
'-t[List packages not required by any package]'

2
doc/.gitignore vendored
View File

@@ -6,5 +6,7 @@ pacman.8
pacman.conf.5
repo-add.8
repo-remove.8
*.css
*.html
*.xml
man3

View File

@@ -14,7 +14,26 @@ ASCIIDOC_MANS = \
DOXYGEN_MANS = $(wildcard man3/*.3)
HTML_MANPAGES = \
pacman.8.html \
makepkg.8.html \
repo-add.8.html \
PKGBUILD.5.html \
makepkg.conf.5.html \
pacman.conf.5.html \
libalpm.3.html
HTML_OTHER = \
index.html \
submitting-patches.html \
translation-help.html
HTML_DOCS = \
$(HTML_MANPAGES) \
$(HTML_OTHER)
EXTRA_DIST = \
asciidoc.conf \
pacman.8.txt \
makepkg.8.txt \
repo-add.8.txt \
@@ -24,13 +43,20 @@ EXTRA_DIST = \
pacman.conf.5.txt \
libalpm.3.txt \
footer.txt \
index.txt \
submitting-patches.txt \
translation-help.txt \
Doxyfile \
$(ASCIIDOC_MANS) \
$(DOXYGEN_MANS)
# Files that should be removed, but which Automake does not know.
MOSTLYCLEANFILES = *.xml
MAINTAINERCLEANFILES = $(ASCIIDOC_MANS)
MOSTLYCLEANFILES = *.xml $(ASCIIDOC_MANS) $(HTML_DOCS) repo-remove.8
# Ensure manpages are fresh when building a dist tarball
dist-hook:
$(MAKE) $(AM_MAKEFLAGS) clean
$(MAKE) $(AM_MAKEFLAGS) all
if USE_GIT_VERSION
GIT_VERSION := $(shell sh -c 'git describe --abbrev=4 | sed s/^v//')-dirty
@@ -39,46 +65,58 @@ else
REAL_PACKAGE_VERSION = $(PACKAGE_VERSION)
endif
man_MANS =
dist_man_MANS = $(ASCIIDOC_MANS) repo-remove.8
if USE_DOXYGEN
man_MANS += $(DOXYGEN_MANS)
all: doxygen.in
all-local: doxygen.in
doxygen.in:
$(DOXYGEN) $(srcdir)/Doxyfile
endif
if USE_ASCIIDOC
html: $(HTML_DOCS)
ASCIIDOC_OPTS = \
-f asciidoc.conf \
-a pacman_version="$(REAL_PACKAGE_VERSION)" \
-a pacman_date="`date +%Y-%m-%d`" \
-a sysconfdir=$(sysconfdir)
A2X_OPTS = \
--no-xmllint \
-d manpage \
-f manpage \
--xsltproc-opts='-param man.endnotes.list.enabled 0' \
--xsltproc-opts='-param man.endnotes.are.numbered 0'
$(ASCIIDOC_MANS):
a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.txt
# These rules are due to the includes and files of the asciidoc text
$(ASCIIDOC_MANS): asciidoc.conf footer.txt
pacman.8: pacman.8.txt
makepkg.8: makepkg.8.txt
repo-add.8: repo-add.8.txt
PKGBUILD.5: PKGBUILD.5.txt PKGBUILD-example.txt
makepkg.conf.5: makepkg.conf.5.txt
pacman.conf.5: pacman.conf.5.txt
libalpm.3: libalpm.3.txt
a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.txt
%.html: %.txt
asciidoc $(ASCIIDOC_OPTS) -a linkcss $*.txt
dos2unix $@
# Customizations for certain HTML docs
$(HTML_MANPAGES): asciidoc.conf footer.txt
$(HTML_OTHER): asciidoc.conf
%.8.html: ASCIIDOC_OPTS += -d manpage
%.5.html: ASCIIDOC_OPTS += -d manpage
%.3.html: ASCIIDOC_OPTS += -d manpage
# Dependency rules
pacman.8 pacman.8.html: pacman.8.txt
makepkg.8 makepkg.8.html: makepkg.8.txt
repo-add.8 repo-add.8.html: repo-add.8.txt
PKGBUILD.5 PKGBUILD.5.html: PKGBUILD.5.txt PKGBUILD-example.txt
makepkg.conf.5 makepkg.conf.5.html: makepkg.conf.5.txt
pacman.conf.5 pacman.conf.5.html: pacman.conf.5.txt
libalpm.3 libalpm.3.html: libalpm.3.txt
# this one is just a symlink
repo-remove.8: repo-add.8
ln -s repo-add.8 repo-remove.8
endif
rm -f repo-remove.8
$(LN_S) repo-add.8 repo-remove.8
# vim:set ts=2 sw=2 noet:

View File

@@ -4,7 +4,7 @@ pkgname=patch
pkgver=2.5.4
pkgrel=3
pkgdesc="A utility to apply patch files to original sources"
arch=(i686 x86_64)
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/patch/patch.html"
license=('GPL')
groups=('base-devel')

View File

@@ -65,19 +65,19 @@ similar to `$_basekernver`.
This field specifies the license(s) that apply to the package.
Commonly-used licenses are found in '/usr/share/licenses/common'. If you
see the package's license there, simply reference it in the license
field (e.g. `$$license=('GPL')$$`). If the package provides a license not
field (e.g. `license=('GPL')`). If the package provides a license not
found in '/usr/share/licenses/common', then you should include the license
in the package itself and set `$$license=('custom')$$` or
`$$license=('custom:LicenseName')$$`. The license should be placed in
in the package itself and set `license=('custom')` or
`license=('custom:LicenseName')`. The license should be placed in
'$pkgdir/usr/share/licenses/$pkgname' when building the package. If
multiple licenses are applicable for a package, list all of them:
`$$license=('GPL' 'FDL')$$`.
`license=('GPL' 'FDL')`.
*install*::
Specifies a special install script that is to be included in the package.
This file should reside in the same directory as the PKGBUILD, and will
be copied into the package by makepkg. It does not need to be included
in the source array (e.g. `$$install=pkgname.install$$`).
in the source array (e.g. `install=pkgname.install`).
*source (array)*::
An array of source files required to build the package. Source files
@@ -90,7 +90,7 @@ similar to `$_basekernver`.
+
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')`
name. The syntax is: `source=('filename::url')`.
*noextract (array)*::
An array of filenames corresponding to those from the source array. Files
@@ -118,7 +118,7 @@ name. The syntax is: `source=('filename::url')`
*arch (array)*::
Defines on which architectures the given package is available (e.g.
`$$arch=('i686' 'x86_64')$$`).
`arch=('i686' 'x86_64')`).
*backup (array)*::
A space-delimited array of filenames, without preceding slashes, that
@@ -140,11 +140,11 @@ name. The syntax is: `source=('filename::url')`
depends.
*optdepends (array)*::
An array of optional packages (and accompanying reasons) that are not
essential to the package, but would offer increased functionality or other
features when installed. optdepends are currently for informational
purposes only and are not utilized by pacman during dependency resolution.
The format should be similar to the following:
An array of packages (and accompanying reasons) that are not essential for
base functionality, but may be necessary to make full use of the contents
of this package. optdepends are currently for informational purposes only
and are not utilized by pacman during dependency resolution. The format
should be similar to the following:
optdepends=('fakeroot: for makepkg usage as normal user')
@@ -160,7 +160,9 @@ name. The syntax is: `source=('filename::url')`
depend on 'cron' rather than 'dcron OR fcron'.
Versioned provisions are also possible, in the 'name=version' format.
For example, dcron can provide 'cron=2.0' to satisfy the 'cron>=2.0'
dependency of other packages.
dependency of other packages. Provisions involving the '>' and '<'
operators are invalid as only specific versions of a package may be
provided.
*replaces (array)*::
An array of packages that this package should replace, and can be used
@@ -185,8 +187,8 @@ name. The syntax is: `source=('filename::url')`
disable this option.
*docs*;;
Save doc and info directories. If you wish to delete doc and
info directories, specify `!docs` in the array.
Save doc directories. If you wish to delete doc directories,
specify `!docs` in the array.
*libtool*;;
Leave libtool (.la) files in packages. Specify `!libtool` to
@@ -196,7 +198,7 @@ name. The syntax is: `source=('filename::url')`
Leave empty directories in packages.
*zipman*;;
Compress man pages with gzip.
Compress man and info pages with gzip.
*ccache*;;
Allow the use of ccache during build. More useful in its negative
@@ -219,7 +221,7 @@ name. The syntax is: `source=('filename::url')`
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). See linkman:pacman[8] for
more infomation on version comparisons.
more information on version comparisons.
build() Function
@@ -236,24 +238,47 @@ 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.
files.
*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.
package() Function
------------------
An optional package() function can be specified in addition to the build() function.
This function is run immediately after the build() function. When specified in
combination with the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot
usage will be limited to running the packaging stage. The build() function will be
run as the user calling makepkg.
Package Splitting
-----------------
makepkg supports building multiple packages from a single PKGBUILD. This is achieved
by assigning an array of package names to the `pkgname` directive. Each split package
uses a corresponding packaging function with name `package_foo()`, where `foo` is the
name of the split package.
All options and directives for the split packages default to the global values given
within the PKGBUILD. However, some of these can be overridden within each split
package's packaging function. The following variables can be overridden: `pkgdesc`,
`license`, `groups`, `depends`, `optdepends`, `provides`, `conflicts`, `replaces`,
`backup`, `options` and `install`.
An optional global directive is available when building a split package:
*pkgbase*::
The name used to refer to the group of packages in the output of makepkg
and in the naming of source-only tarballs. If not specified, the first
element in the `pkgname` array is used.
Install/Upgrade/Remove Scripting
--------------------------------
Pacman has the ability to store and execute a package-specific script when it
@@ -367,11 +392,10 @@ The following is an example PKGBUILD for the 'patch' package. For more
examples, look through the build files of your distribution's packages. For
those using Arch Linux, consult the ABS tree.
[sh]
source~~~~~
[source,sh]
-------------------------------
include::PKGBUILD-example.txt[]
source~~~~~
-------------------------------
See Also
--------

View File

@@ -8,7 +8,11 @@
# Show man link as: <command>(<section>); if section is defined, else just show
# the command.
[macros]
(?su)[\\]?(?P<name>linkman):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=
[attributes]
asterisk=&#42;
plus=&#43;
caret=&#94;
startsb=&#91;
@@ -30,13 +34,7 @@ ifndef::docbook-xsl-172[]
[listingblock]
<example><title>{title}</title>
<literallayout>
ifdef::doctype-manpage[]
&#10;.ft C&#10;
endif::doctype-manpage[]
|
ifdef::doctype-manpage[]
&#10;.ft&#10;
endif::doctype-manpage[]
</literallayout>
{title#}</example>
endif::docbook-xsl-172[]

195
doc/index.txt Normal file
View File

@@ -0,0 +1,195 @@
Pacman Home Page
================
A simple library-based package manager.
Introduction
------------
pacman is a utility which manages software packages in Linux. It uses simple
compressed files as a package format, and maintains a text-based package
database (more of a hierarchy), just in case some hand tweaking is necessary.
pacman does not strive to "do everything." It will add, remove and upgrade
packages in the system, and it will allow you to query the package database for
installed packages, files and owners. It also attempts to handle dependencies
automatically and can download packages from a remote server.
History
~~~~~~~
Version 2.0 of pacman introduced the ability to sync packages (the `--sync`
option) with a master server through the use of package databases. Prior to
this, packages would have to be installed manually using the `--add` and
`--upgrade` operations.
Version 3.0 was the switch to a two-part pacman- a backend named libalpm
(library for Arch Linux Package Management), and the familiar pacman frontend.
Speed in many cases was improved, along with dependency and conflict resolution
being able to handle a much wider variety of cases. The switch to a
library-based program should also make it easier in the future to develop
alternative front ends.
Documentation
-------------
Manpages
~~~~~~~~
There are several manpages available for the programs, utilities, and
configuration files dealing with pacman.
* linkman:PKGBUILD[5]
* linkman:libalpm[3]
* linkman:makepkg[8]
* linkman:makepkg.conf[5]
* linkman:pacman[8]
* linkman:pacman.conf[5]
* linkman:repo-add[8]
Changelog
~~~~~~~~~
For a good idea of what is going on in pacman development, take a look at the
link:http://projects.archlinux.org/?p=pacman.git[Gitweb] summary
page for the project.
See the most recent
link:http://projects.archlinux.org/?p=pacman.git;a=blob_plain;f=NEWS;hb=HEAD[NEWS]
file for a not-as-frequently-updated list of changes. However, this should
contain the biggest changes in a format more concise than the commit log.
Releases
--------
`------------`-------
Date Version
---------------------
2009-01-05 v3.2.2
2008-08-26 v3.2.1
2008-07-30 v3.2.0
2008-04-01 v3.1.4
2008-03-06 v3.1.3
2008-02-20 v3.1.2
2008-01-20 v3.1.1
2008-01-09 v3.1.0
2007-09-16 v3.0.6
2007-06-17 v3.0.5
2007-05-08 v3.0.4
2007-04-28 v3.0.3
2007-04-23 v3.0.2
2007-04-04 v3.0.1
2007-03-25 v3.0.0
2006-02-02 v2.9.8
2005-09-16 v2.9.7
2005-06-10 v2.9.6
2005-01-11 v2.9.5
2004-12-19 v2.9.4
2004-12-18 v2.9.3
2004-09-25 v2.9.2
2004-09-24 v2.9.1
2004-09-18 v2.9
---------------------
Source code for all releases is available at
link:ftp://ftp.archlinux.org/other/pacman/[]. To install, download the newest
available source tarball, unpack it in a directory, and run the three magic
commands:
$ ./configure
$ make
# make install
You may wish to read the options presented by `./configure --help` in order to
set appropriate paths and build options that are correct for your system.
Development
-----------
Mailing List
~~~~~~~~~~~~
There is a mailing list devoted to pacman development, hosted by Arch Linux.
link:http://www.archlinux.org/mailman/listinfo/pacman-dev/[Subscribe] or
link:http://www.archlinux.org/pipermail/pacman-dev/[view the archives].
Source Code
~~~~~~~~~~~
Development of pacman is currently done in GIT. The central repository is
hosted by Arch Linux, although some of the developers have their own trees (ask
on the above mailing lists if you are interested in finding the locations of
these trees).
The current development tree can be fetched with the following command:
git clone git://projects.archlinux.org/pacman.git pacman
which will fetch the full development history into a directory named pacman.
You can browse the source as well using
link:http://projects.archlinux.org/?p=pacman.git[Gitweb].
If you are interested in hacking on pacman, it is highly recommended you join
the mailing list mentioned above, as well as take a quick glance at our
link:HACKING.html[HACKING] document.
link:submitting-patches.html[submitting-patches] is also a recommended read.
Not as familiar with code as you'd like to be, but still want to help out? If
you speak a foreign language, you can help by either creating or updating a
translation file for your native language. Instructions can be found in
link:translation-help.html[translation-help].
Other Utilities
~~~~~~~~~~~~~~~
Although the package manager itself is quite simple, many scripts have been
developed that help automate building and installing packages. These are used
extensively in link:http://archlinux.org[Arch Linux]. Most of these utilities
are available in the Arch Linux projects
link:http://projects.archlinux.org/[Gitweb browser].
Utilities available:
* link:http://projects.archlinux.org/?p=abs.git[abs] - ABS (Arch Build System), scripts to download & use the Arch Linux PKGBUILD tree
* link:http://projects.archlinux.org/?p=devtools.git[devtools] - tools to assist in packaging and dependency checking
* link:http://projects.archlinux.org/?p=namcap.git[namcap] - a package analysis utility written in python
* link:http://projects.archlinux.org/?p=pacbuild.git[pacbuild] - a package building system utilizing a daemon
* link:http://projects.archlinux.org/?p=srcpac.git[srcpac] - a bash build-from-source pacman wrapper
Bugs
----
If you find bugs (which is quite likely), please email them to the pacman-dev
mailing last at mailto:pacman-dev@archlinux.org[] with specific information
such as your commandline, the nature of the bug, and even the package database
if it helps.
You can also post a bug to the Archlinux bug tracker
link:http://bugs.archlinux.org/index.php?project=3[Flyspray]. Be sure to file
bugs under the Pacman project.
Pacman/libalpm in the Wild
--------------------------
Although Arch Linux is the primary user of pacman and libalpm, other
distributions and projects also use pacman as a package management tool. In
addition, there have been several projects started to provide a frontend GUI to
pacman and/or libalpm.
Arch derivatives:
* link:http://archie.dotsrc.org/[Archie] - Arch Live on steroids
* link:http://www.faunos.com/[FaunOS] - A portable, fully integrated operating system based on Arch Linux
* link:http://larch.berlios.de/[larch] - A live CD/DVD/USB-stick construction kit for Arch Linux
Other distributions:
* link:http://www.delilinux.org/[DeLi Linux] - "Desktop Light" Linux, a Linux distribution for old computers
* link:http://www.frugalware.org/[Frugalware Linux] - A general purpose Linux distribution for intermediate users (pacman is forked and maintained separately)
Pacman/libalpm frontends:
* link:http://shaman.iskrembilen.com/[Shaman] - A GUI frontend using Qt and libalpm
Copyright
---------
pacman is Copyright (C) 2006-2009 Pacman Development Team
<pacman-dev@archlinux.org> and Copyright (C) 2002-2006 Judd Vinet
<jvinet@zeroflux.org> and is licensed through the GNU General Public License,
version 2 or later.
/////
vim: set ts=2 sw=2 syntax=asciidoc et:
/////

View File

@@ -43,7 +43,7 @@ Options
*-A, \--ignorearch*::
Ignore a missing or incomplete arch field in the build script. This is
for rebuilding packages from source when the PKGBUILD may be slightly
outdated and not updated with an `$$arch=('yourarch')$$` field.
outdated and not updated with an `arch=('yourarch')` field.
*-c, \--clean*::
Clean up leftover work files and directories after a successful build.
@@ -52,6 +52,9 @@ Options
Removes all cached source files from the directory specified in `SRCDEST`
in linkman:makepkg.conf[5].
*--config* <`/path/to/config`>::
Use an alternate config file instead of the `/etc/makepkg.conf` default;
*-d, \--nodeps*::
Do not perform any dependency checks. This will let you override and
ignore any dependencies required. There is a good chance this option
@@ -116,12 +119,12 @@ Options
*-r, \--rmdeps*::
Upon successful build, remove any dependencies installed by makepkg
during dependency auto-resolution (using `-b` or `-s`).
during dependency auto-resolution and installation when using `-s`.
*-R, \--repackage*::
Repackage contents of pkg/ without rebuilding the package. This is
useful if you forgot a depend or install file in your PKGBUILD and the
build itself will not change.
Repackage contents of the package without rebuilding the package. This
is useful if you forgot a depend or install file in your PKGBUILD and
the build itself will not change.
*-s, \--syncdeps*::
Install missing dependencies using pacman. When build-time or run-time

View File

@@ -61,11 +61,16 @@ Options
**CXXFLAGS=**"cxxflags"::
Flags used for the C++ compiler; see CFLAGS for more info.
**LDFLAGS=**"ldflags"::
Flags used for the linker. Several options may be specified with common
usage resembling ``-Wl,--hash-style=gnu''. Read ld(1) for more details on
available linker flags.
**MAKEFLAGS=**"makeflags"::
This is often used to set the number of jobs used, for example, `-j2`.
Other flags that make accepts can also be passed.
**BUILDENV=(**fakeroot !distcc color !ccache !xdelta**)**::
**BUILDENV=(**fakeroot !distcc color !ccache**)**::
This array contains options that affect the build environment, 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
@@ -88,17 +93,12 @@ Options
be disabled for individual packages by placing `!ccache` in the
PKGBUILD options array.
*xdelta*;;
Generate an xdelta binary patch from previous to current package. The
previous package must be available in the makepkg cache directory for
this to occur.
**DISTCC_HOSTS=**"host1 ..."::
If using DistCC, this is used to specify a space-delimited list of hosts
running in the DistCC cluster. In addition, you will want to modify your
`MAKEFLAGS`.
**OPTIONS=(**strip docs libtool emptydirs zipman**)**::
**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
@@ -111,37 +111,55 @@ Options
option.
*docs*;;
Save doc and info directories. If you wish to delete doc and info
directories, specify `!docs' in the array.
Save doc directories. If you wish to delete doc directories, specify
`!docs` in the array. The directories affected are specified by the
`DOC_DIRS` variable.
*libtool*;;
Leave libtool (.la) files in packages. Specify `!libtool' to remove
Leave libtool (.la) files in packages. Specify `!libtool` to remove
them.
*emptydirs*;;
Leave empty directories in packages.
*zipman*;;
Compress man pages with gzip.
Compress manual (man and info) pages with gzip. The directories
affected are specified by the `MAN_DIRS` variable.
*purge*;;
Remove files specified by the `PURGE_TARGETS` variable from the
package.
**INTEGRITY_CHECK=(**check1 ...**)**::
File integrity checks to use. Multiple checks may be specified; this
affects both generation and checking. The current valid options are:
`md5`, `sha1`, `sha256`, `sha384`, and `sha512`.
**DOC_DIRS=(**usr/{,share/}{info,doc} ...**)**::
If "!docs" is specified in the OPTIONS array, this variable will
**MAN_DIRS=(**{usr{,/local}{,/share},opt/*}/{man,info} ...**)**::
If `zipman` is specified in the OPTIONS array, this variable will
instruct makepkg where to look to compress manual (man and info)
pages. 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.
**DOC_DIRS=(**usr/{,share/}{doc,gtk-doc} ...**)**::
If `!docs` is specified in the OPTIONS array, this variable will
instruct makepkg where to look to remove docs. 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.
**STRIP_DIRS=(**bin lib sbin usr/{bin,lib} ...**)**::
If "strip" is specified in the OPTIONS array, this variable will
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.
**PURGE_TARGETS=(**usr/{,share}/info/dir .podlist *.pod...**)**::
If `purge` is specified in the OPTIONS array, this variable will
instruct makepkg which files to remove from the package. This is
useful for index files that are added by multiple packages.
**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
@@ -153,11 +171,11 @@ Options
in the current directory. Many people like to keep all source files in
a central location for easy cleanup, so this path can be set here.
**PACKAGER=**"John Doe <john@doe.com>"::
**PACKAGER=**"John Doe <john@example.com>"::
This value is used when querying a package to see who was the builder.
It is recommended you change this to your name and email address.
*BUILDSCRIPT*, *PKGEXT*, *SRCEXT*, *DB_COMPRESSION*, *DB_CHECKSUMS*::
*PKGEXT*, *SRCEXT*::
Do not touch these unless you know what you are doing.

View File

@@ -22,8 +22,8 @@ hooks, and the ability to sync your local machine with a remote ftp server to
automatically upgrade packages. Pacman packages are a zipped tar format.
Since version 3.0.0, pacman has been the frontend to linkman:libalpm[3], the
"Arch Linux Package Management" library. This library allows alternative front
ends to be written (for instance, a GUI front end).
``Arch Linux Package Management'' library. This library allows alternative
front ends to be written (for instance, a GUI front end).
Operations
@@ -33,10 +33,13 @@ Operations
packages and their files, as well as meta-information about individual
packages (dependencies, conflicts, install date, build date, size). This
can be run against the local package database or can be used on
individual '.tar.gz' packages. See <<QO,Query Options>> below.
individual '.tar.gz' packages. In the first case, if no package names
are provided in the command line, all installed packages will be
queried. Additionally, various filters can be applied on the package
list. See <<QO,Query Options>> below.
*-R, \--remove*::
Remove a package from the system. Groups can also be specified to be
Remove package(s) from the system. Groups can also be specified to be
removed, in which case every package in that group will be removed.
Files belonging to the specified package will be deleted, and the
database will be updated. Most configuration files will be saved
@@ -71,9 +74,16 @@ to determine which packages need upgrading. This behavior operates as follows:
Numeric:
1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0
*-T, \--deptest*::
Check dependencies; this is useful in scripts such as makepkg to check
installed packages. This operation will check each dependency specified and
return a list of those which are not currently satisfied on the system.
This operation accepts no other options. Example usage: `pacman -T qt
"bash>=3.2"`.
*-U, \--upgrade*::
Upgrade or add a package to the system. Either a URL or file path can be
specified. This is a "remove-then-add" process. See <<HCF,Handling Config
Upgrade or add package(s) to the system. Either a URL or file path can be
specified. This is a ``remove-then-add'' process. See <<HCF,Handling Config
Files>> for an explanation on how pacman takes care of config files.
*-V, \--version*::
@@ -124,9 +134,13 @@ Options
command line or in linkman:pacman.conf[5], their default location will
be inside this root path.
*-v, --verbose*::
*-v, \--verbose*::
Output paths such as as the Root, Conf File, DB Path, Cache Dirs, etc.
*\--debug*::
Display debug messages. When reporting bugs, this option is recommended
to be used.
*\--cachedir* <'dir'>::
Specify an alternative package cache location (a typical default is
``/var/cache/pacman/pkg''). Multiple cache directories can be specified,
@@ -141,7 +155,7 @@ Options
the installation root setting.
*\--noconfirm*::
Bypass any and all "Are you sure?" messages. It's not a good idea to do
Bypass any and all ``Are you sure?'' messages. It's not a good idea to do
this unless you want to run pacman from a script.
*\--noprogressbar*::
@@ -160,16 +174,17 @@ Query Options[[QO]]
it will be shown if available.
*-d, \--deps*::
List all packages installed as dependencies. This option can be combined
with '-t' for listing real orphans- packages that were installed as
dependencies but are no longer required by any installed package. ('-Qdt'
is equivalent to the pacman 3.0.X '-Qe' option.)
Restrict or filter output to packages installed as dependencies. This
option can be combined with '-t' for listing real orphans- packages that
were installed as dependencies but are no longer required by any
installed package. ('-Qdt' is equivalent to the pacman 3.0.X '-Qe'
option.)
*-e, \--explicit*::
List all packages explicitly installed. This option can be combined with
'-t' to list top-level packages- those packages that were explicitly
installed but are not required by any other package. ('-Qet' is equivalent
to the pacman 2.9.X '-Qe' option.)
Restrict or filter output to packages explicitly installed. This option
can be combined with '-t' to list top-level packages- those packages
that were explicitly installed but are not required by any other
package. ('-Qet' is equivalent to the pacman 2.9.X '-Qe' option.)
*-g, \--groups*::
Display all packages that are members of a named group. If a name is not
@@ -181,6 +196,11 @@ Query Options[[QO]]
'\--info' or '-i' flags will also display the list of backup files and
their modification states.
*-k \--check*::
Check that all files owned by the given package(s) are present on the
system. If packages are not specified or filter flags are not provided,
check all installed packages.
*-l, \--list*::
List all files owned by a given package. Multiple packages can be
specified on the command line.
@@ -200,21 +220,30 @@ Query Options[[QO]]
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.
Show less information for certain query operations. (This is useful when
pacman's output is processed in a script.) Search will only show package
names and not version, group, and description information; owns will
only show package names instead of "file is owned by pkg" messages; group
will only show package names and omit group names; list will only show
files and omit package names; check will only show pairs of package names
and missing files; 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`.
descriptions that match `regexp`. When you include multiple search
terms, only packages with descriptions matching ALL of those terms will
be returned.
*-t, \--unrequired*::
Restrict or filter output to packages not required by any currently
installed package.
*-u, \--upgrades*::
Lists all packages that are out of date on the local system. This option
works best if the sync database is refreshed using '-Sy'.
Restrict or filter output to packages that are out of date on the local
system. (Only package versions are used to find outdated packages,
replacements are not checked here.) This option works best if the sync
database is refreshed using '-Sy'.
Remove Options[[RO]]
@@ -280,13 +309,17 @@ linkman:pacman.conf[5].
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.
Show less information for certain sync operations. (This is useful when
pacman's output is processed in a script.) Search will only show package
names and not repo, version, group, and description information; list
will only show package names and omit databases and versions; group will
only show package names and omit group names.
*-s, \--search* <'regexp'>::
This will search each package in the sync databases for names or
descriptions that match `regexp`.
descriptions that match `regexp`. When you include multiple search
terms, only packages with descriptions matching ALL of those terms will
be returned.
*-u, \--sysupgrade*::
Upgrades all packages that are out of date. Each currently-installed
@@ -294,7 +327,10 @@ linkman:pacman.conf[5].
report of all packages to upgrade will be presented and the operation
will not proceed without user confirmation. Dependencies are
automatically resolved at this level and will be installed/upgraded if
necessary.
necessary. Pass this option twice to enable package downgrade; in this
case pacman will select sync packages whose version does not match with
the local version. This can be useful when the user switches from a testing
repo to a stable one.
*-w, \--downloadonly*::
Retrieve all packages from the server, but do not install/upgrade

View File

@@ -25,6 +25,7 @@ which defines global options.
Example
-------
--------
#
# pacman.conf
@@ -112,7 +113,8 @@ Options
*NoUpgrade =* file ...::
All files listed with a `NoUpgrade` directive will never be touched during
a package install/upgrade.
a package install/upgrade, and the new files will be installed with a
'.pacnew' extension.
These files refer to files in the package archive, so do not include the
leading slash (the RootDir) when specifying them.
@@ -143,7 +145,7 @@ Options
*UseDelta*::
Download delta files instead of complete packages if possible. Requires
the xdelta program to be installed.
the xdelta3 program to be installed.
*TotalDownload*::
When downloading, display the amount downloaded, download rate, ETA,

View File

@@ -6,19 +6,13 @@ repo-add(8)
Name
----
////
* If we use this below line, the manpage name comes out all weird. We also
* can't use two separate lines, which is quite annoying. *
repo-add, repo-remove - package database maintenance utilities
////
repo-add - package database maintenance utility
Synopsis
--------
repo-add [-q] <path-to-db> <package> ...
repo-add [-q] <path-to-db> <package1> [<package2> ...]
repo-remove [-q] <path-to-db> <packagename> ...
repo-remove [-q] <path-to-db> <packagename> [<packagename2> ...]
Description

View File

@@ -20,9 +20,10 @@ edit = sed \
-e 's|@ROOTDIR[@]|$(ROOTDIR)|g'
$(dist_sysconf_DATA): Makefile
rm -f $@ $@.tmp
$(edit) `test -f ./$@.in || echo $(srcdir)/`$@.in >$@.tmp
mv $@.tmp $@
@echo ' ' GEN $@;
@rm -f $@ $@.tmp
@$(edit) `test -f ./$@.in || echo $(srcdir)/`$@.in >$@.tmp
@mv $@.tmp $@
makepkg.conf: $(srcdir)/makepkg.conf.in
pacman.conf: $(srcdir)/pacman.conf.in

View File

@@ -31,6 +31,7 @@ CHOST="@CHOST@"
# -mtune optimizes for an architecture, but builds for whole processor family
CFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
CXXFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
#LDFLAGS=""
#-- Make Flags: change this for DistCC/SMP systems
#MAKEFLAGS="-j2"
@@ -38,16 +39,15 @@ CXXFLAGS="@CARCHFLAGS@-mtune=generic -O2 -pipe"
# BUILD ENVIRONMENT
#########################################################################
#
# Defaults: BUILDENV=(fakeroot !distcc color !ccache !xdelta)
# Defaults: BUILDENV=(fakeroot !distcc color !ccache)
# A negated environment option will do the opposite of the comments below.
#
#-- fakeroot: Allow building packages as a non-root user
#-- distcc: Use the Distributed C/C++/ObjC compiler
#-- color: Colorize output messages
#-- ccache: Use ccache to cache compilation
#-- xdelta: Generate delta patch from previous to current package
#
BUILDENV=(fakeroot !distcc color !ccache !xdelta)
BUILDENV=(fakeroot !distcc color !ccache)
#
#-- If using DistCC, your MAKEFLAGS will also need modification. In addition,
#-- specify a space-delimited list of hosts running in the DistCC cluster.
@@ -58,23 +58,28 @@ BUILDENV=(fakeroot !distcc color !ccache !xdelta)
# These are default values for the options=() settings
#########################################################################
#
# Default: OPTIONS=(strip docs libtool emptydirs zipman)
# Default: OPTIONS=(strip docs libtool emptydirs zipman purge)
# A negated option will do the opposite of the comments below.
#
#-- strip: Strip symbols from binaries/libraries
#-- docs: Save doc and info directories
#-- strip: Strip symbols from binaries/libraries in STRIP_DIRS
#-- docs: Save doc directories specified by DOC_DIRS
#-- libtool: Leave libtool (.la) files in packages
#-- emptydirs: Leave empty directories in packages
#-- zipman: Compress manpages with gzip
#-- zipman: Compress manual (man and info) pages in MAN_DIRS with gzip
#-- purge: Remove files specified by PURGE_TARGETS
#
OPTIONS=(strip docs libtool emptydirs zipman)
OPTIONS=(strip docs libtool emptydirs zipman purge)
#-- 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)
#-- Manual (man and info) directories to compress (if zipman is specified)
MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info})
#-- Doc directories to remove (if !docs is specified)
DOC_DIRS=(usr/{,local/}{,share/}{doc,gtk-doc} opt/*/{doc,gtk-doc})
#-- Directories to be searched for the strip option (if strip is specified)
STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,sbin})
#-- Files to be removed from all packages (if purge is specified)
PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#########################################################################
# PACKAGE OUTPUT
@@ -90,16 +95,13 @@ STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,
#PACKAGER="John Doe <john@doe.com>"
#########################################################################
# BUILDSCRIPT/EXTENSION DEFAULTS
# EXTENSION DEFAULTS
#########################################################################
#
# WARNING: Do NOT modify these variables unless you know what you are
# doing.
#
BUILDSCRIPT='PKGBUILD'
PKGEXT='@PKGEXT@'
SRCEXT='@SRCEXT@'
DB_COMPRESSION='gz'
DB_CHECKSUMS=(md5)
# vim: set ft=sh ts=2 sw=2 et:

View File

@@ -1,7 +1,8 @@
/*
* add.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -114,7 +115,7 @@ 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, 1, NULL, trans->packages);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, NULL, trans->packages);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -166,7 +167,7 @@ int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
EVENT(trans, PM_TRANS_EVT_FILECONFLICTS_START, NULL, NULL);
_alpm_log(PM_LOG_DEBUG, "looking for file conflicts\n");
lp = _alpm_db_find_fileconflicts(db, trans, handle->root);
lp = _alpm_db_find_fileconflicts(db, trans, trans->packages, NULL);
if(lp != NULL) {
if(data) {
*data = lp;
@@ -292,12 +293,12 @@ static int extract_single_file(struct archive *archive,
/* the install script goes inside the db */
snprintf(filename, PATH_MAX, "%s%s-%s/install", db->path,
newpkg->name, newpkg->version);
archive_entry_set_mode(entry, 0644);
archive_entry_set_perm(entry, 0644);
} else if(strcmp(entryname, ".CHANGELOG") == 0) {
/* the changelog goes inside the db */
snprintf(filename, PATH_MAX, "%s%s-%s/changelog", db->path,
newpkg->name, newpkg->version);
archive_entry_set_mode(entry, 0644);
archive_entry_set_perm(entry, 0644);
} else if(*entryname == '.') {
/* for now, ignore all files starting with '.' that haven't
* already been handled (for future possibilities) */
@@ -352,28 +353,30 @@ static int extract_single_file(struct archive *archive,
if(_alpm_lstat(filename, &lsbuf) != 0 || stat(filename, &sbuf) != 0) {
/* cases 1,2,3: couldn't stat an existing file, skip all backup checks */
} else {
if(S_ISDIR(lsbuf.st_mode) && S_ISDIR(entrymode)) {
/* case 12: existing dir, ignore it */
if(lsbuf.st_mode != entrymode) {
/* if filesystem perms are different than pkg perms, warn user */
int mask = 07777;
_alpm_log(PM_LOG_WARNING, _("directory permissions differ on %s\n"
"filesystem: %o package: %o\n"), entryname, lsbuf.st_mode & mask,
entrymode & mask);
alpm_logaction("warning: directory permissions differ on %s\n"
if(S_ISDIR(lsbuf.st_mode)) {
if(S_ISDIR(entrymode)) {
/* case 12: existing dir, ignore it */
if(lsbuf.st_mode != entrymode) {
/* if filesystem perms are different than pkg perms, warn user */
int mask = 07777;
_alpm_log(PM_LOG_WARNING, _("directory permissions differ on %s\n"
"filesystem: %o package: %o\n"), entryname, lsbuf.st_mode & mask,
entrymode & mask);
alpm_logaction("warning: directory permissions differ on %s\n"
"filesystem: %o package: %o\n", entryname, lsbuf.st_mode & mask,
entrymode & mask);
entrymode & mask);
}
_alpm_log(PM_LOG_DEBUG, "extract: skipping dir extraction of %s\n",
entryname);
archive_read_data_skip(archive);
return(0);
} else {
/* case 10/11: trying to overwrite dir with file/symlink, don't allow it */
_alpm_log(PM_LOG_ERROR, _("extract: not overwriting dir with file %s\n"),
entryname);
archive_read_data_skip(archive);
return(1);
}
_alpm_log(PM_LOG_DEBUG, "extract: skipping dir extraction of %s\n",
entryname);
archive_read_data_skip(archive);
return(0);
} else if(S_ISDIR(lsbuf.st_mode) && S_ISLNK(entrymode)) {
/* case 11: existing dir, symlink in package, ignore it */
_alpm_log(PM_LOG_DEBUG, "extract: skipping symlink extraction of %s\n",
entryname);
archive_read_data_skip(archive);
return(0);
} else if(S_ISLNK(lsbuf.st_mode) && S_ISDIR(entrymode)) {
/* case 9: existing symlink, dir in package */
if(S_ISDIR(sbuf.st_mode)) {
@@ -389,12 +392,6 @@ static int extract_single_file(struct archive *archive,
archive_read_data_skip(archive);
return(1);
}
} else if(S_ISDIR(lsbuf.st_mode) && S_ISREG(entrymode)) {
/* case 10: trying to overwrite dir tree with file, don't allow it */
_alpm_log(PM_LOG_ERROR, _("extract: not overwriting dir with file %s\n"),
entryname);
archive_read_data_skip(archive);
return(1);
} else if(S_ISREG(lsbuf.st_mode) && S_ISDIR(entrymode)) {
/* case 6: trying to overwrite file with dir */
_alpm_log(PM_LOG_DEBUG, "extract: overwriting file with dir %s\n",
@@ -456,8 +453,8 @@ static int extract_single_file(struct archive *archive,
return(1);
}
hash_local = alpm_get_md5sum(filename);
hash_pkg = alpm_get_md5sum(checkfile);
hash_local = alpm_compute_md5sum(filename);
hash_pkg = alpm_compute_md5sum(checkfile);
/* append the new md5 hash to it's respective entry
* in newpkg's backup (it will be the new orginal) */
@@ -485,9 +482,9 @@ static int extract_single_file(struct archive *archive,
_alpm_log(PM_LOG_DEBUG, "original: %s\n", hash_orig);
if(!oldpkg) {
/* looks like we have a local file that has a different hash as the
* file in the package, move it to a .pacorig */
if(strcmp(hash_local, hash_pkg) != 0) {
/* looks like we have a local file that has a different hash as the
* file in the package, move it to a .pacorig */
char newpath[PATH_MAX];
snprintf(newpath, PATH_MAX, "%s.pacorig", filename);
@@ -511,6 +508,9 @@ static int extract_single_file(struct archive *archive,
alpm_logaction("warning: %s saved as %s\n", filename, newpath);
}
}
} else {
/* local file is identical to pkg one, so just remove pkg one */
unlink(checkfile);
}
} else if(hash_orig) {
/* the fun part */
@@ -618,7 +618,7 @@ static int extract_single_file(struct archive *archive,
}
_alpm_log(PM_LOG_DEBUG, "appending backup entry for %s\n", filename);
hash = alpm_get_md5sum(filename);
hash = alpm_compute_md5sum(filename);
MALLOC(backup, backup_len, RET_ERR(PM_ERR_MEMORY, -1));
sprintf(backup, "%s\t%s", oldbackup, hash);
@@ -650,17 +650,18 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
if(local) {
is_upgrade = 1;
EVENT(trans, PM_TRANS_EVT_UPGRADE_START, newpkg, NULL);
_alpm_log(PM_LOG_DEBUG, "upgrading package %s-%s\n",
newpkg->name, newpkg->version);
/* we'll need to save some record for backup checks later */
oldpkg = _alpm_pkg_dup(local);
/* make sure all infos are loaded because the database entry
* will be removed soon */
_alpm_db_read(oldpkg->origin_data.db, oldpkg, INFRQ_ALL);
EVENT(trans, PM_TRANS_EVT_UPGRADE_START, newpkg, oldpkg);
_alpm_log(PM_LOG_DEBUG, "upgrading package %s-%s\n",
newpkg->name, newpkg->version);
/* copy over the install reason */
newpkg->reason = alpm_pkg_get_reason(local);
newpkg->reason = alpm_pkg_get_reason(oldpkg);
/* pre_upgrade scriptlet */
if(alpm_pkg_has_scriptlet(newpkg) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
@@ -696,6 +697,16 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
}
}
/* prepare directory for database entries so permission are correct after
changelog/install script installation (FS#12263) */
if(_alpm_db_prepare(db, newpkg)) {
alpm_logaction("error: could not create database entry %s-%s\n",
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
pm_errno = PM_ERR_DB_WRITE;
ret = -1;
goto cleanup;
}
if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
struct archive *archive;
struct archive_entry *entry;
@@ -876,7 +887,6 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
}
/* run ldconfig if it exists */
_alpm_log(PM_LOG_DEBUG, "running \"ldconfig -r %s\"\n", handle->root);
_alpm_ldconfig(handle->root);
return(0);

View File

@@ -1,7 +1,8 @@
/*
* add.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* alpm.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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>

View File

@@ -1,7 +1,8 @@
/*
* alpm.h
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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>
@@ -47,7 +48,6 @@ typedef struct __pmpkg_t pmpkg_t;
typedef struct __pmdelta_t pmdelta_t;
typedef struct __pmgrp_t pmgrp_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;
@@ -83,6 +83,17 @@ int alpm_logaction(char *fmt, ...);
typedef void (*alpm_cb_download)(const char *filename,
off_t xfered, off_t total);
typedef void (*alpm_cb_totaldl)(off_t total);
/** A callback for downloading files
* @param url the URL of the file to be downloaded
* @param localpath the directory to which the file should be downloaded
* @param mtimeold the modification time of the file previously downloaded
* @param mtimenew the modification time of the newly downloaded file.
* This should be set by the callback.
* @return 0 on success, 1 if the modification times are identical, -1 on
* error.
*/
typedef int (*alpm_cb_fetch)(const char *url, const char *localpath,
time_t mtimeold, time_t *mtimenew);
/*
* Options
@@ -94,6 +105,9 @@ 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_fetch alpm_option_get_fetchcb();
void alpm_option_set_fetchcb(alpm_cb_fetch cb);
alpm_cb_totaldl alpm_option_get_totaldlcb();
void alpm_option_set_totaldlcb(alpm_cb_totaldl cb);
@@ -132,19 +146,11 @@ void alpm_option_add_ignorepkg(const char *pkg);
void alpm_option_set_ignorepkgs(alpm_list_t *ignorepkgs);
int alpm_option_remove_ignorepkg(const char *pkg);
alpm_list_t *alpm_option_get_holdpkgs();
void alpm_option_add_holdpkg(const char *pkg);
void alpm_option_set_holdpkgs(alpm_list_t *holdpkgs);
int alpm_option_remove_holdpkg(const char *pkg);
alpm_list_t *alpm_option_get_ignoregrps();
void alpm_option_add_ignoregrp(const char *grp);
void alpm_option_set_ignoregrps(alpm_list_t *ignoregrps);
int alpm_option_remove_ignoregrp(const char *grp);
const char *alpm_option_get_xfercommand();
void alpm_option_set_xfercommand(const char *cmd);
unsigned short alpm_option_get_nopassiveftp();
void alpm_option_set_nopassiveftp(unsigned short nopasv);
void alpm_option_set_usedelta(unsigned short usedelta);
@@ -170,10 +176,10 @@ int alpm_db_setserver(pmdb_t *db, const char *url);
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_get_pkgcache(pmdb_t *db);
pmgrp_t *alpm_db_readgrp(pmdb_t *db, const char *name);
alpm_list_t *alpm_db_getgrpcache(pmdb_t *db);
alpm_list_t *alpm_db_get_grpcache(pmdb_t *db);
alpm_list_t *alpm_db_search(pmdb_t *db, const alpm_list_t* needles);
/*
@@ -218,6 +224,8 @@ alpm_list_t *alpm_pkg_get_deltas(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_replaces(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_files(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_backup(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_removes(pmpkg_t *pkg);
pmdb_t *alpm_pkg_get_db(pmpkg_t *pkg);
void *alpm_pkg_changelog_open(pmpkg_t *pkg);
size_t alpm_pkg_changelog_read(void *ptr, size_t size,
const pmpkg_t *pkg, const void *fp);
@@ -233,9 +241,7 @@ off_t alpm_pkg_download_size(pmpkg_t *newpkg);
*/
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);
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);
@@ -250,11 +256,7 @@ alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp);
* Sync
*/
pmpkg_t *alpm_sync_get_pkg(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);
/*
* Transactions
@@ -282,11 +284,12 @@ typedef enum _pmtransflag_t {
PM_TRANS_FLAG_DOWNLOADONLY = 0x200,
PM_TRANS_FLAG_NOSCRIPTLET = 0x400,
PM_TRANS_FLAG_NOCONFLICTS = 0x800,
PM_TRANS_FLAG_PRINTURIS = 0x1000,
/* 0x1000 flag can go here */
PM_TRANS_FLAG_NEEDED = 0x2000,
PM_TRANS_FLAG_ALLEXPLICIT = 0x4000,
PM_TRANS_FLAG_UNNEEDED = 0x8000,
PM_TRANS_FLAG_RECURSEALL = 0x10000
PM_TRANS_FLAG_RECURSEALL = 0x10000,
PM_TRANS_FLAG_NOLOCK = 0x20000
} pmtransflag_t;
/**
@@ -364,10 +367,6 @@ typedef enum _pmtransevt_t {
* 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.
*/
@@ -382,8 +381,7 @@ typedef enum _pmtransconv_t {
PM_TRANS_CONV_CONFLICT_PKG = 0x04,
PM_TRANS_CONV_CORRUPTED_PKG = 0x08,
PM_TRANS_CONV_LOCAL_NEWER = 0x10,
/* 0x20 flag can go here */
PM_TRANS_CONV_REMOVE_HOLDPKG = 0x40
PM_TRANS_CONV_REMOVE_PKGS = 0x20,
} pmtransconv_t;
/* Transaction Progress */
@@ -410,7 +408,7 @@ 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,
alpm_trans_cb_progress cb_progress);
int alpm_trans_sysupgrade(void);
int alpm_trans_sysupgrade(int enable_downgrade);
int alpm_trans_addtarget(char *target);
int alpm_trans_prepare(alpm_list_t **data);
int alpm_trans_commit(alpm_list_t **data);
@@ -431,7 +429,7 @@ typedef enum _pmdepmod_t {
} pmdepmod_t;
int alpm_depcmp(pmpkg_t *pkg, pmdepend_t *dep);
alpm_list_t *alpm_checkdeps(pmdb_t *db, int reversedeps,
alpm_list_t *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps,
alpm_list_t *remove, alpm_list_t *upgrade);
alpm_list_t *alpm_deptest(pmdb_t *db, alpm_list_t *targets);
@@ -439,7 +437,7 @@ 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);
alpm_list_t *alpm_checkconflicts(alpm_list_t *pkglist);
const char *alpm_conflict_get_package1(pmconflict_t *conflict);
const char *alpm_conflict_get_package2(pmconflict_t *conflict);
@@ -447,7 +445,7 @@ const char *alpm_conflict_get_package2(pmconflict_t *conflict);
pmdepmod_t alpm_dep_get_mod(const pmdepend_t *dep);
const char *alpm_dep_get_name(const pmdepend_t *dep);
const char *alpm_dep_get_version(const pmdepend_t *dep);
char *alpm_dep_get_string(const pmdepend_t *dep);
char *alpm_dep_compute_string(const pmdepend_t *dep);
/*
* File conflicts
@@ -468,7 +466,7 @@ const char *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict);
*/
/* checksums */
char *alpm_get_md5sum(const char *name);
char *alpm_compute_md5sum(const char *name);
/*
* Errors
@@ -494,6 +492,7 @@ enum _pmerrno_t {
PM_ERR_DB_REMOVE,
/* Servers */
PM_ERR_SERVER_BAD_URL,
PM_ERR_SERVER_NONE,
/* Transactions */
PM_ERR_TRANS_NOT_NULL,
PM_ERR_TRANS_NULL,
@@ -502,36 +501,28 @@ enum _pmerrno_t {
PM_ERR_TRANS_NOT_PREPARED,
PM_ERR_TRANS_ABORT,
PM_ERR_TRANS_TYPE,
PM_ERR_TRANS_COMMITING,
PM_ERR_TRANS_DOWNLOADING,
PM_ERR_TRANS_NOT_LOCKED,
/* Packages */
PM_ERR_PKG_NOT_FOUND,
PM_ERR_PKG_IGNORED,
PM_ERR_PKG_INVALID,
PM_ERR_PKG_OPEN,
PM_ERR_PKG_LOAD,
PM_ERR_PKG_CANT_FRESH,
PM_ERR_PKG_CANT_REMOVE,
PM_ERR_PKG_INVALID_NAME,
PM_ERR_PKG_REPO_NOT_FOUND,
/* Deltas */
PM_ERR_DLT_INVALID,
PM_ERR_DLT_PATCHFAILED,
/* Groups */
PM_ERR_GRP_NOT_FOUND,
/* Dependencies */
PM_ERR_UNSATISFIED_DEPS,
PM_ERR_CONFLICTING_DEPS,
PM_ERR_FILE_CONFLICTS,
/* Misc */
PM_ERR_USER_ABORT,
PM_ERR_INTERNAL_ERROR,
PM_ERR_DB_SYNC,
PM_ERR_RETRIEVE,
PM_ERR_PKG_HOLD,
PM_ERR_INVALID_REGEX,
/* External library errors */
PM_ERR_LIBARCHIVE,
PM_ERR_LIBDOWNLOAD,
PM_ERR_LIBFETCH,
PM_ERR_EXTERNAL_DOWNLOAD
};

View File

@@ -1,7 +1,8 @@
/*
* alpm_list.c
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* alpm_list.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,6 +1,7 @@
/*
* backup.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2005 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005 by Christian Hamar <krics@linuxforum.hu>

View File

@@ -1,7 +1,8 @@
/*
* backup.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -51,7 +51,7 @@
* 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 getlastupdate(const pmdb_t *db)
static time_t getlastupdate(const pmdb_t *db)
{
FILE *fp;
char *file;
@@ -85,7 +85,7 @@ time_t getlastupdate(const pmdb_t *db)
/*
* writes the dbpath/.lastupdate file with the value in time
*/
int setlastupdate(const pmdb_t *db, time_t time)
static int setlastupdate(const pmdb_t *db, time_t time)
{
FILE *fp;
char *file;
@@ -113,7 +113,58 @@ int setlastupdate(const pmdb_t *db, time_t time)
return(ret);
}
static int checkdbdir(pmdb_t *db)
{
struct stat buf;
char *path = db->path;
if(stat(path, &buf) != 0) {
_alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
path);
if(_alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, -1);
}
} else if(!S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_WARNING, "removing bogus database: %s\n", path);
if(unlink(path) != 0 || _alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, -1);
}
}
return(0);
}
/** Update a package database
*
* An update of the package database \a db will be attempted. Unless
* \a force is true, the update will only be performed if the remote
* database was modified since the last update.
*
* A transaction is necessary for this operation, in order to obtain a
* database lock. During this transaction the front-end will be informed
* of the download progress of the database via the download callback.
*
* Example:
* @code
* pmdb_t *db;
* int result;
* db = alpm_list_getdata(alpm_option_get_syncdbs());
* if(alpm_trans_init(PM_TRANS_TYPE_SYNC, 0, NULL, NULL, NULL) == 0) {
* result = alpm_db_update(0, db);
* alpm_trans_release();
*
* if(result > 0) {
* printf("Unable to update database: %s\n", alpm_strerrorlast());
* } else if(result < 0) {
* printf("Database already up to date\n");
* } else {
* printf("Database updated\n");
* }
* }
* @endcode
*
* @ingroup alpm_databases
* @note After a successful update, the \link alpm_db_get_pkgcache()
* package cache \endlink will be invalidated
* @param force if true, then forces the update, otherwise update only in case
* the database isn't up to date
* @param db pointer to the package database to update
@@ -122,7 +173,6 @@ int setlastupdate(const pmdb_t *db, time_t time)
*/
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;
@@ -176,14 +226,9 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
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);
}
if(_alpm_rmrf(db->path) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not remove database %s\n"), db->treename);
RET_ERR(PM_ERR_DB_REMOVE, -1);
}
/* Cache needs to be rebuilt */
@@ -195,6 +240,7 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
sprintf(dbfilepath, "%s%s" DBEXT, dbpath, db->treename);
/* uncompress the sync database */
checkdbdir(db);
ret = _alpm_unpack(dbfilepath, db->path, NULL);
if(ret) {
free(dbfilepath);
@@ -214,36 +260,6 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
return(0);
}
int _alpm_db_open(pmdb_t *db)
{
ALPM_LOG_FUNC;
if(db == NULL) {
RET_ERR(PM_ERR_DB_NULL, -1);
}
_alpm_log(PM_LOG_DEBUG, "opening database from path '%s'\n", db->path);
db->handle = opendir(db->path);
if(db->handle == NULL) {
RET_ERR(PM_ERR_DB_OPEN, -1);
}
return(0);
}
void _alpm_db_close(pmdb_t *db)
{
ALPM_LOG_FUNC;
if(db == NULL) {
return;
}
if(db->handle) {
closedir(db->handle);
db->handle = NULL;
}
}
static int splitname(const char *target, pmpkg_t *pkg)
{
@@ -290,13 +306,17 @@ int _alpm_db_populate(pmdb_t *db)
struct dirent *ent = NULL;
struct stat sbuf;
char path[PATH_MAX];
DIR *dbdir;
ALPM_LOG_FUNC;
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
rewinddir(db->handle);
while((ent = readdir(db->handle)) != NULL) {
dbdir = opendir(db->path);
if(dbdir == NULL) {
return(0);
}
while((ent = readdir(dbdir)) != NULL) {
const char *name = ent->d_name;
pmpkg_t *pkg;
@@ -311,6 +331,7 @@ int _alpm_db_populate(pmdb_t *db)
pkg = _alpm_pkg_new();
if(pkg == NULL) {
closedir(dbdir);
return(-1);
}
/* split the db entry name */
@@ -336,6 +357,7 @@ int _alpm_db_populate(pmdb_t *db)
count++;
}
closedir(dbdir);
db->pkgcache = alpm_list_msort(db->pkgcache, count, _alpm_pkg_cmp);
return(count);
}
@@ -467,7 +489,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
char first = tolower(line[0]);
if(first > 'a' && first < 'z') {
struct tm tmp_tm = {0}; //initialize to null incase of failure
struct tm tmp_tm = {0}; /* initialize to null in case of failure */
setlocale(LC_TIME, "C");
strptime(line, "%a %b %e %H:%M:%S %Y", &tmp_tm);
info->builddate = mktime(&tmp_tm);
@@ -483,7 +505,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
char first = tolower(line[0]);
if(first > 'a' && first < 'z') {
struct tm tmp_tm = {0}; //initialize to null incase of failure
struct tm tmp_tm = {0}; /* initialize to null in case of failure */
setlocale(LC_TIME, "C");
strptime(line, "%a %b %e %H:%M:%S %Y", &tmp_tm);
info->installdate = mktime(&tmp_tm);
@@ -500,7 +522,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(fgets(line, 512, fp) == NULL) {
goto error;
}
info->reason = atol(_alpm_strtrim(line));
info->reason = (pmpkgreason_t)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
@@ -618,7 +640,10 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
_alpm_strtrim(line);
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));
pmdelta_t *delta = _alpm_delta_parse(line);
if(delta) {
info->deltas = alpm_list_add(info->deltas, delta);
}
}
}
}
@@ -649,6 +674,30 @@ error:
return(-1);
}
int _alpm_db_prepare(pmdb_t *db, pmpkg_t *info)
{
mode_t oldmask;
int retval = 0;
char *pkgpath = NULL;
if(checkdbdir(db) != 0) {
return(-1);
}
oldmask = umask(0000);
pkgpath = get_pkgpath(db, info);
if((retval = mkdir(pkgpath, 0755)) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not create directory %s: %s\n"),
pkgpath, strerror(errno));
}
free(pkgpath);
umask(oldmask);
return(retval);
}
int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
{
FILE *fp = NULL;
@@ -667,10 +716,8 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
pkgpath = get_pkgpath(db, info);
oldmask = umask(0000);
mkdir(pkgpath, 0755);
/* make sure we have a sane umask */
umask(0022);
oldmask = umask(0022);
if(strcmp(db->treename, "local") == 0) {
local = 1;
@@ -740,7 +787,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(info->isize) {
/* only write installed size, csize is irrelevant once installed */
fprintf(fp, "%%SIZE%%\n"
"%ju\n\n", (intmax_t)info->isize);
"%jd\n\n", (intmax_t)info->isize);
}
if(info->reason) {
fprintf(fp, "%%REASON%%\n"
@@ -749,11 +796,11 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
} else {
if(info->size) {
fprintf(fp, "%%CSIZE%%\n"
"%ju\n\n", (intmax_t)info->size);
"%jd\n\n", (intmax_t)info->size);
}
if(info->isize) {
fprintf(fp, "%%ISIZE%%\n"
"%ju\n\n", (intmax_t)info->isize);
"%jd\n\n", (intmax_t)info->isize);
}
if(info->md5sum) {
fprintf(fp, "%%MD5SUM%%\n"
@@ -805,7 +852,7 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
if(info->depends) {
fputs("%DEPENDS%\n", fp);
for(lp = info->depends; lp; lp = lp->next) {
char *depstring = alpm_dep_get_string(lp->data);
char *depstring = alpm_dep_compute_string(lp->data);
fprintf(fp, "%s\n", depstring);
free(depstring);
}

View File

@@ -1,7 +1,8 @@
/*
* be_package.c
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -83,7 +84,7 @@ static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
} 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
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);

View File

@@ -1,7 +1,8 @@
/*
* cache.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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,7 +20,6 @@
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
@@ -55,6 +55,7 @@ int _alpm_db_load_pkgcache(pmdb_t *db)
return(-1);
}
db->pkgcache_loaded = 1;
return(0);
}
@@ -62,7 +63,7 @@ void _alpm_db_free_pkgcache(pmdb_t *db)
{
ALPM_LOG_FUNC;
if(db == NULL || db->pkgcache == NULL) {
if(db == NULL || !db->pkgcache_loaded) {
return;
}
@@ -72,10 +73,9 @@ void _alpm_db_free_pkgcache(pmdb_t *db)
alpm_list_free_inner(db->pkgcache, (alpm_list_fn_free)_alpm_pkg_free);
alpm_list_free(db->pkgcache);
db->pkgcache = NULL;
db->pkgcache_loaded = 0;
if(db->grpcache) {
_alpm_db_free_grpcache(db);
}
_alpm_db_free_grpcache(db);
}
alpm_list_t *_alpm_db_get_pkgcache(pmdb_t *db)
@@ -86,13 +86,13 @@ alpm_list_t *_alpm_db_get_pkgcache(pmdb_t *db)
return(NULL);
}
if(!db->pkgcache) {
if(!db->pkgcache_loaded) {
_alpm_db_load_pkgcache(db);
}
/* hmmm, still NULL ?*/
if(!db->pkgcache) {
_alpm_log(PM_LOG_DEBUG, "error: pkgcache is NULL for db '%s'\n", db->treename);
_alpm_log(PM_LOG_DEBUG, "warning: pkgcache is NULL for db '%s'\n", db->treename);
}
return(db->pkgcache);
@@ -105,7 +105,7 @@ int _alpm_db_add_pkgincache(pmdb_t *db, pmpkg_t *pkg)
ALPM_LOG_FUNC;
if(db == NULL || pkg == NULL) {
if(db == NULL || !db->pkgcache_loaded || pkg == NULL) {
return(-1);
}
@@ -140,7 +140,7 @@ int _alpm_db_remove_pkgfromcache(pmdb_t *db, pmpkg_t *pkg)
ALPM_LOG_FUNC;
if(db == NULL || pkg == NULL) {
if(db == NULL || !db->pkgcache_loaded || pkg == NULL) {
return(-1);
}
@@ -173,7 +173,7 @@ pmpkg_t *_alpm_db_get_pkgfromcache(pmdb_t *db, const char *target)
alpm_list_t *pkgcache = _alpm_db_get_pkgcache(db);
if(!pkgcache) {
_alpm_log(PM_LOG_DEBUG, "error: failed to get '%s' from NULL pkgcache\n",
_alpm_log(PM_LOG_DEBUG, "warning: failed to get '%s' from NULL pkgcache\n",
target);
return(NULL);
}
@@ -193,10 +193,6 @@ int _alpm_db_load_grpcache(pmdb_t *db)
return(-1);
}
if(db->pkgcache == NULL) {
_alpm_db_load_pkgcache(db);
}
_alpm_log(PM_LOG_DEBUG, "loading group cache for repository '%s'\n",
db->treename);
@@ -231,6 +227,7 @@ int _alpm_db_load_grpcache(pmdb_t *db)
}
}
db->grpcache_loaded = 1;
return(0);
}
@@ -240,15 +237,19 @@ void _alpm_db_free_grpcache(pmdb_t *db)
ALPM_LOG_FUNC;
if(db == NULL || db->grpcache == NULL) {
if(db == NULL || !db->grpcache_loaded) {
return;
}
_alpm_log(PM_LOG_DEBUG, "freeing group cache for repository '%s'\n",
db->treename);
for(lg = db->grpcache; lg; lg = lg->next) {
_alpm_grp_free(lg->data);
lg->data = NULL;
}
FREELIST(db->grpcache);
db->grpcache_loaded = 0;
}
alpm_list_t *_alpm_db_get_grpcache(pmdb_t *db)
@@ -259,7 +260,7 @@ alpm_list_t *_alpm_db_get_grpcache(pmdb_t *db)
return(NULL);
}
if(db->grpcache == NULL) {
if(!db->grpcache_loaded) {
_alpm_db_load_grpcache(db);
}

View File

@@ -1,7 +1,8 @@
/*
* cache.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* conflict.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
@@ -25,10 +26,10 @@
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <limits.h>
#include <sys/stat.h>
#include <dirent.h>
/* libalpm */
#include "conflict.h"
@@ -219,11 +220,11 @@ alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages)
/** Check the package conflicts in a database
*
* @param db_local the database to check
* @param pkglist the list of packages 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)));
alpm_list_t SYMEXPORT *alpm_checkconflicts(alpm_list_t *pkglist) {
return(_alpm_innerconflicts(pkglist));
}
/* Returns a alpm_list_t* of file conflicts.
@@ -348,19 +349,63 @@ void _alpm_fileconflict_free(pmfileconflict_t *conflict)
FREE(conflict);
}
static int dir_belongsto_pkg(char *dirpath, pmpkg_t *pkg)
{
struct dirent *ent = NULL;
struct stat sbuf;
char path[PATH_MAX];
char abspath[PATH_MAX];
DIR *dir;
snprintf(abspath, PATH_MAX, "%s%s", handle->root, dirpath);
dir = opendir(abspath);
if(dir == NULL) {
return(1);
}
while((ent = readdir(dir)) != NULL) {
const char *name = ent->d_name;
if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
continue;
}
snprintf(path, PATH_MAX, "%s/%s", dirpath, name);
snprintf(abspath, PATH_MAX, "%s%s", handle->root, path);
if(stat(abspath, &sbuf) != 0) {
continue;
}
if(S_ISDIR(sbuf.st_mode)) {
if(dir_belongsto_pkg(path, pkg)) {
continue;
} else {
closedir(dir);
return(0);
}
} else {
if(alpm_list_find_str(alpm_pkg_get_files(pkg),path)) {
continue;
} else {
closedir(dir);
return(0);
}
}
}
closedir(dir);
return(1);
}
/* 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 */
alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *root)
alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans,
alpm_list_t *upgrade, alpm_list_t *remove)
{
alpm_list_t *i, *conflicts = NULL;
alpm_list_t *targets = trans->packages;
int numtargs = alpm_list_count(targets);
alpm_list_t *i, *j, *conflicts = NULL;
int numtargs = alpm_list_count(upgrade);
int current;
ALPM_LOG_FUNC;
if(db == NULL || targets == NULL || root == NULL) {
if(db == NULL || upgrade == NULL) {
return(NULL);
}
@@ -368,8 +413,8 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
* be possible with real transactions. Right now we only do half as much
* here as we do when we actually extract files in add.c with our 12
* different cases. */
for(current = 1, i = targets; i; i = i->next, current++) {
alpm_list_t *j, *k, *tmpfiles = NULL;
for(current = 1, i = upgrade; i; i = i->next, current++) {
alpm_list_t *k, *tmpfiles = NULL;
pmpkg_t *p1, *p2, *dbpkg;
char path[PATH_MAX+1];
@@ -393,7 +438,7 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
if(tmpfiles) {
for(k = tmpfiles; k; k = k->next) {
snprintf(path, PATH_MAX, "%s%s", root, (char *)k->data);
snprintf(path, PATH_MAX, "%s%s", handle->root, (char *)k->data);
conflicts = add_fileconflict(conflicts, PM_FILECONFLICT_TARGET, path,
alpm_pkg_get_name(p1), alpm_pkg_get_name(p2));
}
@@ -409,7 +454,7 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
_alpm_log(PM_LOG_DEBUG, "searching for filesystem conflicts: %s\n", p1->name);
dbpkg = _alpm_db_get_pkgfromcache(db, p1->name);
/* Do two different checks here. f the package is currently installed,
/* Do two different checks here. If the package is currently installed,
* then only check files that are new in the new package. If the package
* is not currently installed, then simply stat the whole filelist */
if(dbpkg) {
@@ -421,12 +466,10 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
tmpfiles = alpm_list_strdup(alpm_pkg_get_files(p1));
}
/* loop over each file to be installed */
for(j = tmpfiles; j; j = j->next) {
int skip_conflict = 0;
filestr = j->data;
snprintf(path, PATH_MAX, "%s%s", root, filestr);
snprintf(path, PATH_MAX, "%s%s", handle->root, filestr);
/* stat the file - if it exists, do some checks */
if(_alpm_lstat(path, &lsbuf) != 0) {
@@ -437,47 +480,74 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *roo
if(path[strlen(path)-1] == '/') {
if(S_ISDIR(lsbuf.st_mode)) {
_alpm_log(PM_LOG_DEBUG, "%s is a directory, not a conflict\n", path);
skip_conflict = 1;
continue;
} else if(S_ISLNK(lsbuf.st_mode) && S_ISDIR(sbuf.st_mode)) {
_alpm_log(PM_LOG_DEBUG,
"%s is a symlink to a dir, hopefully not a conflict\n", path);
skip_conflict = 1;
continue;
}
}
if(!skip_conflict) {
_alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s\n", path);
_alpm_log(PM_LOG_DEBUG, "checking possible conflict: %s\n", path);
/* 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) {
p2 = k->data;
if(!p2 || strcmp(p1->name, p2->name) == 0) {
continue;
}
int resolved_conflict = 0; /* have we acted on this conflict? */
pmpkg_t *localp2 = _alpm_db_get_pkgfromcache(db, p2->name);
/* Check if it used to exist in a package, but doesn't anymore */
alpm_list_t *pkgfiles, *localfiles; /* added for readability */
pkgfiles = alpm_pkg_get_files(p2);
localfiles = alpm_pkg_get_files(localp2);
if(localp2 && !alpm_list_find_str(pkgfiles, filestr)
&& alpm_list_find_str(localfiles, filestr)) {
/* skip removal of file, but not add. this will prevent a second
* package from removing the file when it was already installed
* by its new owner (whether the file is in backup array or not */
trans->skip_remove = alpm_list_add(trans->skip_remove, strdup(path));
_alpm_log(PM_LOG_DEBUG, "file changed packages, adding to remove skiplist: %s\n", filestr);
resolved_conflict = 1;
break;
}
/* Check remove list (will we remove the conflicting local file?) */
for(k = remove; k && !resolved_conflict; k = k->next) {
pmpkg_t *rempkg = k->data;
if(rempkg && alpm_list_find_str(alpm_pkg_get_files(rempkg), filestr)) {
_alpm_log(PM_LOG_DEBUG, "local file will be removed, not a conflict: %s\n", filestr);
resolved_conflict = 1;
}
if(!resolved_conflict) {
_alpm_log(PM_LOG_DEBUG, "file found in conflict: %s\n", path);
conflicts = add_fileconflict(conflicts, PM_FILECONFLICT_FILESYSTEM,
path, p1->name, NULL);
}
/* Look at all the targets to see if file has changed hands */
for(k = upgrade; k && !resolved_conflict; k = k->next) {
p2 = k->data;
if(!p2 || strcmp(p1->name, p2->name) == 0) {
continue;
}
pmpkg_t *localp2 = _alpm_db_get_pkgfromcache(db, p2->name);
/* localp2->files will be removed (target conflicts are handled by CHECK 1) */
if(localp2 && alpm_list_find_str(alpm_pkg_get_files(localp2), filestr)) {
/* skip removal of file, but not add. this will prevent a second
* package from removing the file when it was already installed
* by its new owner (whether the file is in backup array or not */
trans->skip_remove = alpm_list_add(trans->skip_remove, strdup(path));
_alpm_log(PM_LOG_DEBUG, "file changed packages, adding to remove skiplist: %s\n", filestr);
resolved_conflict = 1;
}
}
/* check if all files of the dir belong to the installed pkg */
if(!resolved_conflict && S_ISDIR(lsbuf.st_mode) && dbpkg) {
char *dir = malloc(strlen(filestr) + 2);
sprintf(dir, "%s/", filestr);
if(alpm_list_find_str(alpm_pkg_get_files(dbpkg),dir)) {
_alpm_log(PM_LOG_DEBUG, "check if all files in %s belongs to %s\n",
dir, dbpkg->name);
resolved_conflict = dir_belongsto_pkg(filestr, dbpkg);
}
free(dir);
}
if(!resolved_conflict && dbpkg) {
char *rpath = calloc(PATH_MAX+1, sizeof(char));
if(!realpath(path, rpath)) {
FREE(rpath);
continue;
}
char *filestr = rpath + strlen(handle->root);
if(alpm_list_find_str(alpm_pkg_get_files(dbpkg),filestr)) {
resolved_conflict = 1;
}
free(rpath);
}
if(!resolved_conflict) {
_alpm_log(PM_LOG_DEBUG, "file found in conflict: %s\n", path);
conflicts = add_fileconflict(conflicts, PM_FILECONFLICT_FILESYSTEM,
path, p1->name, NULL);
}
}
FREELIST(tmpfiles);

View File

@@ -1,7 +1,8 @@
/*
* conflict.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -41,7 +42,8 @@ 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_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans, char *root);
alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans,
alpm_list_t *upgrade, alpm_list_t *remove);
void _alpm_fileconflict_free(pmfileconflict_t *conflict);

View File

@@ -1,7 +1,8 @@
/*
* db.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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 David Kimpe <dnaku@frugalware.org>
@@ -23,7 +24,6 @@
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
@@ -86,9 +86,6 @@ static void _alpm_db_unregister(pmdb_t *db)
return;
}
_alpm_log(PM_LOG_DEBUG, "closing database '%s'\n", db->treename);
_alpm_db_close(db);
_alpm_log(PM_LOG_DEBUG, "unregistering database '%s'\n", db->treename);
_alpm_db_free(db);
}
@@ -236,6 +233,7 @@ const char SYMEXPORT *alpm_db_get_url(const pmdb_t *db)
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(db != NULL, return(NULL));
ASSERT(db->servers != NULL, return(NULL));
url = (char*)db->servers->data;
@@ -264,7 +262,7 @@ pmpkg_t SYMEXPORT *alpm_db_get_pkg(pmdb_t *db, const char *name)
* @param db pointer to the package database to get the package from
* @return the list of packages on success, NULL on error
*/
alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
alpm_list_t SYMEXPORT *alpm_db_get_pkgcache(pmdb_t *db)
{
ALPM_LOG_FUNC;
@@ -296,7 +294,7 @@ pmgrp_t SYMEXPORT *alpm_db_readgrp(pmdb_t *db, const char *name)
* @param db pointer to the package database to get the group from
* @return the list of groups on success, NULL on error
*/
alpm_list_t SYMEXPORT *alpm_db_getgrpcache(pmdb_t *db)
alpm_list_t SYMEXPORT *alpm_db_get_grpcache(pmdb_t *db)
{
ALPM_LOG_FUNC;
@@ -401,10 +399,10 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
else if (desc && regexec(&reg, desc, 0, 0, 0) == 0) {
matched = desc;
}
/* check provides */
/* TODO: should we be doing this, and should we print something
* differently when we do match it since it isn't currently printed? */
else {
if(!matched) {
/* check provides */
for(k = alpm_pkg_get_provides(pkg); k; k = k->next) {
if (regexec(&reg, k->data, 0, 0, 0) == 0) {
matched = k->data;
@@ -412,6 +410,15 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
}
}
}
if(!matched) {
/* check groups */
for(k = alpm_pkg_get_groups(pkg); k; k = k->next) {
if (regexec(&reg, k->data, 0, 0, 0) == 0) {
matched = k->data;
break;
}
}
}
if(matched != NULL) {
_alpm_log(PM_LOG_DEBUG, " search target '%s' matched '%s'\n",
@@ -432,10 +439,8 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
pmdb_t *_alpm_db_register_local(void)
{
struct stat buf;
pmdb_t *db;
const char *dbpath;
char path[PATH_MAX];
ALPM_LOG_FUNC;
@@ -446,40 +451,23 @@ pmdb_t *_alpm_db_register_local(void)
_alpm_log(PM_LOG_DEBUG, "registering local database\n");
/* make sure the database directory exists */
dbpath = alpm_option_get_dbpath();
if(!dbpath) {
_alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
snprintf(path, PATH_MAX, "%slocal", dbpath);
/* TODO this is rediculous, we try to do this even if we can't */
if(stat(path, &buf) != 0 || !S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
path);
if(_alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, NULL);
}
}
db = _alpm_db_new(dbpath, "local");
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
}
_alpm_log(PM_LOG_DEBUG, "opening database '%s'\n", db->treename);
if(_alpm_db_open(db) == -1) {
_alpm_db_free(db);
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
handle->db_local = db;
return(db);
}
pmdb_t *_alpm_db_register_sync(const char *treename)
{
struct stat buf;
pmdb_t *db;
const char *dbpath;
char path[PATH_MAX];
@@ -497,25 +485,12 @@ pmdb_t *_alpm_db_register_sync(const char *treename)
_alpm_log(PM_LOG_DEBUG, "registering sync database '%s'\n", treename);
/* make sure the database directory exists */
dbpath = alpm_option_get_dbpath();
if(!dbpath) {
_alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
/* all sync DBs now reside in the sync/ subdir of the dbpath */
snprintf(path, PATH_MAX, "%ssync/%s", dbpath, treename);
/* TODO this is rediculous, we try to do this even if we can't */
if(stat(path, &buf) != 0 || !S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
path);
if(_alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, NULL);
}
}
/* Ensure the db gets the real path. */
path[0] = '\0';
snprintf(path, PATH_MAX, "%ssync/", dbpath);
db = _alpm_db_new(path, treename);
@@ -523,12 +498,6 @@ pmdb_t *_alpm_db_register_sync(const char *treename)
RET_ERR(PM_ERR_DB_CREATE, NULL);
}
_alpm_log(PM_LOG_DEBUG, "opening database '%s'\n", db->treename);
if(_alpm_db_open(db) == -1) {
_alpm_db_free(db);
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
handle->dbs_sync = alpm_list_add(handle->dbs_sync, db);
return(db);
}

View File

@@ -1,7 +1,8 @@
/*
* db.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
*
@@ -41,8 +42,9 @@ typedef enum _pmdbinfrq_t {
struct __pmdb_t {
char *path;
char *treename;
void *handle;
unsigned short pkgcache_loaded;
alpm_list_t *pkgcache;
unsigned short grpcache_loaded;
alpm_list_t *grpcache;
alpm_list_t *servers;
};
@@ -56,10 +58,9 @@ pmdb_t *_alpm_db_register_local(void);
pmdb_t *_alpm_db_register_sync(const char *treename);
/* be.c, backend specific calls */
int _alpm_db_open(pmdb_t *db);
void _alpm_db_close(pmdb_t *db);
int _alpm_db_populate(pmdb_t *db);
int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
int _alpm_db_prepare(pmdb_t *db, pmpkg_t *info);
int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq);
int _alpm_db_remove(pmdb_t *db, pmpkg_t *info);

View File

@@ -1,7 +1,8 @@
/*
* delta.c
*
* Copyright (c) 2007-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2007-2006 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,7 +22,10 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h> /* intmax_t */
#include <limits.h>
#include <sys/types.h>
#include <regex.h>
/* libalpm */
#include "delta.h"
@@ -41,24 +45,12 @@ const char SYMEXPORT *alpm_delta_get_from(pmdelta_t *delta)
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)
{
ASSERT(delta != NULL, return(NULL));
return(delta->to);
}
const char SYMEXPORT *alpm_delta_get_to_md5sum(pmdelta_t *delta)
{
ASSERT(delta != NULL, return(NULL));
return(delta->to_md5);
}
const char SYMEXPORT *alpm_delta_get_filename(pmdelta_t *delta)
{
ASSERT(delta != NULL, return(NULL));
@@ -93,7 +85,7 @@ static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
/* determine whether the delta file already exists */
fpath = _alpm_filecache_find(vdelta->delta);
md5sum = alpm_get_md5sum(fpath);
md5sum = alpm_compute_md5sum(fpath);
if(fpath && md5sum && strcmp(md5sum, vdelta->delta_md5) == 0) {
vdelta->download_size = 0;
}
@@ -102,12 +94,10 @@ static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
/* 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) {
if(fpath) {
v->weight = vdelta->download_size;
}
FREE(fpath);
FREE(md5sum);
v->data = vdelta;
vertices = alpm_list_add(vertices, v);
@@ -129,8 +119,7 @@ static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
* 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) {
if(strcmp(d_j->from, d_i->to) == 0) {
v_i->children = alpm_list_add(v_i->children, v_j);
}
}
@@ -140,7 +129,7 @@ static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
}
static off_t delta_vert(alpm_list_t *vertices,
const char *to, const char *to_md5, alpm_list_t **path) {
const char *to, alpm_list_t **path) {
alpm_list_t *i;
pmgraph_t *v;
while(1) {
@@ -184,8 +173,7 @@ static off_t delta_vert(alpm_list_t *vertices,
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(strcmp(d_i->to, to) == 0) {
if(v == NULL || v_i->weight < v->weight) {
v = v_i;
bestsize = v->weight;
@@ -210,14 +198,13 @@ static off_t delta_vert(alpm_list_t *vertices,
* size, not the length of the path.
* @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
*/
off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
const char *to, const char *to_md5, alpm_list_t **path)
const char *to, alpm_list_t **path)
{
alpm_list_t *bestpath = NULL;
alpm_list_t *vertices;
@@ -230,13 +217,13 @@ off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
return(bestsize);
}
_alpm_log(PM_LOG_DEBUG, "started delta shortest-path search\n");
_alpm_log(PM_LOG_DEBUG, "started delta shortest-path search for '%s'\n", to);
vertices = delta_graph_init(deltas);
bestsize = delta_vert(vertices, to, to_md5, &bestpath);
bestsize = delta_vert(vertices, to, &bestpath);
_alpm_log(PM_LOG_DEBUG, "delta shortest-path search complete\n");
_alpm_log(PM_LOG_DEBUG, "delta shortest-path search complete : '%jd'\n", (intmax_t)bestsize);
alpm_list_free_inner(vertices, _alpm_graph_free);
alpm_list_free(vertices);
@@ -248,7 +235,7 @@ off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
/** 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
* $deltafile $deltamd5 $deltasize $oldfile $newfile
* @param line the string to parse
* @return A pointer to the new pmdelta_t object
*/
@@ -257,29 +244,21 @@ pmdelta_t *_alpm_delta_parse(char *line)
{
pmdelta_t *delta;
char *tmp = line, *tmp2;
regex_t reg;
regcomp(&reg,
"^[^[:space:]]* [[:xdigit:]]{32} [[:digit:]]*"
" [^[:space:]]* [^[:space:]]*$",
REG_EXTENDED | REG_NOSUB | REG_NEWLINE);
if(regexec(&reg, line, 0, 0, 0) != 0) {
/* delta line is invalid, return NULL */
regfree(&reg);
return(NULL);
}
regfree(&reg);
CALLOC(delta, 1, sizeof(pmdelta_t), RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
STRDUP(delta->from, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
STRDUP(delta->from_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
STRDUP(delta->to, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
STRDUP(delta->to_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
@@ -290,7 +269,20 @@ pmdelta_t *_alpm_delta_parse(char *line)
*(tmp++) = '\0';
STRDUP(delta->delta_md5, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
delta->delta_size = atol(tmp);
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
delta->delta_size = atol(tmp2);
tmp2 = tmp;
tmp = strchr(tmp, ' ');
*(tmp++) = '\0';
STRDUP(delta->from, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
tmp2 = tmp;
STRDUP(delta->to, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
_alpm_log(PM_LOG_DEBUG, "delta : %s %s '%lld'\n", delta->from, delta->to, (long long)delta->delta_size);
return(delta);
}
@@ -298,9 +290,7 @@ pmdelta_t *_alpm_delta_parse(char *line)
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);

View File

@@ -1,7 +1,8 @@
/*
* delta.h
*
* Copyright (c) 2007-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2007-2006 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
@@ -24,20 +25,16 @@
#include "alpm.h"
struct __pmdelta_t {
/** 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;
/** filename of the 'before' file */
char *from;
/** filename of the 'after' file */
char *to;
/** download filesize of the delta file */
off_t download_size;
};
@@ -45,7 +42,7 @@ struct __pmdelta_t {
pmdelta_t *_alpm_delta_parse(char *line);
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);
const char *to, alpm_list_t **path);
#endif /* _ALPM_DELTA_H */

View File

@@ -1,7 +1,8 @@
/*
* deps.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
*
@@ -229,13 +230,13 @@ alpm_list_t SYMEXPORT *alpm_deptest(pmdb_t *db, alpm_list_t *targets)
/** 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 pkglist the list of local packages
* @param reversedeps handles the backward dependencies
* @param remove an alpm_list_t* of packages to be removed
* @param upgrade an alpm_list_t* of packages to be upgraded (remove-then-upgrade)
* @return an alpm_list_t* of pmpkg_t* of missing_t pointers.
*/
alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
alpm_list_t SYMEXPORT *alpm_checkdeps(alpm_list_t *pkglist, int reversedeps,
alpm_list_t *remove, alpm_list_t *upgrade)
{
alpm_list_t *i, *j;
@@ -245,12 +246,8 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
ALPM_LOG_FUNC;
if(db == NULL) {
return(NULL);
}
targets = alpm_list_join(alpm_list_copy(remove), alpm_list_copy(upgrade));
for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
for(i = pkglist; i; i = i->next) {
void *pkg = i->data;
if(alpm_list_find(targets, pkg, _alpm_pkg_cmp)) {
modified = alpm_list_add(modified, pkg);
@@ -273,7 +270,7 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
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);
char *missdepstring = alpm_dep_compute_string(depend);
_alpm_log(PM_LOG_DEBUG, "checkdeps: missing dependency '%s' for package '%s'\n",
missdepstring, alpm_pkg_get_name(tp));
free(missdepstring);
@@ -297,7 +294,7 @@ alpm_list_t SYMEXPORT *alpm_checkdeps(pmdb_t *db, int reversedeps,
if(causingpkg &&
!_alpm_find_dep_satisfier(upgrade, depend) &&
!_alpm_find_dep_satisfier(dblist, depend)) {
char *missdepstring = alpm_dep_get_string(depend);
char *missdepstring = alpm_dep_compute_string(depend);
_alpm_log(PM_LOG_DEBUG, "checkdeps: transaction would break '%s' dependency of '%s'\n",
missdepstring, alpm_pkg_get_name(lp));
free(missdepstring);
@@ -508,19 +505,37 @@ void _alpm_recursedeps(pmdb_t *db, alpm_list_t *targs, int include_explicit)
}
}
/* 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)
/**
* helper function for resolvedeps: search for dep satisfier in dbs
*
* @param dep is the dependency to search for
* @param dbs are the databases to search
* @param excluding are the packages to exclude from the search
* @param prompt if true, will cause an unresolvable dependency to issue an
* interactive prompt asking whether the package should be removed from
* the transaction or the transaction aborted; if false, simply returns
* an error code without prompting
* @return the resolved package
**/
pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs,
alpm_list_t *excluding, int prompt)
{
alpm_list_t *i, *j;
int ignored = 0;
/* 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);
int install = 0;
if (prompt) {
QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, pkg,
NULL, NULL, &install);
} else {
_alpm_log(PM_LOG_WARNING, _("ignoring package %s-%s\n"), pkg->name, pkg->version);
}
if(!install) {
ignored = 1;
continue;
}
}
@@ -534,10 +549,15 @@ pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *exclud
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);
int install = 0;
if (prompt) {
QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG,
pkg, NULL, NULL, &install);
} else {
_alpm_log(PM_LOG_WARNING, _("ignoring package %s-%s\n"), pkg->name, pkg->version);
}
if(!install) {
ignored = 1;
continue;
}
}
@@ -547,20 +567,41 @@ pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *exclud
}
}
}
if(ignored) { /* resolvedeps will override these */
pm_errno = PM_ERR_PKG_IGNORED;
} else {
pm_errno = PM_ERR_PKG_NOT_FOUND;
}
return(NULL);
}
/* populates list with packages that need to be installed to satisfy all
* dependencies of packages in list
/* Computes resolvable dependencies for a given package and adds that package
* and those resolvable dependencies to a list.
*
* @param remove contains packages elected for removal
* @param local is the local database
* @param dbs_sync are the sync databases
* @param pkg is the package to resolve
* @param packages is a pointer to a list of packages which will be
* searched first for any dependency packages needed to complete the
* resolve, and to which will be added any [pkg] and all of its
* dependencies not already on the list
* @param remove is the set of packages which will be removed in this
* transaction
* @param data returns the dependency which could not be satisfied in the
* event of an error
* @return 0 on success, with [pkg] and all of its dependencies not already on
* the [*packages] list added to that list, or -1 on failure due to an
* unresolvable dependency, in which case the [*packages] list will be
* unmodified by this function
*/
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, alpm_list_t *list,
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *pkg,
alpm_list_t *preferred, alpm_list_t **packages,
alpm_list_t *remove, alpm_list_t **data)
{
alpm_list_t *i, *j;
alpm_list_t *targ;
alpm_list_t *deps = NULL;
alpm_list_t *packages_copy;
ALPM_LOG_FUNC;
@@ -568,46 +609,64 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, alpm_list_t *list,
return(-1);
}
if(_alpm_pkg_find(*packages, pkg->name) != NULL) {
return(0);
}
/* Create a copy of the packages list, so that it can be restored
on error */
packages_copy = alpm_list_copy(*packages);
/* [pkg] has not already been resolved into the packages list, so put it
on that list */
*packages = alpm_list_add(*packages, pkg);
_alpm_log(PM_LOG_DEBUG, "started resolving dependencies\n");
for(i = list; i; i = i->next) {
for(i = alpm_list_last(*packages); i; i = i->next) {
pmpkg_t *tpkg = i->data;
targ = alpm_list_add(NULL, tpkg);
deps = alpm_checkdeps(local, 0, remove, targ);
deps = alpm_checkdeps(_alpm_db_get_pkgcache(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)) {
/* check if one of the packages in the [*packages] list already satisfies this dependency */
if(_alpm_find_dep_satisfier(*packages, missdep)) {
continue;
}
/* find a satisfier package in the given repositories */
pmpkg_t *spkg = _alpm_resolvedep(missdep, dbs_sync, list, tpkg);
/* check if one of the packages in the [preferred] list already satisfies this dependency */
pmpkg_t *spkg = _alpm_find_dep_satisfier(preferred, missdep);
if(!spkg) {
/* find a satisfier package in the given repositories */
spkg = _alpm_resolvedep(missdep, dbs_sync, *packages, 0);
}
if(!spkg) {
pm_errno = PM_ERR_UNSATISFIED_DEPS;
char *missdepstring = alpm_dep_get_string(missdep);
_alpm_log(PM_LOG_ERROR, _("cannot resolve \"%s\", a dependency of \"%s\"\n"),
missdepstring, tpkg->name);
char *missdepstring = alpm_dep_compute_string(missdep);
_alpm_log(PM_LOG_WARNING, _("cannot resolve \"%s\", a dependency of \"%s\"\n"),
missdepstring, tpkg->name);
free(missdepstring);
if(data) {
pmdepmissing_t *missd = _alpm_depmiss_new(miss->target,
miss->depend, miss->causingpkg);
miss->depend, miss->causingpkg);
if(missd) {
*data = alpm_list_add(*data, missd);
}
}
alpm_list_free(*packages);
*packages = packages_copy;
alpm_list_free_inner(deps, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(deps);
return(-1);
} else {
} 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);
alpm_pkg_get_name(spkg), alpm_pkg_get_name(tpkg));
*packages = alpm_list_add(*packages, spkg);
}
}
alpm_list_free_inner(deps, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(deps);
}
alpm_list_free(packages_copy);
_alpm_log(PM_LOG_DEBUG, "finished resolving dependencies\n");
return(0);
}
@@ -689,7 +748,7 @@ const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep)
* @param dep the depend to turn into a string
* @return a string-formatted dependency with operator if necessary
*/
char SYMEXPORT *alpm_dep_get_string(const pmdepend_t *dep)
char SYMEXPORT *alpm_dep_compute_string(const pmdepend_t *dep)
{
char *name, *opr, *ver, *str = NULL;
size_t len;

View File

@@ -1,7 +1,8 @@
/*
* deps.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by Miklos Vajna <vmiklos@frugalware.org>
*
@@ -47,9 +48,10 @@ pmdepmissing_t *_alpm_depmiss_new(const char *target, pmdepend_t *dep,
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);
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);
pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs, alpm_list_t *excluding, int prompt);
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *pkg,
alpm_list_t *preferred, alpm_list_t **packages, 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);

View File

@@ -1,7 +1,8 @@
/*
* download.c
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -24,6 +25,7 @@
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>
#include <limits.h>
/* the following two are needed on BSD for libfetch */
#if defined(HAVE_SYS_SYSLIMITS_H)
@@ -33,16 +35,8 @@
#include <sys/param.h> /* MAXHOSTNAMELEN */
#endif
#if defined(HAVE_LIBDOWNLOAD)
#include <download.h>
#elif defined(HAVE_LIBFETCH)
#if defined(INTERNAL_DOWNLOAD)
#include <fetch.h>
#define downloadFreeURL fetchFreeURL
#define downloadLastErrCode fetchLastErrCode
#define downloadLastErrString fetchLastErrString
#define downloadParseURL fetchParseURL
#define downloadTimeout fetchTimeout
#define downloadXGet fetchXGet
#endif
/* libalpm */
@@ -61,6 +55,7 @@ static char *get_filename(const char *url) {
return(filename);
}
#if defined(INTERNAL_DOWNLOAD)
static char *get_destfile(const char *path, const char *filename) {
char *destfile;
/* len = localpath len + filename len + null */
@@ -81,12 +76,11 @@ static char *get_tempfile(const char *path, const char *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);
ret = fetchParseURL(url);
if(!ret) {
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
RET_ERR(PM_ERR_SERVER_BAD_URL, NULL);
@@ -108,14 +102,16 @@ static struct url *url_for_string(const char *url)
static int download_internal(const char *url, const char *localpath,
time_t mtimeold, time_t *mtimenew) {
FILE *dlf, *localf = NULL;
fetchIO *dlf = NULL;
FILE *localf = NULL;
struct url_stat ust;
struct stat st;
int chk_resume = 0;
size_t dl_thisfile = 0;
int chk_resume = 0, ret = 0;
size_t dl_thisfile = 0, nread = 0;
char *tempfile, *destfile, *filename;
int ret = 0;
struct sigaction new_action, old_action;
struct url *fileurl = url_for_string(url);
char buffer[PM_DLBUF_LEN];
if(!fileurl) {
return(-1);
@@ -142,23 +138,35 @@ static int download_internal(const char *url, const char *localpath,
dl_thisfile = 0;
}
/* libdownload does not reset the error code, reset it in
* the case of previous errors */
downloadLastErrCode = 0;
/* print proxy info for debug purposes */
_alpm_log(PM_LOG_DEBUG, "HTTP_PROXY: %s\n", getenv("HTTP_PROXY"));
_alpm_log(PM_LOG_DEBUG, "http_proxy: %s\n", getenv("http_proxy"));
_alpm_log(PM_LOG_DEBUG, "FTP_PROXY: %s\n", getenv("FTP_PROXY"));
_alpm_log(PM_LOG_DEBUG, "ftp_proxy: %s\n", getenv("ftp_proxy"));
/* libfetch does not reset the error code */
fetchLastErrCode = 0;
/* 10s timeout - TODO make a config option */
downloadTimeout = 10000;
fetchTimeout = 10000;
dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
/* ignore any SIGPIPE signals- these may occur if our FTP socket dies or
* something along those lines. Store the old signal handler first. */
new_action.sa_handler = SIG_IGN;
sigemptyset(&new_action.sa_mask);
sigaction(SIGPIPE, NULL, &old_action);
sigaction(SIGPIPE, &new_action, NULL);
if(downloadLastErrCode != 0 || dlf == NULL) {
dlf = fetchXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
if(fetchLastErrCode != 0 || dlf == NULL) {
const char *host = _("disk");
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
host = fileurl->host;
}
pm_errno = PM_ERR_LIBDOWNLOAD;
pm_errno = PM_ERR_LIBFETCH;
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
filename, host, downloadLastErrString);
filename, host, fetchLastErrString);
ret = -1;
goto cleanup;
} else {
@@ -200,17 +208,7 @@ static int download_internal(const char *url, const char *localpath,
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;
}
while((nread = fetchIO_read(dlf, buffer, PM_DLBUF_LEN)) > 0) {
size_t nwritten = 0;
while(nwritten < nread) {
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
@@ -227,136 +225,59 @@ static int download_internal(const char *url, const char *localpath,
handle->dlcb(filename, dl_thisfile, ust.size);
}
}
/* did the transfer complete normally? */
if (ust.size != -1 && dl_thisfile < ust.size) {
pm_errno = PM_ERR_LIBFETCH;
_alpm_log(PM_LOG_ERROR, _("%s appears to be truncated: %jd/%jd bytes\n"),
filename, (intmax_t)dl_thisfile, (intmax_t)ust.size);
ret = -1;
goto cleanup;
}
/* 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);
fetchIO_close(dlf);
dlf = NULL;
rename(tempfile, destfile);
ret = 0;
cleanup:
/* restore any existing SIGPIPE signal handler */
sigaction(SIGPIPE, &old_action, NULL);
FREE(tempfile);
FREE(destfile);
if(localf != NULL) {
fclose(localf);
}
if(dlf != NULL) {
fclose(dlf);
fetchIO_close(dlf);
}
downloadFreeURL(fileurl);
fetchFreeURL(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(handle->fetchcb == NULL) {
#if defined(INTERNAL_DOWNLOAD)
ret = download_internal(url, localpath, mtimeold, mtimenew);
return(download_internal(url, localpath, mtimeold, mtimenew));
#else
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
#endif
} else {
ret = download_external(url, localpath, mtimeold, mtimenew);
int ret = handle->fetchcb(url, localpath, mtimeold, mtimenew);
if(ret == -1) {
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
}
return(ret);
}
return(ret);
}
/*
@@ -378,6 +299,8 @@ int _alpm_download_single_file(const char *filename,
alpm_list_t *i;
int ret = -1;
ASSERT(servers != NULL, RET_ERR(PM_ERR_SERVER_NONE, -1));
for(i = servers; i; i = i->next) {
const char *server = i->data;
char *fileurl = NULL;

View File

@@ -1,7 +1,8 @@
/*
* dload.h
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* error.c
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -30,11 +31,8 @@
#include <sys/param.h> /* MAXHOSTNAMELEN */
#endif
#if defined(HAVE_LIBDOWNLOAD)
#include <download.h> /* downloadLastErrString */
#elif defined(HAVE_LIBFETCH)
#if defined(INTERNAL_DOWNLOAD)
#include <fetch.h> /* fetchLastErrString */
#define downloadLastErrString fetchLastErrString
#endif
/* libalpm */
@@ -87,6 +85,8 @@ const char SYMEXPORT *alpm_strerror(int err)
/* Servers */
case PM_ERR_SERVER_BAD_URL:
return _("invalid url for server");
case PM_ERR_SERVER_NONE:
return _("no servers configured for repository");
/* Transactions */
case PM_ERR_TRANS_NOT_NULL:
return _("transaction already initialized");
@@ -102,21 +102,17 @@ const char SYMEXPORT *alpm_strerror(int err)
return _("transaction aborted");
case PM_ERR_TRANS_TYPE:
return _("operation not compatible with the transaction type");
case PM_ERR_TRANS_COMMITING:
return _("could not commit transaction");
case PM_ERR_TRANS_DOWNLOADING:
return _("could not download all files");
case PM_ERR_TRANS_NOT_LOCKED:
return _("transaction commit attempt when database is not locked");
/* Packages */
case PM_ERR_PKG_NOT_FOUND:
return _("could not find or read package");
case PM_ERR_PKG_IGNORED:
return _("operation cancelled due to ignorepkg");
case PM_ERR_PKG_INVALID:
return _("invalid or corrupted package");
case PM_ERR_PKG_OPEN:
return _("cannot open package file");
case PM_ERR_PKG_LOAD:
return _("cannot load package data");
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:
@@ -128,9 +124,6 @@ const char SYMEXPORT *alpm_strerror(int err)
return _("invalid or corrupted delta");
case PM_ERR_DLT_PATCHFAILED:
return _("delta patch failed");
/* Groups */
case PM_ERR_GRP_NOT_FOUND:
return _("group not found");
/* Dependencies */
case PM_ERR_UNSATISFIED_DEPS:
return _("could not satisfy dependencies");
@@ -139,13 +132,8 @@ const char SYMEXPORT *alpm_strerror(int err)
case PM_ERR_FILE_CONFLICTS:
return _("conflicting files");
/* Miscellaenous */
case PM_ERR_USER_ABORT:
return _("user aborted the operation");
case PM_ERR_INTERNAL_ERROR:
return _("internal error");
case PM_ERR_PKG_HOLD:
/* TODO wow this is not descriptive at all... what does this mean? */
return _("not confirmed");
case PM_ERR_RETRIEVE:
return _("failed to retrieve some files");
case PM_ERR_INVALID_REGEX:
return _("invalid regular expression");
/* Errors from external libraries- our own wrapper error */
@@ -154,9 +142,9 @@ const char SYMEXPORT *alpm_strerror(int err)
* requires the archive struct, so we can't. Just use a generic
* error string instead. */
return _("libarchive error");
case PM_ERR_LIBDOWNLOAD:
case PM_ERR_LIBFETCH:
#if defined(INTERNAL_DOWNLOAD)
return downloadLastErrString;
return fetchLastErrString;
#else
/* obviously shouldn't get here... */
return _("download library error");

View File

@@ -1,7 +1,8 @@
/*
* graph.h - helpful graph structure and setup/teardown methods
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* group.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* group.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* handle.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
*
@@ -48,16 +49,7 @@ pmhandle_t *_alpm_handle_new()
ALPM_LOG_FUNC;
CALLOC(handle, 1, sizeof(pmhandle_t), RET_ERR(PM_ERR_MEMORY, NULL));
handle->lckfd = -1;
handle->logstream = NULL;
handle->root = NULL;
handle->dbpath = NULL;
handle->cachedirs = NULL;
handle->lockfile = NULL;
handle->logfile = NULL;
handle->usedelta = 0;
return(handle);
}
@@ -87,12 +79,10 @@ void _alpm_handle_free(pmhandle_t *handle)
FREELIST(handle->cachedirs);
FREE(handle->logfile);
FREE(handle->lockfile);
FREE(handle->xfercommand);
FREELIST(handle->dbs_sync);
FREELIST(handle->noupgrade);
FREELIST(handle->noextract);
FREELIST(handle->ignorepkg);
FREELIST(handle->holdpkg);
FREELIST(handle->ignoregrp);
FREE(handle);
}
@@ -115,6 +105,15 @@ alpm_cb_download SYMEXPORT alpm_option_get_dlcb()
return handle->dlcb;
}
alpm_cb_fetch SYMEXPORT alpm_option_get_fetchcb()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return NULL;
}
return handle->fetchcb;
}
alpm_cb_totaldl SYMEXPORT alpm_option_get_totaldlcb()
{
if (handle == NULL) {
@@ -205,15 +204,6 @@ alpm_list_t SYMEXPORT *alpm_option_get_ignorepkgs()
return handle->ignorepkg;
}
alpm_list_t SYMEXPORT *alpm_option_get_holdpkgs()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return NULL;
}
return handle->holdpkg;
}
alpm_list_t SYMEXPORT *alpm_option_get_ignoregrps()
{
if (handle == NULL) {
@@ -223,15 +213,6 @@ alpm_list_t SYMEXPORT *alpm_option_get_ignoregrps()
return handle->ignoregrp;
}
const char SYMEXPORT *alpm_option_get_xfercommand()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return NULL;
}
return handle->xfercommand;
}
unsigned short SYMEXPORT alpm_option_get_nopassiveftp()
{
if (handle == NULL) {
@@ -277,6 +258,15 @@ void SYMEXPORT alpm_option_set_dlcb(alpm_cb_download cb)
handle->dlcb = cb;
}
void SYMEXPORT alpm_option_set_fetchcb(alpm_cb_fetch cb)
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return;
}
handle->fetchcb = cb;
}
void SYMEXPORT alpm_option_set_totaldlcb(alpm_cb_totaldl cb)
{
if (handle == NULL) {
@@ -305,6 +295,7 @@ int SYMEXPORT alpm_option_set_root(const char *root)
realroot = calloc(PATH_MAX+1, sizeof(char));
if(!realpath(root, realroot)) {
FREE(realroot);
pm_errno = PM_ERR_NOT_A_DIR;
return(-1);
}
@@ -516,28 +507,6 @@ int SYMEXPORT alpm_option_remove_ignorepkg(const char *pkg)
return(0);
}
void SYMEXPORT alpm_option_add_holdpkg(const char *pkg)
{
handle->holdpkg = alpm_list_add(handle->holdpkg, strdup(pkg));
}
void SYMEXPORT alpm_option_set_holdpkgs(alpm_list_t *holdpkgs)
{
if(handle->holdpkg) FREELIST(handle->holdpkg);
if(holdpkgs) handle->holdpkg = holdpkgs;
}
int SYMEXPORT alpm_option_remove_holdpkg(const char *pkg)
{
char *vdata = NULL;
handle->holdpkg = alpm_list_remove_str(handle->holdpkg, pkg, &vdata);
if(vdata != NULL) {
FREE(vdata);
return(1);
}
return(0);
}
void SYMEXPORT alpm_option_add_ignoregrp(const char *grp)
{
handle->ignoregrp = alpm_list_add(handle->ignoregrp, strdup(grp));
@@ -560,12 +529,6 @@ int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
return(0);
}
void SYMEXPORT alpm_option_set_xfercommand(const char *cmd)
{
if(handle->xfercommand) FREE(handle->xfercommand);
if(cmd) handle->xfercommand = strdup(cmd);
}
void SYMEXPORT alpm_option_set_nopassiveftp(unsigned short nopasv)
{
handle->nopassiveftp = nopasv;

View File

@@ -1,7 +1,8 @@
/*
* handle.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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
@@ -40,6 +41,7 @@ typedef struct _pmhandle_t {
alpm_cb_log logcb; /* Log callback function */
alpm_cb_download dlcb; /* Download callback function */
alpm_cb_totaldl totaldlcb; /* Total download callback function */
alpm_cb_fetch fetchcb; /* Download file callback function */
/* filesystem paths */
char *root; /* Root path, default '/' */
@@ -52,13 +54,11 @@ typedef struct _pmhandle_t {
alpm_list_t *noupgrade; /* List of packages NOT to be upgraded */
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 */
/* options */
unsigned short usesyslog; /* Use syslog instead of logfile? */ /* TODO move to frontend */
unsigned short nopassiveftp; /* Don't use PASV ftp connections */
char *xfercommand; /* External download command */
unsigned short usedelta; /* Download deltas if possible */
} pmhandle_t;

View File

@@ -1,7 +1,8 @@
/*
* log.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -1,7 +1,8 @@
/*
* log.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

View File

@@ -248,7 +248,7 @@ static inline void md5_update( md5_context *ctx, unsigned char *input, int ilen
}
}
static const unsigned char md5_padding[64] =
static 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,

View File

@@ -1,7 +1,8 @@
/*
* package.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
@@ -30,7 +31,6 @@
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
/* libarchive */
#include <archive.h>
@@ -423,6 +423,22 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_backup(pmpkg_t *pkg)
return pkg->backup;
}
alpm_list_t SYMEXPORT *alpm_pkg_get_removes(pmpkg_t *pkg)
{
ASSERT(pkg != NULL, return(NULL));
return(pkg->removes);
}
pmdb_t SYMEXPORT *alpm_pkg_get_db(pmpkg_t *pkg)
{
/* Sanity checks */
ASSERT(pkg != NULL, return(NULL));
ASSERT(pkg->origin == PKG_FROM_CACHE, return(NULL));
return(pkg->origin_data.db);
}
/**
* Open a package changelog for reading. Similar to fopen in functionality,
* except that the returned 'file stream' could really be from an archive
@@ -834,6 +850,7 @@ void _alpm_pkg_free(pmpkg_t *pkg)
alpm_list_free_inner(pkg->deltas, (alpm_list_fn_free)_alpm_delta_free);
alpm_list_free(pkg->deltas);
alpm_list_free(pkg->delta_path);
alpm_list_free(pkg->removes);
if(pkg->origin == PKG_FROM_FILE) {
FREE(pkg->origin_data.file);
@@ -841,6 +858,19 @@ void _alpm_pkg_free(pmpkg_t *pkg)
FREE(pkg);
}
/* Free transaction specific fields */
void _alpm_pkg_free_trans(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
if(pkg == NULL) {
return;
}
alpm_list_free(pkg->removes);
pkg->removes = NULL;
}
/* Is spkg an upgrade for locapkg? */
int _alpm_pkg_compare_versions(pmpkg_t *spkg, pmpkg_t *localpkg)
{

View File

@@ -1,7 +1,8 @@
/*
* package.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2006 by David Kimpe <dnaku@frugalware.org>
* Copyright (c) 2005, 2006 by Christian Hamar <krics@linuxforum.hu>
@@ -62,6 +63,7 @@ struct __pmpkg_t {
alpm_list_t *provides;
alpm_list_t *deltas;
alpm_list_t *delta_path;
alpm_list_t *removes; /* in transaction targets only */
/* internal */
pmpkgfrom_t origin;
/* Replaced 'void *data' with this union as follows:
@@ -78,6 +80,7 @@ struct __pmpkg_t {
pmpkg_t* _alpm_pkg_new(void);
pmpkg_t *_alpm_pkg_dup(pmpkg_t *pkg);
void _alpm_pkg_free(pmpkg_t *pkg);
void _alpm_pkg_free_trans(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_find(alpm_list_t *haystack, const char *needle);

View File

@@ -6,8 +6,10 @@ es
fr
hu
it
kk
pl
pt_BR
ro
ru
tr
uk

View File

@@ -15,7 +15,7 @@ XGETTEXT_OPTIONS = --no-location \
# 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
# package.
COPYRIGHT_HOLDER = Judd Vinet <jvinet@zeroflux.org>
COPYRIGHT_HOLDER = Pacman Development Team <pacman-dev@archlinux.org>
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings.

View File

@@ -2,28 +2,28 @@
# Copyright (C) YEAR Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the PACKAGE package.
#
# Vojtěch Gondžala <vojtech.gondzala@gmail.com>, 2007, 2008.
# Vojtěch Gondžala <vojtech.gondzala@gmail.com>, 2007, 2008, 2009.
msgid ""
msgstr ""
"Project-Id-Version: cs\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-24 08:16+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 14:14+0200\n"
"Last-Translator: Vojtěch Gondžala <vojtech.gondzala@gmail.com>\n"
"Language-Team: Čeština\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\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"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#, 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"
msgstr "v seznamu cílů nahrazena starší verze %s-%s za %s\n"
#, c-format
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"
msgstr "vynechává se %s-%s, protože v seznamu cílů je novější veze %s\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
@@ -31,7 +31,7 @@ msgstr "v seznamu cílů byly nalezeny konfliktní balíčky\n"
#, 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"
msgstr "nelze instalovat dva konfliktní balíčky současně\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
@@ -39,7 +39,7 @@ msgstr "nahrazování balíčků pomocí -U není nyní podporováno\n"
#, 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"
msgstr "balíčky lze nahradit ručně použitím -Rd a -U\n"
#, c-format
msgid ""
@@ -49,14 +49,14 @@ msgstr ""
"přístupová práva adresáře %s se neshodují\n"
"souborový systém: %o balíček: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "rozbalení: symbolický odkaz %s neodkazuje na adresář\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "rozbalení: adresář nebyl přepsán souborem %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "rozbalení: symbolický odkaz %s neodkazuje na adresář\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "nelze rozbalit %s (%s)\n"
@@ -67,19 +67,19 @@ msgstr "nelze přejmenovat %s na %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s uložen jako %s\n"
msgstr "%s byl uložen jako %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "nelze nainstalovat %s jako %s (%s)\n"
msgstr "%s nelze nainstalovat jako %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s nainstalován jako %s\n"
msgstr "%s byl nainstalován jako %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "rozbaluji %s jako %s.pacnew\n"
msgstr "%s byl rozbalen jako %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
@@ -102,8 +102,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "nelze přidat položku '%s' do cache\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "nelze odstranit záznam v databázi %s%s\n"
msgid "could not remove database %s\n"
msgstr "nelze odstranit záznam v databázi %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -125,6 +125,10 @@ msgstr "databáze %s je nekonzistentní: nesouhlasí jméno balíčku %s\n"
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "databáze %s je nekonzistentní: nesouhlasí verze balíčku %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "nelze změnit adresář %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "nelze zpracovat soubor s popisem balíčku v %s\n"
@@ -151,7 +155,7 @@ msgstr "pokus o opětovné zaregistrování databáze 'local'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "cesta k databázi nebyla určena\n"
msgstr "cesta k databázi není definována\n"
#, c-format
msgid "dependency cycle detected:\n"
@@ -165,21 +169,25 @@ msgstr "%s bude odstraněn po %s, na kterém závisí\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"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignoruje se balíček %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "byl vybrán nahrazující balíček (%s poskytuje %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nemohu vyřešit \"%s\", závislost \"%s\"\n"
msgstr "nelze vyřešit \"%s\", závislost \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' je chybná\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"
msgstr "schéma URL nedefinováno, předpokládá se HTTP\n"
#, c-format
msgid "disk"
@@ -191,27 +199,19 @@ msgstr "selhalo získání souboru '%s' z %s: %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "nelze navázat stahování, začínám znovu\n"
msgstr "nelze navázat stahování, začíná se znovu\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "nelze zapisovat do souboru '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "chyba při stahování '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "chyba při zápisu do souboru '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "nelze změnit adresář na %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "spouštím XferCommand: větvení selhalo!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s se zdá být zkrácen: %jd/%jd bytů\n"
#, c-format
msgid "failed to download %s\n"
@@ -231,11 +231,11 @@ msgstr "nedostatečná oprávnění"
#, c-format
msgid "could not find or read file"
msgstr "nelze nat nebo číst soubor"
msgstr "nelze nalézt nebo číst soubor"
#, c-format
msgid "could not find or read directory"
msgstr "nelze nat nebo číst adresář"
msgstr "nelze nalézt nebo číst adresář"
#, c-format
msgid "wrong or NULL argument passed"
@@ -283,7 +283,11 @@ msgstr "nelze odstranit záznam v databázi"
#, c-format
msgid "invalid url for server"
msgstr "nesprávná url pro server"
msgstr "nesprávná URL pro server"
#, c-format
msgid "no servers configured for repository"
msgstr "pro repositář nejsou nastaveny žádné servery"
#, c-format
msgid "transaction already initialized"
@@ -299,28 +303,28 @@ msgstr "duplicitní cíl"
#, c-format
msgid "transaction not prepared"
msgstr "transakce nepřipravena"
msgstr "transakce nepřipravena"
#, c-format
msgid "transaction aborted"
msgstr "transakce zrušena"
msgstr "transakce byla 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"
msgid "transaction commit attempt when database is not locked"
msgstr "pokus o uskutečnění transakce v době, kdy není uzamčena databáze"
#, c-format
msgid "could not find or read package"
msgstr "nelze nalézt nebo přečíst balíček"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operace byla zrušena kvůli ignorovanému balíčku"
#, c-format
msgid "invalid or corrupted package"
msgstr "neplatný nebo poškozený balíček"
@@ -329,14 +333,6 @@ msgstr "neplatný nebo poškozený balíček"
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"
@@ -347,20 +343,16 @@ msgstr "jméno souboru balíčku není platné"
#, c-format
msgid "no such repository"
msgstr "není žádný takový repositář"
msgstr "takový repositář není nastaven"
#, c-format
msgid "invalid or corrupted delta"
msgstr "neplatný nebo poškozený rozdíl"
msgstr "neplatný nebo poškozený delta 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"
@@ -374,16 +366,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "selhalo získání některých souborů"
#, c-format
msgid "invalid regular expression"
@@ -407,7 +391,7 @@ 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"
msgstr "nelze nalézt %s v databázi -- vynechat\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
@@ -422,28 +406,40 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignoruje se aktualizace balíčku (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignoruje se ponížení verze balíčku (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: ponížení z verze %s na verzi %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: lokální (%s) je novější než %s (%s)\n"
msgstr "%s: lokální verze (%s) je novější než v %s (%s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignoruji aktualizaci balíčku (%s => %s)\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignoruje se náhrada balíčku (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "nelze nahradit soubor %s souborem %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repositář '%s' nenalezen\n"
msgstr "repositář '%s' nebyl nalezen\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s je aktuální -- přeskakuji\n"
msgstr "%s-%s je aktuální -- vynechat\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s je aktuální -- přeinstalovávám\n"
msgstr "%s-%s je aktuální -- přeinstalovat\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
@@ -455,24 +451,28 @@ msgstr "zjištěn konflikt nerozlišitelných balíčků\n"
#, c-format
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"
#, c-format
msgid "command: %s\n"
msgstr "příkaz: %s\n"
msgstr "'%s' odstraněn ze seznamu cílů, protože je konfliktní s '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "selhalo stažení některých souborů z %s\n"
msgstr "selhalo získání některých souborů z %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "nelze vytvořit transakci pro odstranění\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nelze vytvořit transakci\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nelze inicializovat transakci pro odstranění\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nelze inicializovat transakci\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nelze připravit transakci pro odstranění\n"
@@ -481,18 +481,6 @@ msgstr "nelze připravit transakci pro odstranění\n"
msgid "could not commit removal transaction\n"
msgstr "nelze provést transakci pro odstranění\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nelze vytvořit transakci\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nelze inicializovat transakci\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "nelze připravit transakci\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "nelze provést transakci\n"
@@ -501,10 +489,6 @@ msgstr "nelze provést transakci\n"
msgid "could not remove lock file %s\n"
msgstr "nelze odstranit zamykací soubor %s\n"
#, 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"
#, c-format
msgid "could not create temp directory\n"
msgstr "nelze vytvořit dočasný adresář\n"
@@ -513,6 +497,14 @@ msgstr "nelze vytvořit dočasný adresář\n"
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 remove tmpdir %s\n"
msgstr "nelze odstranit dočasný adresář %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nelze otevřít %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nelze změnit adresář na %s (%s)\n"
@@ -538,21 +530,58 @@ msgid "call to waitpid failed (%s)\n"
msgstr "volání waitpid selhalo (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "správné spuštění skriptu selhalo\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nelze odstranit dočasný adresář %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nelze otevřít %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "příkaz se nepodařilo spustit správně\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "neexistuje cache %s, vytvářím...\n"
msgstr "neexistuje cache %s, vytváří se...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "nelze vytvořit cache balíčků, používám /tmp\n"
msgstr "nelze vytvořit cache balíčků, používá se /tmp\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "chyba při stahování '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "nelze změnit adresář na %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "spouští se XferCommand: větvení selhalo!\n"
#~ msgid "could not commit transaction"
#~ msgstr "nelze provést transakci"
#~ msgid "could not download all files"
#~ msgstr "nelze stáhnout všechny soubory"
#~ msgid "cannot load package data"
#~ msgstr "nelze načíst data z balíčku"
#~ msgid "package not installed or lesser version"
#~ msgstr "balíček není nainstalovaný nebo má nižší verzi"
#~ msgid "group not found"
#~ msgstr "skupina nebyla nalezena"
#~ msgid "user aborted the operation"
#~ msgstr "uživatel zrušil operaci"
#~ msgid "internal error"
#~ msgstr "interní chyba"
#~ msgid "not confirmed"
#~ msgstr "nepotvrzeno"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr "%s-%s: ignoruje se aktualizace balíčku (měl být nahrazen %s-%s)\n"
#~ msgid "command: %s\n"
#~ msgstr "příkaz: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "nelze připravit transakci\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "V rodičovském prostředí chybí /bin/sh, ruší se provádění skriptů\n"

View File

@@ -6,13 +6,13 @@
# Marcus Habermehl <bmh1980@frugalware.org>, 2006.
# Pierre Schmitz <pierre@archlinux.de>, 2007.
# Niclas Pfeifer <macwolf@archlinux.de>, 2007.
# Matthias Gorissen <matthias@archlinux.de>, 2008.
# Matthias Gorissen <matthias@archlinux.de>, 2008-2009.
msgid ""
msgstr ""
"Project-Id-Version: de\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-24 12:41+0100\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 16:09+0100\n"
"Last-Translator: Matthias Gorissen <matthias@archlinux.de>\n"
"Language-Team: German <archlinux.de>\n"
"MIME-Version: 1.0\n"
@@ -55,14 +55,14 @@ msgstr ""
"Verzeichnis-Berechtigungen unterscheiden sich für %s\n"
"Dateisystem: %o Paket: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "Entpacken: Symlink %s zeigt nicht zum Verzeichnis\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "Entpacken: Überschreibe Verzeichnis nicht mit Datei %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "Entpacken: Symlink %s zeigt nicht zum Verzeichnis\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "Konnte %s nicht entpacken (%s)\n"
@@ -108,8 +108,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "Konnte Eintrag '%s' nicht zum Pufferspeicher hinzufügen\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "Konnte Datenbank-Eintrag %s%s nicht entfernen\n"
msgid "could not remove database %s\n"
msgstr "Konnte Datenbank %s nicht entfernen\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -135,6 +135,10 @@ msgstr ""
"Die Datenbank von %s ist inkonsistent: Die Versionsnummern für das Paket %s "
"stimmen nicht überein\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "Konnte Verzeichnis %s nicht erstellen: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "Konnte Paket-Beschreibungsdatei in %s nicht analysieren\n"
@@ -175,6 +179,10 @@ msgstr "%s wird nach seiner Abhängigkeit %s entfernt werden\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s wird vor seiner Abhängigkeit %s installiert werden\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "Ignoriere Paket %s-%s)\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "Bereitstellendes Paket wurde ausgewählt (%s enthält %s)\n"
@@ -207,21 +215,13 @@ msgstr "Kann den Download nicht wieder aufnehmen, starte neu\n"
msgid "cannot write to file '%s'\n"
msgstr "Kann Datei '%s' nicht beschreiben\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "Fehler beim Download von '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "Fehler beim Beschreiben von Datei '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "Konnte nicht zu Verzeichnis %s wechseln\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "Nutze XferCommand: Zweig versagte!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s scheint verstümmelt zu sein: %jd/%jd Byte\n"
#, c-format
msgid "failed to download %s\n"
@@ -295,6 +295,10 @@ msgstr "Konnte Datenbank-Eintrag nicht entfernen"
msgid "invalid url for server"
msgstr "Ungültige URL für den Server"
#, c-format
msgid "no servers configured for repository"
msgstr "Es sind keine Server für dieses Repositorium definiert"
#, c-format
msgid "transaction already initialized"
msgstr "Vorgang bereits gestartet"
@@ -320,17 +324,18 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr ""
"Vorgang sollte übertragen werden, während die Datenbank nicht geschlossen war"
#, c-format
msgid "could not find or read package"
msgstr "Konnte Paket nicht finden oder lesen"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "Vorgang abgebrochen auf Grund von IgnorePkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "Ungültiges oder beschädigtes Paket"
@@ -339,14 +344,6 @@ msgstr "Ungültiges oder beschädigtes Paket"
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"
@@ -367,10 +364,6 @@ msgstr "Ungültiges oder beschädigtes Delta"
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"
@@ -384,16 +377,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "Konnte manche Dateien nicht übertragen"
#, c-format
msgid "invalid regular expression"
@@ -432,16 +417,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: Ignoriere Paket-Aktualisierung (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: Ignoriere Paket-Downgrade (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: Downgrade von Version %s zu Version %s\n"
#, 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "Ignoriere Paket-Ersetzung (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "Kann %s nicht durch %s ersetzen\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -467,10 +464,6 @@ msgstr "Nicht lösbare Paketkonflikte gefunden\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "Entferne '%s' aus der Ziel-Liste, da es mit '%s' in Konflikt steht\n"
#, c-format
msgid "command: %s\n"
msgstr "Befehl: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "Konnte manche Dateien von %s nicht übertragen\n"
@@ -479,10 +472,18 @@ msgstr "Konnte manche Dateien von %s nicht übertragen\n"
msgid "could not create removal transaction\n"
msgstr "Konnte den Lösch-Vorgang nicht erstellen\n"
#, c-format
msgid "could not create transaction\n"
msgstr "Konnte den Vorgang nicht erstellen\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "Konnte den Lösch-Vorgang nicht beginnen\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "Konnte den Vorgang nicht beginnen\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht vorbereiten\n"
@@ -491,18 +492,6 @@ msgstr "Konnte Lösch-Vorgang nicht vorbereiten\n"
msgid "could not commit removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht durchführen\n"
#, c-format
msgid "could not create transaction\n"
msgstr "Konnte den Vorgang nicht erstellen\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "Konnte den Vorgang nicht beginnen\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "Konnte den Vorgang nicht vorbereiten\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "Konnte den Vorgang nicht durchführen\n"
@@ -511,10 +500,6 @@ msgstr "Konnte den Vorgang nicht durchführen\n"
msgid "could not remove lock file %s\n"
msgstr "Konnte Sperrdatei %s nicht entfernen\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "Kein /bin/sh im übergeordneten Verzeichnis, breche Skript ab\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "Konnte temporäres Verzeichnis nicht erstellen\n"
@@ -523,6 +508,14 @@ msgstr "Konnte temporäres Verzeichnis nicht erstellen\n"
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 remove tmpdir %s\n"
msgstr "Konnte temporäres Verzeichnis %s nicht entfernen\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)\n"
@@ -548,16 +541,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "Aufruf von 'waitpid' fehlgeschlagen (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "Skript konnte nicht korrekt ausgeführt werden\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "Konnte temporäres Verzeichnis %s nicht entfernen\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s\n"
msgid "command failed to execute correctly\n"
msgstr "Befehl konnte nicht korrekt ausgeführt werden\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -566,4 +551,3 @@ msgstr "Es existiert kein %s-Puffer. Erstelle... \n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "Konnte Paketpuffer nicht erstellen, benutze stattdessen /tmp\n"

View File

@@ -1,14 +1,14 @@
# English (British) 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.
# Jeff Bailes <thepizzaking@gmail.com>, 2007.
#
# Jeff Bailes <thepizzaking@gmail.com>, 2007, 2009.
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-08-23 10:54-0500\n"
"PO-Revision-Date: 2008-08-23 23:38+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-30 18:37+1000\n"
"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
"Language-Team: English <en_gb@li.org>\n"
"MIME-Version: 1.0\n"
@@ -48,14 +48,14 @@ msgstr ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extract: symlink %s does not point to dir\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extract: not overwriting dir with file %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extract: symlink %s does not point to dir\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "could not extract %s (%s)\n"
@@ -101,8 +101,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "could not add entry '%s' in cache\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "could not remove database entry %s%s\n"
msgid "could not remove database %s\n"
msgstr "could not remove database %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -124,6 +124,10 @@ msgstr "%s database is inconsistent: name mismatch on package %s\n"
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "%s database is inconsistent: version mismatch on package %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "could not create directory %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "could not parse package description file in %s\n"
@@ -164,6 +168,10 @@ msgstr "%s will be removed after its %s dependency\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s will be installed before its %s dependency\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignoring package %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "provider package was selected (%s provides %s)\n"
@@ -196,21 +204,13 @@ msgstr "cannot resume download, starting over\n"
msgid "cannot write to file '%s'\n"
msgstr "cannot write to file '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "error downloading '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "error writing to file '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "could not chdir to %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "running XferCommand: fork failed!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s appears to be truncated: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
@@ -284,6 +284,10 @@ msgstr "could not remove database entry"
msgid "invalid url for server"
msgstr "invalid url for server"
#, c-format
msgid "no servers configured for repository"
msgstr "no servers configured for repository"
#, c-format
msgid "transaction already initialized"
msgstr "transaction already initialised"
@@ -309,17 +313,17 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr "transaction commit attempt when database is not locked"
#, c-format
msgid "could not find or read package"
msgstr "could not find or read package"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operation cancelled due to ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "invalid or corrupted package"
@@ -328,14 +332,6 @@ msgstr "invalid or corrupted package"
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"
@@ -356,10 +352,6 @@ msgstr "invalid or corrupted delta"
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"
@@ -373,16 +365,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "failed to retrieve some files"
#, c-format
msgid "invalid regular expression"
@@ -421,16 +405,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignoring package upgrade (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignoring package downgrade (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: downgrading from version %s to version %s\n"
#, 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignoring package replacement (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "cannot replace %s by %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -456,10 +452,6 @@ msgstr "unresolvable package conflicts detected\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "removing '%s' from target list because it conflicts with '%s'\n"
#, c-format
msgid "command: %s\n"
msgstr "command: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "failed to retrieve some files from %s\n"
@@ -468,10 +460,18 @@ msgstr "failed to retrieve some files from %s\n"
msgid "could not create removal transaction\n"
msgstr "could not create removal transaction\n"
#, c-format
msgid "could not create transaction\n"
msgstr "could not create transaction\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "could not initialise the removal transaction\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "could not initialise transaction\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "could not prepare removal transaction\n"
@@ -480,18 +480,6 @@ msgstr "could not prepare removal transaction\n"
msgid "could not commit removal transaction\n"
msgstr "could not commit removal transaction\n"
#, c-format
msgid "could not create transaction\n"
msgstr "could not create transaction\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "could not initialise transaction\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "could not prepare transaction\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "could not commit transaction\n"
@@ -500,10 +488,6 @@ msgstr "could not commit transaction\n"
msgid "could not remove lock file %s\n"
msgstr "could not remove lock file %s\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "No /bin/sh in parent environment, aborting scriptlet\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "could not create temp directory\n"
@@ -512,6 +496,14 @@ msgstr "could not create temp directory\n"
msgid "could not copy tempfile to %s (%s)\n"
msgstr "could not copy tempfile to %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "could not remove tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "could not open %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "could not change directory to %s (%s)\n"
@@ -537,16 +529,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "call to waitpid failed (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "scriptlet failed to execute correctly\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "could not remove tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "could not open %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "command failed to execute correctly\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -556,3 +540,47 @@ msgstr "no %s cache exists, creating...\n"
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "couldn't create package cache, using /tmp instead\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "error downloading '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "could not chdir to %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "running XferCommand: fork failed!\n"
#~ msgid "could not commit transaction"
#~ msgstr "could not commit transaction"
#~ msgid "could not download all files"
#~ msgstr "could not download all files"
#~ msgid "cannot load package data"
#~ msgstr "cannot load package data"
#~ msgid "package not installed or lesser version"
#~ msgstr "package not installed or lesser version"
#~ msgid "group not found"
#~ msgstr "group not found"
#~ msgid "user aborted the operation"
#~ msgstr "user aborted the operation"
#~ msgid "internal error"
#~ msgstr "internal error"
#~ msgid "not confirmed"
#~ msgstr "not confirmed"
#~ 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"
#~ msgid "command: %s\n"
#~ msgstr "command: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "could not prepare transaction\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "No /bin/sh in parent environment, aborting scriptlet\n"

View File

@@ -1,19 +1,21 @@
# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2008.
# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2008, 2009.
# Juan Pablo González Tognarelli <juan.gonzalez.tognarelli@gmail.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: libalpm\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-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"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 11:51+0200\n"
"Last-Translator: Juan Pablo González Tognarelli <juan.gonzalez."
"tognarelli@gmail.com>\n"
"Language-Team: Spanish <kde-i18n-doc@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: Lokalize 0.2\n"
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#, c-format
@@ -51,14 +53,14 @@ msgstr ""
"los permisos de directorio difieren en %s\n"
"sistema de archivos: %o paquete: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extract: el link simbólico %s no apunta al directorio\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extract: no sobrescribiendo el dir. con el archivo %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extract: el link simbólico %s no apunta al directorio\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "no se pudo extraer %s (%s)\n"
@@ -104,8 +106,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "no se pudo agregar '%s' en la cache\n"
#, 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"
msgid "could not remove database %s\n"
msgstr "no se pudo quitar la base de datos %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -131,17 +133,21 @@ msgstr ""
"la base de datos %s es inconsistente: versión mal emparejada en el paquete %"
"s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "no se pudo crear el directorio %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "no se pudo analizar sintácticamente el archivo de descripción en %s\n"
msgstr "no se pudo interpretar el archivo de descripción en %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "nombre de paquete ausente en %s\n"
msgstr "falta el nombre de paquete en %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "versión del paquete ausente en %s\n"
msgstr "falta la versión del paquete en %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
@@ -149,7 +155,7 @@ msgstr "error mientras se leía el paquete %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "metadatos del paquete faltantes en %s\n"
msgstr "faltan los metadatos del paquete en %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
@@ -157,7 +163,7 @@ msgstr "intento para re-registrar la base de datos 'local'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "ruta para la base de datos no es definido\n"
msgstr "la ruta para la base de datos no es definida\n"
#, c-format
msgid "dependency cycle detected:\n"
@@ -165,12 +171,16 @@ msgstr "ciclo de dependencias detectado:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s será quitado tras su dependencia %s\n"
msgstr "%s será quitado luego de su dependencia %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s será instalado antes de su dependencia %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorando el paquete %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "El paquete proveedor fue seleccionado (%s provee %s)\n"
@@ -203,21 +213,13 @@ msgstr "no se puede resumir la descarga, empezando de nuevo\n"
msgid "cannot write to file '%s'\n"
msgstr "no se puede escribir en el archivo '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "error descargando '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "no se pudo escribir al archivo '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "no se pudo cambiar el directorio a %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "ejecutando XferCommand: falló en el fork\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
@@ -291,6 +293,10 @@ msgstr "no se pudo quitar la entrada de la base de datos"
msgid "invalid url for server"
msgstr "dirección inválida para el servidor"
#, c-format
msgid "no servers configured for repository"
msgstr "no hay servidores configurados para el repositorio"
#, c-format
msgid "transaction already initialized"
msgstr "la operación ya se inicializó"
@@ -316,17 +322,18 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr ""
"intento de envío de la transación cuando la base de datos no esta bloqueada"
#, c-format
msgid "could not find or read package"
msgstr "no se pudo encontrar o leer el paquete"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operación cancelada debido a ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "paquete invalido o corrupto"
@@ -335,14 +342,6 @@ msgstr "paquete invalido o corrupto"
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"
@@ -363,10 +362,6 @@ msgstr "invalido o diferencial corrupto"
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"
@@ -380,16 +375,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "falló al descargar algunos archivos"
#, c-format
msgid "invalid regular expression"
@@ -428,18 +415,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorando la actualización del paquete (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorando la degradación del paquete (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: degradando desde la versión %s a la versión %s\n"
#, 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorando el reemplazo del paquete (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "no se pudo reemplazar el archivo %s por %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -467,10 +464,6 @@ msgstr ""
"quitando '%s' de la lista de objetivos debido a que posee conflictos con '%"
"s'\n"
#, c-format
msgid "command: %s\n"
msgstr "comando: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "falló al descargar algunos archivos desde %s\n"
@@ -479,10 +472,18 @@ msgstr "falló al descargar algunos archivos desde %s\n"
msgid "could not create removal transaction\n"
msgstr "no se pudo crear la operación de eliminación\n"
#, c-format
msgid "could not create transaction\n"
msgstr "no se pudo crear la operación\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "no se pudo iniciar la operación de eliminación\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "no se pudo iniciar la operación\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "no se pudo preparar la operación de eliminación\n"
@@ -491,18 +492,6 @@ msgstr "no se pudo preparar la operación de eliminación\n"
msgid "could not commit removal transaction\n"
msgstr "no se pudo enviar la operación de eliminación\n"
#, c-format
msgid "could not create transaction\n"
msgstr "no se pudo crear la operación\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "no se pudo iniciar la operación\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "no se pudo preparar la transacción\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "no se pudo asignar la transacción\n"
@@ -511,10 +500,6 @@ msgstr "no se pudo asignar la transacción\n"
msgid "could not remove lock file %s\n"
msgstr "no se pudo eliminar el archivo de bloqueo %s\n"
#, 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"
#, c-format
msgid "could not create temp directory\n"
msgstr "no se puede crear el directorio temporal\n"
@@ -523,6 +508,14 @@ msgstr "no se puede crear el directorio temporal\n"
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 remove tmpdir %s\n"
msgstr "no se pudo eliminar el directorio temporal %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "no se pudo abrir %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"
@@ -548,16 +541,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "llamada a waitpid fallida (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "scriplet falló en ejecutarse correctamente\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "no se pudo eliminar el directorio temporal %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "no se pudo abrir %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "el comando falló al ejecutarse\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -566,4 +551,3 @@ msgstr "no existe la cache %s, creando...\n"
#, 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"

View File

@@ -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-08-23 10:54-0500\n"
"PO-Revision-Date: 2008-08-23 22:51+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 14:01+0200\n"
"Last-Translator: Xavier <shiningxc@gmail.com>\n"
"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
"MIME-Version: 1.0\n"
@@ -51,14 +51,14 @@ msgstr ""
"Les permissions pour le répertoire %s sont différentes\n"
"système de fichier: %o paquet : %o\n"
#, 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"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extraction: n'écrase pas le répertoire par le fichier %s\n"
#, 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"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "l'extraction de %s a échoué (%s)\n"
@@ -105,8 +105,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "l'ajout au cache de l'entrée '%s' a échoué\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"
msgid "could not remove database %s\n"
msgstr "la suppression de la base de données %s a échoué\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -128,6 +128,10 @@ msgstr "Le dépôt %s est inconsistant: noms différents pour le paquet %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"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "la création du répertoire %s a échoué: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "l'analyse du fichier de description a échoué dans %s\n"
@@ -168,6 +172,10 @@ msgstr "%s sera supprimé après sa dépendance %s\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s sera installé avant sa dépendance %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignore le paquet %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "Une provision a été sélectionnée (%s fournit %s)\n"
@@ -200,21 +208,13 @@ msgstr "le téléchargement ne peut pas être repris, relance\n"
msgid "cannot write to file '%s'\n"
msgstr "écriture dans le fichier '%s' impossible\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "erreur lors du téléchargement de '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "écriture dans le fichier '%s' impossible: %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "changer de répertoire vers %s a échoué\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "lancement de XferCommand: le fork a échoué!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s est apparemment tronqué: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
@@ -288,6 +288,10 @@ msgstr "la suppression de l'entrée de base de données a échoué"
msgid "invalid url for server"
msgstr "URL invalide pour le serveur"
#, c-format
msgid "no servers configured for repository"
msgstr "aucun serveur configuré pour le dépôt"
#, c-format
msgid "transaction already initialized"
msgstr "transaction déjà initialisée"
@@ -313,17 +317,19 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr ""
"tentative de réalisation d'une transaction alors que le dépôt n'est pas "
"verrouillé"
#, c-format
msgid "could not find or read package"
msgstr "trouver ou de lire le paquet a échoué"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "opération annulée à cause d'un paquet à ignorer (IgnorePkg)"
#, c-format
msgid "invalid or corrupted package"
msgstr "paquet invalide ou corrompu"
@@ -332,14 +338,6 @@ msgstr "paquet invalide ou corrompu"
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"
@@ -360,10 +358,6 @@ msgstr "delta invalide ou corrompu"
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é"
@@ -377,16 +371,8 @@ 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é"
msgid "failed to retrieve some files"
msgstr "échec de récupération de certains fichiers"
#, c-format
msgid "invalid regular expression"
@@ -425,16 +411,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignore la mise à jour du paquet (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignore le retour à la version antérieure (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: retourne à la version antérieure (%s => %s)\n"
#, 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignore le remplacement du paquet (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "le remplacement de %s par %s est impossible\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -460,10 +458,6 @@ msgstr "un conflit de paquets impossible à résoudre a été détecté\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"
#, c-format
msgid "command: %s\n"
msgstr "commande: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "échec de récupération de certains fichiers depuis %s\n"
@@ -472,10 +466,18 @@ msgstr "échec de récupération de certains fichiers depuis %s\n"
msgid "could not create removal transaction\n"
msgstr "la création de la transaction de suppression a échoué\n"
#, c-format
msgid "could not create transaction\n"
msgstr "la création de la transaction a échoué\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "l'initialisation de la transaction de suppression a échoué\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "l'initialisation de la transaction a échoué\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "la préparation de la transaction de suppression a échoué\n"
@@ -484,18 +486,6 @@ msgstr "la préparation de la transaction de suppression a échoué\n"
msgid "could not commit removal transaction\n"
msgstr "appliquer la transaction de suppression a échoué\n"
#, c-format
msgid "could not create transaction\n"
msgstr "la création de la transaction a échoué\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "l'initialisation de la transaction a échoué\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "la préparation de la transaction a échoué\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "appliquer la transaction a échoué\n"
@@ -504,11 +494,6 @@ msgstr "appliquer la transaction a échoué\n"
msgid "could not remove lock file %s\n"
msgstr "la suppression du fichier de verrouillage %s a échoué\n"
#, 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"
#, c-format
msgid "could not create temp directory\n"
msgstr "la création du répertoire temporaire a échoué\n"
@@ -517,6 +502,14 @@ msgstr "la création du répertoire temporaire a échoué\n"
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 remove tmpdir %s\n"
msgstr "la suppression du répertoire temporaire %s a échoué\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "l'ouverture de %s: %s a échoué\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "changer de répertoire vers %s a échoué (%s)\n"
@@ -535,23 +528,15 @@ msgstr "changer de répertoire vers / a échoué (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "call to popen failed (%s)"
msgstr "l'appel de popen a échoué (%s)"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "call to waitpid failed (%s)\n"
msgstr "l'appel de waitpid a échoué (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "le scriptlet n'a pas pu être exécuté correctement\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "la suppression du répertoire temporaire %s a échoué\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "l'ouverture de %s: %s a échoué\n"
msgid "command failed to execute correctly\n"
msgstr "la commande n'a pas pu être exécutée correctement\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -560,4 +545,3 @@ msgstr "le cache %s n'existe pas, création...\n"
#, 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"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: hu\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"POT-Creation-Date: 2009-07-27 21:15-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"
@@ -49,14 +49,14 @@ msgstr ""
"eltérő könyvtár-jogosultságok: %s\n"
"fájlrendszer: %o csomag: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "kicsomagolás: %s szimbolikus link nem könyvtárra mutat\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "kicsomagolás: nem írok felül könyvtárat a %s fájllal\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "kicsomagolás: %s szimbolikus link nem könyvtárra mutat\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "nem sikerült kicsomagolni: %s (%s)\n"
@@ -102,8 +102,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "sikertelen a '%s' bejegyzés hozzáadása a gyorsítótárhoz\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "sikertelen a %s%s adatbázis-bejegyzés eltávolítása\n"
msgid "could not remove database %s\n"
msgstr "sikertelen a %s adatbázis-bejegyzés eltávolítása\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -125,6 +125,10 @@ msgstr "a(z) %s adatbázis inkonzisztens: eltérő nevek a(z) %s csomagnál\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"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "nem sikerült létrehozni a %s könyvtárat: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "nem sikerült értelmezni a(z) %s csomagleíró fájlját\n"
@@ -165,6 +169,10 @@ msgstr "a(z) %s csomag saját %s függősége után lesz eltávolítva\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"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "%s-%s csomag kihagyása\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "közvetett csomagválasztás (%s szolgáltatja %s-t)\n"
@@ -197,21 +205,13 @@ msgstr "nem tudom folytatni a letöltést, újrakezdem\n"
msgid "cannot write to file '%s'\n"
msgstr "nem sikerült a(z) '%s' fájlba írni\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "hiba '%s' letöltése közben: %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "hiba a(z) '%s' fájl írása során: %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "nem sikerült a könyvtárváltás ide: %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "XferCommand futtatása: sikertelen fork!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "úgy tűnik, hogy %s csonka: %jd/%jd bájt\n"
#, c-format
msgid "failed to download %s\n"
@@ -285,6 +285,10 @@ msgstr "nem sikerült eltávolítani az adatbázis-bejegyzést"
msgid "invalid url for server"
msgstr "hibás szerver-URL"
#, c-format
msgid "no servers configured for repository"
msgstr "a repóhoz nincs szerver beállítva"
#, c-format
msgid "transaction already initialized"
msgstr "a tranzakció már inicializált"
@@ -310,17 +314,17 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr "tranzakció végrehajtási kísérlet nem zárolt adatbázis mellett"
#, c-format
msgid "could not find or read package"
msgstr "nem található vagy nem olvasható a csomag"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "művelet megszakítva ignorepkg miatt"
#, c-format
msgid "invalid or corrupted package"
msgstr "hibás vagy sérült csomag"
@@ -329,14 +333,6 @@ msgstr "hibás vagy sérült csomag"
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"
@@ -357,10 +353,6 @@ msgstr "hibás vagy sérült delta"
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"
@@ -374,16 +366,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "nem sikerült néhány fájlt letölteni"
#, c-format
msgid "invalid regular expression"
@@ -422,16 +406,28 @@ 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"
#, c-format
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
msgstr "%s-%s: csomagfrissítés kihagyása (a(z) %s-%s le fogja cserélni)\n"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: csomagfrissítés kihagyása (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: csomag downgrade kihagyása (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: visszatérés a %s verióról a régebbi %s verzióhoz\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: a helyi (%s) újabb, mint %s (%s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: csomagfrissítés kihagyása (%s => %s)\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "csomag-lecserélés kihagyása (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "nem lehet lecserélni a(z) %s csomagot a(z) %s csomaggal\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -457,10 +453,6 @@ msgstr "feloldhatatlan csomagütközéseket találtam\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' kihagyása, mert ütközik a következővel: '%s'\n"
#, c-format
msgid "command: %s\n"
msgstr "parancs: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
@@ -469,10 +461,18 @@ msgstr "nem sikerült néhány fájlt letölteni innen: %s\n"
msgid "could not create removal transaction\n"
msgstr "nem sikerült létrehozni az eltávolító tranzakciót\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nem sikerült létrehozni a tranzakciót\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nem sikerült inicializálni az eltávolító tranzakciót\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nem sikerült inicializálni a tranzakciót\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nem sikerült előkészíteni az eltávolító tranzakciót\n"
@@ -481,18 +481,6 @@ msgstr "nem sikerült előkészíteni az eltávolító tranzakciót\n"
msgid "could not commit removal transaction\n"
msgstr "nem sikerült végrehajtani az eltávolító tranzakciót\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nem sikerült létrehozni a tranzakciót\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nem sikerült inicializálni a tranzakciót\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "nem sikerült előkészíteni a tranzakciót\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "nem sikerült végrehajtani a tranzakciót\n"
@@ -501,10 +489,6 @@ msgstr "nem sikerült végrehajtani a tranzakciót\n"
msgid "could not remove lock file %s\n"
msgstr "nem sikerült a zároló fájl (%s) eltávolítása\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "Nincs /bin/sh a szülő környezetben, szkript megszakítása\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "nem sikerült létrehozni az ideiglenes könyvtárat\n"
@@ -513,6 +497,14 @@ msgstr "nem sikerült létrehozni az ideiglenes könyvtárat\n"
msgid "could not copy tempfile to %s (%s)\n"
msgstr "nem sikerült az ideiglenes fájlt ide másolni: %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nem sikerült a könyvtárváltás ide: %s (%s)\n"
@@ -538,16 +530,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "waitpid hívás sikertelen (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "a szkript hibásan futott\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
msgid "command failed to execute correctly\n"
msgstr "a parancs nem futott le sikeresen\n"
#, c-format
msgid "no %s cache exists, creating...\n"

View File

@@ -1,7 +1,7 @@
# 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, 2008
# Giovanni 'voidnull' Scafora <giovanni@archlinux.org>, 2007, 2008, 2009
# Andrea 'bash' Scarpino <bash.lnx@gmail.com>, 2008
# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007
# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: libalpm VERSION\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-23 19:30+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 15:00+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"
@@ -24,7 +24,9 @@ msgstr "sostituzione in corso della vecchia versione di %s-%s con %s\n"
#, c-format
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"
msgstr ""
"ignoro %s-%s perché la nuova versione %s è già presente nella lista dei "
"pacchetti\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
@@ -40,8 +42,7 @@ msgstr "la sostituzione dei pacchetti con -U non è ancora supportata\n"
#, 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"
msgstr "puoi sostituire manualmente i pacchetti, usando le opzioni -Rd e -U\n"
#, c-format
msgid ""
@@ -52,12 +53,12 @@ msgstr ""
"filesystem: %o pacchetto: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "estrazione: il link simbolico %s non punta alla directory\n"
msgid "extract: not overwriting dir with file %s\n"
msgstr "estrazione: non posso sovrascrivere la directory con il file %s\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "estrazione: non sovrascrivere la directory con il file %s\n"
msgid "extract: symlink %s does not point to dir\n"
msgstr "estrazione: il link simbolico %s non punta alla directory\n"
#, c-format
msgid "could not extract %s (%s)\n"
@@ -69,7 +70,7 @@ msgstr "impossibile rinominare %s in %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s salvato come %s\n"
msgstr "%s è stato salvato come %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
@@ -85,7 +86,7 @@ msgstr "estrazione di %s come %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "impossibile ottenere la directory corrente\n"
msgstr "impossibile determinare la directory corrente\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
@@ -104,8 +105,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "impossible includere la voce '%s' nella cache\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "impossibile rimuovere la voce %s%s dal database\n"
msgid "could not remove database %s\n"
msgstr "impossibile rimuovere il database %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -113,7 +114,7 @@ msgstr "nome non valido per la voce del database '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "la voce nel database '%s' non è valida\n"
msgstr "la voce nel database '%s' è corrotta\n"
#, c-format
msgid "could not open file %s: %s\n"
@@ -121,11 +122,18 @@ msgstr "impossibile aprire il file %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "il database %s è corrotto: il nome del pacchetto %s è sbagliato\n"
msgstr ""
"il database %s è inconsistente: il nome del pacchetto %s non corrisponde\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "il database %s è corrotto: la versione del pacchetto %s è sbagliata\n"
msgstr ""
"il database %s è inconsistente: la versione del pacchetto %s non "
"corrisponde\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "impossibile creare la directory %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
@@ -149,11 +157,11 @@ msgstr "manca il metadata del pacchetto in %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "tentativo in corso di registrare di nuovo il database 'locale'\n"
msgstr "tentativo in corso di registrare di nuovo il DB 'locale'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "il percorso del database non è definito\n"
msgstr "il percorso del database non è stato definito\n"
#, c-format
msgid "dependency cycle detected:\n"
@@ -167,9 +175,13 @@ msgstr "%s sarà rimosso dopo la sua dipendenza %s\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s sarà installato prima della sua dipendenza %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "sto ignorando il pacchetto %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "il pacchetto fornito era selezionato (%s fornisce %s)\n"
msgstr "il pacchetto è già stato selezionato (%s dipende da %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
@@ -177,11 +189,11 @@ msgstr "impossibile risolvere \"%s\", una dipendenza di \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' non è corretto\n"
msgstr "l'url '%s' non è esatto\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "il protocollo dell'url non è specificato, sarà usato HTTP\n"
msgstr "non è stato specificato il protocollo dell'url, sarà usato HTTP\n"
#, c-format
msgid "disk"
@@ -189,7 +201,7 @@ msgstr "disco"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "impossibile recuperare il file '%s' da %s : %s\n"
msgstr "impossibile scaricare il pacchetto '%s' da %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
@@ -199,21 +211,13 @@ msgstr "impossibile riprendere il download\n"
msgid "cannot write to file '%s'\n"
msgstr "impossibile scrivere nel file '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "si è verificato un errore durante il download di '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "si è verificato un errore durante la scrittura nel file '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "impossibile spostarsi nella directory %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "avvio di XferCommand: processo non riuscito!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sembra essere incompleto: %jd/%jd byte\n"
#, c-format
msgid "failed to download %s\n"
@@ -245,11 +249,11 @@ msgstr "è stato passato un argomento sbagliato o NULL"
#, c-format
msgid "library not initialized"
msgstr "libreria non inizializzata"
msgstr "la libreria non è stata inizializzata"
#, c-format
msgid "library already initialized"
msgstr "libreria già inizializzata"
msgstr "la libreria è già stata inizializzata"
#, c-format
msgid "unable to lock database"
@@ -265,11 +269,11 @@ msgstr "impossibile creare il database"
#, c-format
msgid "database not initialized"
msgstr "database non inizializzato"
msgstr "il database non è stato inizializzato"
#, c-format
msgid "database already registered"
msgstr "il database è già registrato"
msgstr "il database è già stato registrato"
#, c-format
msgid "could not find database"
@@ -287,58 +291,54 @@ msgstr "impossibile rimuovere la voce dal database"
msgid "invalid url for server"
msgstr "url non valido per il server"
#, c-format
msgid "no servers configured for repository"
msgstr "nessun server è stato configurato per il repository"
#, c-format
msgid "transaction already initialized"
msgstr "operazione già inizializzata"
msgstr "l'operazione è già stata inizializzata"
#, c-format
msgid "transaction not initialized"
msgstr "operazione non inizializzata"
msgstr "l'operazione non è stata inizializzata"
#, c-format
msgid "duplicate target"
msgstr "pacchetto doppio"
msgstr "pacchetto duplicato"
#, c-format
msgid "transaction not prepared"
msgstr "operazione non preparata"
msgstr "l'operazione non è stata preparata"
#, c-format
msgid "transaction aborted"
msgstr "operazione annullata"
msgstr "l'operazione è stata annullata"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operazione incompatibile con il tipo di transazione"
msgstr "l'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"
msgid "transaction commit attempt when database is not locked"
msgstr "prova il commit dell'operazione quando il database non è bloccato"
#, c-format
msgid "could not find or read package"
msgstr "impossibile trovare o leggere il pacchetto"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "l'operazione è stata ignorata a causa di ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "pacchetto non valido o corrotto"
msgstr "il pacchetto non è valido oppure è 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"
@@ -353,16 +353,12 @@ msgstr "nessun repository corrispondente"
#, c-format
msgid "invalid or corrupted delta"
msgstr "delta non valido o corrotto"
msgstr "il delta non è valido oppure è 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"
@@ -376,20 +372,12 @@ 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"
msgid "failed to retrieve some files"
msgstr "impossibile scaricare alcuni file"
#, c-format
msgid "invalid regular expression"
msgstr "espressione regolare non valida"
msgstr "l'espressione regolare non è valida"
#, c-format
msgid "libarchive error"
@@ -397,11 +385,11 @@ msgstr "errore di libarchive"
#, c-format
msgid "download library error"
msgstr "si è verificato un errore della libreria durante il download"
msgstr "si è verificato un errore della libreria di download"
#, c-format
msgid "error invoking external downloader"
msgstr "errore nell'inizializzare il download"
msgstr "si è verificato un errore lanciando il downloader esterno"
#, c-format
msgid "unexpected error"
@@ -424,10 +412,16 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: l'aggiornamento del pacchetto è stato ignorato (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: il downgrade del pacchetto è stato ignorato (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: downgrade in corso dalla versione %s alla versione %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
@@ -435,8 +429,12 @@ 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "sto ignorando la sostituzione del pacchetto (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "impossibile sostituire %s con %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -462,24 +460,29 @@ msgstr "sono stati rilevati dei conflitti irrisolvibili\n"
#, c-format
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"
#, c-format
msgid "command: %s\n"
msgstr "comando: %s\n"
msgstr ""
"rimozione di '%s' dalla lista dei pacchetti perché va in conflitto con '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "impossibile recuperare alcuni file da %s\n"
msgstr "impossibile scaricare alcuni file da %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "impossibile avviare l'operazione di rimozione\n"
#, c-format
msgid "could not create transaction\n"
msgstr "impossibile avviare l'operazione\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "impossibile inizializzare l'operazione di rimozione\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "impossibile inizializzare l'operazione\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "impossibile preparare l'operazione di rimozione\n"
@@ -488,18 +491,6 @@ msgstr "impossibile preparare l'operazione di rimozione\n"
msgid "could not commit removal transaction\n"
msgstr "impossibile eseguire l'operazione di rimozione\n"
#, c-format
msgid "could not create transaction\n"
msgstr "impossibile avviare l'operazione\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "impossibile inizializzare l'operazione\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "impossibile preparare l'operazione\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "impossibile eseguire l'operazione\n"
@@ -508,10 +499,6 @@ msgstr "impossibile eseguire l'operazione\n"
msgid "could not remove lock file %s\n"
msgstr "impossibile rimuovere il file di lock %s\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "/bin/sh non è presente nell'ambiente, lo scriptlet sarà interrotto\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "impossibile creare la directory temporanea\n"
@@ -520,6 +507,14 @@ msgstr "impossibile creare la directory temporanea\n"
msgid "could not copy tempfile to %s (%s)\n"
msgstr "impossibile copiare il file temporaneo in %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "impossibile rimuovere la directory temporanea %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "impossibile aprire %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "impossibile spostarsi nella directory %s (%s)\n"
@@ -545,16 +540,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "chiamata a waitpid non riuscita (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "L'esecuzione dello scriptlet non è riuscita correttamente\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "impossibile rimuovere la directory temporanea %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "impossibile aprire %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "l'esecuzione del comando non è riuscita correttamente\n"
#, c-format
msgid "no %s cache exists, creating...\n"

591
lib/libalpm/po/kk.po Normal file
View File

@@ -0,0 +1,591 @@
# Kazakh 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.
# Baurzhan Muftakhidinov <baurthefirst@gmail.com> 2009
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 19:05+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh\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 "дестелерді -A мен -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: not overwriting dir with file %s\n"
msgstr "тарқату: бума %s файлымен ауыстырылмайды\n"
#, c-format
msgid "extract: symlink %s does not point to dir\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 %s\n"
msgstr "%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 create directory %s: %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 "ignoring package %s-%s\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 writing to file '%s': %s\n"
msgstr "'%s' файлына жазу қатесі: %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s қысқартылады: %jd/%jd байт\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 "library іске қосылмады"
#, c-format
msgid "library already initialized"
msgstr "library іске қосылған болып тұр"
#, 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 "no servers configured for repository"
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 "transaction commit attempt when database is not locked"
msgstr "оқшауланбаған дерекқорға жазу талабы"
#, c-format
msgid "could not find or read package"
msgstr "дестені табу не оқу мүмкін емес"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "әрекет ignorepkg салдарынан тоқтатылды"
#, c-format
msgid "invalid or corrupted package"
msgstr "десте қате не зақымдалған"
#, c-format
msgid "cannot open package file"
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 "could not satisfy dependencies"
msgstr "тәуелділіктерді шешу мүмкін емес"
#, c-format
msgid "conflicting dependencies"
msgstr "ерегісетін тәуелділіктер"
#, c-format
msgid "conflicting files"
msgstr "ерегісетін файлдар"
#, c-format
msgid "failed to retrieve some files"
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: ignoring package upgrade (%s => %s)\n"
msgstr "%s: дестені жаңартуды елемеу (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: десте нұсқасын төмендетуді елемеу (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%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 "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "дестені алмастыруды елемеу (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "%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 "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 create transaction\n"
msgstr "сұранымды жасау мүмкін емес\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "өшіруге сұранымды іске қосу мүмкін емес\n"
#, c-format
msgid "could not initialize 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 commit transaction\n"
msgstr "сұранымды аяқтау мүмкін емес\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "%s оқшау файлын өшіру мүмкін емес\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 remove tmpdir %s\n"
msgstr "tmpdir %s өшіру мүмкін емес\n"
#, c-format
msgid "could not open %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 "command failed to execute correctly\n"
msgstr "команда дұрыс орындалмады\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"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "'%s' жүктеп алу қатесі: %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "%s бумасына ауысу мүмкін емес\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "XferCommand қосу: сәтсіз аяқталды\n"
#~ msgid "could not commit transaction"
#~ msgstr "сұранымды аяқтау мүмкін емес"
#~ msgid "could not download all files"
#~ msgstr "барлық файлдарды жүктеп алу мүмкін емес"
#~ msgid "cannot load package data"
#~ msgstr "дестенің мәліметтерін жүктеу мүмкін емес"
#~ msgid "package not installed or lesser version"
#~ msgstr "десте орнатылмаған, не оның нұсқасы ескі"
#~ msgid "group not found"
#~ msgstr "топ табылмады"
#~ msgid "user aborted the operation"
#~ msgstr "әрекетті пайдаланушы тоқтатты"
#~ msgid "internal error"
#~ msgstr "ішкі қате орын алды"
#~ msgid "not confirmed"
#~ msgstr "расталмады"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr ""
#~ "%s-%s: дестені жаңартуды елемеу (ол %s-%s нұсқасымен ауыстырылады)\n"
#~ msgid "command: %s\n"
#~ msgstr "командасы: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "сұранымды дайындау мүмкін емес\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Бастапқы ортада /bin/sh жоқ, скрипт орындалмайды\n"

View File

@@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Judd Vinet <jvinet@zeroflux.org>
# Copyright (C) YEAR Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
@@ -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-08-23 10:54-0500\n"
"POT-Creation-Date: 2009-07-27 21:15-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"
@@ -47,11 +47,11 @@ msgid ""
msgstr ""
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgid "extract: not overwriting dir with file %s\n"
msgstr ""
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgid "extract: symlink %s does not point to dir\n"
msgstr ""
#, c-format
@@ -99,7 +99,7 @@ msgid "could not add entry '%s' in cache\n"
msgstr ""
#, c-format
msgid "could not remove database entry %s%s\n"
msgid "could not remove database %s\n"
msgstr ""
#, c-format
@@ -122,6 +122,10 @@ msgstr ""
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr ""
#, c-format
msgid "could not create directory %s: %s\n"
msgstr ""
#, c-format
msgid "could not parse package description file in %s\n"
msgstr ""
@@ -162,6 +166,10 @@ msgstr ""
msgid "%s will be installed before its %s dependency\n"
msgstr ""
#, c-format
msgid "ignoring package %s-%s\n"
msgstr ""
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr ""
@@ -194,20 +202,12 @@ msgstr ""
msgid "cannot write to file '%s'\n"
msgstr ""
#, c-format
msgid "error downloading '%s': %s\n"
msgstr ""
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr ""
#, c-format
msgid "could not chdir to %s\n"
msgstr ""
#, c-format
msgid "running XferCommand: fork failed!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr ""
#, c-format
@@ -282,6 +282,10 @@ msgstr ""
msgid "invalid url for server"
msgstr ""
#, c-format
msgid "no servers configured for repository"
msgstr ""
#, c-format
msgid "transaction already initialized"
msgstr ""
@@ -307,17 +311,17 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr ""
#, c-format
msgid "could not find or read package"
msgstr ""
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr ""
#, c-format
msgid "invalid or corrupted package"
msgstr ""
@@ -326,14 +330,6 @@ msgstr ""
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 ""
@@ -354,10 +350,6 @@ msgstr ""
msgid "delta patch failed"
msgstr ""
#, c-format
msgid "group not found"
msgstr ""
#, c-format
msgid "could not satisfy dependencies"
msgstr ""
@@ -371,15 +363,7 @@ msgid "conflicting files"
msgstr ""
#, c-format
msgid "user aborted the operation"
msgstr ""
#, c-format
msgid "internal error"
msgstr ""
#, c-format
msgid "not confirmed"
msgid "failed to retrieve some files"
msgstr ""
#, c-format
@@ -419,7 +403,15 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr ""
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr ""
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr ""
#, c-format
@@ -427,7 +419,11 @@ msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr ""
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr ""
#, c-format
msgid "cannot replace %s by %s\n"
msgstr ""
#, c-format
@@ -454,10 +450,6 @@ msgstr ""
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
#, c-format
msgid "command: %s\n"
msgstr ""
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr ""
@@ -466,10 +458,18 @@ msgstr ""
msgid "could not create removal transaction\n"
msgstr ""
#, c-format
msgid "could not create transaction\n"
msgstr ""
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr ""
#, c-format
msgid "could not initialize transaction\n"
msgstr ""
#, c-format
msgid "could not prepare removal transaction\n"
msgstr ""
@@ -478,18 +478,6 @@ msgstr ""
msgid "could not commit removal transaction\n"
msgstr ""
#, c-format
msgid "could not create transaction\n"
msgstr ""
#, c-format
msgid "could not initialize transaction\n"
msgstr ""
#, c-format
msgid "could not prepare transaction\n"
msgstr ""
#, c-format
msgid "could not commit transaction\n"
msgstr ""
@@ -498,10 +486,6 @@ msgstr ""
msgid "could not remove lock file %s\n"
msgstr ""
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr ""
#, c-format
msgid "could not create temp directory\n"
msgstr ""
@@ -510,6 +494,14 @@ msgstr ""
msgid "could not copy tempfile to %s (%s)\n"
msgstr ""
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr ""
#, c-format
msgid "could not open %s: %s\n"
msgstr ""
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr ""
@@ -535,15 +527,7 @@ msgid "call to waitpid failed (%s)\n"
msgstr ""
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr ""
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr ""
#, c-format
msgid "could not open %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr ""
#, c-format

View File

@@ -3,14 +3,14 @@
# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Mateusz Jędrasik <m.jedrasik@gmail.com>, 2007.
# Mateusz Herych <heniekk@gmail.com>, 2008.
# Mateusz Herych <heniekk@gmail.com>, 2008-2009.
# #
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-08-23 10:54-0500\n"
"PO-Revision-Date: 2008-07-19 20:58+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 10:39+0100\n"
"Last-Translator: Mateusz Herych <heniekk@gmail.com>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
@@ -55,14 +55,14 @@ msgstr ""
"Różne prawa dla %s\n"
"system plików: %o pakiet: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "rozpakowywanie: dowiązanie symboliczne %s nie kieruje do katalogu\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "rozpakowywanie: nie nadpisuję katalogu plikiem %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "rozpakowywanie: dowiązanie symboliczne %s nie kieruje do katalogu\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "nie udało się rozpakować %s (%s)\n"
@@ -108,8 +108,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "nie udało się dodać pozycji '%s' w pliku podręcznym\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"
msgid "could not remove database %s\n"
msgstr "nie można usunąć bazy danych %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -131,6 +131,10 @@ msgstr "baza danych %s jest sprzeczna: niedopasowana nazwa w pakiecie %s\n"
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "baza danych %s jest sprzeczna: niedopasowana wersja w pakiecie %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "nie można stworzyć katalogu %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "nie udało się przeczytać opisu pliku w %s\n"
@@ -171,6 +175,10 @@ msgstr "%s zostanie usunięta po zależniościach %s\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s zostanie zainstalowane przed zależnościami %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorowanie pakietu %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "dostawca pakietu został wybrany (%s dostarcza %s)\n"
@@ -203,21 +211,13 @@ msgstr "nie można kontynuować pobieranie, zaczynanie od początku\n"
msgid "cannot write to file '%s'\n"
msgstr "nie można zapisywać do pliku '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "błąd podczas pobierania '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "Błąd podczas zapisywania do pliku '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "nie udało się zmienić katalogu na / %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "uruchamianie XferCommand: klonowanie nieudane!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s wygląda, jakby został obcięty %jd/%jd bajtów\n"
#, c-format
msgid "failed to download %s\n"
@@ -291,6 +291,10 @@ msgstr "nie udało się usunąć wpisu do bazy danych"
msgid "invalid url for server"
msgstr "nieprawidłowy url dla serwera"
#, c-format
msgid "no servers configured for repository"
msgstr "brak serwerów skonfigurowanych dla repozytorium"
#, c-format
msgid "transaction already initialized"
msgstr "tranzakcja została już zainicjowana"
@@ -316,17 +320,17 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr "zmiana tranzakcji następuje, kiedy baza danych nie jest zablokowana"
#, c-format
msgid "could not find or read package"
msgstr "nie udało się znaleźć bądź odczytać pakietu"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operacja anulowana przez ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "nieprawidłowy bądź uszkodzony pakiet"
@@ -335,14 +339,6 @@ msgstr "nieprawidłowy bądź uszkodzony pakiet"
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"
@@ -363,10 +359,6 @@ msgstr "nieprawidłowy bądź uszkodzony pakiet przyrostowy"
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"
@@ -380,16 +372,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "nie udało się odzyskać niektórych plików"
#, c-format
msgid "invalid regular expression"
@@ -429,17 +413,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorowanie aktualizacji pakietu (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorowanie dezaktualizacji pakietu (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: dezaktualizowanie z wersji %s do wersji %s\n"
#, 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorowanie zastępowania pakietu (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "nie udało się zastąpić %s przez %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -465,10 +460,6 @@ msgstr "odkryto nierozwiązywalne konflikty pakietów\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "usuwanie '%s' z listy celów ponieważ konfliktuje z '%s'\n"
#, c-format
msgid "command: %s\n"
msgstr "komenda: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "nie udało się pobrać niektórych plików z %s\n"
@@ -477,10 +468,18 @@ msgstr "nie udało się pobrać niektórych plików z %s\n"
msgid "could not create removal transaction\n"
msgstr "nie udało się utworzyć tranzakcji usuwania\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nie udało się stworzyć tranzakcji\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nie udało się zainicjować tranzakcji usuwania\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nie udało się zainicjować tranzakcji\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nie udało się przygotować tranzakcji usuwania\n"
@@ -489,18 +488,6 @@ msgstr "nie udało się przygotować tranzakcji usuwania\n"
msgid "could not commit removal transaction\n"
msgstr "nie udało się wykonać tranzakcji usuwania\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nie udało się stworzyć tranzakcji\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nie udało się zainicjować tranzakcji\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "nie udało się przygotować tranzakcji\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "nie udało się wykonać tranzakcji\n"
@@ -509,10 +496,6 @@ msgstr "nie udało się wykonać tranzakcji\n"
msgid "could not remove lock file %s\n"
msgstr "nie udało się usunąć pliku blokującego %s\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "Brak /bin/sh w środowisku, przerywanie wykonywania skryptu\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "nie udało się stworzyć katalogu tymczasowego\n"
@@ -521,6 +504,14 @@ msgstr "nie udało się stworzyć katalogu tymczasowego\n"
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 remove tmpdir %s\n"
msgstr "nie udało się usunąć katalogu tymczasowego %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nie udało się otworzyć %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"
@@ -546,16 +537,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "zawołanie do waitpid nieudane (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "skrypt nie mógł zostać poprawnie wykonany\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nie udało się usunąć katalogu tymczasowego %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nie udało się otworzyć %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "komenda nie wykonała się poprawnie\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -566,3 +549,48 @@ 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"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "błąd podczas pobierania '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "nie udało się zmienić katalogu na / %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "uruchamianie XferCommand: klonowanie nieudane!\n"
#~ msgid "could not commit transaction"
#~ msgstr "nie udało się wykonać tranzakcji"
#~ msgid "could not download all files"
#~ msgstr "nie udało się pobrać wszystkich plików"
#~ msgid "cannot load package data"
#~ msgstr "nie udało się załadować danych pakietu"
#~ msgid "package not installed or lesser version"
#~ msgstr "pakiet nie zainstalowany lub zainstalowany w niższej wersji"
#~ msgid "group not found"
#~ msgstr "grupa nie została odnaleziona"
#~ msgid "user aborted the operation"
#~ msgstr "użytkownik zaniechał operacji"
#~ msgid "internal error"
#~ msgstr "błąd wewnętrzny"
#~ msgid "not confirmed"
#~ msgstr "nie potwierdzono"
#~ 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"
#~ msgid "command: %s\n"
#~ msgstr "komenda: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "nie udało się przygotować tranzakcji\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Brak /bin/sh w środowisku, przerywanie wykonywania skryptu\n"

View File

@@ -12,9 +12,9 @@ msgid ""
msgstr ""
"Project-Id-Version: pt_BR\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-24 11:24-0300\n"
"Last-Translator: Hugo Doria <hugo@archlinux.org>\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 23:17-0300\n"
"Last-Translator: Armando M. Baratti <ambaratti.listas@gmail.com.br>\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"
@@ -59,14 +59,14 @@ msgstr ""
"permissões de diretório diferem em %s\n"
"sistema de arquivos: %o pacote: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extração: symlink %s não aponta para diretório\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extração: não sobrescrevendo diretório com arquivo %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extração: symlink %s não aponta para diretório\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "não foi possível extrair %s (%s)\n"
@@ -112,8 +112,8 @@ msgid "could not add entry '%s' in cache\n"
msgstr "não foi possível adicionar a entrada '%s' ao cache\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"
msgid "could not remove database %s\n"
msgstr "não foi possível remover a base de dados %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -121,7 +121,7 @@ msgstr "nome inválido para a entrada na base de dados '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "entrada corrompida na base de dados '%s'\n"
msgstr "entrada corrompida da base de dados '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
@@ -136,6 +136,10 @@ 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"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "não foi possível criar diretório %s: %s\n"
#, 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"
@@ -154,7 +158,7 @@ msgstr "erro ao ler o pacote %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "faltando metadata do pacote em %s\n"
msgstr "faltando metadados do pacote em %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
@@ -176,6 +180,10 @@ msgstr "%s será removido após sua dependência %s\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s será instalado antes de sua dependência %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorando pacote %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "pacote provedor foi selecionado (%s provê %s)\n"
@@ -202,27 +210,19 @@ msgstr "falha ao obter arquivo '%s' de %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "não foi possível resumir o download, reiniciando\n"
msgstr "não foi possível retomar o download, reiniciando\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "não foi possível escrever no arquivo '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "erro no download de '%s': %s\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "erro ao escrever no arquivo '%s': %s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "não foi possível mudar para o diretório %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "rodando XferCommand: fork falhou!\n"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
@@ -250,7 +250,7 @@ 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"
msgstr "argumento passado está errado ou NULO"
#, c-format
msgid "library not initialized"
@@ -296,6 +296,10 @@ msgstr "não foi possível remover a entrada da base de dados"
msgid "invalid url for server"
msgstr "url inválida para servidor"
#, c-format
msgid "no servers configured for repository"
msgstr "nenhum servidor configurado para o repositório"
#, c-format
msgid "transaction already initialized"
msgstr "transação já inicializada"
@@ -321,17 +325,17 @@ 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"
msgid "transaction commit attempt when database is not locked"
msgstr "tentativa de aceitação de transação com a base de dados não travada"
#, c-format
msgid "could not find or read package"
msgstr "não foi possível ler ou escrever o pacote"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operação cancelada devido a ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "pacote inválido ou corrompido"
@@ -340,14 +344,6 @@ msgstr "pacote inválido ou corrompido"
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"
@@ -368,10 +364,6 @@ msgstr "delta inválido ou corrompido"
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"
@@ -385,16 +377,8 @@ 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"
msgid "failed to retrieve some files"
msgstr "falha ao obter alguns arquivos"
#, c-format
msgid "invalid regular expression"
@@ -430,19 +414,31 @@ 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"
msgstr "não foi possível remover a entrada '%s' do cache\n"
#, c-format
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
msgstr "%s-%s: ignorando atualização do pacote (a ser substituido por %s-%s)\n"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorando atualização do pacote (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorando retorno de versão do pacote (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: voltando da versão %s para a versão %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: local (%s) é mais novo que %s (%s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorando atualização do pacote (%s => %s)\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorando substituição do pacote (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "não foi possível substituir %s por %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -468,10 +464,6 @@ msgstr "conflito de pacotes não solucionável detectado\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "removendo '%s' da lista de pacotes porque ele conflita com '%s'\n"
#, c-format
msgid "command: %s\n"
msgstr "comando: %s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "falha ao obter alguns arquivos de %s\n"
@@ -480,10 +472,18 @@ msgstr "falha ao obter alguns arquivos de %s\n"
msgid "could not create removal transaction\n"
msgstr "não foi possível criar transação de remoção\n"
#, c-format
msgid "could not create transaction\n"
msgstr "não foi possível criar a transação\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "não foi possível inicializar a transação de remoção\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "não foi possível inicializar a transação\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "não foi possível preparar a transação de remoção\n"
@@ -492,18 +492,6 @@ msgstr "não foi possível preparar a transação de remoção\n"
msgid "could not commit removal transaction\n"
msgstr "não foi possível efetuar a transação de remoção\n"
#, c-format
msgid "could not create transaction\n"
msgstr "não foi possível criar a transação\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "não foi possível inicializar a transação\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "não foi possível preparar a transação\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "não foi possível efetuar a transação\n"
@@ -512,10 +500,6 @@ msgstr "não foi possível efetuar a transação\n"
msgid "could not remove lock file %s\n"
msgstr "não foi possível remover o arquivo de trava %s\n"
#, 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"
#, c-format
msgid "could not create temp directory\n"
msgstr "não foi possível criar diretório temporário\n"
@@ -524,6 +508,14 @@ msgstr "não foi possível criar diretório temporário\n"
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 remove tmpdir %s\n"
msgstr "não foi possível remover o diretório temporário %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "não foi possível abrir %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"
@@ -549,16 +541,8 @@ msgid "call to waitpid failed (%s)\n"
msgstr "chamada para waitpid falhou (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "scriptlet falhou em executar corretamente\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "não foi possível remover o diretório temporário %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "não foi possível abrir %s : %s\n"
msgid "command failed to execute correctly\n"
msgstr "o comando falhou em executar corretamente\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -566,5 +550,50 @@ msgstr "cache %s não existe, criando...\n"
#, 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"
msgstr "não foi possível criar cache de pacotes, usando /tmp em seu lugar\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "erro no download de '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "não foi possível mudar para o diretório %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "rodando XferCommand: fork falhou!\n"
#~ msgid "could not commit transaction"
#~ msgstr "não foi possível realizar transação"
#~ msgid "could not download all files"
#~ msgstr "não foi possível fazer o download de todos os arquivos"
#~ msgid "cannot load package data"
#~ msgstr "não foi possível carregar dados do pacote"
#~ msgid "package not installed or lesser version"
#~ msgstr "pacote não instalado ou versão inferior"
#~ msgid "group not found"
#~ msgstr "grupo não encontrado"
#~ msgid "user aborted the operation"
#~ msgstr "usuário abortou a operação"
#~ msgid "internal error"
#~ msgstr "erro interno"
#~ msgid "not confirmed"
#~ msgstr "não confirmado"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr ""
#~ "%s-%s: ignorando atualização do pacote (a ser substituido por %s-%s)\n"
#~ msgid "command: %s\n"
#~ msgstr "comando: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "não foi possível preparar a transação\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "/bin/sh não encontrado no diretório pai, abortando scriptlet\n"

545
lib/libalpm/po/ro.po Normal file
View File

@@ -0,0 +1,545 @@
# libalpm Romanian translation.
# Copyright (C) 2009 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the PACKAGE package.
# Volodia Macovei <blog@volodia.ro>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-06-28 14:30+0700\n"
"Last-Translator: volodia macovei <blog@volodia.ro>\n"
"Language-Team: Romanian SbLUG for Arch <blog@volodia.ro>\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"
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr "se înlocuieşte versiunea veche %s-%s cu %s în lista ţintă\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr ""
"se trece peste %s-%s deoarece o versiune mai nouă %s există în lista ţintă\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "s-au găsit pachete în conflict în lista ţintă\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "nu puteţi instala două pachete aflate în conflict în acelaşi timp\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "înlocuirea pachetelor cu -U nu este suportată încă\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "puteţi înlocui manual pachetele folosind -Rd şi -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"permisiile directorului diferă la %s\n"
"filesystem: %o package: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extragere: nu se suprascrie dir cu fişierul %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extragere: symlink %s nu punctează la dir\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "nu se poate extrage %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nu se poate redenumi %s în %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s salvat ca %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "nu se poate instala %s ca %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s instalat ca %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "se extrage %s ca %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "nu poate fi dat directorul de lucru curent\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "problemă apărută la actualizarea %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "problemă apărută la instalarea %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "nu se poate actualiza intrarea în baza de date %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "nu se poate adăuga intrarea '%s' în cache\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "nu poate fi eliminată baza de date %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "nume pentru intrarea în baza de date nevalid '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "intrare în baza de date coruptă '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "nu poate fi deschis fişierul %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr ""
"baza de date %s este inconsistentă: numele nu se potriveşte cu pachetul %s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr ""
"baza de date %s este inconsistentă: versiunea nu se potriveşte cu pachetul %"
"s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "nu poate fi creat director %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "nu a putut fi analizat fişierul de descriere a pachetului în %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "nume pachet lipsă în %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "versiune pachet lipsă în %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "eroare la citirea pachetului %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "lipsă metadata pentru pachet în %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "încercare de a reînregistra 'local' DB\n"
#, c-format
msgid "database path is undefined\n"
msgstr "calea bazei de date este nedefinită\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "a fost detectat ciclul de dependenţă:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s va fi eliminat înaintea dependenţei sale %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s va fi instalat înaintea dependenţei sale %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "se ignoră pachetul %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "pachetul furnizor a fost selectat (%s furnizează %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nu se poate rezolva \"%s\", o dependenţă a \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' este nevalid\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "schemă URL nespecificată, se presupune HTTP\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "eşec la regăsirea fişierului '%s' din %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "nu se poate relua descărcare, se începe peste\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "nu se poate scrie în fişierul '%s'\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "eroare la scriere în fişierul '%s': %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s apare a fi trunchiat: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "eşec la descărcarea %s\n"
#, c-format
msgid "out of memory!"
msgstr "depăşire de memorie!"
#, c-format
msgid "unexpected system error"
msgstr "eroare de sistem neaşteptată"
#, c-format
msgid "insufficient privileges"
msgstr "privilegii insuficiente"
#, c-format
msgid "could not find or read file"
msgstr " nu poate fi găsit sau citit fişierul"
#, c-format
msgid "could not find or read directory"
msgstr "nu poate fi găsit sau citit directorul"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "argument greşit sau NULL trecut"
#, c-format
msgid "library not initialized"
msgstr "bibliotecă neiniţializată"
#, c-format
msgid "library already initialized"
msgstr "bibliotecă deja iniţializată"
#, c-format
msgid "unable to lock database"
msgstr "imposibilitate de a bloca baza de date"
#, c-format
msgid "could not open database"
msgstr "nu poate fi deschisă baza de date"
#, c-format
msgid "could not create database"
msgstr "nu poate fi creată baza de date"
#, c-format
msgid "database not initialized"
msgstr "bază de date neiniţializată"
#, c-format
msgid "database already registered"
msgstr "bază de date deja înregistrată"
#, c-format
msgid "could not find database"
msgstr "nu poate fi găsită baza de date"
#, c-format
msgid "could not update database"
msgstr "nu poate fi actualizată baza de date"
#, c-format
msgid "could not remove database entry"
msgstr "nu poate fi eliminată intrarea în baza de date"
#, c-format
msgid "invalid url for server"
msgstr "URL nevalid pentru server"
#, c-format
msgid "no servers configured for repository"
msgstr "nu sunt servere confugurate pentru depozit"
#, c-format
msgid "transaction already initialized"
msgstr "tranzacţie deja iniţializată"
#, c-format
msgid "transaction not initialized"
msgstr "tranzacţie neiniţializată"
#, c-format
msgid "duplicate target"
msgstr "dublează ţinta"
#, c-format
msgid "transaction not prepared"
msgstr "tranzacţie nepregătită"
#, c-format
msgid "transaction aborted"
msgstr "tranzacţie abandonată"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operaţiune incompatibilă cu tipul tranzacţiei"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr "efectuarea tranzacției așteaptă până baza de date nu va fi blocată"
#, c-format
msgid "could not find or read package"
msgstr "pachetul nu poate fi găsit sau citit"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operație abandonată datorită ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "pachet nevalid sau corupt"
#, c-format
msgid "cannot open package file"
msgstr "nu poate fi deschis fişierul pachet"
#, c-format
msgid "cannot remove all files for package"
msgstr "nu pot fi eliminate toate fişierele din pachet"
#, c-format
msgid "package filename is not valid"
msgstr "numele de fişier pachet este nevalid"
#, c-format
msgid "no such repository"
msgstr "nu există astfel de depozit"
#, c-format
msgid "invalid or corrupted delta"
msgstr "delta invalid sau corupt"
#, c-format
msgid "delta patch failed"
msgstr "patch delta eşuat"
#, c-format
msgid "could not satisfy dependencies"
msgstr "nu pot fi satisfăcute dependenţele"
#, c-format
msgid "conflicting dependencies"
msgstr "dependenţe în conflict"
#, c-format
msgid "conflicting files"
msgstr "fişiere în conflict"
#, c-format
msgid "failed to retrieve some files"
msgstr "eşec în refacerea unor fişiere"
#, c-format
msgid "invalid regular expression"
msgstr "expresie regulară invalidă"
#, c-format
msgid "libarchive error"
msgstr "eroare libarchive"
#, c-format
msgid "download library error"
msgstr "eroare în biblioteca de descărcare"
#, c-format
msgid "error invoking external downloader"
msgstr "eroare la invocarea descărcătorului extern"
#, c-format
msgid "unexpected error"
msgstr "eroare neaşteptată"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "nu poate fi găsit %s în baza de date -- se trece peste\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "nu poate fi eliminat fişierul '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "nu se poate elimina intrarea în baza de date %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "nu se poate elimina intrarea '%s' din cache\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: se ignoră actualizarea pachetului (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: se ignoră declasificarea pachetului (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: declasare de la versiunea %s la versiunea %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: (%s) local este mai nou decât %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "se ignoră înlocuirea pachetului (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "nu poate fi înlocuit %s de %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "depozit '%s' negăsit\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s este actualizat -- se trece peste\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s este actualizat -- se reinstalează\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "se declasează pachetul %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "au fost detectate conflicte nerezolvabile în pachet\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "se elimină '%s' din lista ţintă deoarece este în conflict cu '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "eşec în refacerea unor fişiere din %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "nu poate fi creată tranzacţia de eliminare\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nu poate fi creată tranzacţia\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nu poate fi iniţializată tranzacţia de eliminare\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nu poate fi iniţializată tranzacţia\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nu poate fi pregătită tranzacţia de eliminare\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nu poate fi efectuată tranzacţia de eliminare\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "nu poate fi efectuată tranzacţia\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "nu poate fi eliminat fişierul blocat %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "nu poate fi creat directorul temp\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "nu se poate copia tempfile la %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nu poate fi eliminat tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nu se poate deschide %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nu poate fi schimbat directorul la %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "nu se poate diviza un nou proces (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "nu poate fi schimbat directorul root (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "nu poate fi schimbat directorul la / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "cererea către popen a eşuat (%s)"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "cererea către waitpid a eşuat (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "executarea corectă a comenzii a eşuat\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "nu există %s cache, se crează...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "nu se poate crea cache pachet, se foloseşte mai degrabă /tmp\n"

View File

@@ -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-08-23 10:54-0500\n"
"PO-Revision-Date: 2008-08-24 02:00+0200\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 20:29+0300\n"
"Last-Translator: Sergey Tereschenko <serg.partizan@gmail.com>\n"
"Language-Team: Russian\n"
"MIME-Version: 1.0\n"
@@ -19,7 +19,7 @@ msgstr ""
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr "заменяю устаревшую версию %s-%s на %s в списке целей\n"
msgstr "заменяется устаревшая версия %s-%s на %s в списке целей\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
@@ -31,11 +31,13 @@ msgstr "в списке целей найдены конфликтующие п
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "вы не можете установить два конфликтующих пакета одновременно\n"
msgstr ""
"вы не можете одновременно установить конфликтующие между собой пакеты\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "замещение пакетов с использованием опций -A и -U еще не реализовано\n"
msgstr ""
"замещение пакетов с использованием параметров -A и -U еще не реализовано\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
@@ -46,32 +48,32 @@ msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"права доступа различаются у директории %s\n"
"права доступа различаются у каталога %s\n"
"файловая система: %o пакет: %o\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "извлечение: символическая ссылка %s не указывает на директорию\n"
msgid "extract: not overwriting dir with file %s\n"
msgstr "извлечение: не перезаписывается каталог файлом %s\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "извлечение: не перезаписываю директорию файлом %s\n"
msgid "extract: symlink %s does not point to dir\n"
msgstr "извлечение: символическая ссылка %s не указывает на каталог\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "не могу извлечь %s (%s)\n"
msgstr "не удалось извлечь %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "не могу переименовать %s в %s (%s)\n"
msgstr "не удалось переименовать %s в %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s сохранен как %s\n"
msgstr "%s сохранён как %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "не могу установить %s как %s: %s\n"
msgstr "не удалось установить %s как %s: %s\n"
#, c-format
msgid "%s installed as %s\n"
@@ -79,11 +81,11 @@ msgstr "%s установлен как %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "извлекаю %s как %s.pacnew\n"
msgstr "%s извлекается как %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "не могу определить текущую рабочую директорию\n"
msgstr "не удалось определить текущий рабочий каталог\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
@@ -95,19 +97,19 @@ msgstr "обнаружена проблема во время установки
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "не могу обновить в базе данных запись %s-%s\n"
msgstr "не удалось обновить в базе данных запись %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "не могу добавить запись '%s' в кэш\n"
msgstr "не удалось добавить запись '%s' в кэш\n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "не могу удалить из базы данных запись %s%s\n"
msgid "could not remove database %s\n"
msgstr "не удалось удалить базу данных %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "неправильное имя для записи базы данных '%s'\n"
msgstr "неправильное имя для записи в базе данных '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
@@ -115,7 +117,7 @@ msgstr "повреждённая запись в базе данных '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "не могу открыть файл %s: %s\n"
msgstr "не удалось открыть файл %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
@@ -127,9 +129,13 @@ msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr ""
"противоречивая информация в базе данных %s: не совпадает версия пакета %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "не удалось создать каталог %s: (%s)\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "не могу проанализировать файл с описанием пакета в %s\n"
msgstr "не удалось проанализировать файл с описанием пакета в %s\n"
#, c-format
msgid "missing package name in %s\n"
@@ -145,11 +151,11 @@ msgstr "ошибка при чтении пакета %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "отсутствуют метаданые пакета в %s\n"
msgstr "отсутствуют метаданные пакета в %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "попытка перерегистрировать локальную базу данных\n"
msgstr "попытка перерегистрировать локальную БД\n"
#, c-format
msgid "database path is undefined\n"
@@ -161,23 +167,27 @@ msgstr "обнаружена циклическая зависимость:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s будет удалён после %s, как зависимость\n"
msgstr "%s будет удалён после его зависимости %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s будет установлен перед %s, как зависимость\n"
#, c-format
msgid "ignoring package %s-%s\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"
msgstr "не удалось разрешить \"%s\", зависимость \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "ссылка '%s' недействительна\n"
msgstr "ссылка '%s' некорректна\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
@@ -197,27 +207,19 @@ msgstr "не удалось продолжить закачку, начинаю
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "не могу записать в файл '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "ошибка загрузки '%s': %s\n"
msgstr "не удалось записать в файл '%s'\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "не могу записать в файл '%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"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s, видимо, обрезан: %jd/%jd байт\n"
#, c-format
msgid "failed to download %s\n"
msgstr "не могу загрузить %s\n"
msgstr "не удалось загрузить %s\n"
#, c-format
msgid "out of memory!"
@@ -225,7 +227,7 @@ msgstr "недостаточно памяти!"
#, c-format
msgid "unexpected system error"
msgstr "неожиданная ошибка"
msgstr "неожиданная системная ошибка"
#, c-format
msgid "insufficient privileges"
@@ -233,15 +235,15 @@ msgstr "недостаточно привилегий"
#, c-format
msgid "could not find or read file"
msgstr "не могу найти или прочитать файл"
msgstr "не удалось найти или прочитать файл"
#, c-format
msgid "could not find or read directory"
msgstr "не удается найти или прочитать директорию"
msgstr "не удалось найти или прочитать каталог"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "неправильный или нулевой аргумент"
msgstr "неправильный или пустой аргумент"
#, c-format
msgid "library not initialized"
@@ -253,15 +255,15 @@ msgstr "библиотека уже инициализирована"
#, c-format
msgid "unable to lock database"
msgstr "не удается заблокировать базу данных"
msgstr "не удалось заблокировать базу данных"
#, c-format
msgid "could not open database"
msgstr "не удается открыть базу данных"
msgstr "не удалось открыть базу данных"
#, c-format
msgid "could not create database"
msgstr "не удается создать базу данных"
msgstr "не удалось создать базу данных"
#, c-format
msgid "database not initialized"
@@ -273,20 +275,24 @@ msgstr "база данных уже зарегистрирована"
#, c-format
msgid "could not find database"
msgstr "не удается найти базу данных"
msgstr "не удалось найти базу данных"
#, c-format
msgid "could not update database"
msgstr "не удается обновить базу данных"
msgstr "не удалось обновить базу данных"
#, c-format
msgid "could not remove database entry"
msgstr "не удается удалить запись в базе данных"
msgstr "не удалось удалить запись в базе данных"
#, c-format
msgid "invalid url for server"
msgstr "неверный url"
#, c-format
msgid "no servers configured for repository"
msgstr "не настроены сервера для репозитория"
#, c-format
msgid "transaction already initialized"
msgstr "запрос уже инициализирован"
@@ -305,43 +311,35 @@ msgstr "запрос не подготовлен"
#, c-format
msgid "transaction aborted"
msgstr "запрос отменён"
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 "не могу загрузить все файлы"
msgid "transaction commit attempt when database is not locked"
msgstr "попытка завершить запрос без блокировки базы данных"
#, c-format
msgid "could not find or read package"
msgstr "не удается найти или прочитать пакет"
msgstr "не удалось найти или прочитать пакет"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "операция прервана из-за ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "пакет неправильный или поврежден"
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 "пекет не установлен или ранней версии"
msgstr "не удалось открыть файл пакета"
#, c-format
msgid "cannot remove all files for package"
msgstr "не могу удалить все файлы пакета"
msgstr "не удалось удалить все файлы пакета"
#, c-format
msgid "package filename is not valid"
@@ -353,19 +351,15 @@ msgstr "нет такого репозитория"
#, c-format
msgid "invalid or corrupted delta"
msgstr "ошибка или повреждение в дельта-файле"
msgstr "ошибка или повреждение в дельте"
#, c-format
msgid "delta patch failed"
msgstr "не удалось применить дельта-патч"
#, c-format
msgid "group not found"
msgstr "группа не найдена"
msgstr "не удалось применить дельту"
#, c-format
msgid "could not satisfy dependencies"
msgstr "не удается удовлетворить зависимости"
msgstr "не удалось удовлетворить зависимости"
#, c-format
msgid "conflicting dependencies"
@@ -373,19 +367,11 @@ msgstr "конфликтующие зависимости"
#, c-format
msgid "conflicting files"
msgstr "конфликрующие файлы"
msgstr "конфликтующие файлы"
#, c-format
msgid "user aborted the operation"
msgstr "пользователь прервал операцию"
#, c-format
msgid "internal error"
msgstr "внутренняя ошибка"
#, c-format
msgid "not confirmed"
msgstr "не подтверждено"
msgid "failed to retrieve some files"
msgstr "не удалось получить некоторые файлы"
#, c-format
msgid "invalid regular expression"
@@ -397,7 +383,7 @@ msgstr "ошибка в libarchive"
#, c-format
msgid "download library error"
msgstr "ошибка в download library"
msgstr "ошибка в библиотеке загрузки"
#, c-format
msgid "error invoking external downloader"
@@ -409,31 +395,43 @@ msgstr "непредвиденная ошибка"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "не могу найти %s в базе данных -- пропускаю\n"
msgstr "не удалось найти %s в базе данных -- пропускается\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "не могу удалить файл '%s': %s\n"
msgstr "не удалось удалить файл '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "не могу удалить из базы данных запись %s-%s\n"
msgstr "не удалось удалить из базы данных запись %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "не могу удалить запись '%s' из кеша\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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: пропуск обновления пакета (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: пропускается откат пакета (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "пропускается замена пакета (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "не удалось заменить %s на %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -441,11 +439,11 @@ msgstr "репозиторий '%s' не найден\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s не устарел -- пропускаю\n"
msgstr "%s-%s не устарел -- пропускается\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s не устарел -- переустанавливаю\n"
msgstr "%s-%s не устарел -- переустанавливается\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
@@ -457,11 +455,7 @@ msgstr "обнаружен неразрешимый конфликт пакет
#, 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"
msgstr "удаление '%s' из списка целей, поскольку он конфликтует с '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
@@ -471,10 +465,18 @@ msgstr "не удалось получить некоторые файлы с %s
msgid "could not create removal transaction\n"
msgstr "не удалось создать запрос на удаление\n"
#, c-format
msgid "could not create transaction\n"
msgstr "не удалось создать запрос\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "не удалось инициализировать запрос на удаление\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "не удалось инициализировать запрос\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "не удалось подготовить запрос на удаление\n"
@@ -483,53 +485,45 @@ msgstr "не удалось подготовить запрос на удале
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 "не могу удалить lock-файл %s\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr "Нету /bin/sh в родительском окружении, отмена скрипта\n"
msgstr "не удалось удалить блокировочный файл %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "не удалось создать временную директорию\n"
msgstr "не удалось создать временный каталог\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "не могу скопировать временный файл в %s (%s)\n"
msgstr "не удалось скопировать временный файл в %s (%s)\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 "could not change directory to %s (%s)\n"
msgstr "не удалось изменить директорию на %s (%s)\n"
msgstr "не удалось изменить каталог на %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "не не удалось создать новый процесс (%s)\n"
msgstr "не удалось создать новый процесс (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "не удалось изменить корневую директорию (%s)\n"
msgstr "не удалось изменить корневой каталог (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "не удалось изменить директорию на / (%s)\n"
msgstr "не удалось изменить каталог на / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
@@ -540,22 +534,58 @@ 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 "не могу удалить tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "не удалось откруть %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "не удалось корректно выполнить команду\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "кэш %s не существует, создаю...\n"
msgstr "кэш %s не существует, создается...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "не могу создать кэш пакетов, будет использован /tmp\n"
msgstr "не удалось создать кэш пакетов, будет использован /tmp\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "ошибка загрузки '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "не удалось изменить каталог на %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "запуск XferCommand: неудача\n"
#~ msgid "could not commit transaction"
#~ msgstr "не удалось совершить запрос"
#~ msgid "could not download all files"
#~ msgstr "не удалось загрузить все файлы"
#~ msgid "cannot load package data"
#~ msgstr "не удалось загрузить данные пакета"
#~ msgid "package not installed or lesser version"
#~ msgstr "пакет не установлен или ранней версии"
#~ msgid "group not found"
#~ msgstr "группа не найдена"
#~ msgid "user aborted the operation"
#~ msgstr "пользователь прервал операцию"
#~ msgid "internal error"
#~ msgstr "внутренняя ошибка"
#~ msgid "not confirmed"
#~ msgstr "не подтверждено"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr "%s-%s: игнорирую обновление пакета (он будет заменен на %s-%s)\n"
#~ msgid "command: %s\n"
#~ msgstr "команда: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "не удалось подготовить запрос\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Нету /bin/sh в родительском окружении, отмена скрипта\n"

View File

@@ -7,9 +7,9 @@ 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"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 03:26+0200\n"
"Last-Translator: Samed Beyribey <ras0ir@eventualis.org>\n"
"Language-Team: Turkish Arch Linux Users <tr@archlinuxtr.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -25,15 +25,15 @@ 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"
msgstr "hedef listesinde çakışan 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"
msgstr "çakışan 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"
msgstr "-U kullanarak paket değiştirme henüz desteklenmemektedir\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
@@ -48,12 +48,12 @@ msgstr ""
"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"
msgid "extract: not overwriting dir with file %s\n"
msgstr "aç: %s dosyası dizinin üzerine yazılmıyor\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "aç: dizin %s dosyası ile baştan yazılmıyor\n"
msgid "extract: symlink %s does not point to dir\n"
msgstr "aç: %s sembolik bağı dizine yöneltilmemiş\n"
#, c-format
msgid "could not extract %s (%s)\n"
@@ -100,12 +100,12 @@ 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"
msgid "could not remove database %s\n"
msgstr "veritabanı kaldırılamıyor %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "veritabanı kaydı için geçersiz isim '%s'\n"
msgstr "geçersiz bir veritabanı kaydı '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
@@ -123,6 +123,10 @@ msgstr "%s veritabanı tutarsız: %s paketinde isim uyuşmazlığı\n"
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 create directory %s: %s\n"
msgstr "dizin oluşturulamadı %s: %s\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"
@@ -163,9 +167,13 @@ msgstr "%s paketi %s bağımlılığından sonra kaldırılacak\n"
msgid "%s will be installed before its %s dependency\n"
msgstr "%s paketi %s bağımlılığından önce kurulacak\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "paket gözardı ediliyor %s-%s\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"
msgstr "sağlayan paket seçildi ( %s %s paketini sağlıyor)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
@@ -177,7 +185,7 @@ msgstr "'%s' adresi geçersiz\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "adres şeması belirtilmemiş, http kullanılacak\n"
msgstr "adres şeması belirtilmemiş, HTTP kullanılacak\n"
#, c-format
msgid "disk"
@@ -185,31 +193,23 @@ msgstr "disk"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "'%s' dosyası %s : %s 'ten alınamadı\n"
msgstr "%3$s hatası nedeniyle '%1$s' dosyası %2$s adresinden alınamadı\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "indirmeye devam edilemiyor, baştan başlanıyor\n"
msgstr "indirme işlemine 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"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s eksik görünüyor: %jd/%jd bayt\n"
#, c-format
msgid "failed to download %s\n"
@@ -233,11 +233,11 @@ msgstr "dosya bulunamadı veya okunamadı"
#, c-format
msgid "could not find or read directory"
msgstr "klasör bulunamadı veya okunamadı"
msgstr "dizin bulunamadı veya okunamadı"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "eksik ya da geçersiz parametre geçilmiş"
msgstr "hatalı ya da BOŞ parametre geçilmiş"
#, c-format
msgid "library not initialized"
@@ -245,7 +245,7 @@ msgstr "kütüphane başlatılamadı"
#, c-format
msgid "library already initialized"
msgstr "kütüphane zaten başlatıldı"
msgstr "kütüphane zaten başlatılmış"
#, c-format
msgid "unable to lock database"
@@ -281,7 +281,11 @@ msgstr "veritabanı kaydı kaldırılamadı"
#, c-format
msgid "invalid url for server"
msgstr "hatalı sunucu adresi"
msgstr "sunucu için geçersiz adres"
#, c-format
msgid "no servers configured for repository"
msgstr "depo için sunucu ayarlanmamış"
#, c-format
msgid "transaction already initialized"
@@ -289,7 +293,7 @@ msgstr "işlem zaten başlatılmış"
#, c-format
msgid "transaction not initialized"
msgstr "işlem başlatılmamış"
msgstr "işlem başlatılmadı"
#, c-format
msgid "duplicate target"
@@ -297,7 +301,7 @@ msgstr "birden fazla hedef"
#, c-format
msgid "transaction not prepared"
msgstr "işlem hazırlanamadı"
msgstr "işlem hazırlanmadı"
#, c-format
msgid "transaction aborted"
@@ -305,20 +309,20 @@ msgstr "işlem iptal edildi"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operasyon, işlem tipiyle uyumlu değil"
msgstr "operasyon, işlem türüyle 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"
msgid "transaction commit attempt when database is not locked"
msgstr "veritabanı kilitli değil iken işlem girişimi"
#, c-format
msgid "could not find or read package"
msgstr "paket bulunamadı veya okunamadı"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "ignorepkg nedeniyle işlem iptal edildi"
#, c-format
msgid "invalid or corrupted package"
msgstr "geçersiz veya bozuk paket"
@@ -327,14 +331,6 @@ msgstr "geçersiz veya bozuk paket"
msgid "cannot open package file"
msgstr "paket dosyasıı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ı"
@@ -355,33 +351,21 @@ msgstr "geçersiz ya da bozuk veri"
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"
msgstr "çakışan bağımlılıklar"
#, c-format
msgid "conflicting files"
msgstr "çelişen dosyalar"
msgstr "çakışan 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ı"
msgid "failed to retrieve some files"
msgstr "bazı dosyalar alınamadı"
#, c-format
msgid "invalid regular expression"
@@ -393,7 +377,7 @@ msgstr "libarchive hatası"
#, c-format
msgid "download library error"
msgstr "kütüphane indirilirken hata oluştu"
msgstr "indirme kütüphanesi hatası"
#, c-format
msgid "error invoking external downloader"
@@ -420,17 +404,29 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: paket güncellemesi göz ardı ediliyor (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: paket sürümü geri alma işlemi göz ardı ediliyor (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: %s sürümünden %s sürümüne çevriliyor.\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"
msgstr ""
"%s: yerel depodaki paket (%s) %s deposundaki paketten (%s) 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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "paket değiştirme işlemi göz ardı ediliyor (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "%s ile %s değiştirilemiyor\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -454,11 +450,7 @@ 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"
msgstr "'%s' hedef listesindeki '%s' ile çakıştığı için kaldırıldı\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
@@ -466,12 +458,20 @@ 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"
msgstr "kaldırma işlemi oluşturulamadı\n"
#, c-format
msgid "could not create transaction\n"
msgstr "işlem oluşturulamadı\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 initialize transaction\n"
msgstr "işlem başlatılamadı\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "kaldırma işlemi hazırlanamadı\n"
@@ -480,18 +480,6 @@ msgstr "kaldırma işlemi hazırlanamadı\n"
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"
@@ -500,10 +488,6 @@ msgstr "işlem teslim edilemedi\n"
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"
@@ -512,6 +496,14 @@ msgstr "geçici dizin oluşturulamadı\n"
msgid "could not copy tempfile to %s (%s)\n"
msgstr "geçici dosya %s üzerine kopyalanamadı (%s)\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 "could not change directory to %s (%s)\n"
msgstr "%s dizinine geçilemedi (%s)\n"
@@ -526,7 +518,7 @@ msgstr "kök dizini değiştirilemedi (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "/ dizinine gidilemedi (%s)\n"
msgstr "/ dizinine gilemedi (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
@@ -537,22 +529,59 @@ 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"
msgid "command failed to execute correctly\n"
msgstr "komut düzgün çalıştırılamadı\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "%s tamponu bulunmuyor, oluşturuluyor...\n"
msgstr "%s önbelleği yok, oluşturuluyor...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "paket tamponu oluşturulamadı, /tmp kullanılacak\n"
msgstr "paket önbelleği oluşturulamadı, /tmp kullanılacak\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "'%s' indirilirken hata oluştu: %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "%s dizinine geçilemiyor\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "XferCommand çalıştırılıyor: çatallanma başarısız!\n"
#~ msgid "could not commit transaction"
#~ msgstr "işlem teslim edilemiyor"
#~ msgid "could not download all files"
#~ msgstr "tüm dosyalar indirilemedi"
#~ msgid "cannot load package data"
#~ msgstr "paket verisi yüklenemiyor"
#~ msgid "package not installed or lesser version"
#~ msgstr "paket kurulamadı ya da önceki sürümü kurulu"
#~ msgid "group not found"
#~ msgstr "grup bulunamadı"
#~ msgid "user aborted the operation"
#~ msgstr "işlem kullanıcı tarafından durduruldu"
#~ msgid "internal error"
#~ msgstr "dahili hata"
#~ msgid "not confirmed"
#~ msgstr "onaylanmadı"
#~ 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"
#~ msgid "command: %s\n"
#~ msgstr "komut: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "işlem hazırlanamadı\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Bir üst ortamda /bin/sh bulunamadı, betik iptal ediliyor\n"

View File

@@ -1,8 +1,13 @@
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the pacman package.
# Ivan Kovnatsky <sevenfourk@gmail.com>, 2008.
# Roman Kyrylych <roman@archlinux.org>, 2008, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: libalpm 3.2.1\n"
"Project-Id-Version: libalpm 3.2.2\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: \n"
"Last-Translator: Roman Kyrylych <roman@archlinux.org>\n"
"Language-Team: http://archlinux.org.ua\n"
@@ -14,15 +19,16 @@ msgstr ""
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr "старіша версія %s-%s замінюється на %s в цільовому списку пакетів\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"
msgstr ""
"%s-%s пропускається, бо в списку цільових пакунків є новіша версія %s\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "в списку цільових пакетів були знайдені конфліктуючі пакунки\n"
msgstr "в списку цільових пакунків були знайдені конфліктуючі пакунки\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
@@ -30,7 +36,7 @@ msgstr "ви не можете одночасно встановити два п
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "заміна пакунків за допомогою -U поки не підтримується\n"
msgstr "заміна пакунків за допомогою -U поки-що не підтримується\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
@@ -44,14 +50,14 @@ 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 "extract: symlink %s does not point to dir\n"
msgstr "розпакування: символьне посилання %s не вказує на каталог\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "неможливо розпакувати %s (%s)\n"
@@ -97,8 +103,8 @@ 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"
msgid "could not remove database %s\n"
msgstr "неможливо видалити базу даних %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -120,6 +126,10 @@ msgstr "база даних %s неоднорідна: неспівпадінн
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "база даних %s неоднорідна: неспівпадіння версій для пакунка %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "неможливо створити каталог %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "неможливо розібрати файл опису пакунка %s\n"
@@ -160,6 +170,10 @@ msgstr "%s буде видалено після його залежності %s
msgid "%s will be installed before its %s dependency\n"
msgstr "%s буде встановлено перед його %s залежністю\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ігнорування пакунка %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "був вибраний пакунок %s, що забезпечує %s\n"
@@ -192,21 +206,13 @@ msgstr "неможливо продовжити завантаження, поч
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"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "здається %s обрізаний: %jd/%jd байтів\n"
#, c-format
msgid "failed to download %s\n"
@@ -280,6 +286,10 @@ msgstr "неможливо видалити запис з бази даних"
msgid "invalid url for server"
msgstr "невірне посилання чи сервер"
#, c-format
msgid "no servers configured for repository"
msgstr "для репозиторія не налаштовано жодного сервера"
#, c-format
msgid "transaction already initialized"
msgstr "транзакція вже ініціалізована"
@@ -305,17 +315,17 @@ 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 "неможиво завантажити усі файли"
msgid "transaction commit attempt when database is not locked"
msgstr "спроба здійснити транзакцію в той час як база даних не є замкненою"
#, c-format
msgid "could not find or read package"
msgstr "неможливо знайти чи прочитати пакунок"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "операцію відмінено через ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "невірний чи пошкоджений пакунок"
@@ -324,14 +334,6 @@ msgstr "невірний чи пошкоджений пакунок"
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 "неможливо видалити всі файли для пакунку"
@@ -352,10 +354,6 @@ msgstr "невірний чи пошкоджений дельта-патч"
msgid "delta patch failed"
msgstr "накладення дельта-патчу невдале"
#, c-format
msgid "group not found"
msgstr "група не знадена"
#, c-format
msgid "could not satisfy dependencies"
msgstr "неможливо забезпечити залежності"
@@ -369,16 +367,8 @@ msgid "conflicting files"
msgstr "конфліктуючі файли"
#, c-format
msgid "user aborted the operation"
msgstr "користувач перервав операцію"
#, c-format
msgid "internal error"
msgstr "внутрішня помилка"
#, c-format
msgid "not confirmed"
msgstr "не підтверджено"
msgid "failed to retrieve some files"
msgstr "не вдалося отримати деякі файли"
#, c-format
msgid "invalid regular expression"
@@ -417,16 +407,28 @@ 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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ігнорування поновлення пакунку (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ігнорування пониження версії пакунка (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%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"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ігнорування заміни пакунка (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "неможливо замінити %s на %s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -446,16 +448,12 @@ msgstr "пониження версії пакунку %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "виявлені нерозв'язні конфлікти пакетів\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"
@@ -464,10 +462,18 @@ msgstr "не вдалося отримати деякі файли з %s\n"
msgid "could not create removal transaction\n"
msgstr "неможливо створити транзакцію видалення\n"
#, c-format
msgid "could not create transaction\n"
msgstr "неможливо створити транзакцію\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "неможливо почати транзакцію видалення\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "неможливо почати транзакцію\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "неможливо підготувати транзакцію видалення\n"
@@ -476,18 +482,6 @@ msgstr "неможливо підготувати транзакцію вида
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"
@@ -496,11 +490,6 @@ msgstr "неможливо здійснити транзакцію\n"
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"
@@ -509,6 +498,14 @@ msgstr "неиожливо створити тимчасовий каталог\
msgid "could not copy tempfile to %s (%s)\n"
msgstr "неможливо скопіювати тимчасовий файл до %s (%s)\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 "could not change directory to %s (%s)\n"
msgstr "неможливо змінити каталог на %s (%s)\n"
@@ -534,16 +531,8 @@ 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"
msgid "command failed to execute correctly\n"
msgstr "команда не змогла виконатися коректно\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -552,3 +541,49 @@ msgstr "кеш %s не існує, створюється...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "неможливо створити кеш пакунку, використовуватиметься /tmp\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "помилка при завантаженні '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "неможливо змінити каталог на %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "виконання XferCommand: старт процесу невдалий!\n"
#~ msgid "could not commit transaction"
#~ msgstr "неможливо здійснити транзакцію"
#~ msgid "could not download all files"
#~ msgstr "неможиво завантажити усі файли"
#~ msgid "cannot load package data"
#~ msgstr "неможливо завантажити дані пакунку"
#~ msgid "package not installed or lesser version"
#~ msgstr "пакунок не встановлено, або існує старіша версія"
#~ msgid "group not found"
#~ msgstr "група не знадена"
#~ msgid "user aborted the operation"
#~ msgstr "користувач перервав операцію"
#~ msgid "internal error"
#~ msgstr "внутрішня помилка"
#~ msgid "not confirmed"
#~ msgstr "не підтверджено"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr "%s-%s: ігнорування поновлення пакунку (буде замінено на %s-%s)\n"
#~ msgid "command: %s\n"
#~ msgstr "команда: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "неможливо підготувати транзакцію\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr ""
#~ "В батьківському середовищі немає /bin/sh, переривання скрипту виконання\n"

View File

@@ -9,9 +9,9 @@ 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"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-30 20:39+0700\n"
"Last-Translator: 甘露(Gan Lu) <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"
@@ -19,11 +19,11 @@ msgstr ""
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr "正在替换老版本 %s-%s 通过在目标清单中的%s\n"
msgstr "正在用目标清单中的 %3$s 替换老版本 %1$s-%2$s\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "跳过 %s-%s因为较新版本的 %s 在目标清单中\n"
msgstr "跳过 %1$s-%2$s因为较新版本的 %3$s 在目标清单中\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
@@ -35,51 +35,51 @@ msgstr "你不能同时安装有冲突的两个软件包\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "正在覆盖软件包, -U 目前尚不支持\n"
msgstr "目前尚不支持用 -U 参数替换软件包\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "你可以使用 -Rd 及 -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"
"目录权限不一致 %1$s\n"
"文件系统:%2$o 软件包:%3$o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "解压缩:没有用 %s 覆盖目录\n"
msgstr "解压缩:没有用文件 %s 覆盖目录\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "解压缩:符号链接 %s 没有指向目录\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "无法解压缩 %s (%s)\n"
msgstr "无法解压缩 %1$s (%2$s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "无法重命名 %s 为 %s (%s)\n"
msgstr "无法将 %1$s 重命名为 %2$s (%3$s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s 已另存为 %s\n"
msgstr "%1$s 已另存为 %2$s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "无法安装 %s 作为 %s (%s)\n"
msgstr "无法将 %1$s 安装为 %2$s (%3$s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s 已为 %s 安装\n"
msgstr "%1$s 已安装为 %2$s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "正在解压缩 %s 为 %s.pacnew\n"
msgstr "正在解压缩 %1$s 为 %2$s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
@@ -95,15 +95,15 @@ msgstr "安装 %s 时出现错误\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "无法更新数据库记录 %s-%s\n"
msgstr "无法更新数据库记录 %1$s-%2$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"
msgid "could not remove database %s\n"
msgstr "无法删除数据库 %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
@@ -115,19 +115,23 @@ msgstr "损坏的数据库记录 '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "无法打开文件 %s: %s\n"
msgstr "无法打开文件 %1$s: %2$s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "%s 数据库不一致:名字和软件包中的 %s 不一致\n"
msgstr "%1$s 数据库不一致:名字和软件包中的 %2$s 不一致\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "%s 数据库不一致:版本和软件包中的 %s 不一致\n"
msgstr "%1$s 数据库不一致:版本和软件包中的 %2$s 不一致\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "无法更改目录到 %1$s%2$s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "无法析 %s 中的软件包描述文件\n"
msgstr "无法析 %s 中的软件包描述文件\n"
#, c-format
msgid "missing package name in %s\n"
@@ -139,7 +143,7 @@ msgstr "%s 中缺少软件包版本号\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "读取软件包%s: %s发生错误\n"
msgstr "读取软件包 %1$s 发生错误: %2$s\n"
#, c-format
msgid "missing package metadata in %s\n"
@@ -151,35 +155,39 @@ msgstr "尝试重新登记“本地”数据库\n"
#, c-format
msgid "database path is undefined\n"
msgstr "没有指定数据库路径\n"
msgstr "数据库路径未定义\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "测到依赖关系环:\n"
msgstr "测到依赖关系环:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s 将在它 %s 的依赖关系之后被删除\n"
msgstr "%1$s 将在它 %2$s 的依赖关系之后被删除\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s 将在它 %s 的依赖关系之前被安装\n"
msgstr "%1$s 将在它 %2$s 的依赖关系之前被安装\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "正在忽略软件包更新 %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "已选定提供软件包 (%s 提供 %s)\n"
msgstr "已选定提供软件包 (%1$s 提供 %2$s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "无法解决 \"%s\"\"%s\" 的依赖关系\n"
msgstr "无法解决 \"%1$s\"\"%2$s\" 的一个依赖关系\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url %s' 无效\n"
msgstr "url '%s' 无效\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "url 结构没有指定,假定为 HTTP\n"
msgstr "url scheme 未指定,假定为 HTTP\n"
#, c-format
msgid "disk"
@@ -187,7 +195,7 @@ msgstr "硬盘"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "无法从 %s : %s 获取文件 '%s' \n"
msgstr "无法从 %2$s : %3$s 获取文件 '%1$s'\n"
#, c-format
msgid "cannot resume download, starting over\n"
@@ -197,33 +205,25 @@ msgstr "无法恢复下载,重新开始\n"
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"
msgstr "写入文件 '%1$s' 时出错: %2$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"
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s 可缩小:%jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "下载%s失败\n"
msgstr "下载 %s 失败\n"
#, c-format
msgid "out of memory!"
msgstr "没有内存可用"
msgstr "内存不足"
#, c-format
msgid "unexpected system error"
msgstr "未预的系统错误"
msgstr "未预的系统错误"
#, c-format
msgid "insufficient privileges"
@@ -239,11 +239,11 @@ msgstr "无法找到或读取目录"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "传递了错误的或空的参数"
msgstr "传递了错误的或 NULL 参数"
#, c-format
msgid "library not initialized"
msgstr "无法初始化函数库"
msgstr "函数库未初始化"
#, c-format
msgid "library already initialized"
@@ -263,7 +263,7 @@ msgstr "无法创建数据库"
#, c-format
msgid "database not initialized"
msgstr "数据库无法初始化"
msgstr "数据库初始化"
#, c-format
msgid "database already registered"
@@ -283,7 +283,11 @@ msgstr "无法删除数据库记录"
#, c-format
msgid "invalid url for server"
msgstr "无效的服务器url"
msgstr "无效的服务器 url"
#, c-format
msgid "no servers configured for repository"
msgstr "软件仓库没有配置服务器信息"
#, c-format
msgid "transaction already initialized"
@@ -291,7 +295,7 @@ msgstr "处理已初始化"
#, c-format
msgid "transaction not initialized"
msgstr "处理无法初始化"
msgstr "处理初始化"
#, c-format
msgid "duplicate target"
@@ -310,17 +314,17 @@ 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 "无法下载全部文件"
msgid "transaction commit attempt when database is not locked"
msgstr "未锁定数据库即提交了事务处理尝试"
#, c-format
msgid "could not find or read package"
msgstr "无法找到或读取软件包"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "由于 ignorepkg 指定,操作已取消"
#, c-format
msgid "invalid or corrupted package"
msgstr "无效的或已损坏的软件包"
@@ -329,17 +333,9 @@ msgstr "无效的或已损坏的软件包"
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 "无法删除软件包全部文件"
msgstr "无法软件包删除全部文件"
#, c-format
msgid "package filename is not valid"
@@ -351,16 +347,12 @@ msgstr "没有该软件库"
#, c-format
msgid "invalid or corrupted delta"
msgstr "无效的或已损坏的 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 "无法满足依赖关系"
@@ -374,20 +366,12 @@ msgid "conflicting files"
msgstr "有冲突的文件"
#, c-format
msgid "user aborted the operation"
msgstr "用户中断操作"
#, c-format
msgid "internal error"
msgstr "内部错误"
#, c-format
msgid "not confirmed"
msgstr "不能确认"
msgid "failed to retrieve some files"
msgstr "无法获取某些文件"
#, c-format
msgid "invalid regular expression"
msgstr "无效的常规表达式"
msgstr "无效的正则表达式"
#, c-format
msgid "libarchive error"
@@ -399,7 +383,7 @@ msgstr "下载函数库出错"
#, c-format
msgid "error invoking external downloader"
msgstr "激活外部下载程序时出现错误"
msgstr "调用外部下载程序时出"
#, c-format
msgid "unexpected error"
@@ -411,27 +395,39 @@ msgstr "无法在数据库中找到 %s -- 跳过\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "无法删除文件 '%s': %s\n"
msgstr "无法删除文件 '%1$s': %2$s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "无法删除数据库记录 %s-%s\n"
msgstr "无法删除数据库记录 %1$s-%2$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"
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%1$s忽略软件包更新%2$s => %3$s\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%1$s正在忽略软件包经济%2$s => %3$s\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s正在从版本 %s 降级为 %s \n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s本地%s比 %s 的版本更新(%s)\n"
msgstr "%1$s本地%2$s比 %3$s 的版本更新 (%4$s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s忽略软件包更新%s => %s\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "正在忽略软件包更新 (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "无法用文件 '%2$s' 替代 %1$s\n"
#, c-format
msgid "repository '%s' not found\n"
@@ -439,59 +435,51 @@ msgstr "没有找到软件库 '%s'\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s 已经为最新 -- 跳过\n"
msgstr "%1$s-%2$s 已经为最新 -- 跳过\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s 已经为最新 -- 重新安装\n"
msgstr "%1$s-%2$s 已经为最新 -- 重新安装\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "正在降级软件包 %s (%s => %s)\n"
msgstr "正在降级软件包 %1$s (%2$s => %3$s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "测到无法解决的软件包冲突\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"
msgstr "正在从目标清单中删除 '%1$s' ,因为它和 '%2$s' 冲突\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "某些文件无法从%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"
msgstr "无法生成可撤销处理\n"
#, c-format
msgid "could not create transaction\n"
msgstr "无法创建处理\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "无法初始化可撤销处理\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "无法初始化处理\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "无法准备处理\n"
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 commit transaction\n"
@@ -501,53 +489,49 @@ msgstr "无法交付处理\n"
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"
msgstr "无法复制临时文件到 %1$s (%2$s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "无法删除临时目录%s\n"
msgstr "无法删除临时目录 %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "无法打开 %s: %s\n"
msgstr "无法打开 %1$s: %2$s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "无法更改目录到 %1$s (%2$s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "无法 fork 新进程 (%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 "command failed to execute correctly\n"
msgstr "命令未能被正确执行\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -557,3 +541,47 @@ msgstr "没有 %s 缓存存在,正在创建...\n"
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "无法创建软件包缓存,正在使用 /tmp 代替\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "下载 '%1$s' 时出错: %2$s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "无法切换目录到 %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "正在运行 XferCommandfork 失败!\n"
#~ msgid "could not commit transaction"
#~ msgstr "无法交付处理"
#~ msgid "could not download all files"
#~ msgstr "无法下载全部文件"
#~ msgid "cannot load package data"
#~ msgstr "无法加载软件包数据"
#~ msgid "package not installed or lesser version"
#~ msgstr "软件包没有安装或版本较低"
#~ msgid "group not found"
#~ msgstr "没有找到软件包组"
#~ msgid "user aborted the operation"
#~ msgstr "用户中断了操作"
#~ msgid "internal error"
#~ msgstr "内部错误"
#~ msgid "not confirmed"
#~ msgstr "未确认"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr "%1$s-%2$s忽略软件包更新由 %3$s-%4$s 替代)\n"
#~ msgid "command: %s\n"
#~ msgstr "命令:%s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "无法准备处理\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "父环境中没有 /bin/sh正在中断小脚本\n"

View File

@@ -1,7 +1,8 @@
/*
* remove.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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 David Kimpe <dnaku@frugalware.org>
@@ -49,6 +50,7 @@
int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
{
pmpkg_t *info;
const char *targ;
ALPM_LOG_FUNC;
@@ -56,25 +58,22 @@ 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(trans->packages, name)) {
targ = strchr(name, '/');
if(targ && strncmp(name, "local", 5) == 0) {
targ++;
} else {
targ = name;
}
if(_alpm_pkg_find(trans->packages, targ)) {
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}
if((info = _alpm_db_get_pkgfromcache(db, name)) == NULL) {
_alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", name);
if((info = _alpm_db_get_pkgfromcache(db, targ)) == NULL) {
_alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", targ);
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
}
/* ignore holdpkgs on upgrade */
if((trans == handle->trans)
&& alpm_list_find_str(handle->holdpkg, info->name)) {
int resp = 0;
QUESTION(trans, PM_TRANS_CONV_REMOVE_HOLDPKG, info, NULL, NULL, &resp);
if(!resp) {
RET_ERR(PM_ERR_PKG_HOLD, -1);
}
}
_alpm_log(PM_LOG_DEBUG, "adding %s in the targets list\n", info->name);
trans->packages = alpm_list_add(trans->packages, _alpm_pkg_dup(info));
@@ -104,7 +103,7 @@ static void remove_prepare_cascade(pmtrans_t *trans, pmdb_t *db,
}
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(lp);
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL);
}
}
@@ -134,7 +133,7 @@ static void remove_prepare_keep_needed(pmtrans_t *trans, pmdb_t *db,
}
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(lp);
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL);
}
}
@@ -161,7 +160,7 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
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);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL);
if(lp != NULL) {
if(trans->flags & PM_TRANS_FLAG_CASCADE) {
@@ -229,25 +228,18 @@ static int can_remove_file(pmtrans_t *trans, const char *path)
/* Helper function for iterating through a package's file and deleting them
* Used by _alpm_remove_commit. */
static void unlink_file(pmpkg_t *info, alpm_list_t *lp, pmtrans_t *trans)
static void unlink_file(pmpkg_t *info, char *filename, pmtrans_t *trans)
{
struct stat buf;
int needbackup = 0;
char file[PATH_MAX+1];
ALPM_LOG_FUNC;
char *hash = _alpm_needbackup(lp->data, alpm_pkg_get_backup(info));
if(hash) {
needbackup = 1;
FREE(hash);
}
snprintf(file, PATH_MAX, "%s%s", handle->root, (char *)lp->data);
snprintf(file, PATH_MAX, "%s%s", handle->root, filename);
if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
/* check noupgrade */
if(alpm_list_find_str(handle->noupgrade, lp->data)) {
if(alpm_list_find_str(handle->noupgrade, filename)) {
_alpm_log(PM_LOG_DEBUG, "Skipping removal of '%s' due to NoUpgrade\n",
file);
return;
@@ -278,23 +270,35 @@ static void unlink_file(pmpkg_t *info, alpm_list_t *lp, pmtrans_t *trans)
_alpm_log(PM_LOG_DEBUG, "%s is in trans->skip_remove, skipping removal\n",
file);
return;
} else if(needbackup) {
/* if the file is flagged, back it up to .pacsave */
if(!(trans->flags & PM_TRANS_FLAG_NOSAVE)) {
char newpath[PATH_MAX];
snprintf(newpath, PATH_MAX, "%s.pacsave", file);
rename(file, newpath);
_alpm_log(PM_LOG_WARNING, _("%s saved as %s\n"), file, newpath);
return;
} else {
}
/* if the file needs backup and has been modified, back it up to .pacsave */
char *pkghash = _alpm_needbackup(filename, alpm_pkg_get_backup(info));
if(pkghash) {
if(trans->flags & PM_TRANS_FLAG_NOSAVE) {
_alpm_log(PM_LOG_DEBUG, "transaction is set to NOSAVE, not backing up '%s'\n", file);
FREE(pkghash);
} else {
char *filehash = alpm_compute_md5sum(file);
int cmp = strcmp(filehash,pkghash);
FREE(filehash);
FREE(pkghash);
if(cmp != 0) {
char newpath[PATH_MAX];
snprintf(newpath, PATH_MAX, "%s.pacsave", file);
rename(file, newpath);
_alpm_log(PM_LOG_WARNING, _("%s saved as %s\n"), file, newpath);
alpm_logaction("warning: %s saved as %s\n", file, newpath);
return;
}
}
}
_alpm_log(PM_LOG_DEBUG, "unlinking %s\n", file);
if(unlink(file) == -1) {
_alpm_log(PM_LOG_ERROR, _("cannot remove file '%s': %s\n"),
(char *)lp->data, strerror(errno));
filename, strerror(errno));
}
}
}
@@ -359,7 +363,7 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* iterate through the list backwards, unlinking files */
newfiles = alpm_list_reverse(files);
for(lp = newfiles; lp; lp = alpm_list_next(lp)) {
unlink_file(info, lp, trans);
unlink_file(info, lp->data, trans);
/* update progress bar after each file */
percent = (double)position / (double)filenum;
@@ -404,7 +408,6 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* run ldconfig if it exists */
if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
_alpm_log(PM_LOG_DEBUG, "running \"ldconfig -r %s\"\n", handle->root);
_alpm_ldconfig(handle->root);
}

View File

@@ -1,7 +1,8 @@
/*
* remove.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,8 @@
/*
* sync.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2005 by Aurelien Foret <orelien@chez.com>
* Copyright (c) 2005, 2006 by Miklos Vajna <vmiklos@frugalware.org>
*
@@ -23,26 +24,12 @@
#include "alpm.h"
/* Sync package */
struct __pmsyncpkg_t {
pmpkgreason_t newreason;
pmpkg_t *pkg;
alpm_list_t *removes;
};
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,
pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **syncpkgs);
int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, int enable_downgrade);
int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, char *name);
int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **data);
int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data);
/* typically trans->packages */
pmsyncpkg_t *_alpm_sync_find(alpm_list_t *syncpkgs, const char* pkgname);
#endif /* _ALPM_SYNC_H */
/* vim: set ts=2 sw=2 noet: */

View File

@@ -1,7 +1,8 @@
/*
* trans.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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,11 +27,9 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/statvfs.h>
#include <unistd.h>
#include <errno.h>
/* libalpm */
@@ -72,9 +71,11 @@ int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
ASSERT(handle->trans == NULL, RET_ERR(PM_ERR_TRANS_NOT_NULL, -1));
/* lock db */
handle->lckfd = _alpm_lckmk();
if(handle->lckfd == -1) {
RET_ERR(PM_ERR_HANDLE_LOCK, -1);
if(!(flags & PM_TRANS_FLAG_NOLOCK)) {
handle->lckfd = _alpm_lckmk();
if(handle->lckfd == -1) {
RET_ERR(PM_ERR_HANDLE_LOCK, -1);
}
}
handle->trans = _alpm_trans_new();
@@ -88,7 +89,7 @@ int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
/** Search for packages to upgrade and add them to the transaction.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_trans_sysupgrade()
int SYMEXPORT alpm_trans_sysupgrade(int enable_downgrade)
{
pmtrans_t *trans;
@@ -101,7 +102,7 @@ int SYMEXPORT alpm_trans_sysupgrade()
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
ASSERT(trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
return(_alpm_trans_sysupgrade(trans));
return(_alpm_sync_sysupgrade(trans, handle->db_local, handle->dbs_sync, enable_downgrade));
}
/** Add a target to the transaction.
@@ -159,6 +160,8 @@ int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(handle->trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
ASSERT(!(handle->trans->flags & PM_TRANS_FLAG_NOLOCK), RET_ERR(PM_ERR_TRANS_NOT_LOCKED, -1));
return(_alpm_trans_commit(handle->trans, data));
}
@@ -200,19 +203,23 @@ int SYMEXPORT alpm_trans_release()
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));
unsigned int nolock_flag = trans->flags & PM_TRANS_FLAG_NOLOCK;
_alpm_trans_free(trans);
handle->trans = NULL;
/* unlock db */
if(handle->lckfd != -1) {
close(handle->lckfd);
handle->lckfd = -1;
}
if(_alpm_lckrm()) {
_alpm_log(PM_LOG_WARNING, _("could not remove lock file %s\n"),
alpm_option_get_lockfile());
alpm_logaction("warning: could not remove lock file %s\n",
alpm_option_get_lockfile());
if(!nolock_flag) {
if(handle->lckfd != -1) {
while(close(handle->lckfd) == -1 && errno == EINTR);
handle->lckfd = -1;
}
if(_alpm_lckrm()) {
_alpm_log(PM_LOG_WARNING, _("could not remove lock file %s\n"),
alpm_option_get_lockfile());
alpm_logaction("warning: could not remove lock file %s\n",
alpm_option_get_lockfile());
}
}
return(0);
@@ -227,15 +234,6 @@ pmtrans_t *_alpm_trans_new()
ALPM_LOG_FUNC;
CALLOC(trans, 1, sizeof(pmtrans_t), RET_ERR(PM_ERR_MEMORY, NULL));
trans->packages = NULL;
trans->skip_add = NULL;
trans->skip_remove = NULL;
trans->type = 0;
trans->flags = 0;
trans->cb_event = NULL;
trans->cb_conv = NULL;
trans->cb_progress = NULL;
trans->state = STATE_IDLE;
return(trans);
@@ -250,7 +248,7 @@ void _alpm_trans_free(pmtrans_t *trans)
}
if(trans->type == PM_TRANS_TYPE_SYNC) {
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_sync_free);
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free_trans);
} else {
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free);
}
@@ -281,17 +279,6 @@ int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
return(0);
}
int _alpm_trans_sysupgrade(pmtrans_t *trans)
{
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
return(_alpm_sync_sysupgrade(trans, handle->db_local, handle->dbs_sync,
&(trans->packages)));
}
/** Add a target to the transaction.
* @param trans the current transaction
* @param target the name of the target to add
@@ -449,11 +436,8 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
char scriptfn[PATH_MAX];
char cmdline[PATH_MAX];
char tmpdir[PATH_MAX];
char cwd[PATH_MAX];
char *scriptpath;
pid_t pid;
int clean_tmpdir = 0;
int restore_cwd = 0;
int retval = 0;
ALPM_LOG_FUNC;
@@ -464,13 +448,6 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
return(0);
}
/* NOTE: popen will use the PARENT's /bin/sh, not the chroot's */
if(access("/bin/sh", X_OK)) {
/* not found */
_alpm_log(PM_LOG_ERROR, _("No /bin/sh in parent environment, aborting scriptlet\n"));
return(0);
}
/* creates a directory in $root/tmp/ for copying/extracting the scriptlet */
snprintf(tmpdir, PATH_MAX, "%stmp/", root);
if(access(tmpdir, F_OK) != 0) {
@@ -508,21 +485,6 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
goto cleanup;
}
/* save the cwd so we can restore it later */
if(getcwd(cwd, PATH_MAX) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
} else {
restore_cwd = 1;
}
/* just in case our cwd was removed in the upgrade operation */
if(chdir(root) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), root, strerror(errno));
goto cleanup;
}
_alpm_log(PM_LOG_DEBUG, "executing %s script...\n", script);
if(oldver) {
snprintf(cmdline, PATH_MAX, ". %s; %s %s %s",
scriptpath, script, ver, oldver);
@@ -530,77 +492,13 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
snprintf(cmdline, PATH_MAX, ". %s; %s %s",
scriptpath, script, ver);
}
_alpm_log(PM_LOG_DEBUG, "%s\n", cmdline);
/* fork- parent and child each have seperate code blocks below */
pid = fork();
if(pid == -1) {
_alpm_log(PM_LOG_ERROR, _("could not fork a new process (%s)\n"), strerror(errno));
retval = 1;
goto cleanup;
}
if(pid == 0) {
FILE *pipe;
/* this code runs for the child only (the actual chroot/exec) */
_alpm_log(PM_LOG_DEBUG, "chrooting in %s\n", root);
if(chroot(root) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change the root directory (%s)\n"),
strerror(errno));
exit(1);
}
if(chdir("/") != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to / (%s)\n"),
strerror(errno));
exit(1);
}
umask(0022);
_alpm_log(PM_LOG_DEBUG, "executing \"%s\"\n", cmdline);
/* execl("/bin/sh", "sh", "-c", cmdline, (char *)NULL); */
pipe = popen(cmdline, "r");
if(!pipe) {
_alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)"),
strerror(errno));
retval = 1;
goto cleanup;
}
while(!feof(pipe)) {
char line[PATH_MAX];
if(fgets(line, PATH_MAX, pipe) == NULL)
break;
alpm_logaction("%s", line);
EVENT(trans, PM_TRANS_EVT_SCRIPTLET_INFO, line, NULL);
}
exit(0);
} else {
/* this code runs for the parent only (wait on the child) */
pid_t retpid;
int status;
retpid = waitpid(pid, &status, 0);
if(retpid == -1) {
_alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)\n"),
strerror(errno));
retval = 1;
goto cleanup;
} else {
/* check the return status, make sure it is 0 (success) */
if(WIFEXITED(status)) {
_alpm_log(PM_LOG_DEBUG, "call to waitpid succeeded\n");
if(WEXITSTATUS(status) != 0) {
_alpm_log(PM_LOG_ERROR, _("scriptlet failed to execute correctly\n"));
retval = 1;
}
}
}
}
retval = _alpm_run_chroot(root, cmdline);
cleanup:
if(clean_tmpdir && _alpm_rmrf(tmpdir)) {
_alpm_log(PM_LOG_WARNING, _("could not remove tmpdir %s\n"), tmpdir);
}
if(restore_cwd) {
chdir(cwd);
}
return(retval);
}

View File

@@ -1,7 +1,8 @@
/*
* trans.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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>
@@ -39,7 +40,7 @@ struct __pmtrans_t {
pmtranstype_t type;
pmtransflag_t flags;
pmtransstate_t state;
alpm_list_t *packages; /* list of (pmpkg_t *) or (pmsyncpkg_t *) */
alpm_list_t *packages; /* list of (pmpkg_t *) */
alpm_list_t *skip_add; /* list of (char *) */
alpm_list_t *skip_remove; /* list of (char *) */
alpm_trans_cb_event cb_event;
@@ -71,7 +72,6 @@ void _alpm_trans_free(pmtrans_t *trans);
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress);
int _alpm_trans_sysupgrade(pmtrans_t *trans);
int _alpm_trans_addtarget(pmtrans_t *trans, char *target);
int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data);
int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data);

View File

@@ -1,7 +1,8 @@
/*
* util.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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 David Kimpe <dnaku@frugalware.org>
@@ -36,6 +37,7 @@
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
/* libarchive */
#include <archive.h>
@@ -48,6 +50,7 @@
#include "alpm.h"
#include "alpm_list.h"
#include "md5.h"
#include "handle.h"
#ifndef HAVE_STRSEP
/* This is a replacement for strsep which is not portable (missing on Solaris).
@@ -242,7 +245,8 @@ char *_alpm_strreplace(const char *str, const char *needle, const char *replace)
int _alpm_lckmk()
{
int fd;
char *dir, *ptr;
pid_t pid;
char *dir, *ptr, *spid = NULL;
const char *file = alpm_option_get_lockfile();
/* create the dir of the lockfile first */
@@ -254,8 +258,19 @@ int _alpm_lckmk()
_alpm_makepath(dir);
FREE(dir);
fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000);
return(fd > 0 ? fd : -1);
while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1
&& errno == EINTR);
if(fd > 0) {
pid = getpid();
size_t len = snprintf(spid, 0, "%ld\n", (long)pid) + 1;
spid = malloc(len);
snprintf(spid, len, "%ld\n", (long)pid);
while(write(fd, (void *)spid, len) == -1 && errno == EINTR);
fsync(fd);
free(spid);
return(fd);
}
return(-1);
}
/* Remove a lock file */
@@ -276,19 +291,21 @@ int _alpm_lckrm()
* @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
* @return 0 on success, 1 on failure
*/
int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
{
int ret = 1;
int ret = 0;
mode_t oldmask;
struct archive *_archive;
struct archive_entry *entry;
char expath[PATH_MAX];
char cwd[PATH_MAX];
int restore_cwd = 0;
ALPM_LOG_FUNC;
if((_archive = archive_read_new()) == NULL)
RET_ERR(PM_ERR_LIBARCHIVE, -1);
RET_ERR(PM_ERR_LIBARCHIVE, 1);
archive_read_support_compression_all(_archive);
archive_read_support_format_all(_archive);
@@ -297,10 +314,25 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) {
_alpm_log(PM_LOG_ERROR, _("could not open %s: %s\n"), archive,
archive_error_string(_archive));
RET_ERR(PM_ERR_PKG_OPEN, -1);
RET_ERR(PM_ERR_PKG_OPEN, 1);
}
oldmask = umask(0022);
/* save the cwd so we can restore it later */
if(getcwd(cwd, PATH_MAX) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
} else {
restore_cwd = 1;
}
/* just in case our cwd was removed in the upgrade operation */
if(chdir(prefix) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), prefix, strerror(errno));
ret = 1;
goto cleanup;
}
while(archive_read_next_header(_archive, &entry) == ARCHIVE_OK) {
const struct stat *st;
const char *entryname; /* the name of the file in the archive */
@@ -309,9 +341,9 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
entryname = archive_entry_pathname(entry);
if(S_ISREG(st->st_mode)) {
archive_entry_set_mode(entry, 0644);
archive_entry_set_perm(entry, 0644);
} else if(S_ISDIR(st->st_mode)) {
archive_entry_set_mode(entry, 0755);
archive_entry_set_perm(entry, 0755);
}
/* If a specific file was requested skip entries that don't match. */
@@ -325,10 +357,6 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
}
/* Extract the archive entry. */
ret = 0;
snprintf(expath, PATH_MAX, "%s/%s", prefix, entryname);
archive_entry_set_pathname(entry, expath);
int readret = archive_read_extract(_archive, entry, 0);
if(readret == ARCHIVE_WARN) {
/* operation succeeded but a non-critical error was encountered */
@@ -349,6 +377,9 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
cleanup:
umask(oldmask);
archive_read_finish(_archive);
if(restore_cwd) {
chdir(cwd);
}
return(ret);
}
@@ -426,17 +457,112 @@ int _alpm_logaction(unsigned short usesyslog, FILE *f,
return(ret);
}
int _alpm_run_chroot(const char *root, const char *cmd)
{
char cwd[PATH_MAX];
pid_t pid;
int restore_cwd = 0;
int retval = 0;
ALPM_LOG_FUNC;
/* save the cwd so we can restore it later */
if(getcwd(cwd, PATH_MAX) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
} else {
restore_cwd = 1;
}
/* just in case our cwd was removed in the upgrade operation */
if(chdir(root) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), root, strerror(errno));
goto cleanup;
}
_alpm_log(PM_LOG_DEBUG, "executing \"%s\" under chroot \"%s\"\n", cmd, root);
/* Flush open fds before fork() to avoid cloning buffers */
fflush(NULL);
/* fork- parent and child each have seperate code blocks below */
pid = fork();
if(pid == -1) {
_alpm_log(PM_LOG_ERROR, _("could not fork a new process (%s)\n"), strerror(errno));
retval = 1;
goto cleanup;
}
if(pid == 0) {
FILE *pipe;
/* this code runs for the child only (the actual chroot/exec) */
_alpm_log(PM_LOG_DEBUG, "chrooting in %s\n", root);
if(chroot(root) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change the root directory (%s)\n"),
strerror(errno));
exit(1);
}
if(chdir("/") != 0) {
_alpm_log(PM_LOG_ERROR, _("could not change directory to / (%s)\n"),
strerror(errno));
exit(1);
}
umask(0022);
pipe = popen(cmd, "r");
if(!pipe) {
_alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)"),
strerror(errno));
exit(1);
}
while(!feof(pipe)) {
char line[PATH_MAX];
if(fgets(line, PATH_MAX, pipe) == NULL)
break;
alpm_logaction("%s", line);
EVENT(handle->trans, PM_TRANS_EVT_SCRIPTLET_INFO, line, NULL);
}
retval = pclose(pipe);
exit(WEXITSTATUS(retval));
} else {
/* this code runs for the parent only (wait on the child) */
pid_t retpid;
int status;
while((retpid = waitpid(pid, &status, 0)) == -1 && errno == EINTR);
if(retpid == -1) {
_alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)\n"),
strerror(errno));
retval = 1;
goto cleanup;
} else {
/* check the return status, make sure it is 0 (success) */
if(WIFEXITED(status)) {
_alpm_log(PM_LOG_DEBUG, "call to waitpid succeeded\n");
if(WEXITSTATUS(status) != 0) {
_alpm_log(PM_LOG_ERROR, _("command failed to execute correctly\n"));
retval = 1;
}
}
}
}
cleanup:
if(restore_cwd) {
chdir(cwd);
}
return(retval);
}
int _alpm_ldconfig(const char *root)
{
char line[PATH_MAX];
_alpm_log(PM_LOG_DEBUG, "running ldconfig\n");
snprintf(line, PATH_MAX, "%setc/ld.so.conf", root);
if(access(line, F_OK) == 0) {
snprintf(line, PATH_MAX, "%ssbin/ldconfig", root);
if(access(line, X_OK) == 0) {
char cmd[PATH_MAX];
snprintf(cmd, PATH_MAX, "%s -r %s", line, root);
system(cmd);
_alpm_run_chroot(root, "ldconfig");
}
}
@@ -538,7 +664,7 @@ int _alpm_lstat(const char *path, struct stat *buf)
* @return the checksum on success, NULL on error
* @addtogroup alpm_misc
*/
char SYMEXPORT *alpm_get_md5sum(const char *filename)
char SYMEXPORT *alpm_compute_md5sum(const char *filename)
{
unsigned char output[16];
char *md5sum;
@@ -572,7 +698,7 @@ int _alpm_test_md5sum(const char *filepath, const char *md5sum)
char *md5sum2;
int ret;
md5sum2 = alpm_get_md5sum(filepath);
md5sum2 = alpm_compute_md5sum(filepath);
if(md5sum == NULL || md5sum2 == NULL) {
ret = -1;

View File

@@ -1,7 +1,8 @@
/*
* util.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* Copyright (c) 2002-2006 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 David Kimpe <dnaku@frugalware.org>
@@ -65,6 +66,7 @@ int _alpm_lckrm();
int _alpm_unpack(const char *archive, const char *prefix, const char *fn);
int _alpm_rmrf(const char *path);
int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list args);
int _alpm_run_chroot(const char *root, const char *cmd);
int _alpm_ldconfig(const char *root);
int _alpm_str_cmp(const void *s1, const void *s2);
char *_alpm_filecache_find(const char *filename);

View File

@@ -1,3 +1,5 @@
SUBDIRS = tests
check_SCRIPTS = \
pactest.py \
pmdb.py \
@@ -7,7 +9,6 @@ check_SCRIPTS = \
pmrule.py \
pmtest.py \
util.py \
$(wildcard tests/*.py) \
vercmptest.sh
noinst_SCRIPTS = $(check_SCRIPTS)

View File

@@ -70,12 +70,12 @@ Usage
pactest will run the suite of tests defined by the "--test" parameter.
Example:
./pactest.py --test=test/*
./pactest.py --test tests/*.py
This example will run tests from the "test" directory.
This example will run all tests from the "tests" directory.
Note: several "--test" options can be passed to pactest.
Use the ""help" option to get the full list of parameters:
Use the "help" option to get the full list of parameters:
./pactest.py --help
@@ -103,15 +103,22 @@ Example:
------
A dictionary that holds the data used in the pacman configuration file.
It has 3 keys, each one of them pointing at a list of strings:
- noupgrade
- noextract
- ignorepkg
The following options are known to be useful in pactest tests; this list
is not necessarily complete:
- HoldPkg
- IgnorePkg
- IgnoreGroup
- SyncFirst
- NoExtract
- NoUpgrade
- XferCommand
For documentation on these options, see the pacman.conf documentation.
Examples:
self.option["noupgrade"] = ["etc/X11/xorg.conf",
self.option["NoUpgrade"] = ["etc/X11/xorg.conf",
"etc/pacman.conf"]
self.option["noextract"] = ["etc/lilo.conf"]
self.option["NoExtract"] = ["etc/lilo.conf"]
filesystem
----------

View File

@@ -71,9 +71,11 @@ class pmenv:
t.generate()
# Hack for mtimes consistency
for i in t.rules:
if i.rule.find("MODIFIED") != -1:
time.sleep(1.5)
break
if i.rule.find("FILE_MODIFIED") != -1:
[test, arg] = i.rule.split("=")
for f in t.files:
if f.name == arg:
f.resettimes()
t.run(self.pacman)

View File

@@ -56,6 +56,14 @@ class pmfile:
return retval
def resettimes(self):
"""
"""
filename = os.path.join(self.root, self.name)
os.utime(filename, (355, 355))
self.mtime = getmtime(filename)
vprint("\tmtime reset (%s)" % self.name)
if __name__ == "__main__":
f = pmfile("/tmp", "foobar")

View File

@@ -116,9 +116,12 @@ class pmrule:
if not f.ismodified():
success = 0
elif case == "MODE":
mode = os.lstat(filename)[ST_MODE]
if int(value,8) != S_IMODE(mode):
if not os.path.isfile(filename):
success = 0
else:
mode = os.lstat(filename)[ST_MODE]
if int(value,8) != S_IMODE(mode):
success = 0
elif case == "TYPE":
if value == "dir":
if not os.path.isdir(filename):

View File

@@ -197,9 +197,7 @@ class pmtest:
cmd.append("fakeroot")
fakechroot = which("fakechroot")
if not fakechroot:
print "WARNING: fakechroot not found, scriptlet tests WILL fail!!!"
else:
if fakechroot:
cmd.append("fakechroot")
if pacman["gdb"]:

1
pactest/tests/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
sync200.py

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