1
0
forked from mirrors/pacman

Compare commits

...

626 Commits

Author SHA1 Message Date
Dan McGee
ba45cb4590 doc/PKGBUILD: document that functions run in -e mode
Caught this noted on the forums, but it is definitely worth a note in the
manpage as well.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-13 22:36:10 -06:00
Dan McGee
c5f6995aeb Fix manpage wrap not at 80 characters
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-13 22:35:24 -06:00
Dan McGee
8f18798d10 Update news and bump versions
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-12 23:07:54 -06:00
Xavier Chantry
5c8083baa4 be_files: write EPOCH instead of FORCE
This patch is only meant for 3.4.x. It prepares the place for the future
epoch-aware release.

All force packages that get reinstalled or upgraded will get an EPOCH
entry in the local database, and thus the new pacman with epoch won't
reinstall them by mistake on the first -Su.

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-12 19:45:04 -06:00
Dan McGee
eedf4f4e63 Fix possible null pointer deref in check_arch
If we have a corrupted database, a package can come through without an arch,
causing the code to blow up when making strcmp() calls. It might even be
possible with perfectly valid database entries lacking an 'arch =' line.
This behavior was seen as at least one of the problems in FS#21668.

Ensure pkgarch is not null before doing anything further.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-10 19:45:14 -06:00
Sergey Tereschenko
bd08581d2e Small update to Russian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-11-08 06:56:04 -06:00
Dan McGee
a91250b7bb Add initial 3.4.2 NEWS draft
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-28 10:13:18 -05:00
Tobias Eriksson
a08638edc8 Update Swedish translation
442 translated strings, no fuzzies, no untranslated.

	modified:   po/sv.po

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-28 10:13:18 -05:00
Xavier Chantry
592211b6dc PKGBUILD.vim: add special licenses BSD MIT ZLIB Python
Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-28 09:31:22 -05:00
Ricardo Pérez
d901646f7a Small updates to Spanish translation
Also addresses FS#21373.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-28 09:13:24 -05:00
Xavier Chantry
30734c9a4a alpm/sync: very small memleak fix
Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-18 16:50:32 -05:00
Xavier Chantry
a2d7f6f206 libalpm/remove: fix funny progress bar problem with empty packages
$ pacman -Rd kde-meta

Remove (15): kde-meta-kdewebdev-4.5-1 [0.00 MB]  kde-meta-kdeutils-4.5-1 [0.00 MB]
             kde-meta-kdetoys-4.5-1 [0.00 MB]  kde-meta-kdesdk-4.5-1 [0.00 MB]
             kde-meta-kdeplasma-addons-4.5-1 [0.00 MB]  kde-meta-kdepim-4.5-1 [0.00 MB]
             kde-meta-kdenetwork-4.5-1 [0.00 MB]  kde-meta-kdemultimedia-4.5-1 [0.00 MB]
             kde-meta-kdegraphics-4.5-1 [0.00 MB]  kde-meta-kdegames-4.5-1 [0.00 MB]
             kde-meta-kdeedu-4.5-1 [0.00 MB]  kde-meta-kdebase-4.5-1 [0.00 MB]
             kde-meta-kdeartwork-4.5-1 [0.00 MB]  kde-meta-kdeadmin-4.5-1 [0.00 MB]
             kde-meta-kdeaccessibility-4.5-1 [0.00 MB]

Total Removed Size:   0.06 MB

Do you want to remove these packages? [Y/n]
( 1/15) removing kde-meta-kdewebdev      [------------------------] 100%
$ it stopped here..

On one side, libalpm did not initialize the progress bar at 0 percent.
So with meta-packages that have 0 files, there was only one progress bar
call with percent == 100.

On the other side, pacman callback kept track of the last percent that
it received. When there are only meta-packages, we always received only
100, so pacman believed the progress bar needed not update. Thus only
the first package was actually displayed.

A proper fix for the callback would be to keep track of last package
name to make sure the recorded prev percent applies.

But since we now specify that both Add and Remove should at least send
percent=0 at beginning and percent=100 at the end, there is no need
for that.

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-18 16:46:41 -05:00
Dan McGee
3a06a9fa9f Read 'force' entry from packages
We weren't reading this in from our packages, thus causing us not to write
it out to our local database. Adding this now will help ease the upgrade
path for epoch later and not require reinstallation of all force packages.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-11 17:48:11 -05:00
Allan McRae
283ef6519a Check for python-2.7
Add python-2.7 to the list of checked versions of python and add a
check for a python2 binary before resorting to the unversioned
python binary.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-05 11:14:31 -05:00
Rémy Oudompheng
302188b169 Make testsuite python-2.7 compatible
os.walk(".") adds a prefix of "./" to filenames in python-2.7 which
causes libalpm not to like archives generated in the testsuite resulting
in widespread failure.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-10-05 11:14:24 -05:00
Allan McRae
fd38319106 bacman: unify package creation with makepkg
Currently bacman always compresses with gzip now matter what PKGEXT is
set to.  Rework the entire package creation process to be similar to
that in makepkg.  This also make the explicit assumption that PKGEXT is
defined in makepkg.conf.

Thanks to Nelson Chan <khcha.n.el@gmail.com> for the original patch to
fix the incorrect package compression.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-15 08:54:34 -05:00
Gaspar Santos
c2993197ea Update Portuguese translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-15 07:30:15 -05:00
Lukas Fleischer
79541193f7 PKGBUILD-example.txt: Remove superfluous "|| return 1".
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-15 07:20:20 -05:00
Baurzhan Muftakhidinov
e29dde9157 Update Kazakh translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-15 07:19:51 -05:00
Dan McGee
6d41da4086 Minor translation file updates after make distcheck
It touched up these a bit after it ran, so might as well check the changes
in so we don't have to deal with them again later.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-03 20:10:10 -05:00
Dan McGee
df15a8c432 Retroactive additions to 3.4.1 changes
Forgot to mention things involving the translation changes we had.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-03 20:09:08 -05:00
Tobias Eriksson
3739e2c10c libalpm Swedish translation update
Signed-off by: Tobias Eriksson <tobier@tobier.se>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-03 19:55:22 -05:00
Matthias Gorissen
1cbc3c5c90 German translation updates
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-02 08:00:14 -05:00
Baurzhan Muftakhidinov
4e3bd7c137 Small fixes to Kazakh translation 2010-09-01 22:46:16 -05:00
Dan McGee
9d3a8efb7b 3.4.1 version bump
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-01 21:16:49 -05:00
Gaspar Santos
a7c4159b16 Add new European Portuguese translation
This is being checked in as 'pt' rather than 'pt_PT' as that is what
Transifex seems to want, and it is also the dominant choice of packages
already installed on my system when doing a count of the files located in
the /usr/share/locale translation directories.

Thanks for the new translation!

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-01 21:15:07 -05:00
Dan McGee
54b63de098 Add dir missing from autoclean.sh
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-09-01 21:13:17 -05:00
Jonathan Conder
90c45f7bbe pactest: add shell to fake root environment
Adds a shell to the fake root set up for pactests, which was not needed
previously due to a bug (debian #582847) in fakechroot.

Signed-off-by: Jonathan Conder <j@skurvy.no-ip.org>
2010-08-27 10:58:08 -05:00
甘露(Gan Lu)
9fbf5d9336 Update Chinese translation
Submitted through Transifex on 2010-07-02.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-25 14:29:44 -05:00
Andres P
3de32a0812 PKGBUILD.5: document illegal variable contents
Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-08-23 21:50:20 -05:00
Dan McGee
71660f55b2 Update translation files for 3.4.1 freeze
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-23 21:47:04 -05:00
Dan McGee
4a487346c5 Update NEWS for 3.4.1 release
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-23 21:45:54 -05:00
Jozef Riha
0478dfa1a5 Add Slovak translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-23 21:45:54 -05:00
Dan McGee
281bc72534 repo-add: create relative DB symlinks
As noted in FS#20498, if an absolute path is used for specifying the
database when invoking repo-add, the symlink generated will point to the
absolute path instead of being relative to the directory. Fix this for
the two linking cases, but leave the copy untouched so that will still
work.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-18 13:17:46 -05:00
Allan McRae
5908992e47 makepkg: add file to the list of needed utilities
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-18 13:11:55 -05:00
Mateusz Herych
c3f5375380 Updates for Polish translations
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-18 13:11:28 -05:00
Allan McRae
b02bda75f1 makepkg: check tput support before using
Prevent makepkg aborting whe colors are enabled and the terminal
does not support setting colors by tput.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-08-18 13:10:03 -05:00
Baurzhan Muftakhidinov
0d6efb35ce Small fix to Kazakh translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:14:35 -05:00
Dave Reisner
52118bf0f0 bash_completion: negate expression inside brackets
Avoids letting the shell evaluate ! as something else (e.g. an alias).

Signed-off-by: Dave Reisner <d@falconindy.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:11:04 -05:00
Dan McGee
ff689b6a38 Fix compile error in certain cases
I'm not sure why it doesn't happen everywhere, but we need <sys/stat.h> for
umask and mkdir in this file. I hit this today:

cc1: warnings being treated as errors
util.c: In function ‘makepath’:
util.c:128:2: error: implicit declaration of function ‘umask’
util.c:141:5: error: implicit declaration of function ‘mkdir’
make[2]: *** [util.o] Error 1

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:10:55 -05:00
Dan McGee
fa4f25626c Mark sync_pkg and sync_target as static functions
We no longer use these anywhere outside of sync.c, so do the rename and add
static to their definition to meet our coding standards.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:10:55 -05:00
Dan McGee
f8d7cd6b26 Maintain a list of seen packages when installing a group
As reported in FS#20221, we don't always do the right thing when installing
a group and using the --needed option. This was due to the code pulling
packages based on what was already in the transaction's add list, but
completely ignoring the fact that we may have already seen and skipped this
same package in an earlier repository.

Add a list to the private _alpm_sync_pkg() function that allows us to have
this extra information so we don't mistakenly downgrade a package when using
--needed.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:10:55 -05:00
Dan McGee
e702f56ea6 Add two pactests for group and --needed interaction
The first step for resolving FS#20221. sync023 is the case from the bug
report; sync022 is already working fine but we have no tests at all that
test the --needed option in any form.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:10:55 -05:00
Dave Reisner
7f5c486666 Always treat PKGLIST as an array.
Fixes repackaging issues when multiple package names are passed to the
--pkg option.

Signed-off-by: Dave Reisner <d@falconindy.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-27 10:10:55 -05:00
Dan McGee
fcb4f0264f docs: Add a 'website' target
This will allow me to be not quite as lazy in getting website changes out
to the Arch Linux server by making it trivial to get everything packaged up
and working correctly.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-02 18:23:20 -05:00
Dan McGee
3d8be4291c Fix some incorrect asciidoc syntax
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-02 18:23:20 -05:00
Allan McRae
622326bb37 makepkg: fix sudo/su calling of pacman
This fixes two issues:

1) using "sudo -l" results in excess password asking under certian
configurations.  Revert to the pre 3.4 behaviour of always using
sudo if it is installed.

2) Properly escape the command so that that versioned dependencies,
such as "foo>4", do not get treated as output redirection when using
su.  This also unifies the generation of the pacman line and its
privilege escalation.

Based on patches supplied by Andres P <aepd87@gmail.com> with minor
adjustments for suitability for the maint branch.

Original-work-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-07-01 00:23:20 -05:00
甘露(Gan Lu)
68dff73463 Update Chinese translation to fix gettext positional params
Because the shell gettext doesn't allow for positional gettext substitution,
be more careful about where we use it.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-07-01 00:21:08 -05:00
Allan McRae
0ea52e3a4f makepkg: try standard paths for coreutils du
Attempt to find "du" from coreutils in the standard paths and if
not revert to the version in the users PATH.  Using the full path
prevents issues such as FS#19932, where a different and incompatible
version of du is put earlier in the users path.

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-30 08:27:29 -05:00
Andres P
8b23aa172f makepkg: remove bash4-only parameter expansion in check_sanity
Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-30 08:27:29 -05:00
Thomas Bächler
d7c98d4e45 makepkg: Only check regular files in $srcdir check
The 'grep -R' in the $srcdir check would not only grep regular files,
but also devices, symlinks (that might potentially point outside of
$pkgdir), pipes and so on. Use find to ensure only regular files are
examined.

This should fix https://bugs.archlinux.org/task/19975

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-30 08:27:29 -05:00
Dan McGee
21d5dedfdd repo-add: try symlink, then hardlink, then copy for DB file
We were seeing some issues when trying to create our new database alias
using symlinks on certain filesystems (see FS#19907). Have a fallback method
in place where we first try a symlink, then a hard link, then just copy the
database if all else fails.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-24 10:06:36 -05:00
Andres P
6f4f9c1b66 bash_completion: fix bash 3.2 incompatibility
To avoid errors with bash 3.2, compopt will be skipped if it's not a
shell builtin.

compopt is needed to not append slashes to package names that
coincide with directories in PWD.

This is currently not possible to fix in bash versions that do not support
compopt, so these users will have to bear that regression.

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-23 13:32:21 +10:00
Allan McRae
07a9effdd0 makepkg: prevent error trap activation in bash-3.2
Running "pacman -T foo" is expected to return a non-zero value when
"foo" is not installed.  This sets of the error trap in bash-3.2 but
not bash 4.x.  Work around this by disabling the error trap around
this pacman call as we are manually checking the return value anyway.

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-23 13:32:21 +10:00
Andres P
708f186f98 rankmirrors: pipe errors to stderr
If this is to be scripted with AIF or another tool, it needs to respect stderr.

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-23 13:32:21 +10:00
Andres P
226c137245 rankmirrors: fix bogus pacman configuration parsing
Valid pacman configuration files do not have to start with a hash for that line
to be a comment, neither do directives need to be in column 0.

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-23 13:32:21 +10:00
Andres P
2222e9f8df rankmirrors: fix bogus variable assignment
$replacedurl was being built from an expansion of itself. But at the time it
happened, it was empty.

Fixes FS#19911

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-23 13:32:21 +10:00
Allan McRae
c2cf6a14cf makepkg: revert bash4-ism
Commit 3d67d9b1 introduced multiple bash4 string manipulations.
Revert those in order retain compatibility with bash-3.2 which
is still widely used.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-20 21:00:49 -05:00
Dan McGee
6c00ca8f23 Handle sync target + ignore properly
Rather than say we can't find the target after saying "No, I guess I don't
want to install this", we should make sure the ignored status gets passed
all the way through. This fixes FS#19866.

Pactest is also included that failed before due to the fact that we normally
treat an unfound package as a reason to exit with a non-zero status.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-20 15:19:19 -05:00
Dan McGee
7fc50d7950 Revert disabling of make in doc/ dir by default
This is a partial revert of commit d44e5099. By making disabling docs the
default, it presents all sorts of problems- namely anyone who builds from a
tarball and isn't careful enough to include '--enable-doc' will get an
install without any manpages at all. Remember that make includes both
'build' and 'install' steps.

The warning introduced by the commit is kept, so we do not lose all its
benefits, but I am not happy to see regressions introduced in packaging and
installing of this piece of software.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-17 00:01:23 -05:00
Allan McRae
dc817a2061 makepkg: fallback to sane defaults for library stripping
If the library stripping variables are not defined in makepkg.conf,
libraries will be fully stripped and become broken.  Fallback to a
sane default stripping level.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-16 23:54:33 -05:00
Dan McGee
892266277e Fix distcheck invocation in doc/ directory
Commit 5fe41df8 broke `make distcheck` pretty badly for the doc directory.
Looking at what this commit was trying to accomplish, it make sense to
revert a lot of the build system changes and just simplify what we are
showing in the man page anyway- an example, not exactly how it is configured
on your system.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-16 21:01:09 -05:00
Dan McGee
2ee186506c Add test/util directory as necessary to build files
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-16 21:00:44 -05:00
Dan McGee
1c59b9e881 Update website with 3.4.0 release
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-16 20:10:47 -05:00
甘露(Gan Lu)
2e5e3739a1 Fix issue in Chinese translation
Fixes FS#19777.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-16 10:19:44 -05:00
Dan McGee
84b999823b Add a .mailmap file
This helps out `git shortlog` by mapping our various mismatched authors and
email addresses. The number of authors reported by shortlog goes from 131 to
98 after this commit.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-15 19:56:47 -05:00
Ionuț Bîru
c355d2a3b7 Update Romanian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-14 12:18:01 -05:00
Leandro Inácio
6e31ddf42e Revise Portuguese (Brazil) translation
Fix the '\t' characters that got introduced by the last update of this
translation that should not have been there.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-14 12:08:28 -05:00
Manuel Tortosa
8fbc91e693 Updating Catalan translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-14 12:02:07 -05:00
Juan Pablo González T
fe7b77cd8a Update Spanish translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-14 11:00:20 -05:00
Roman Kyrylych
ea7696b441 Update Ukrainian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-14 10:29:57 -05:00
Leandro Inácio
6297248087 Update Portuguese (Brazil) translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-11 19:01:46 -05:00
Dan McGee
5f5b6f16af translations: rename Norwegian translation from nb_NO to nb
This puts us more in line with other projects that don't attach the country
code to the language code.

$ du -sh /usr/share/locale/nb*/LC_MESSAGES
3.5M    /usr/share/locale/nb/LC_MESSAGES
132K    /usr/share/locale/nb_NO/LC_MESSAGES

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-11 10:05:45 -05:00
Dan McGee
f9c70d3140 translations: rename Swedish translation from sv_SE to sv
This puts us more in line with other projects that don't attach the country
code to the language code.

$ du -sh /usr/share/locale/sv*/LC_MESSAGES
7.2M    /usr/share/locale/sv/LC_MESSAGES
60K     /usr/share/locale/sv_SE/LC_MESSAGES

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-11 09:57:12 -05:00
Christos Nouskas
d978039cf0 Revise Greek translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-09 15:16:59 -05:00
Allan McRae
d73d055c6f makepkg: use BUILDFILE rather than BUILDSCRIPT
In check_sanity, BUILDFILE needs to be checked rather than
BUILDSCRIPT.

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-09 16:52:49 +10:00
Allan McRae
b886362282 makepkg: fix errors with multiple install or changelog files
Another issue caused by fe1e3471.

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-09 15:58:05 +10:00
Allan McRae
ac5c2fd09b Fix creation of source packages
Source packages were getting created with only links to local source
files.  Caused by commit 5cddcc90.

Also, fix dangling symlinks to install and changelog files. Caused
by commit fe1e3471.

Thanks to Christopher Rogers <slaxemulator@gmail.com> for pointing
out areas that were failing.

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-09 15:58:05 +10:00
Dan McGee
8163beb622 Update English (British) translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 20:17:14 -05:00
Nagy Gabor
88f139ab4e API changes between 3.3 and 3.4
Updates for README file.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 18:18:34 -05:00
Matthias Gorissen
b00d911331 Update German translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 15:08:43 -05:00
Sergey Tereschenko
982018bf74 Update Russian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 12:24:48 -05:00
Dan McGee
93def410b8 Add note about XySSL/PolarSSL name change
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 10:35:08 -05:00
Baurzhan Muftakhidinov
9a56830164 Update Kazakh translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-07 09:30:39 -05:00
Xavier Chantry
3012c0e091 Update French translation
Thanks to CalimeroTeknik <calimeroteknik@free.fr> for providing many
corrections !

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-06 16:42:01 -05:00
Christos Nouskas
b79193a37e Update Greek translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-06 16:41:35 -05:00
Dan McGee
a338778028 Remove unnecessary gettext call
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-05 11:42:46 -05:00
Vojtěch Gondžala
d58f398312 Update Czech translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-05 11:40:42 -05:00
Nagy Gabor
c80e04a151 Update Hungarian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-05 11:34:31 -05:00
Giovanni Scafora
a3b1585b7b Update Italian translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-05 11:30:51 -05:00
甘露(Gan Lu)
a66f8dbbb1 Update Chinese translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-05 11:27:45 -05:00
Samed Beyribey
10aba2fd53 Update Turkish translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-04 19:44:33 -05:00
Dan McGee
46b170a26e Bump configure.ac versions for 3.4.0 release
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-04 17:02:24 -05:00
Dan McGee
5bf3ba1ca8 NEWS: add some flyspray bug numbers
Also add a note about bash completion improvements.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-04 16:49:48 -05:00
Dan McGee
f60db581a7 translation: update pot/po files for libalpm in prep for release
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-04 13:36:38 -05:00
Dan McGee
a8a6eed9e8 translation: update pot/po files for pacman in prep for release
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-04 13:35:57 -05:00
Allan McRae
d8d5d48270 NEWS update for pacman-3.4
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-03 18:14:56 -05:00
Cedric Staniewski
5cddcc901b makepkg: refactor absolute filename detection
Move the absolute filename detection to a new function to reduce code
duplication.

This patch also fixes the --allsource option that did not include remote
source files if they reside in $startdir instead of $SRCDEST.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-06-03 18:14:25 -05:00
Cedric Staniewski
3739fe9913 makepkg: print only base filename of install/changelog files
The complete file path of a temporary symlink is really useless
information.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-03 14:15:50 -05:00
Dan McGee
756e49259d contrib: kill gensync/updatesync
These are old and have outlived their usefulness at this point. Kill them.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-03 14:07:48 -05:00
Dan McGee
0ac96d94ec Move vercmp tests into util/ testing directory
Now that not everything is in 'pactest/', we can separate out the parts a
bit more and leave the pacman/ directory to be just pactest.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-02 13:24:22 -05:00
Allan McRae
844d82fad8 Move pacman test suite
Move the test suite to test/pacman in order to make a logical
location for a future makepkg test suite.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-02 13:14:51 -05:00
Allan McRae
ccea1b5576 Fix typo in pactest
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-02 13:14:41 -05:00
Allan McRae
2710b256cc Remove unnecessary error catching from PKGBUILD protos
The use of "|| return 1" is no longer necessary in PKGBUILDs.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-06-02 13:14:34 -05:00
Allan McRae
5dffef787d repo-add: symlink to db file to reponame.db
This is a small step towards allowing pacman to handle databases
with variable compression types.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-27 09:19:13 -05:00
Andres P
fe1e3471f4 makepkg: remove code duplication in buildscript parsing
Merges code in two almost identical chunks in create_srcpackage and
check_sanity.

Also discards the space kept by regex in ae73d75660 and earlier, since
the for loop discards it later on.

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-27 09:18:52 -05:00
Dan McGee
3064f8d08d Update pacsearch to work with new Qs/Ss output
Now that we have the '[installed]' text, update pacsearch to look for it and
highlight it instead of the former '***' prefix.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-27 09:18:20 -05:00
Andres P
80f7c1707c bash_completion : full rewrite with many improvements
* Undeclared local vars with common enough names to warrant breakage
* Performance issues with _pacman trying to replicate /usr/bin/pacman
  with find and other slow tools.
* Performance issues with expanding an array (with sometimes hundreds of
  items) over three times.
* Expanding said array to remove already completed entries had the side
  effect of braking filenames with spaces and or \n.
* add -D --database options and --print
* fix dirs showing up when they shouldn't in completions
* completions regarding database entries shouldn't trigger filename
  completion.

This is now down to 106 lines. The original one (master) is 365 lines
long, yet this one retains all functionality.

The work is documented in FS#16630.

Signed-off-by: Andres P <stderr@mail.com>
Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-24 21:24:48 -05:00
Andres P
ae73d75660 makepkg: replace unnecessary uses of grep
Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-24 21:23:55 -05:00
Allan McRae
3cd237dec3 makepkg: fix permissions on install and changelog files
The .INSTALL and .CHANGELOG files in a package retained the permissions
that they had in $startdir.   Do a chmod after copying to ensure
that the permissions are sane.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-24 21:23:47 -05:00
Andres P
52c3f871db makepkg: don't decompress when stripping binaries
f569c4a042 wrongly relied on file's output.

The fix is to not decompress files in the first place.

Signed-off-by: Andres P <aepd87@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-24 21:18:57 -05:00
Allan McRae
f948cb25bb Change directory in package function in PKGBUILD.proto
makepkg goes back to the $startdir between the build() and
package() functions so we need to change directory at the
start of the package function.

TODO: fix makepkg to make this unnecessary

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-05-19 20:33:35 +10:00
Jonathan Conder
9ab6bfad22 fix memory leak in _alpm_sync_commit
Signed-off-by: Jonathan Conder <j@skurvy.no-ip.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:51:31 -05:00
Daenyth
ac722c9327 rankmirrors: Add a --repo option to target a specific repo
Signed-off-by: Daenyth <Daenyth+Arch@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:43:17 -05:00
Allan McRae
c1fc00508e makepkg: allow skipping integrity checks when making source package
Extends the use of the --skipinteg option to creating a source
package. Fixes FS#15984.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:35:55 -05:00
Nagy Gabor
0e7ba6bddd New pactest: unresolvable001.py
To test the regression of commit eada558e12.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:33:56 -05:00
Nagy Gabor
eada558e12 Partial fix for the phonon/qt issue
This patch fixes the phonon/qt issue, if all to-be-upgraded packages are
explicit targets (ie. only not-yet-installed packages are pulled by
resolvedeps). This condition covers the most common situations, for example
it should hold with every -Su operation.

After this patch sync405.py passes, but sync406.py doesn't.

The work is inspired by the patch of Henning Garus, thanks for his work:
http://mailman.archlinux.org/pipermail/pacman-dev/2010-February/010429.html
(I moved the alpm_list_diff computation to sync.c in order to compute it
only once.)

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:33:00 -05:00
Nezmer
c6f0fc27ed Resolve dependencies whenever --syncdeps is passed and --nodeps is not
With this patch, dependencies will be resolved and not silently ignored
when running:

makepkg --nobuild --syncdeps
makepkg --repackage --syncdeps

Also, a warning is displayed when repackaging and dependencies are not
being resolved.

Thank you Allan for the feedback.

Signed-off-by: Nezmer <git@nezmer.info>
[Allan: Only warn when repackaging with a package function]
Signed-off-by: Allan McRae <allan@archlinux.org>

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:31:59 -05:00
Xavier Chantry
d44e509933 configure.ac : disable doc by default and check for asciidoc
This is a complaint that has been reported many many times. By default, docs
are enabled and there is no check for asciidoc, so anyone building from git
will see their build fail.

We cannot do a strict check for asciidoc because released source tarballs
have man pages already built, and it should be possible to install them
without having asciidoc.

This patch attempts to improve the situation in two ways :
1) disable doc by default
2) print a warning if docs are enabled but asciidoc is not installed

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:30:29 -05:00
Dieter Plaetinck
d32f6daa66 fix for incorrect checking of return code, which causes syntax errors
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:29:05 -05:00
Marc-A. Dahlhaus
5752e276fb Allow to include a path containing wildcards
Dan: line wrapping and man page touchup.

Signed-off-by: Marc-A. Dahlhaus <mad@wol.de>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-18 11:26:22 -05:00
Dan McGee
a6ace987a9 Add some machinery to test the Include directive
After the previous patch that re-enabled its use outside of sync repository
sections which we had unintentionally disabled.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-17 18:47:30 -05:00
Xavier Chantry
3a85f83840 Allow Include directive in any sections
Fix a regression of 51f9e5e40a that only allowed Include in repo sections.

Thanks to Marc - A. Dahlhaus for reporting the issue.

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-17 18:27:01 -05:00
Dan McGee
df842e11cf pactest: remove cargo-cult option reset
This doesn't need to be here. We don't even support non-CamelCase options
anymore.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-17 18:23:07 -05:00
Nagy Gabor
25cd6c2e8d Fix a serious bug in the download code
After commit df99495b82 pacman downloaded files from the first repo only,
and reported corrupted packages for all files from other repos.

The download_size was set to 0 for _all_ transaction packages after
downloading some files from the first repo. This code-block was moved to its
correct place.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-14 15:03:21 -05:00
Dan McGee
f03f09011f doc: fix up description of where example PKGBUILD is located
As Allan pointed out, this actually ships with pacman (at least with Arch)
and not necessarily with ABS or any other package. Also fix the language
dealing with the prototype install files.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-13 19:14:16 -05:00
Dan McGee
10b0acfc20 PKGBUILD.vim: only allow hex characters in checksums
Of course, we still have only md5 and sha1 hardcoded here but I resisted the
urge to copy paste for the rest of our supported checksums in hope that
someone knows how to do it a better way.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-13 17:46:30 -05:00
Dan McGee
07b2ba251f Add 'pkgbase' highlighting to vim syntax file
Simple change and probably a bit too copy/paste, but works for now.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-13 17:26:54 -05:00
Xavier Chantry
df833f6c64 PKGBUILD.vim : update valid licenses
Updated list with :
echo $(pacman -Ql licenses | grep "/usr/share/licenses/common/.*/$" | cut
-d'/' -f6 )

Maybe PKGBUILD.vim could do this at runtime ?

Dan: you forgot the symlinks; readded FDL, GPL, LGPL.

Signed-off-by: Xavier Chantry <chantry.xavier@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-13 17:11:25 -05:00
Allan McRae
7f02f7cb9f Allow -Qo to perform a functional 'which'
When pacman queries the ownership of an object that is not a path, it will
check in the users PATH for a match. Implements FS#8798.

Dan: did some small refactoring and error message changes when PATH is
searched and nothing is found.

Original-patch-by: Shankar <jatheendra@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-11 12:09:43 -05:00
David Campbell
364ebf4e16 Switch Contributor line with Maintainer line.
When someone is creating a new PKGBUILD he will most likely be the maintainer
not a contributor.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-06 11:38:08 -05:00
Allan McRae
2ce444ee10 makepkg: rework --skipinteg
The current --skipinteg is a bit weird.  It does not skip integrity
checks, but instead does them and prints a warning. Change this
behaviour to actually skipping the checks.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 19:31:58 -05:00
Xavier Chantry
79987c92cb makepkg -g: use checksums defined in the pkgbuild
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Allan: amend documentation]
Signed-off-by: Allan McRae <allan@archlinux.org>

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 19:28:49 -05:00
Allan McRae
64c3255b0e makepkg: handle multiple install and changelog files
The presence of all install and changelog files (multiple files may
be used with package splitting) is checked for in check_sanity().

All install and changelog files are copied to the source location
when using --source.  The check for install and changelog file presence
is removed in create_srcpackage() as this is redundant to the checks
performed in check_sanity().

Moved install and changelog handling in create_srcpackage() to after
source array files, as this is more logical and readily allows for the
following.

A check is made when creating a source package that a symlink to an
install file has not already been added.  This can occur if the
install file is used multiple times or if it is listed in the source
array.

Fixes FS#18831, FS#18394 and partially fixes FS#16004

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-05-05 19:27:55 -05:00
Ray Kohler
590606a5d7 makepkg: fall back to su if sudo is not available
Signed-off-by: Ray Kohler <ataraxia937@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 19:26:56 -05:00
Allan McRae
ccbef232c9 makepkg: improve removal of installed dependencies
Compare a list of packages on the system before and after dependency
resolution in order to get a complete list of packages to remove.  This
allows makepkg to remove packages installed due to provides.

Bail in cases where packages that were on the system originally have been
removed as there is a risk of breaking the system when removing the new
packages.

Fixes FS#15144.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 19:26:06 -05:00
Jonathan Conder
df99495b82 Compute package download size outside _alpm_sync_prepare
And add a new info level for this piece of data.

Signed-off-by: Jonathan Conder <j@skurvy.no-ip.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 18:15:52 -05:00
Dan McGee
d485c0370f Improve documentation of -k/--dbonly
We had the long option wrong in some places and its behavior wasn't
documented at all with regards to -U/--upgrade.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 11:18:27 -05:00
Dan McGee
9528c36452 Add two new pactests for --dbonly
It caught me by surprise that:
1. These weren't being tested at all
2. The --dbonly combined with -U not only "works" but is also completely
   undocumented. It also has some weird behavior on install vs. upgrade that
   may need addressing.

Add some tests which will hopefully provoke some discussion.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 11:11:20 -05:00
Nagy Gabor
f9fa822ccb Remove unused 'z' option from getopt_long's optstring
In addition, I permuted shortopts to make it more readable.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 10:39:44 -05:00
Nagy Gabor
ac9dde072c Introduce -D, --database
The request of FS#12950 is implemented.

On the backend side, I introduced a new function, alpm_db_set_pkgreason(),
to modify the install reason of a package in the local database. On the
front-end side, I introduced a new main operation, -D/--database, which has
two options, --asdeps and --asexplicit. I documented this in pacman manual.
I've created two pactests to test -D: database001.py and database002.py.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-05 10:37:01 -05:00
Dan McGee
6b6eb6345b Fix up the cross-compilation patch library lookup
Don't explicitly add things to the list that might not need to be there, and
get the fallback list of libraries correct.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-04 23:43:43 -05:00
Dan McGee
eb6af031ec Build vercmp without needing link to libalpm
Include the object file directly from the libalpm version comparison code as
it is the only thing we need. This drops the dependency of vercmp on
libalpm and all of the stuff we know it drags in.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-04 23:42:01 -05:00
Dan McGee
4f80993933 Remove call to function logger
It isn't really necessary here and it helps us get rid of some link
pollution so we can have a slim vercmp binary.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-04 23:38:52 -05:00
Dan McGee
2a6f3f0652 Move vercmp code into a separate file
This will facilitate using this object file on its own in the vercmp tool
which will be done in a future commit. The net impact on the generated
binaries should not be noticeable after this commit.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-05-04 23:32:13 -05:00
Dan McGee
8a6bbed98e Update PKGBUILD.proto to include a package() function
Relevant after we deprecated `makepkg -R` without a package() function being
present in the PKGBUILD.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-04-27 13:08:09 -05:00
Allan McRae
90aca75cb9 makepkg: BSD find compatibility fix
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-04-26 18:49:28 -05:00
Christophe Chapuis
753599b504 contrib/pactree: generate reverse dependency trees
Add an option to show the tree of packages which depend on a given
package

Signed-off-by: Allan McRae <allan@archlinux.org>
2010-04-26 18:49:11 -05:00
Nagy Gabor
652762488a New pactests for the phonon/qt issue
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>
2010-04-26 18:47:56 -05:00
Allan McRae
6995aed9ae makepkg: deprecate repackaging without a package function
File permissions are not guaranteed to stay the same on exit from fakeroot,
so repackaging may result in files with different permissions. This is
avoided when using a package() function (or split packages) as the
packaging step is rerun.

Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: touched up message for translation purposes]
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-04-26 18:46:41 -05:00
Serge Ziryukin
7608dd74d7 check for valid optarg before using strdup
Signed-off-by: Serge Ziryukin <ftrvxmtrx@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-04-26 14:50:31 -05:00
Nagy Gabor
88254d762d Show --print and --print-format options with -Rh, -Sh and -Uh only
http://mailman.archlinux.org/pipermail/pacman-dev/2010-March/010519.html

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:59:27 -05:00
Xavier Chantry
7965345d43 More consistent printing of off_t and time_t
time_t : %ld
off_t : %jd and cast to intmax_t

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:58:35 -05:00
Dan McGee
21abae98cb Update -Si docs to reflect new -Sii operation
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:36:30 -05:00
Allan McRae
98ee520907 Sort and avoid duplicates in -Sii output
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:32:48 -05:00
Allan McRae
526806e7ac alpm_list_diff_sorted - make some arguments const
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:31:37 -05:00
Matthias Lanzinger
bf7c3eb17f Fix cross-compilation issues with git and libfetch
This patch fixes 2 issues I encountered when cross-compiling pacman.
First is the test for libfetch which requires explicit linking to all
libraries libfetch depends on.

The other problem results from the AC_CHECK_PROGS test for git. This
test will stop configure with an error when cross-compiling.
The fix moves the call to AC_CHECK_PROG so that is only called of
--enable-git is actually set.

Signed-off-by: Matthias Lanzinger <mlaenz@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-25 21:28:01 -05:00
Dan McGee
cdbb90aceb Show 'Required By' in -Sii output
Just as we do in -Qi, we can compute required by information for sync
database packages. The behavior seems sane; for a given package, the -Sii
required by will show all packages in *any* sync database that require it.

Implements FS#16244.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-23 22:24:14 -05:00
Dan McGee
ad4efa539d Strip extension off all package compression types
Since we were searching for '.pkg.tar.gz' before, we now have started to
show extensions during the download when we have a '.pkg.tar.xz' package.
Just look for '.pkg.tar.' (or '.db.tar.') instead and suppress anything
found from that point on.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-18 21:46:03 -05:00
Dan McGee
f6c7de77ed Unbreak the database partial extraction code
Basically I'm the idiot that thought I could make it better and completely
forgot how freeing the contents of the original lists would screw up our
nice little diff extraction lists. This caused segfaults among other
problems. Last time I try to do that...

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff627ce26 in strcmp () from /lib/libc.so.6
(gdb) bt

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-15 23:06:22 -05:00
Dan McGee
a36ff9404b Bump copyright dates to 2010
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 19:46:59 -05:00
Xavier Chantry
1aa1d00248 fix a few warnings reported by clang
- remove unused variables
- some more sanity checks
- safer printf

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 19:25:48 -05:00
Dan McGee
be2f43191d Reduce duplicate code in DB extraction
Follow-up to the previous "Only extract new DB entries" patch; move the
partial extraction code inside one side of the loop so we can use the same
code for actually doing file extraction.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 19:16:26 -05:00
Xavier Chantry
2f4ee4341d Only extract new DB entries
This implements FS#15198. The idea apparently came from Csaba Henk
<csaba-ml <at> creo.hu> which submitted a patch to Frugalware, so thanks to
him, even though I did not look at the code :)

The idea is to only extract folders for new packages into the package
database and clean up the old directories. This is essentially implementing
Xyne's "rebase" script within pacman.

If using -Syy, just remove and extract everything.

If using -Sy :
1. Generate list of directories in DB
2. Generate list of directories in archive
3. Compare both
4. Clean up old directories
5. Extract new directories

Original-work-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Dan: fix compile error, s/int/size_t/]
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 19:12:24 -05:00
Dan McGee
69b3a811a1 Mark two functions static
These were just introduced in the `--print` patch, and don't need to be
exposed outside of util.c.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:47:40 -05:00
Xavier Chantry
d39b1dbe62 Add new --print operation for all operations
And a new --print-format option to configure the output.

This implements FS#14208

Example usage :
pacman -Sp --print-format "%r/%n-%v : %l [%s]" kdelibs
extra/kdelibs-4.3.2-4 : ftp://mir2.archlinuxfr.org/archlinux/extra/os/i686/kdelibs-4.3.2-4-i686.pkg.tar.gz [0,00]

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:44:40 -05:00
Xavier Chantry
67700b926a print installed packages
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:41:38 -05:00
Xavier Chantry
e4be3e06af callback: use variable length for progressbar text
This fixes FS#17523

We always used a fixed value of 50 for textlen, which is often not enough
for download progress bar. At least we can use a bigger width on large
terminal (e.g. 60% of width) and keep 50 as minimum.

before:
 nautilus-2.28.4-1-x...     5.7M  789.2K/s 00:00:07 [####################################] 100%
after:
 nautilus-2.28.4-1-x86_64         5.7M  770.7K/s 00:00:08 [##############################] 100%

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:39:43 -05:00
Xavier Chantry
e5dce888c0 callback.c : less magic progress bars
1 - Explain magic numbers

2 - There was a weird off by 1 mess in the progress bar. The code supposedly
shared the width between 50 chars for text (textlen) and the rest for the
progress bar (proglen = getcols() - textlen).
But the code actually used textlen + 1 for the text and proglen - 1 for the
progress bar (with haslen=1, the progress bar was actually empty), which was
a bit confusing so I changed it.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:39:26 -05:00
Xavier Chantry
087be2f1fb delta : add external cleanup script
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:34:42 -05:00
Allan McRae
6f0ffb2386 makepkg: always update symlinks to compressed man pages
When a man page has both symbolic and hard links, any symlink pointing
to other than the alphabetically first hardlink was not "compressed"
and left dangling towards the uncompressed man page. Fixes FS#18569.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:34:27 -05:00
Cedric Staniewski
5fe41df8a9 makepkg: make strip options configurable
The newly added variables STRIP_BINARIES, STRIP_SHARED and STRIP_STATIC,
that are set in makepkg.conf, specify the strip options used on binaries
and shared and static libraries.
In addition, files are now stripped more aggressively by default.

Implements FS#13592 the way it was suggested by Allan in the comments.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:34:16 -05:00
Dan McGee
22331fdadb makepkg: Remove setgid bit on srcdir/pkgdir creation
It was noted in FS#17533 that setgid bits are carried down into any created
subdirectories, and thus could end up being in a built package if the
original package directory was marked g+s. When we create src/ and pkg/,
explicitly chmod them to remove any sticky bits.

Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
2010-03-14 18:32:44 -05:00
Allan McRae
65d43fbb84 makepkg: abort on missing or non-writable PKGDEST
When PKGDEST pointed to a non-writable location, makepkg would fail
after completing the build process. This patch makes it abort as
soon as PKGDEST is parsed.

Also, move the SRCDEST check to the same point rather than right
before downloading sources (which was after dependency checks).

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:30:35 -05:00
Allan McRae
a4e3fd1847 makepkg: only strip files that are writable
TODO: http://mailman.archlinux.org/pipermail/pacman-dev/2010-January/010390.html

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-03-14 18:30:23 -05:00
Nezmer
de5473c026 makepkg: Add documentation for the new SRCPKGDEST variable
Add SRCPKGDEST documentation to the makepkg.conf man page

Signed-off-by: Nezmer <git@nezmer.info>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-02-28 23:25:13 -06:00
Cedric Staniewski
eee61a0bbc makepkg: document environment variables PKGDEST and SRCDEST
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-02-28 23:25:08 -06:00
Allan McRae
7ea0a115db makepkg: update required programs
Remove getopt, add xz.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-02-28 23:23:04 -06:00
Cedric Staniewski
1a00ee5c27 bash_completion: remove absolute utility paths again
The location of the used utilities may and does differ between various
distributions and therefore absolute paths do not work well. Since the
main purpose of its introduction was to avoid side-effects caused by
aliases, it is sufficient to disable possible aliases temporarily by
preceding the commands with a backslash.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-02-28 23:19:03 -06:00
Pierre Schmitz
d85421ec62 contrib/*_completion: match *.pkg.tar.*
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-02-28 23:17:54 -06:00
Allan McRae
afb61bb22a Do not print installed size when only downloading
When using --downloadonly the "Total Installed Size" message is not
needed and perhaps misleading.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 23:39:22 -06:00
Nagy Gabor
27bc2f7eb8 Print "there is nothing to do" with NOOP transactions
The "local database is up to date" message has been replaced with "there
is nothing to do" message. This used with "empty" -S, -R, -U operations too.
(Examples: pacman -S ignored_pkg, pacman -Ru needed_pkg.)

See FS#17859.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 22:14:12 -06:00
Dan McGee
0eadc99240 Merge branch 'maint'
Just a slight touchup in makepkg due to the [ -> [[ conversion, so nothing
to see here.

Conflicts:
	scripts/makepkg.sh.in
2010-01-19 22:03:54 -06:00
Dan McGee
8b3f5f0ce6 bash_completion: use absolute paths to utilities
Fixes issues noted in FS#16630.

Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit 03f35b1432)

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 21:58:01 -06:00
Cedric Staniewski
ce9bb994f8 makepkg: fix abortion after sourcing /etc/profile
The source command triggers / might trigger the ERR trap which makes
makepkg abort right after a successful installation of missing
dependencies.

Thanks to Xavier Chantry <shiningxc@gmail.com> for finding this
solution.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit 77e84bea71)

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 21:56:36 -06:00
Allan McRae
0c3f502064 contrib/bacman: fix checking if file has been added
Fixes FS#17140.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit 0199a7ee71)

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 21:56:00 -06:00
Dan McGee
a12ed63545 NULL out handle after release
We free'd the handle but didn't NULL out the global variable, leading to
problems if you try to reinitialize the library. Make sure we clean up after
ourselves.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 21:52:54 -06:00
Nezmer
afc37c58c7 makepkg: Introduce $SRCPKGDEST
Introduce $SRCPKGDEST to define a destination dir for source packages
instead of saving them in $PKGDEST with binary packages.

The simple patch doesn't break old behavior.

Signed-off-by: Nezmer <git@nezmer.info>
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-01-19 21:51:51 -06:00
Cedric Staniewski
335627d72d makepkg: check for non-empty pkgbase instead of pkgname
pkgbase is used in the following rm calls, and since pkgname can be
present when pkgbase is not, it is safer to check for pkgbase.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-14 21:39:24 -06:00
Cedric Staniewski
a6cca6e456 makepkg: remove srclinks directory on error exit
When makepkg exits in create_srcpackage(), the (temporary) srclinks
directory is left behind.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:31:06 -06:00
Nezmer
9fe27b068a makepkg: skip devel_check() when repackaging
Currently, "makepkg -R" creates a package with a wrong updated $pkgver.

Signed-off-by: Nezmer <Nezmer@allurelinux.org>
[Allan: adjusted comment]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:30:58 -06:00
Cedric Staniewski
05ff276eef makepkg: limit sudo usage to allowed pacman commands
This is particularly useful when using pacman wrappers which call sudo
by themselves and therefore should not be run as root.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:28:43 -06:00
Cedric Staniewski
66c6d288fd makepkg: allow to specify an alternative pacman command
If PACMAN environment variable is set, makepkg will try to use this
command to check for installed dependencies and to install or remove
packages. Otherwise, makepkg will fall back to pacman.

Implements FS#13028.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
[Dan: move envvar section in manpage]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:26:54 -06:00
Allan McRae
b805fe58ae makepkg: check for references to build root in package
Add a check that the package does not contain references to the
folder it was built in.

Fixes FS#14751

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:22:34 -06:00
Xavier Chantry
a2c9cbdbdc improve download_internal error messages
download_internal is supposed to always set pm_errno but did not in many
cases.

The most important (and tested) change is the one concerning fetchStat. This
is typically where the code will fail when the network is down for example.

Before commit d2dbb04a9a, this fetchStat call did not exist and the
same kind of errors would be encountered in the fetchXGet call that follows.
I just copied the error printing to restore the old behavior.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:22:16 -06:00
Xavier Chantry
b8b8c78627 add some more sanity check for optarg
getopt should already ensure that optarg is not NULL when an argument is
required, but just be extra safe and double check it before using optarg.

To be honest, I only did that to make clang shut up and eliminate the last
warnings it reported.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:21:56 -06:00
Xavier Chantry
51f9e5e40a refactor _parseoptions
This function was quite huge (~230 lines) and difficult to parse, now it is
slightly better.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:20:56 -06:00
Nagy Gabor
444ff95641 Print error on duplicated database entries
Some users reported duplicated database entries in /var/lib/pacman/local/,
for example, both foo-1.0-1 and foo-2.0-1 subdirectories existed. (Bogus
3rd-party scripts, backup?) In this case pacman reported no error and its
behaviour was mysterious.

From now on, pacman detects this situation and prints an error message.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:18:58 -06:00
Dan McGee
e612eb6ba2 Remove trailing whitespace on all lines in list_display
This ensures we never have trailing whitespace. Take the following text,
with line numbers added for clarity:

1. Title   : item1 item2 item3 item4
2.           item5 item6 item7 item8
3.           item9 itemA itemB itemC

Laszlo Papp helpfully pointed out we would have two trailing spaces on line
three after the last item. However, we also had these trailing spaces on
lines one and two, which the initial patch didn't take care of. This can be
seen on something like `pacman -Qi glibc`.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-13 23:12:44 -06:00
Dan McGee
926dfe5827 Fix requiredby output
This is a bit embarrassing. For example:
$ pacman -Qi mesa
...
Required By    : mesa  mesa  mesa  mesa  mesa  mesa

Something is clearly not right, and the problem was introduced in commit
0bc961. Fix the issue by getting the package name off the correct variable.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-12-07 22:48:59 -06:00
Dan McGee
03f35b1432 bash_completion: use absolute paths to utilities
Fixes issues noted in FS#16630.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-30 23:01:12 -06:00
Allan McRae
f2c9e51eb0 makepkg: allow specifying subsets of packages to build
This allows makepkg to only build a specified subset of packages
from a split PKGBUILD.  This is very useful in combination with the
-R flag or when bumping the pkgrel of a single package.

Fixes FS#15956.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-30 21:22:52 -06:00
Cedric Staniewski
82443e0059 makepkg: move pacman calls to a function
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-30 21:19:54 -06:00
Eric Bélanger
93862bd7cb makepkg: Place packages symlinks in build dir when PKGDEST is used
When PKGDEST is used, symlinks to the packages will be put in the build
directory.  This combines the convenience of a global package cache with
the ease of having a package (i.e. a symlink) in the build directory for
testing and installation purpose.

Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
[Allan: add comment documenting clean-up addition]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-30 21:12:27 -06:00
Isaac Good
6c8f817040 Replace an ugly while [ with a for (( loop
Signed-off-by: Isaac Good <pacman@isaac.otherinbox.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-30 21:06:17 -06:00
Dan McGee
96b34308fe Fix syntax error in new translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 21:22:01 -06:00
Dan McGee
8a8dfc9d55 HACKING: add some notes about valgrind/gdb usage
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 20:21:50 -06:00
Dan McGee
d2dbb04a9a download: major refactor to address lingering issues
Sorry for this being such a huge patch, but I believe it is necessary for
quite a few reasons which I will attempt to explain herein. I've been
mulling this over for a while, but wasn't super happy with making the
download interface more complex. Instead, if we carefully order things in
the internal download code, we can actually make the interface simpler.

1. FS#15657 - This involves `name.db.tar.gz.part` files being left around the
filesystem, and then causing all sorts of issues when someone attempts to
rerun the operation they canceled. We need to ensure that if we resume a
download, we are resuming it on exactly the same file; if we cannot be
almost postive of that then we need to start over.

2. http://www.mail-archive.com/pacman-dev@archlinux.org/msg03536.html - Here
we have a lighttpd bug to ruin the day. If we send both a Range: header and
If-Modified-Since: header across the wire in a GET request, lighttpd doesn't
do what we want in several cases. If the file hadn't been modified, it
returns a '304 Not Modified' instead of a '206 Partial Content'. We need to
do a stat (e.g. HEAD in HTTP terms) operation here, and the proceed
accordingly based off the values we get back from it.

3. The mtime stuff was rather ugly, and relied on the called function to
write back to a passed in reference, which isn't the greatest. Instead, use
the power of the filesystem to contain this info. Every file downloaded
internally is now carefully timestamped with the remote file time. This
should allow the resume logic to work. In order to guarantee this, we need
to implement a signal handler that catches interrupts, notifies the running
code, and causes it to set the mtimes on the file. It then rethrows the
signal so the pacman signal handler (or any frontend) works as expected.

4. We did a lot of funky stuff in trying to track the DB last modified time.
It is a lot easier to just keep the downloaded DB file around and track the
time on that rather than in a funky dot file. It also kills a lot of code.

5. For GPG verification of the databases down the road, we are going to need
the DB file around for at least a short bit of time anyway, so this gets us
closer to that.

Signed-off-by: Dan McGee <dan@archlinux.org>
[Xav: fixed printf with off_t]
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-11-15 19:47:30 -06:00
Laszlo Papp
be266b4364 Refactor do/while cycle and multiple while cycles
* It makes the code clearer to read/understand
* Cppcheck tool doesn't show this anymore: [./util.c:215]: (error) Resource leak: fd

[Dan: don't change the coding style]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:40:56 -06:00
Eric Bélanger
120cd312e4 makepkg: Fixed logging for split packages
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:34:09 -06:00
Cedric Staniewski
4d2ec3751c makepkg: allow the use of only a package() function
For some packages, generally the 'any' arch ones, a build step is not
required and therefore can be skipped. In these cases, a package()
function without a build() one is sufficient.

As a side effect, this commit makes meta packages without any function
at all in the PKGBUILD possible.

Fixes FS#15147.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:33:03 -06:00
Cedric Staniewski
564352c4a2 makepkg: extend test for hyphen prefixes to pkgbase and all pkgnames
Since commit fb97d32, which brought in this test, support for split
PKGBUILDs was added, and therefore, all values of pkgname and also
pkgbase have to be checked now.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:30:23 -06:00
Allan McRae
9c34dfd908 makepkg: Add fallback to package function
makepkg looks for a package() function when building a single package
but package_$pkgname() style package functions when building a split
package.  This patch allows the use of a package_$pkgname() function
when building a single package for consistency.  This is achieved by
having makepkg consider a non-split package with a package_$pkgname()
function as a split package (creating just the one package).

Fixes FS#16622.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:29:24 -06:00
Isaac Good
c2999619d2 makepkg: use bash test operators, part two
* FS#16623, second half of makepkg
* Includes stuff like -o to ||, -a to &&, etc.
* if [ $(type ... preserved due to a bash bug with [[ and set -e and ERR traps

Signed-off-by: Isaac Good <pacman@isaac.otherinbox.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:26:56 -06:00
Isaac Good
966c815881 makepkg: use bash test operators, part one
* FS#16623, first half of makepkg
* Includes stuff like -o to ||, -a to &&, etc.
* if [ $(type ... preserved due to a bash bug with [[ and set -e and ERR traps

Signed-off-by: Isaac Good <pacman@isaac.otherinbox.com>
[Dan: made commit message useful]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:23:06 -06:00
Cedric Staniewski
5d5070f47d scripts: replace test builtin [ with shell keywords [[ and ((
FS#16623 suggested this change for makepkg; this patch applies it to the
remaining files in the scripts directory.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:22:54 -06:00
Xavier Chantry
fb310fc01e pacman.conf : enable resuming for curl
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:20:21 -06:00
Eric Bélanger
77023978c5 makepkg: Clarified error message when a sourceball exist already
Signed-off-by: Eric Bélanger <snowmaniscool@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:19:21 -06:00
Cedric Staniewski
77e84bea71 makepkg: fix abortion after sourcing /etc/profile
The source command triggers / might trigger the ERR trap which makes
makepkg abort right after a successful installation of missing
dependencies.

Thanks to Xavier Chantry <shiningxc@gmail.com> for finding this
solution.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:19:11 -06:00
Allan McRae
0199a7ee71 contrib/bacman: fix checking if file has been added
Fixes FS#17140.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:18:56 -06:00
Manuel Tortosa
88706168f2 Add Catalan translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-15 19:09:58 -06:00
Dan McGee
7ae15768e5 Merge branch 'maint' 2009-11-10 18:21:19 -06:00
Dan McGee
e09253d15b Necessary updates for 3.3.3 release
Should cover everything worth mentioning in NEWS, plus the version number
bumps as usual.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-10 16:18:05 -06:00
Cedric Staniewski
db756ed931 makepkg: quote arrays in order to preserve spaces in array items
Fixes FS#16871 and makes the pkgdesc workaround obsolete.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-11-10 11:24:20 -06:00
Dan McGee
133a39e2bb Fix opendir error condition checks
Thanks to Laszlo Papp <djszapi@archlinux.us> for the following catch:
  opendir(path)) == (DIR *)-1;
is maybe the result of misunderstanding the manpage. If an opendir() call
isn't successful it returns NULL rather than '(DIR *)-1'.

Noticed-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-27 21:11:29 -05:00
Dan McGee
3f7cc83e0d Merge branch 'maint' 2009-10-26 21:07:29 -05:00
Laszlo Papp
361a25c086 Fix a small typo in alpm_list.c
Signed-off-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 10:27:48 -05:00
Allan McRae
fff6d9dc2e makepkg: allow passing arguments with spaces
Currently makepkg takes the commandline arguments, assigns them to a
variable and passes that variable to the next makepkg call (within
fakeroot).

Use a comination of quotes and arrays in this process to ensure any
arguments passed within quotes and containing spaces stay as a single
argument during the second makepkg call.

Thanks to Dan for figuring out how to get this working.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 10:22:34 -05:00
Dan McGee
7f0f319a3e Merge branch 'maint' 2009-10-24 10:10:15 -05:00
Dan McGee
0bc961a8be Reduce unnecessary get_name() function calls
alpm_pkg_get_name() gives us little benefit in backend code besides a NULL
check on the package passed in; we could do that ourself if necessary. By
changing to direct references in the cases where we are sure we have a valid
package, we save a function call each time we need a package name. This
function can't be inlined because it is externally accessible.

This cuts the calls to get_name() from 1.3 million times in a
pacman -Qu operation to around 2400.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 10:10:12 -05:00
Cedric Staniewski
21caf8730f makepkg: change preselected option for cleaning the cache from Y to N
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 10:05:41 -05:00
Cedric Staniewski
748bc8ebd4 makepkg: use tput for terminal-safe colored and bold text
Suggested-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 10:00:52 -05:00
Cedric Staniewski
013fc9a795 makepkg: define escape sequences globally
In doing so, it is possible to get rid of all the tests for colored
messages except for one global one.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 09:59:03 -05:00
Cedric Staniewski
1000c0bd2e makepkg: check for non-empty pkgbase instead of pkgname
pkgbase is used in the following rm calls, and since pkgname can be
present when pkgbase is not, it is safer to check for pkgbase.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 09:56:07 -05:00
Heiko Baums
6ed7d001f6 pacdiff : add diffsearchpath option
Xav: added doc
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 09:55:50 -05:00
Cedric Staniewski
c6095e1032 makepkg: remove empty .part files after a failed download
Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-24 09:54:57 -05:00
Allan McRae
3758ccbb52 makepkg: fix testing for built package presence
Commit c7e4d10d introduced a small error in the testing of whether
a package is already built.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 23:32:50 -05:00
Dan McGee
6c635d76a0 Merge branch 'maint' 2009-10-20 22:29:20 -05:00
Allan McRae
c7e4d10df3 makepkg: allow overriding arch in split packages
This allows building a mixture of binary and arch=any packages.
Fixes FS#15955.

The value of CARCH is no longer overridden to "any" in when arch=any
is used and the assigning of the "any" arch is delayed to during the
packaging stage. Adjustments were required to fix installing and
checking for pre-built packages of varing arches.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 22:29:08 -05:00
Allan McRae
2020e6297b makepkg: allow overriding pkgver and pkgrel in split packages
Fixing a single package within a split package requires the overriding
or pkgrel.  In very rare (but existing) cases, it is useful to
override pkgver.  Partial fix for FS#15955.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 22:29:02 -05:00
Xavier Chantry
2c2596177d dload.c : clear sigaction flag to make valgrind happy
This fixes the following valgrind warning :

==26831== Syscall param rt_sigaction(act->sa_flags) points to uninitialised
byte(s)
==26831==    at 0x4282547: __libc_sigaction (in /lib/libc-2.10.1.so)
==26831==    by 0x403C693: download_internal (dload.c:152)
==26831==    by 0x403D0E4: _alpm_download_single_file (dload.c:311)
==26831==    by 0x4033B72: alpm_db_update (be_files.c:319)
==26831==    by 0x805205E: pacman_sync (sync.c:257)
==26831==    by 0x804EE54: main (pacman.c:1120)
==26831==  Address 0xbec6cc04 is on thread 1's stack
==26831==
==26831== Syscall param rt_sigaction(act->sa_restorer) points to
uninitialised byte(s)
==26831==    at 0x4282547: __libc_sigaction (in /lib/libc-2.10.1.so)
==26831==    by 0x403C693: download_internal (dload.c:152)
==26831==    by 0x403D0E4: _alpm_download_single_file (dload.c:311)
==26831==    by 0x4033B72: alpm_db_update (be_files.c:319)
==26831==    by 0x805205E: pacman_sync (sync.c:257)
==26831==    by 0x804EE54: main (pacman.c:1120)
==26831==  Address 0xbec6cc08 is on thread 1's stack
==26831==

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 22:25:39 -05:00
Cedric Staniewski
3d67d9b16c makepkg, repo-add: replace external commands with bash substitutions where possible
This also removes the awk dependency from makepkg and repo-add.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 22:24:36 -05:00
Gan Lu
5ffc1ad3cd fix for zh_CN
bash is not able to handle positional parameters

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-20 22:22:05 -05:00
Laszlo Papp
4281a1a7f2 Size handling was changed in fgets() functions
Pacman's fgets function in the API used hardcoded numbers to identify the size.
This is not good practice, so replace them with sizeof handling.

Signed-off-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-19 07:37:53 -05:00
Laszlo Papp
f9582c7df2 Replace hardcoded option numbers with enumeration
Pacman's long option parsing used hardcoded numbers to identify them.
This is not good practice, so replace them with enumeration constants.

Signed-off-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-12 23:42:36 -05:00
Cedric Staniewski
2cabe336eb Introduce new PKGBUILD variable changelog
Currently, a changelog is added to a package if a specific file with a
hardcoded name exists in the PKGBUILD's directory. This approach is not
pretty and also inconsistent with the handling of install files, but it
works.

With the introduction of split PKGBUILDs, however, a drawback in this
old behavior has arisen: you only have the possibility to include one
specific changelog file in either every package defined in the PKGBUILD
or in none.

The use of an additional variable, `changelog`, works around this issue
and makes it possible to include a changelog in only some of the
packages, and besides, each package of the PKGBUILD can have its own
changelog file.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 22:35:20 -05:00
Allan McRae
da5fb3ee4f Fix Greek short Y/N translation
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 22:34:43 -05:00
solsTiCe d'Hiver
e3ac806262 use bitwise shift operator in enum "bit field"
This offers a cleaner way to deal with constant in enum and allow easy
maintainance

Signed-off-by: solsTiCe d'Hiver <solstice.dhiver@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 22:13:49 -05:00
Cedric Staniewski
c7d8601e12 Fix stderr redirection
When redirecting both stderr and stdout and using the 2>&1 construct,
you have to redirect stdout first. Otherwise stderr will be redirected to
the 'old' stdout and not to the new resource.

Signed-off-by: Cedric Staniewski <cedric@gmx.ca>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 16:34:47 -05:00
Laszlo Papp
ab3c6f01f5 Remove makepath function from frontend
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:52:12 -05:00
Nagy Gabor
72bc947cbb Fix "-Sd conflict_pkg" bug
If the -d switch was invoked with -S (or -U), the removes list was simply
lost, because trans->remove was computed in an
"if(!(trans->flags & PM_TRANS_FLAG_NODEPS))" block.

I've added a new pactest file, sync045.py (derived from sync043.py) to test
this.

Additionally, I did some other minor cleanups in sync_prepare:
 * preferred list is not needed anymore
 * I removed a needless alpm_list_remove_dupes line (the target list should
   not contain dupes at all)
 * I moved alpm_list_free(remove); to cleanup part to eliminate a possible
   memleak

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:30:52 -05:00
Xavier Chantry
3dc87851cc alpm_list : add new alpm_list_diff_sorted function
This is more efficient than alpm_list_diff since it assumes the two lists
are sorted. And also we get the two sides of the diff.

Even sorting should more efficient than the current list_diff. Sorting the
two lists should be O(n*log(n)+m*log(m)) while the current list_diff is
O(n*m). So I also reimplemented list_diff using list_diff_sorted.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:28:10 -05:00
Xavier Chantry
14ab02e289 Rework the alpm_unpack functions
Add support to extract a list of entries

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:18:47 -05:00
Xavier Chantry
471b1fa543 update sync200 pactest
update download -> fetch

This just meant that we used XferCommand even if internal download was
available, no big deal.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:12:44 -05:00
Xavier Chantry
caea098c21 cygwin fix : use unsigned char for ctype function
See http://www.nabble.com/-PATCH-RFA--Distinguish-between-EOF-and-character-with-value-0xff-td23161772.html#a23188494

cygwin 1.7 actually displays a warning when using signed char with the ctype
function, so that compilation fails when using -Wall -Werror.

So we just cast all arguments to unsigned char.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 15:12:20 -05:00
Xavier Chantry
35bbc96b99 replace rankmirrors by bash clone
This removes python optdepends in pacman package

This bash clone is a courtesy of
Matthew Bruenig <matthewbruenig@gmail.com>

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-10-11 15:08:06 -05:00
Dan McGee
302310c5aa Minor scope/typing cleanups
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 14:42:04 -05:00
Dan McGee
4828d9ef7c libalpm: clean up lock function
We were doing a lot of manual work; leverage the standard library a bit to
do more for us.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 14:42:04 -05:00
Dan McGee
6e312220ec Reduce calls to list_count() in removing package
We don't need to count the number of packages left once per file when
removing; we only need to do it once per package. Also move a variable into
the correct scope.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 14:42:04 -05:00
Dan McGee
3bc8c28ce3 Add missing get_usedelta() method
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 14:42:04 -05:00
Dan McGee
145103aacc typing: a few more fixes for special int types
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 14:41:59 -05:00
Dan McGee
35dc9b0314 int typing: s/unsigned short/int/ in libalpm
After our recent screwup with size_t and ssize_t in the download code, I
found the `-Wsign-conversion` flag to GCC to see if we were doing anything
else boneheaded. I didn't find anything quite as bad, but we did have some
goofups- most of our public unsigned methods would return -1 on error, which
is a bit odd in an unsigned context.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 13:51:47 -05:00
Dan McGee
cf0d619670 Merge branch 'maint' 2009-10-11 12:57:57 -05:00
Xavier Chantry
5e03941ee5 alpm_list : fix a bug in alpm_list_remove
A NULL list element triggered an infinite loop. Not cool :)

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 12:55:55 -05:00
Christos Nouskas
f15c8d4616 Minor fix to Greek translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 12:55:33 -05:00
甘露(Lu.Gan)
aea22ac2fd Update Chinese translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-11 12:55:17 -05:00
Christian Larsson
9282a4a909 Update Swedish translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-07 18:12:26 -05:00
甘露(Lu.Gan)
f77d73af4b Update chinese translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-07 18:12:26 -05:00
Xavier Chantry
ba14bd7728 New Greek translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-07 18:12:26 -05:00
Xavier Chantry
8db120c260 Update translations
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-07 18:12:26 -05:00
Xavier Chantry
a0acf8b509 Update all pot and po files for 3.3.2 release
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-07 18:12:26 -05:00
Dan McGee
a131c468f7 3.2.2 release changes
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-04 16:59:48 -05:00
Dan McGee
d7a20d9c41 doc: Add HACKING to html target
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-04 16:56:25 -05:00
Dan McGee
42042723a8 doc: ensure SyncFirst behavior with flags is clear
When a SyncFirst transaction kicks in, no flags like '--force' are honored.
This is for good reason, as honoring something like '--asdeps' could be
quite unintentional. Document this fact and a possible workaround.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-04 09:48:56 -05:00
Xavier Chantry
44a57c890b callback.c : fallback to normal download with bogus size
When using totaldownload, we might get into some weird situations where
xfered>total because of bogus CSIZE database entries.

This code adds a sanity check and fallbacks to normal download progress if
needed.

Here is an example using totaldownload on a database with wrong CSIZE, for a
total download of ~26 MB.

Before :

 gnome-desktop-2.28....  1144,3K  678,3K/s 00:00:02 [#################]   4%
 gnome-panel-2.28.0-...     4,2M  887,7K/s 00:00:05 [#################]  16%
 gnome-applets-2.28....    13,6M 1083,0K/s 00:00:13 [#################]  52%
 gnome-backgrounds-2...    22,9M  964,0K/s 00:00:24 [#################]  87%
 gnome-settings-daem...    23,6M  938,5K/s 00:00:26 [#################]  90%
 gnome-control-cente...    26,1M  946,1K/s 00:00:28 [#################] 100%
 gnome-icon-theme-2....    27,7M 1465,0K/s 1193046:28:15 [#######----------] gnome-icon-theme-2....    28,0M 1502,2K/s 1193046:28:15 [########---------] gnome-icon-theme-2....    28,4M 1582,2K/s 1193046:28:15 [##########-------] gnome-icon-theme-2....    28,7M 1603,4K/s 1193046:28:15 [############-----] gnome-icon-theme-2....    29,0M 1604,5K/s 1193046:28:15 [##############---] gnome-icon-theme-2....    29,3M 1621,0K/s 1193046:28:14 [################-] gnome-icon-theme-2....    29,6M 1434,8K/s 1193046:28:14 [#################] gnome-icon-theme-2....    29,6M  974,2K/s 00:00:31 [#################] 113%

After :

 gnome-desktop-2.28....  1144,3K 1038,7K/s 00:00:01 [#################]   4%
 gnome-panel-2.28.0-...     4,2M  988,4K/s 00:00:04 [#################]  16%
 gnome-applets-2.28....    13,6M 1190,4K/s 00:00:12 [#################]  52%
 gnome-backgrounds-2...    22,9M 1242,9K/s 00:00:19 [#################]  87%
 gnome-settings-daem...    23,6M 1193,9K/s 00:00:20 [#################]  90%
 gnome-control-cente...     2,5M 1347,4K/s 00:00:02 [#################] 100%
 gnome-icon-theme-2....     3,5M 1205,4K/s 00:00:03 [#################] 100%

Note that gnome-control-center resetted to normal progress mode
(2,5M is the package size, not the total size)

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-10-04 09:32:02 -05:00
Dan McGee
8e7652f1af Merge branch 'maint'
Conflicts:
	lib/libalpm/dload.c
2009-09-29 21:08:06 -05:00
Xavier Chantry
20392c0a02 dload : fix infinite download (big type mistake)
fetchIO_read returns -1 in case of error, and the return type is
ssize_t, not size_t ! So we converted -1 to an unsigned, which led to
huge file write.

The rest is just changing the error return a bit.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-29 20:52:56 -05:00
Dan McGee
2071286770 repo-add: clean up options parsing
-f/--force has been dead for a while, so kill it off. In addition, the
check for > 2 args is pretty useless when you do something like:
  repo-add -q -q
or a more legit:
  repo-add -q /path/to/mine.db.tar.gz

So instead make repo-add just return 1 when it doesn't do anything with
the database which seems to make more sense.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-23 22:46:38 -05:00
Dan McGee
7f14f185a2 repo-remove: create empty DB when all packages are removed
Rather than creating no database at all, create an empty zipped tar archive
in its place. This keeps the download side of repositories a bit more sane
as a DB will always exist, and pacman handles this empty case just fine.

For this to be fully transparent, we also need to make sure repo-add and
repo-remove accept an empty "DB" as an argument, which in reality is a
completely void of files .tar.{gz,bz2,xz} archive.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-23 21:15:53 -05:00
Dan McGee
20aa17c276 repo-add: make sure we get size of target file
If the package we were adding was a symlink, we stuck the symlink size in
the database rather than the size of the file it referred to. Whoops!

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-23 19:11:34 -05:00
Dan McGee
86d4b8a3aa Merge branch 'maint' 2009-09-22 21:38:16 -05:00
Dan McGee
7cead800c5 Update index.txt with new release
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-22 21:37:05 -05:00
Allan McRae
5bea2c08a3 makepkg: tidy usage output
Various tidying to the usage output
 - change "--config <config>" to "--config <file>" to prevent wrapping in a 80 character wide terminal
 - re-alphabetise options, including moving all long only opts to the end
 - use same indentation for additional pacman options
 - remove useless comment

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-22 19:01:05 -05:00
Xavier Chantry
0f834c93c7 testdb : fix many memleaks
Yes, it was that bad :P

We still have memleaks left because we cannot free the error data returned
by libalpm, but pacman has the same issue.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-22 18:46:32 -05:00
Dan McGee
e76b3374d8 Clean up translation file headers
Get them a bit more standardized across the board, as they were quite a
mess. Also note the two new translations we received for 3.3.1.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-22 18:28:42 -05:00
Laszlo Papp
802b1a6f2f Add Swedish translation
This is for 3.3.0, not for 3.3.1. But since there are only like 10 messages
missing, it seems worth including now.

Signed-off-by: Christian Larsson <congacx@gmail.com>
Signed-off-by: Laszlo Papp <djszapi2@archlinux.us>
[Dan: fix some busted translation strings]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-22 18:09:55 -05:00
Ondrej Kucera
cfb86fed7c Update Czech translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-09-23 00:22:41 +02:00
Rodrigo Flores
38ac020f51 Update Brazilian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
2009-09-22 21:48:40 +02:00
Laszlo Papp
9c13a6c364 Add Norwegian translation
Signed-off-by: Hans-Kristian Arntzen <maister@archlinux.us>
Signed-off-by: Laszlo Papp <djszapi@archlinux.us>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-21 22:43:55 -05:00
Dan McGee
03470c51ca Allow cache cleaning to process all cache directories
Previously we only looked at the first cache directory returned by the
library. This allows us to look at all cache directories for cleaning.

In addition, change the way we do a full (-Scc) cache cleaning operation.
Instead of removing the parent directory, remove each package one-by-one as
in the -Sc case. This would be ideal for someone mounting a cache directory
over NFS, as it ensures we don't wipe out the mountpoint from underneath the
directory.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-21 08:12:10 -05:00
Dan McGee
ece8f6fb0b Propagate return status up in DB cleaning code
We didn't look at the return status of sync_cleandb() in sync_cleandb_all().
Make it do so and return it up the call chain.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-21 08:09:00 -05:00
Dan McGee
e6efd1932b Add missing closedir calls in cache cleanup
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-21 08:03:07 -05:00
Mateusz Herych
c07aef0d6e Update Polish translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-20 16:31:10 -05:00
Dan McGee
72883e3bcb Fully implement database lazy loading
Commit 34e1413d75 attempted to implement lazy loading of package databases.
Although it took care of my main complaint (creating the database directory
if it didn't exist), it didn't allow sync repos to be registered before
alpm_option_set_dbpath() had been called.

With this patch, we no longer compute the individual repository DB paths
until necessary, allowing full lazy loading to work as intended, and
allowing us to drop the extra setlibpath() calls from the frontend. This
allows the changes introduced in a2cd48960 (but later reverted) to be added
back in again.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-20 12:19:57 -05:00
Dan McGee
6bfca2fd14 Merge branch 'maint'
Message updates made this one a bit messy, but nothing too bad.

Conflicts:
	lib/libalpm/add.c
	lib/libalpm/remove.c
2009-09-20 12:09:10 -05:00
Nagy Gabor
ef37168770 Ask user confirmation for -R operation, too
After commit 0da96abc, pacman always asks user confirmation for -U, so it is
more coherent to doing that for -R, too.

Btw, most users use -Rs always, so they won't notice any change. In the old
code the -Ru operation was forgotten: Though it is a not "dangerous" operation,
but the target list can be changed by that, too.

Non-interactive scripts should always use --noconfirm (unexpected questions can
be asked by all transactions). [That's why we should always default to the
safest answers.]

I've also added a pkglist != NULL sanity check (because -Ru can empty target
list in trans_prepare part).

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-20 12:01:25 -05:00
Xavier Chantry
481014e944 delta : simple code refactoring
This will make the code re-usable for other purpose.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-20 11:57:12 -05:00
Xavier Chantry
f4809dcc9c sync.c : duplicate the target before modifying it
It was probably a bad idea to modify the target directly in case of
repo/pkg syntax.

Duplicating it also allows us to keep the original target string, which
is more informative when printing errors.

Also remove a duplicated error message from libalpm, and improve the
message already returned to the frontend.

$ pacman -S foo/bar

before
error: repository 'foo' not found
error: 'bar': no such repository

after
error: 'foo/bar': could not find repository for target

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-20 11:56:46 -05:00
Dan McGee
338c6546ff Merge branch 'xav/trans' into maint 2009-09-20 11:55:50 -05:00
Laszlo Papp
6685822e57 Strndup usage and small typo fix
./src/pacman/package.c:
       - small typo fix
   ./src/pacman/pacman.c:
       - strdup is changed to strndup, because it's safer like in
       case of config option

Signed-off-by: Laszlo Papp <djszapi2@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-20 11:52:50 -05:00
Dan McGee
44cddb351b Kill -F option for good in option parsing
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-18 18:29:22 -05:00
Giovanni Scafora
6cd8d6bd05 Update Italian translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:01:07 +02:00
Roman Kyrylych
90a06b1cf0 Update Ukrainian translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Samed Beyribey
ccf7c31f52 Update Turkish translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Juan Pablo González Tognarelli
419c4a2afa Update Spanish translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Sergey Tereschenko
65e7682638 Update Russian translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Volodia Macovei
259cb3aad4 Update Romanian translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Baurzhan Muftakhidinov
9516d5afe6 Update Kazakh translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 22:00:19 +02:00
Nagy Gabor
5d0734861f Update Hungarian translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 14:34:05 +02:00
Matthias Gorissen
9424197b42 Update German translation
Signed-off-by: Giovanni Scafora <giovanni@archlinux.org>
2009-09-18 14:34:05 +02:00
Dan McGee
ed9d459ee2 Updates in prep for 3.3.1 release
Bump versions in configure.ac; update NEWS accordingly

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-16 20:43:48 -05:00
Dan McGee
922448a9bf Update en_GB translation
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-16 19:44:01 -05:00
Xavier Chantry
9d4448dc7f Update french translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-16 19:37:04 -05:00
Xavier Chantry
9505c594fd Update all pot and po files for 3.3.1 release
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-16 19:36:59 -05:00
Xavier Chantry
1df3b91931 String improvements
Add more untranslated strings, improve consistency, etc.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-16 19:36:49 -05:00
Nagy Gabor
08ee4059b5 Catch an untranslated warning in lib/remove.c
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-15 07:09:16 -05:00
Dan McGee
95cb4b6874 Merge branch 'maint' 2009-09-14 22:10:20 -05:00
Nagy Gabor
d0d6c58c05 Add makepkgopt to be_package.c
After commit 774c252 the --debug output shows 5-6 "syntax error..." lines
for each package. After this patch pacman recognizes makepkgopt as a valid
key, but doesn't do anything.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-14 22:09:05 -05:00
Dan McGee
bc24c002fe Revert "Fix a memleak involving lazy DB loading"
This doesn't quite work, as can be seen by the pactest results:

Total            = 179
Pass             = 108 ( 60.34%)
Expected Fail    =   5 (  2.79%)
Unexpected Pass  =   0 (  0.00%)
Fail             =  66 ( 36.87%)

If you peek inside '_alpm_db_new' when it gets called for the sync
databases, the base dbpath is still at the default value, causing things
like pactest to fail miserably. We need some further work to do fully lazy
loading, and that belongs on master, not maint.

This reverts commit a2cd48960e.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-14 22:06:28 -05:00
Xavier Chantry
b4317a740a Change the interface for target loading
-int alpm_trans_sysupgrade(int enable_downgrade);
-int alpm_trans_sync(char *target);
-int alpm_trans_add(char *target);
-int alpm_trans_remove(char *target);
+int alpm_sync_sysupgrade(int enable_downgrade);
+int alpm_sync_target(char *target);
+int alpm_sync_dbtarget(char *db, char *target);
+int alpm_add_target(char *target);
+int alpm_remove_target(char *target);

* functions renaming
* add new sync_dbtarget which allows to specify the db
* repo/ syntax handling is moved to frontend
( should implement FS#15141)
* group handling is moved to backend
( see http://www.archlinux.org/pipermail/pacman-dev/2009-June/008847.html )
2009-09-12 13:06:43 +02:00
Nagy Gabor
19e07eb8e8 Re-enable REMOVE_PKGS test in pactest suite
With the help of --ask switch it is possible to test remove_unresolvable
feature, so I reverted the change of commit f2061c5f on ignore005.py with
--ask=32 added.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 22:18:13 -05:00
Xavier Chantry
8ff3b87066 Remove transaction type
This basically started with this change :

 /* Transaction */
 struct __pmtrans_t {
-       pmtranstype_t type;
        pmtransflag_t flags;
        pmtransstate_t state;
-       alpm_list_t *packages;      /* list of (pmpkg_t *) */
+       alpm_list_t *add;      /* list of (pmpkg_t *) */
+       alpm_list_t *remove;      /* list of (pmpkg_t *) */

And then I have to modify all the code accordingly.
2009-09-08 22:17:41 -05:00
Nagy Gabor
0da96abc90 Use sync.c for upgrade transaction prepare and commit
This patch utilizes the power of sync.c to fix FS#3492 and FS#5798.
Now an upgrade transaction is just a sync transaction internally (in alpm),
so all sync features are available with -U as well:
* conflict resolving
* sync dependencies from sync repos
* remove unresolvable targets

See http://www.archlinux.org/pipermail/pacman-dev/2009-June/008725.html
for the concept.

We use "mixed" target list, where PKG_FROM_FILE origin indicates local
package file, PKG_FROM_CACHE indicates sync package. The front-end can add
only one type of packages (depending on transaction type) atm, but if alpm
resolves dependencies for -U, we may get a real mixed trans->packages list.

_alpm_pkg_free_trans() was modified so that it can handle both target types
_alpm_add_prepare() was removed, we use _alpm_sync_prepare() instead
_alpm_add_commit() was renamed to _alpm_upgrade_targets()

sync.c (and deps.c) was modified slightly to handle mixed target lists,
the modifications are straightforward. There is one notable change here: We
don't create new upgrade trans in sync.c, we replace the pkgcache entries
with the loaded package files in the target list (this is a bit hackish) and
call _alpm_upgrade_targets(). This implies a TODO (pkg->origin_data.db is
not accessible anymore), but it doesn't hurt anything with pacman front-end,
so it will be fixed later (otherwise this patch would be huge).

I updated the documentation of -U and I added a new pactest, upgrade090.py,
to test the syncdeps feature of -U.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 22:04:14 -05:00
Nagy Gabor
b7db46d610 Do not remove conflict by default
When a conflict is detected, pacman asks if the user wants to remove
the conflicting package.  In many cases this is a bad idea.  e.g.

udev conflicts with initscripts (initscripts<2009.07).
Remove initscripts [Y/n]

This changes the query to [y/N].

The --noconfirm behavior has been also changed, because it chooses the
default answer. Since the yes answer is more interesting in our pactests
dealing with conflicts, I inserted '--ask=4' to all of them with one
exception: sync042.py tests the no answer.

(I also fixed a typo in sync043.py)

Original-work-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
2009-09-08 22:03:24 -05:00
Xavier Chantry
90e3e026d1 Re-add the non-user friendly --ask option
This re-implements the --ask option which was removed in commit
1ff8e7f364.

This option does not have to be exposed to the user (help,doc,etc), but is
very very useful for pactest if we want to have more coverage there.

This was rewritten in a smarter way, without code duplication. And with a
different behavior : this option is now only used to inverse default
behavior to questions.

We still use bit operations based on the following struct :
/* Transaction Conversations (ie, questions) */
typedef enum _pmtransconv_t {
        PM_TRANS_CONV_INSTALL_IGNOREPKG = 0x01,
        PM_TRANS_CONV_REPLACE_PKG = 0x02,
        PM_TRANS_CONV_CONFLICT_PKG = 0x04,
        PM_TRANS_CONV_CORRUPTED_PKG = 0x08,
        PM_TRANS_CONV_LOCAL_NEWER = 0x10,
        PM_TRANS_CONV_REMOVE_PKGS = 0x20,
} pmtransconv_t;

for each conv matched, the default answer is inversed.

--ask 0 : all default answers are preserved
--ask 4 : only conflict question is inversed
--ask 63 : all questions are inversed (63 == 1+2+4+8+16+32)

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 22:02:08 -05:00
Nagy Gabor
12b55958d8 Add a new reason field to pmconflict_t struct
Sometimes "foo conflicts with bar" information is not enough, see this
thread: http://bbs.archlinux.org/viewtopic.php?id=77647. That's why I added
a new reason field to our pmconflict_t struct that stores the packager-
defined conflict that induced the fact that package1 conflicts with
package2.

I modified the front-end (in callback.c, sync.c, upgrade.c) to print this
new information as well.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
2009-09-08 21:58:52 -05:00
Nagy Gabor
902dfe5900 Change Y/n to y/N with REMOVE_PKGS (remove_unresolvable) callback
The main reason for this change is that scripts could not catch the removed
targets with -S --noconfirm (the return value was 0). So the effect of a
pacman command may have differed from the expected one. Moreover, for my
taste the default no answer is better (I wanted to install the specified
targets, not a subset of them).

I had to change some pactest files as well, because now the default behavior
is not to remove unresolvable targets. In fact, the only pactest file that
tested this feature was ignore005.py.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 21:54:51 -05:00
Xavier Chantry
f53d9bab0e Allow '-Su foo' operation
This implements FS#15581

'-Su foo' should be more or less equivalent do '-Su ; -S foo'

Note : I moved a block of code to a new process_target function

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 21:45:17 -05:00
Xavier Chantry
a2cd48960e Fix a memleak involving lazy DB loading
Lazy opening of databases is supported since 34e1413d75.

We don't need that setlibpath call each time we register a database.
Besides this caused a memleak in case setlibpath failed, because setlibpath
exit directly and we did not do the cleanup part (section string was not
freed, and a file descriptor remained open).

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-08 21:43:06 -05:00
Dan McGee
cd5b029e93 Merge branch 'maint' 2009-09-07 15:17:47 -05:00
Xavier Chantry
43e16b373b rewrite strreplace
* just do one malloc call

* p = realloc(p, new_size) was not good
(see http://www.iso-9899.info/wiki/Why_not_realloc)

* use more efficient strncpy instead of strncat

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-07 15:16:50 -05:00
Xavier Chantry
cb1d4195bf use strreplace in the xfercommand code
this operation was re-implemented using static strings, instead of using the
existing strreplace function

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-07 15:16:47 -05:00
Xavier Chantry
2e7c569950 Update doc and vim syntax for arch=any
This fixes FS#15870

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-07 15:13:38 -05:00
Xavier Chantry
814cd7aee1 Update the doc for --source
See FS#15984

After commit 02acf65, the --source behavior changed.

Thanks to Dan for actually writing the new sentence :)

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-07 15:13:04 -05:00
Xavier Chantry
2f19072632 fix small memleak in an error case
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 19:15:12 -05:00
Xavier Chantry
845f21207c libalpm/util.c : remove _alpm_strreplace
This function is unused since commit
358cc5804a.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Dan: also kill from util.h]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 19:09:45 -05:00
Xavier Chantry
0845b2f13c sanity check for optdepends syntax
only allow optdepends like:
pkgname: description

some (real) examples of invalid optdepends:
 'tcl, python and/or ruby: to use corresponding binding'
 'xorg-fonts-75dpi : X bitmap fonts needed for the interface'
 'ruby-htmlentities (AUR): for one provider named Deastore'
 'xpdf - for pdf'

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Allan: rebase off de39a1f6 and adjust man page]
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 16:52:47 -05:00
Oleg Finkelshteyn
5dbd00faf7 Don't wrap lines when we don't have a column size
For example when we are not in a tty, there is no point in wrapping the
output. This actually makes the job harder for scripts.

$ pacman -Si binutils | grep Desc
Description           : A set of programs to assemble and manipulate binary and

The description was cut because the rest was on the following line.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Dan: use printf everywhere]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 16:50:20 -05:00
Xavier Chantry
c88ac86292 Log commandline in pacman/alpm log
This implements FS#11452.

Original-work-by: silvio <silvio@port1024.net>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 16:17:17 -05:00
Dan McGee
f53d2ac471 Add 3.3.0 release to index.txt 2009-09-06 16:13:40 -05:00
Xavier Chantry
6e1b1aea59 Add pactest for 'any' architecture
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 16:04:05 -05:00
Xavier Chantry
b53aa87ea9 makepkg : check for invalid backup entry
This implements FS#13551

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-09-06 15:57:30 -05:00
Xavier Chantry
cb07265851 makepkg : refactor run_build and run_package
These two functions were very similar.

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-09-06 15:57:14 -05:00
Henning Garus
545eac145d makepkg: exit on error during build() or package()
Set the ERR trap to abort upon encountering an error during the execution
of a build or package function.

Activate set -E, which lets functions inherit the ERR trap.

Signed-off-by: Henning Garus <henning.garus@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:56:58 -05:00
Dan McGee
b9dd8ce233 Merge branch 'maint' 2009-09-06 15:54:11 -05:00
Xavier Chantry
65c1f06be5 Allow $arch to be used in Server
similarly to the $repo variable, Server can now contain $arch, which will be
automatically replaced by the appropriate architecture.

This allows us to have one universal mirrorlist file, for both i686 and x86_64,
woohoo!

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:53:54 -05:00
Xavier Chantry
5b27e78ba0 Check package arch before installing
This implements FS#15622

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:51:25 -05:00
Xavier Chantry
594621cbeb Add Architecture and --arch option
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:50:42 -05:00
Francois Charette
1e51b81c63 fix typos in makepkg.sh.in
Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:36:56 -05:00
Xavier Chantry
7ddb645bd7 makepkg: always keep sources symlinks
Make bunzip2/xz/gunzip decompressing to stdout, because gzip does not offer
something like a -k option.

The selection of the decompression command for gzip/bzip2/xz compressed
files now also depends on the file suffix, since we need to strip the
extensions to get the output filename.

Thanks to Cedric Staniewski <cedric@gmx.ca> for reporting this issue and
contributing patches.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:33:54 -05:00
Henning Garus
a05757f984 Configure: Check if libfetch version is >= 2.21
Commit 6f97842 started using libfetch's conditional GET. This requires
libfetch to be version 2.21 or greater.

Change configure.ac to check for the existence of the last_modified field in
the url struct, which was introduced with libfetch 2.21.

Signed-off-by: Henning Garus <henning.garus@gmail.com>
[Xav : moved AC_CHECK_MEMBER outside of AC_CHECK_LIB]
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:33:34 -05:00
Sergey Tereschenko
20ba3cfe4e update russian translation
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:26:48 -05:00
Xavier Chantry
82522dd8c1 makepkg: new --skipinteg option
Implements FS#15830

This option allows to build a PKGBUILD with no checksums

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-09-06 15:26:32 -05:00
Dan McGee
92f0775e76 Merge branch 'maint'
Conflicts:
	lib/libalpm/dload.c
2009-08-18 20:49:25 -05:00
Xavier Chantry
7dae79e7b9 dload.c : various fixes
- fix one memleak if get_filename failed

- cleanup according to Joerg's feedback:

"url_for_string: If fetchParseURL returned successful, you should always
have a scheme set. The logic for anonftp should only be needed for very
broken server -- do you know of any such?

download_internal:
Specifying 'p' is now a nop -- it is tried by default first with
fall-back to active FTP."

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
[Dan: remove from pacman.conf and pacman.conf.5]
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-18 20:47:12 -05:00
Xavier Chantry
bdd8e92ff6 testdb : less verbose
http://bbs.archlinux.org/viewtopic.php?id=77396

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-18 20:42:29 -05:00
Xavier Chantry
6f97842ab2 dload.c : change the way to check for mtimes
libfetch supports checking mtime so we do not need to do it manually.

when the databases are already up-to-date, initiating a connection with
fetchXGet and closing it right after with fetchIO_close took a very long
time (up to 10min!) on some network.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit d7675e393f)
2009-08-18 20:41:47 -05:00
Xavier Chantry
8a55b79363 re-add -g CFLAGS with --enable-debug
after commit 8feccaed78, -g was no longer added with
--enable-debug.

So if CFLAGS was set (if unset, it defaults to -g -O2) and didn't contain
-g, we ended with no debug symbols..

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-18 20:38:08 -05:00
Xavier Chantry
bba234a92e query.c : return 1 when no package match
For example, if no package is outdated, -Qu will return 1.

This implements FS#15938

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-18 20:37:54 -05:00
Xavier Chantry
600782853a Quiet ShowSize with -Ss and -Qs
This fixes FS#15923

PS : duplicated code ftw

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-18 20:37:38 -05:00
Dan McGee
14a93b2e43 Make fetch timeout actually 10 seconds
We had 10000 as our timeout value, assuming it was expressed in ms. This is
false after looking at the current code, so reset it back to 10 seconds.

Addresses FS#15369.

Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-13 21:01:40 -05:00
Dan McGee
7bb9c4098b Merge branch 'maint' 2009-08-08 11:23:38 -05:00
Dan McGee
e8806748ec Fix nonsensical replace
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:23:27 -05:00
Dan McGee
619d1fcf7f Pass all xsltproc-opts in one argument
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:22:52 -05:00
Nagy Gabor
6d00025c18 Fix for FS#15810
Skip the SyncFirst dialog, if all the -S packages are SyncFirst packages.

Signed-off-by: Nagy Gabor <ngaba@bibl.u-szeged.hu>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:22:05 -05:00
Xavier Chantry
3cf0ee98c0 dload.c : only call fwrite once
I assume the loop was never iterated more than once, because the write
location was not updated at each loop iteration (buffer instead of buffer +
nwritten), yet we never had reports of corrupted download.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:17:24 -05:00
Allan McRae
68200676d2 Be consistent with naming of handle_deps function
All other "dep" functions (check_deps, resolve_deps, remove_deps)
have underscores separating words.

Being consistent, convert handledeps to handle_deps.

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:13:48 -05:00
Xavier Chantry
d7675e393f dload.c : change the way to check for mtimes
libfetch supports checking mtime so we do not need to do it manually.

when the databases are already up-to-date, initiating a connection with
fetchXGet and closing it right after with fetchIO_close took a very long
time (up to 10min!) on some network.

Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:13:33 -05:00
Allan McRae
ee43e75ed2 Remove builddeps from option parser
Leftover from commit ae5ef3b9

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:12:05 -05:00
Allan McRae
839bb56269 makepkg: change to pkgdir before creating PKGINFO file
Commit 01f9ae63 moved that creation of the PKGINFO file to before changing
to pkgdir.  This causes issues when using the -R option (FS#15851).

Signed-off-by: Allan McRae <allan@archlinux.org>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-08 11:12:05 -05:00
Xavier Chantry
f16c7a4343 repo-add: clarify one message
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-03 07:39:20 -05:00
Xavier Chantry
4fa6f262a6 Add a missing newline.
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-03 07:39:05 -05:00
Marc - A. Dahlhaus
8152077f6d Use full path to ldconfig
If /sbin is not in the PATH and sudo is used, ldconfig cannot be found.  So
use /sbin/ldconfig instead. The code checked for the existence of
/sbin/ldconfig anyway..

Signed-off-by: Marc - A. Dahlhaus <mad@wol.de>
Signed-off-by: Xavier Chantry <shiningxc@gmail.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
2009-08-03 07:37:44 -05:00
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
Dan McGee
6f9539aefb Merge branch 'maint'
Conflicts:
	po/it.po
2009-01-04 11:12:28 -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
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
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
61c6552862 Merge branch 'maint'
Conflicts:
	lib/libalpm/dload.c
2008-12-02 22:15:02 -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
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
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
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
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
380 changed files with 37762 additions and 12308 deletions

1
.gitattributes vendored Normal file
View File

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

28
.mailmap Normal file
View File

@@ -0,0 +1,28 @@
Aaron Griffin <aaron@archlinux.org> <aaronmgriffin@gmail.com>
Allan McRae <allan@archlinux.org> <mcrae_allan@hotmail.com>
Allan McRae <allan@archlinux.org> <mcrae_allan at hotmail.com>
Allan McRae <allan@archlinux.org> <allan.mcrae@qimr.edu.au>
Andres P <aepd87@gmail.com> <stderr@mail.com>
Bryan Ischo <bryan@ischo.com> <bji-keyword-pacman.3644cb@www.ischo.com>
Christos Nouskas <nous@archlinux.us> <nouskas@gmail.com>
Daenyth Blank <daenyth+arch@gmail.com> <Daenyth+Arch@gmail.com>
Daenyth Blank <Daenyth+Arch@gmail.com> <Daenyth+git@gmail.com>
甘露(Gan Lu) <rhythm.gan@gmail.com>
Giovanni Scafora <giovanni@archlinux.org> <linuxmania@gmail.com>
Jaroslaw Swierczynski <swiergot@gmail.com> <swiergot@juvepoland.com>
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar>
Juan Pablo González Tognarelli <lord_jotape@yahoo.com.ar> <jotapesan@gmail.com>
Manuel Tortosa <manutortosa@chakra-project.org> <manutortosa@gmail.com>
Marc - A. Dahlhaus <mad@wol.de>
Matthias Gorissen <matthias@archlinux.de> <siquame@web.de>
Laszlo Papp <djszapi@archlinux.us> <djszapi2@gmail.com>
Nagy Gabor <ngaba@bibl.u-szeged.hu> <ngaba@petra.hos.u-szeged.hu>
Nagy Gabor <ngaba@bibl.u-szeged.hu> <ngaba at bibl.u-szeged.hu>
Nezmer <git@nezmer.info> <Nezmer@allurelinux.org>
Roman Kyrylych <roman@archlinux.org> <roman.kyrylych@gmail.com>
Sebastian Nowicki <sebnow@gmail.com> <xilonmu@gmail.com>
Vojtěch Gondžala <vojtech.gondzala@gmail.com> <vogo@seznam.cz>
Vojtěch Gondžala <vojtech.gondzala@gmail.com> Vojtech Gondzala <vojtech.gondzala@gmail.com>
Xavier Chantry <shiningxc@gmail.com>
Xavier Chantry <shiningxc@gmail.com> <chantry.xavier@gmail.com>
Xavier Chantry <shiningxc@gmail.com> <xav@chantry.homelinux.org>

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>

49
HACKING
View File

@@ -12,10 +12,10 @@ Coding style
1. All code should be indented with tabs. (Ignore the use of only spaces in
this file) By default, source files contain the following VIM modeline:
+
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
/* vim: set ts=2 sw=2 noet: */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
2. When opening new blocks such as 'while', 'if', or 'for', leave the opening
brace on the same line as the beginning of the codeblock. The closing brace
@@ -24,8 +24,8 @@ Coding style
braces, even if it's just a one-line block. This reduces future error when
blocks are expanded beyond one line.
+
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
for(lp = list; lp; lp = lp->next) {
newlist = _alpm_list_add(newlist, strdup(lp->data));
}
@@ -40,14 +40,14 @@ while(it) {
free(it);
it = ptr;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
3. When declaring a new function, put the opening and closing braces on their
own line. Also, when declaring a pointer, do not put a space between the
asterisk and the variable name.
+
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
{
alpm_list_t *ptr, *lp;
@@ -58,7 +58,7 @@ alpm_list_t *alpm_list_add(alpm_list_t *list, void *data)
}
...
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
4. Comments should be ANSI-C89 compliant. That means no `// Comment` style;
use only `/* Comment */` style.
@@ -101,37 +101,50 @@ Currently our #include usage is in messy shape, but this is no reason to
continue down this messy path. When adding an include to a file, follow this
general pattern, including blank lines:
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
#include "config.h"
#include <standardheader.h>
#include <another.h>
#include <...>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
Follow this with some more headers, depending on whether the file is in libalpm
or pacman proper. For libalpm:
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
/* libalpm */
#include "yourfile.h"
#include "alpm_list.h"
#include "anythingelse.h"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
For pacman:
[code,C]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[source,C]
-------------------------------------------
#include <alpm.h>
#include <alpm_list.h>
/* pacman */
#include "yourfile.h"
#include "anythingelse.h"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------------------------
GDB and Valgrind Usage
~~~~~~~~~~~~~~~~~~~~~~
When using GDB or valgrind on pacman, you will want to run it on the actual
binary rather than the shell script wrapper produced by libtool. The actual
binary lives at `src/pacman/.libs/lt-pacman`, and will exist after running
`./src/pacman/pacman` at least once.
For example, to run valgrind:
./src/pacman/pacman
valgrind --leak-check=full -- src/pacman/.libs/lt-pacman -Syu
/////
vim: set ts=2 sw=2 syntax=asciidoc et:

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

@@ -1,4 +1,4 @@
SUBDIRS = lib/libalpm src/util src/pacman scripts etc po pactest contrib
SUBDIRS = lib/libalpm src/util src/pacman scripts etc po test/pacman test/util contrib
if WANT_DOC
SUBDIRS += doc
endif
@@ -12,15 +12,15 @@ 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
$(PYTHON) $(top_srcdir)/pactest/pactest.py --debug=1 \
--test $(top_srcdir)/pactest/tests/*.py \
check-local: test/pacman test/util src/pacman src/util
$(PYTHON) $(top_srcdir)/test/pacman/pactest.py --debug=1 \
--test $(top_srcdir)/test/pacman/tests/*.py \
-p $(top_builddir)/src/pacman/pacman
rm -rf $(top_builddir)/root
$(SH) $(top_srcdir)/pactest/vercmptest.sh \
$(SH) $(top_srcdir)/test/util/vercmptest.sh \
$(top_builddir)/src/util/vercmp
# create the pacman DB and cache directories upon install

126
NEWS
View File

@@ -1,5 +1,131 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
3.4.2 - fix progress bar display with empty packages
- make pactest testsuite Python 2.7 compatible
- documentation: remove unnecessary "|| return 1"
- contrib/bacman: update package compression selection
- contrib/PKGBUILD.vim: add a few more license options
- translations: es, kk, sv, pt, ru updated
3.4.1 - fix interaction of --needed and multiple repo groups (FS#20221)
- bash completion: small fixes to prevent alias problems
- rankmirrors: fix bogus/empty variable assignment (FS#19911)
- repo-add: ensure bare DB symlinks are relative (FS#20498)
- repo-add: fallback to copy if symlink not permitted (FS#19907)
- makepkg:
- use absolute path to 'du' to exclude wrapper progs (FS#19932)
- ensure $startdir check doesn't stall indefinitely (FS#19975)
- fix repackaging with multiple passed packages (FS#20272)
- translations:
- zh_CN: fix crash when using during install (FS#20188)
- sk: new Slovak translation
- pt: new European Portuguese translation
- other small updates to various translations
3.4.0 - new "Architecture" option that will restrict pacman to
installing only packages from the given architecture. Can be
set to "auto" in which case the output of "uname -m" is used
- use "$arch" when specifying a mirror url to automatically
select the correct architecture
- Installing packages with -U can handle installing
dependencies, conflict resolution and replacing packages
(FS#3492, FS#5798)
- can upgrade the system and install a new package using
"pacman -Syu <pkg>" (FS#15581)
- new -D/--database operation for modifying package install
reasons (FS#12950)
- new --print and --print-format options to output information
in suitable format for wrapper scripts (FS#14208)
- only extract new entries when updating a repo database
- show "Required by" in -Sii output (FS#16244)
- -U and -R options always ask for confirmation
- allow -Qo to perform a functional 'which' (FS#8798)
- cache cleaning cleans all directories, not just first
- cleanupdelta: new utility to help remove unused deltas from
a repo database
- bash completion: rewrite for size and performance (FS#16630)
- repo-add: handle removing the final package from a repo
- rankmirrors: rewrite using bash
- vercmp: does not link to libalpm to prevent upgrade issues
- makepkg:
- automatically aborts on any errors during packaging
- changelogs are now included via the "changelog" variable
- override pkgver, pkgrel and arch in split packages (FS#15955)
- repackaging without a package() function is deprecated
- stricter syntax checking for backup and optdepends entries
- file stripping options are configurable
- New --pkg flag to allow building specific package(s) from
split PKGBUILDs (FS#15956)
- build() function is now optional (FS#15147)
- warn about reference to build root in a package (FS#14751)
- configure source package destination with SRCPKGDEST
- major internal refactoring of handling tests ("[" to "[[")
- contrib/pactree: print reverse dependency tree
3.3.3 - correctly check the return code from opendir()
- fix possible infinite loop in alpm_list_remove()
- makepkg:
- quote arrays to preserve spaces in arrays (FS#16871)
- allow passing arguments with spaces
- adjust preselected option for clearing cache
- translations:
- zh_CN: fix positional parameter usage in makepkg (FS#16983)
- el: fix Y/N response translation (FS#16568)
3.3.2 - fix infinite filesize download issue (FS#16359)
- fix bogus download size on TotalDownload
- documentation updates
- small translation updates
- repo-add: use size of target files and not symlinks
- repo-remove: create empty DB when all packages are removed
3.3.1 - use full path to ldconfig when calling in chroot
- optimize the check for modified databases during sync
- ensure installed libfetch is new enough
- have -Q ops return 1 when no package matches (FS#15938)
- skip SyncFirst dialog if unnecessary (FS#15810)
- misc documentation updates (FS#15870, FS#15984)
- testdb: be less verbose during checks
- existing translation updates
- two new translations: Norwegian, Swedish
- makepkg:
- add --skipinteg option (FS#15830)
- fix .PKGINFO creation with -R option (FS#15851)
- always keep symlinks to sources when unpacking
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)

63
PKGBUILD-split.proto Normal file
View File

@@ -0,0 +1,63 @@
# 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'.
# Maintainer: Your Name <youremail@domain.com>
pkgname=('pkg1' 'pkg2')
pkgbase=BASE
pkgver=VERSION
pkgrel=1
pkgdesc=""
arch=()
url=""
license=('GPL')
groups=()
depends=()
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
changelog=
source=($pkgbase-$pkgver.tar.gz)
noextract=()
md5sums=() #generate with 'makepkg -g'
build() {
cd "$srcdir/$pkgbase-$pkgver"
./configure --prefix=/usr
make
}
package_pkg1() {
# options and directives that can be overridden
pkgver=
pkgrel=
pkgdesc=""
arch=()
license=()
groups=()
depends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
changelog=
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

@@ -3,7 +3,7 @@
# NOTE: Please fill out the license field for your package! If it is unknown,
# then please put 'unknown'.
# Contributor: Your Name <youremail@domain.com>
# Maintainer: Your Name <youremail@domain.com>
pkgname=NAME
pkgver=VERSION
pkgrel=1
@@ -21,6 +21,7 @@ replaces=()
backup=()
options=()
install=
changelog=
source=($pkgname-$pkgver.tar.gz)
noextract=()
md5sums=() #generate with 'makepkg -g'
@@ -29,7 +30,12 @@ build() {
cd "$srcdir/$pkgname-$pkgver"
./configure --prefix=/usr
make || return 1
make
}
package() {
cd "$srcdir/$pkgname-$pkgver"
make DESTDIR="$pkgdir/" install
}

90
README
View File

@@ -51,14 +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
values are list structures.
@@ -70,7 +68,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 +243,88 @@ 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
API CHANGES BETWEEN 3.3 AND 3.4
===============================
[REMOVED]
- pmtranstype_t struct (transaction type), alpm_trans_get_type()
- alpm_option_get_nopassiveftp(), alpm_option_set_nopassiveftp()
[CHANGED]
- interface for target loading:
- alpm_trans_addtarget() and alpm_trans_sysupgrade() were removed
- alpm_sync_target() and alpm_sync_dbtarget() can be used to add a sync target
- alpm_sync_sysupgrade() can be used to add outdated packages (for sysupgrade)
- alpm_add_target() can be used to add an add/upgrade target
- alpm_remove_target() can be used to add a remove target
- interface for target listing:
- alpm_trans_get_pkgs() was removed
- alpm_pkg_get_removes() was removed
- alpm_trans_get_add() can be used to list add/upgrade/sync targets
- alpm_trans_get_remove() can be used to list to-be-removed packages
- the type parameter of alpm_trans_init() was removed
- the type of alpm_db_fetch callback function: mtimeold and mtimenew parameters
were replaced by force parameter
- unsigned short -> int changes for Boolean variables
[ADDED]
- alpm_db_set_pkgreason()
- alpm_option_get_arch(), alpm_option_set_arch()
- alpm_option_get_usedelta()
- alpm_pkg_unused_deltas()
- alpm_conflict_get_reason()
- error code: PM_ERR_PKG_INVALID_ARCH

View File

@@ -10,35 +10,47 @@ If your language is not listed here and you wish it was, let the pacman mailing
list know you are interested in making a translation. We will be happy to add
your language to the mix.
Catalan (ca):
Manuel Tortosa <manutortosa@chakra-project.org>
Czech (cs):
Vojtěch Gondžala <vojtech.gondzala@gmail.com>
German (de):
Matthias Gorissen <matthias@archlinux.de>
Benjamin Andresen <benny@in-ulm.de>
Greek (el):
Christos Nouskas <nouskas@gmail.com>
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>
Norwegian (nb):
Hans-Kristian Arntzen <maister@archlinux.us>
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>
Oleg Finkelshteyn <olegfink@gmail.com>
Vladimir Bayrakovskiy <4rayven@gmail.com>
Swedish (sv):
Christian Larsson <congacx@gmail.com>
Turkish (tr):
Samed Beyribey <ras0ir@eventualis.org>
Alper KANAT <alperkanat@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 test/{pacman,util}{,/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 test/pacman/*.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

@@ -41,12 +41,12 @@ AC_PREREQ(2.60)
# Bugfix releases:
# pacman_version_micro += 1
m4_define([lib_current], [4])
m4_define([lib_revision], [1])
m4_define([lib_age], [1])
m4_define([lib_current], [5])
m4_define([lib_revision], [2])
m4_define([lib_age], [0])
m4_define([pacman_version_major], [3])
m4_define([pacman_version_minor], [2])
m4_define([pacman_version_minor], [4])
m4_define([pacman_version_micro], [2])
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
@@ -121,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.7 python2.6 python2.5 python2 python], [false])
# find installed gettext
AM_GNU_GETTEXT([external])
@@ -131,24 +136,26 @@ 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]), [-lcrypto -ldl] )
# Check if libfetch supports conditional GET
# (version >=2.21, struct url has member last_modified)
AC_CHECK_MEMBER(struct url.last_modified, ,
AC_MSG_ERROR([libfetch must be version 2.21 or greater]),
[#include <fetch.h>] )
else
AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(INTERNAL_DOWNLOAD, test "x$internaldownload" = "xyes")
# Checks for header files.
AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h sys/time.h syslog.h wchar.h])
AC_CHECK_HEADERS([fcntl.h glob.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/param.h sys/statvfs.h sys/syslimits.h sys/time.h syslog.h wchar.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
@@ -177,10 +184,15 @@ GCC_VISIBILITY_CC
GCC_GNU89_INLINE_CC
# Host-dependant definitions
SIZECMD="stat -c %s"
SIZECMD="stat -L -c %s"
SEDINPLACE="sed -i"
STRIP_BINARIES="--strip-all"
STRIP_SHARED="--strip-unneeded"
STRIP_STATIC="--strip-debug"
case "${host_os}" in
*bsd*)
SIZECMD="stat -f %z"
SIZECMD="stat -L -f %z"
SEDINPLACE="sed -i ''"
;;
cygwin*)
host_os_cygwin=yes
@@ -188,13 +200,22 @@ case "${host_os}" in
;;
darwin*)
host_os_darwin=yes
SIZECMD="stat -f %z"
SIZECMD="/usr/bin/stat -L -f %z"
SEDINPLACE="/usr/bin/sed -i ''"
STRIP_BINARIES=""
STRIP_SHARED="-S"
STRIP_STATIC="-S"
;;
esac
AM_CONDITIONAL([CYGWIN], test "x$host_os_cygwin" = "xyes")
AM_CONDITIONAL([DARWIN], test "x$host_os_darwin" = "xyes")
AC_PATH_PROGS([DUPATH], [du], [du], [/usr/bin$PATH_SEPARATOR/bin] )
AC_SUBST(SIZECMD)
AC_SUBST(SEDINPLACE)
AC_SUBST(STRIP_BINARIES)
AC_SUBST(STRIP_SHARED)
AC_SUBST(STRIP_STATIC)
# Check for architecture, used in default makepkg.conf
# (Note single space left after CARCHFLAGS)
@@ -241,9 +262,15 @@ AC_SUBST(CARCHFLAGS)
AC_SUBST(CHOST)
# Check for documentation support and status
AC_CHECK_PROGS([ASCIIDOC], [asciidoc])
AC_MSG_CHECKING([for building documentation])
if test "x$wantdoc" = "xyes" ; then
AC_MSG_RESULT([yes])
if test $ASCIIDOC ; then
AC_MSG_RESULT([yes, enabled by configure])
else
asciidoc="(warning : asciidoc not installed)"
AC_MSG_RESULT([yes $asciidoc])
fi
wantdoc=yes
else
AC_MSG_RESULT([no, disabled by configure])
@@ -278,17 +305,17 @@ if test "x$debug" = "xyes" ; then
# Check for -fstack-protector availability
GCC_STACK_PROTECT_LIB
GCC_STACK_PROTECT_CC
CFLAGS="$CFLAGS -Wall -Werror"
CFLAGS="$CFLAGS -g -Wall -Werror"
else
AC_MSG_RESULT(no)
CFLAGS="$CFLAGS -Wall"
fi
# Enable or disable use of git version in pacman version string
AC_CHECK_PROGS([GIT], [git])
AC_CHECK_FILE([.git/], hasgitdir=yes)
AC_MSG_CHECKING(whether to use git version if available)
if test "x$wantgitver" = "xyes" ; then
AC_CHECK_PROGS([GIT], [git])
AC_CHECK_FILE([.git/], hasgitdir=yes)
if test $GIT -a "x$hasgitdir" = "xyes"; then
AC_MSG_RESULT([yes])
usegitver=yes
@@ -314,6 +341,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([
@@ -325,7 +355,9 @@ scripts/Makefile
doc/Makefile
etc/Makefile
po/Makefile.in
pactest/Makefile
test/pacman/Makefile
test/pacman/tests/Makefile
test/util/Makefile
contrib/Makefile
Makefile
])
@@ -350,6 +382,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}
@@ -361,9 +394,10 @@ ${PACKAGE_NAME}:
package extension : ${PKGEXT}
source pkg extension : ${SRCEXT}
database extension : ${DBEXT}
build script name : ${BUILDSCRIPT}
Compilation options:
Run make in doc/ dir : ${wantdoc}
Run make in doc/ dir : ${wantdoc} ${asciidoc}
Use download library : ${internaldownload}
Doxygen support : ${usedoxygen}
debug support : ${debug}

View File

@@ -2,12 +2,11 @@ EXTRA_DIST = \
PKGBUILD.vim \
bacman \
bash_completion \
gensync \
pacdiff \
paclist \
pacscripts \
pacsearch \
pactree \
updatesync \
vimprojects \
wget-xdelta.sh \
zsh_completion \

View File

@@ -25,6 +25,13 @@ syn match pbValidPkgname /\([[:alnum:]]\|+\|-\|_\){,32}/ contained contains=pbIl
syn match pbIllegalPkgname /[[:upper:]]\|[^[:alnum:]-+_=]\|=.*=\|=['"]\?.\{33,\}['"]\?/ contained
syn match pbPkgnameGroup /^pkgname=.*/ contains=pbIllegalPkgname,pb_k_pkgname,shDoubleQuote,shSingleQuote
" pkgbase
" FIXME if '=' is in pkgbase/pkgname/pkgver, it highlights whole string, not just '='
syn keyword pb_k_pkgbase pkgbase contained
syn match pbValidPkgbase /\([[:alnum:]]\|+\|-\|_\){,32}/ contained contains=pbIllegalPkgbase
syn match pbIllegalPkgbase /[[:upper:]]\|[^[:alnum:]-+_=]\|=.*=\|=['"]\?.\{33,\}['"]\?/ contained
syn match pbPkgbaseGroup /^pkgbase=.*/ contains=pbIllegalPkgbase,pb_k_pkgbase,shDoubleQuote,shSingleQuote
" pkgver
syn keyword pb_k_pkgver pkgver contained
syn match pbValidPkgver /\([[:alnum:]]\|\.\|+\|_\)/ contained contains=pbIllegalPkgver
@@ -54,10 +61,13 @@ syn match pbUrlGroup /^url=.*/ contains=pbValidUrl,pb_k_url,pbIllegalUrl,shDoubl
" license
syn keyword pb_k_license license contained
syn keyword pbLicense APACHE CDDL EPL FDL GPL LGPL MPL PHP RUBY ZLIB ISC MIT BSD contained
" echo $(pacman -Ql licenses | grep '/usr/share/licenses/common/' | cut -d'/' -f6 | sort -u)
syn keyword pbLicense APACHE CCPL CDDL CPL EPL FDL FDL1.2 FDL1.3 GPL GPL2 GPL3 LGPL LGPL2.1 LGPL3 LPPL MPL PerlArtistic PHP PSF RALINK RUBY ZPL contained
" special cases from http://wiki.archlinux.org/index.php/Arch_Packaging_Standards
syn keyword pbLicenseSpecial BSD MIT ZLIB Python contained
syn match pbLicenseCustom /custom\(:[[:alnum:]]*\)*/ contained
syn match pbIllegalLicense /[^='"() ]/ contained contains=pbLicenseCustom,pbLicense
syn region pbLicenseGroup start=/^license=(/ end=/)/ contains=pb_k_license,pbLicenseCustom,pbLicense,pbIllegalLicense
syn match pbIllegalLicense /[^='"() ]/ contained contains=pbLicenseCustom,pbLicenseSpecial,pbLicense
syn region pbLicenseGroup start=/^license=(/ end=/)/ contains=pb_k_license,pbLicenseCustom,pbLicenseSpecial,pbLicense,pbIllegalLicense
" backup
syn keyword pb_k_backup backup contained
@@ -66,7 +76,7 @@ syn region pbBackupGroup start=/^backup=(/ end=/)/ contains=pb_k_backup,pbValidB
" arch
syn keyword pb_k_arch arch contained
syn keyword pbArch i686 x86_64 ppc contained
syn keyword pbArch i686 x86_64 ppc any contained
syn match pbIllegalArch /[^='"() ]/ contained contains=pbArch
syn region pbArchGroup start=/^arch=(/ end=/)/ contains=pb_k_arch,pbArch,pbIllegalArch
@@ -115,6 +125,12 @@ syn match pbValidInstall /\([[:alnum:]]\|\$\|+\|-\|_\)*\.install/ contained
syn match pbIllegalInstall /[^=]/ contained contains=pbValidInstall
syn match pbInstallGroup /^install=.*/ contains=pb_k_install,pbValidInstall,pbIllegalInstall,shDeref,shDoubleQuote,shSingleQuote
" changelog
syn keyword pb_k_changelog changelog contained
syn match pbValidChangelog /\([[:alnum:]]\|\$\|+\|-\|_\)*/ contained
syn match pbIllegalChangelog /[^=]/ contained contains=pbValidChangelog
syn match pbChangelogGroup /^changelog=.*/ contains=pb_k_changelog,pbValidChangelog,pbIllegalChangelog,shDeref,shDoubleQuote,shSingleQuote
" source:
" XXX remove source from shStatement, fix strange bug
syn clear shStatement
@@ -127,13 +143,12 @@ syn match pbDerefEmulation /\$[{]\?[[:alnum:]_]*[}]\?/ contained
hi def link pbDerefEmulation PreProc
" md5sums
syn keyword pb_k_md5sums md5sums contained
syn match pbIllegalMd5sums /[^='"()\/ ]/ contained contains=pbValidMd5sums
syn match pbValidMd5sums /[[:alnum:]]\{32\}/ contained
syn match pbValidMd5sums /\x\{32\}/ contained
syn region pbMd5sumsGroup start=/^md5sums/ end=/)/ contains=pb_k_md5sums,pbMd5Quotes,pbMd5Hash,pbIllegalMd5sums keepend
syn match pbMd5Quotes /'.*'\|".*"/ contained contains=pbMd5Hash,pbIllegalMd5sums
syn match pbMd5Hash /[[:alnum:]]\+/ contained contains=pbValidMd5sums
syn match pbMd5Hash /\x\+/ contained contains=pbValidMd5sums
hi def link pbMd5Quotes Keyword
hi def link pbMd5Hash Error
hi def link pbValidMd5sums Number
@@ -141,10 +156,10 @@ hi def link pbValidMd5sums Number
" sha1sums
syn keyword pb_k_sha1sums sha1sums contained
syn match pbIllegalSha1sums /[^='"()\/ ]/ contained contains=pbValidSha1sums
syn match pbValidSha1sums /[[:alnum:]]\{40\}/ contained
syn match pbValidSha1sums /\x\{40\}/ contained
syn region pbSha1sumsGroup start=/^sha1sums/ end=/)/ contains=pb_k_sha1sums,pbSha1Quotes,pbSha1Hash,pbIllegalSha1sums keepend
syn match pbSha1Quotes /'.*'\|".*"/ contained contains=pbSha1Hash,pbIllegalSha1sums
syn match pbSha1Hash /[[:alnum:]]\+/ contained contains=pbValidSha1sums
syn match pbSha1Hash /\x\+/ contained contains=pbValidSha1sums
hi def link pbSha1Quotes Keyword
hi def link pbSha1Hash Error
hi def link pbValidSha1sums Number
@@ -181,6 +196,9 @@ hi def link pbTodo Todo
hi def link pbIllegalPkgname Error
hi def link pb_k_pkgname pbKeywords
hi def link pbIllegalPkgbase Error
hi def link pb_k_pkgbase pbKeywords
hi def link pbIllegalPkgver Error
hi def link pb_k_pkgver pbKeywords
@@ -212,6 +230,9 @@ hi def link pb_k_provides pbKeywords
hi def link pbIllegalInstall Error
hi def link pb_k_install pbKeywords
hi def link pbIllegalChangelog Error
hi def link pb_k_changelog pbKeywords
hi def link pb_k_source pbKeywords
hi def link pbIllegalSource Error

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.
@@ -31,7 +34,3 @@ vimprojects - a project file for the vim project plugin.
wget-xdelta.sh - A download script for pacman which allows binary deltas
generated with makepkg to be used instead of downloading full binary packages.
This should cut download sizes for some package upgrades significantly.
gensync, updatesync - The former repository management scripts that have since
been superseded by repo-add and repo-remove. They are here for posterity's
sake, and to show how repo-add and repo-remove can be wrapped in other scripts.

View File

@@ -21,7 +21,7 @@
#
readonly progname="bacman"
readonly progver="0.2.0"
readonly progver="0.2.1"
#
# User Friendliness
@@ -87,7 +87,6 @@ fi
pkg_arch=${CARCH:-'unknown'}
pkg_dest="${PKGDEST:-$PWD}"
pkg_ext=${PKGEXT:-'.pkg.tar.gz'}
pkg_pkger=${PACKAGER:-'Unknown Packager'}
pkg_name="$1"
@@ -137,7 +136,7 @@ while read i; do
bsdtar -cnf - "/$i" 2> /dev/null | bsdtar -xpf -
# Workaround to bsdtar not reporting a missing file as an error
if [ ! -e "$work_dir/$i" ] && [ -L "$work_dir/$i"]; then
if [ ! -e "$work_dir/$i" -a ! -L "$work_dir/$i" ]; then
echo ""
echo "ERROR: unable to add /$i to the package"
echo " If your user does not have permssion to read this file then"
@@ -164,13 +163,6 @@ fi
pkg_size=$(du -sk | awk '{print $1 * 1024}')
if [ -f "$pkg_dir/install" ] ; then
cp "$pkg_dir/install" "$work_dir/.INSTALL"
fi
if [ -f $pkg_dir/changelog ] ; then
cp "$pkg_dir/changelog" "$work_dir/.CHANGELOG"
fi
#
# .PKGINFO stuff
#
@@ -254,6 +246,17 @@ while read i; do
esac
done
comp_files=".PKGINFO"
if [ -f "$pkg_dir/install" ] ; then
cp "$pkg_dir/install" "$work_dir/.INSTALL"
comp_files+=" .INSTALL"
fi
if [ -f $pkg_dir/changelog ] ; then
cp "$pkg_dir/changelog" "$work_dir/.CHANGELOG"
comp_files+=" .CHANGELOG"
fi
#
# Fixes owner:group and permissions for .PKGINFO, .CHANGELOG, .INSTALL
#
@@ -265,8 +268,31 @@ chmod 644 "$work_dir"/{.PKGINFO,.CHANGELOG,.INSTALL} 2> /dev/null
#
echo "Generating the package..."
case "$PKGEXT" in
*tar.gz) EXT=${PKGEXT%.gz} ;;
*tar.bz2) EXT=${PKGEXT%.bz2} ;;
*tar.xz) EXT=${PKGEXT%.xz} ;;
*tar) EXT=${PKGEXT} ;;
*) echo "WARNING: '%s' is not a valid archive extension." \
"$PKGEXT" ; EXT=$PKGEXT ;;
esac
pkg_file="$pkg_dest/$pkg_namver-$pkg_arch${PKGEXT}"
ret=0
bsdtar -czf "$pkg_dest/$pkg_namver-$pkg_arch$pkg_ext" $(ls -A) || ret=$?
# when fileglobbing, we want * in an empty directory to expand to
# the null string rather than itself
shopt -s nullglob
# TODO: Maybe this can be set globally for robustness
shopt -s -o pipefail
bsdtar -cf - $comp_files * |
case "$PKGEXT" in
*tar.gz) gzip -c -f -n ;;
*tar.bz2) bzip2 -c -f ;;
*tar.xz) xz -c -z - ;;
*tar) cat ;;
esac > ${pkg_file} || ret=$?
if [ $ret -ne 0 ]; then
echo "ERROR: unable to write package to $pkg_dest"
echo " Maybe the disk is full or you do not have write access"

View File

@@ -1,363 +1,115 @@
# vim: set ft=sh ts=2 sw=2 et:
# file: /etc/bash_completion.d/pacman
# This file is in the public domain.
# Bash completion for pacman
# Original: Manolis Tzanidakis <mtzanidakis@freemail.gr>
#
# Distributed under the terms of the GNU General Public License, v2 or later.
#
## initial functions
rem_selected ()
{
# (Adapted from bash_completion by Ian Macdonald <ian@caliban.org>)
# This removes any options from the list of completions that have
# already been specified on the command line.
COMPREPLY=($(echo "${COMP_WORDS[@]}" | \
(while read -d ' ' i; do
[ "${i}" == "" ] && continue
# flatten array with spaces on either side,
# otherwise we cannot grep on word boundaries of
# first and last word
COMPREPLY=" ${COMPREPLY[@]} "
# remove word from list of completions
COMPREPLY=(${COMPREPLY/ ${i%% *} / })
_arch_compgen() {
local i r
COMPREPLY=($(compgen -W '$*' -- "$cur"))
for ((i=1; i < ${#COMP_WORDS[@]}-1; i++)); do
for r in ${!COMPREPLY[@]}; do
if [[ ${COMP_WORDS[i]} = ${COMPREPLY[r]} ]]; then
unset 'COMPREPLY[r]'; break
fi
done
echo ${COMPREPLY[@]})))
return 0
done
}
_available_repos ()
{
COMPREPLY=( $( compgen -W "$(grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )" -- $cur ) )
_arch_ptr2comp() {
local list= x y
for x; do
for y in '0 --' '1 -'; do
eval 'set -- ${'$x'[${y% *}]}'
list+=\ ${@/#/${y#* }}
done
done
_arch_compgen $list
}
_installed_pkgs ()
{
local installed_pkgs
installed_pkgs=$( ls /var/lib/pacman/local/ )
COMPREPLY=( $( compgen -W "$( for i in $installed_pkgs; do echo ${i%-*-*}; done )" -- $cur ) )
_arch_incomp() {
local r="\s-(-${1#* }\s|\w*${1% *})"; [[ $COMP_LINE =~ $r ]]
}
_available_pkgs ()
{
#find balks easilly on a find /foo/*/* type dir, especially one like
# /var/lib/pacman/*/*
# This little change-up removes the find *and* only uses enabled repos
local available_pkgs
local enabled_repos
enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/sync/$r/*; done )
COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) )
}
_installed_groups ()
{
local installed_groups
installed_groups=$( find /var/lib/pacman/local -name desc -exec sed -ne '/%GROUPS%/,/^$/{//d; p}' {} \; | sort -u )
COMPREPLY=( $( compgen -W "$( for i in $installed_groups; do echo ${i%-*-*}; done )" -- $cur ) )
}
_available_groups ()
{
#find balks easilly on a find /foo/*/* type dir, especially one like
# /var/lib/pacman/*/*
# This little change-up removes the find *and* only uses enabled repos
local available_groups
local enabled_repos
enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )
available_groups=$( for r in $enabled_repos; do sed '/%GROUPS%/,/^$/{//d; p}' /var/lib/pacman/sync/$r/*/desc | sort -u; done )
COMPREPLY=( $( compgen -W "$( for i in $available_groups; do echo ${i%-*-*}; done )" -- $cur ) )
}
## makepkg completion
_makepkg ()
{
local cur prev
_makepkg() {
local cur opts prev
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
case "$prev" in
-p)
_filedir
return 0
;;
--help|--cleancache)
COMPREPLY=''
return 0
;;
esac
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '\
-A --ignorearch \
-b --builddeps \
-c --clean \
-C --cleancache \
-d --nodeps \
-e --noextract \
-f --force \
-g --geninteg \
-h --help \
-i --install \
-L --log \
-m --nocolor \
-o --nobuild \
-p \
-r --rmdeps \
-s --syncdeps \
--asroot \
--source \
--noconfirm \
--noprogressbar' -- $cur ) )
if [[ $cur = -* && ! $prev =~ ^-(-(cleancache|config|help)$|\w*[Chp]) ]]; then
opts=('allsource asroot clean cleancache config force geninteg help holdver
ignorearch install log nobuild nocolor noconfirm nodeps noextract
noprogressbar pkg repackage rmdeps skipinteg source syncdeps'
'A C L R c d e f g h i m o p r s')
_arch_ptr2comp opts
fi
rem_selected
true
}
complete -o default -F _makepkg makepkg
## pacman completion
_instring ()
{
str="${1}"
shift 1
for c in "${@}"; do
if [ $(expr index "${str}" "${c}") -gt 0 ]; then
return 0
_pacman_pkg() {
_arch_compgen "$(
if [[ $2 ]]; then
\pacman -$1 | \cut -d' ' -f1 | \sort -u
else
\pacman -$1
fi
done
return 1
)"
}
_pacman ()
{
local a arg toparse op mod cur
_pacman() {
local common core cur database prev query remove sync upgrade o
COMPREPLY=()
cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
database=('asdeps asexplicit')
query=('changelog check deps explicit file foreign groups info list owns
search unrequired upgrades' 'c e g i k l m o p s t u')
remove=('cascade dbonly nodeps nosave print recursive unneeded' 'c k n p s u')
sync=('asdeps asexplicit clean downloadonly force groups ignore ignoregroup
info list needed nodeps print refresh search sysupgrade'
'c f g i l p s u w y')
upgrade=('asdeps asexplicit force nodeps print' 'f p')
common=('arch cachedir config dbpath debug help logfile noconfirm
noprogressbar noscriptlet quiet root verbose' 'b d h q r v')
core=('database help query remove sync upgrade version' 'D Q R S U V h')
# This argument parsing is done so we can check for flag existance later
# right now it's a tad crappy, but does the job
for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
a=${COMP_WORDS[i]}
arg="${a:0:2}"
toparse="${a:2}"
case "${arg}" in
-@(U|R|S|Q|h|V))
op="${arg/-}"
mod="${mod}${a:2}"
;;
--)
arg="${a:2}"
case "${arg}" in
remove) op="R" ;;
upgrade) op="U" ;;
query) op="Q" ;;
sync) op="S" ;;
help) op="h" ;;
version) op="V" ;;
verbose) mod="${mod}v" ;;
root) mod="${mod}r" ;;
dbpath) mod="${mod}b" ;;
nodeps) mod="${mod}d" ;;
force) mod="${mod}f" ;;
groups) mod="${mod}g" ;;
info) mod="${mod}i" ;;
list) mod="${mod}l" ;;
print-uris) mod="${mod}p" ;;
search) mod="${mod}s" ;;
sysupgrade) mod="${mod}u" ;;
upgrades) mod="${mod}u" ;;
downloadonly) mod="${mod}w" ;;
refresh) mod="${mod}y" ;;
changelog) mod="${mod}c" ;;
deps) mod="${mod}d" ;;
explicit) mod="${mod}e" ;;
unrequired) mod="${mod}t" ;;
foreign) mod="${mod}m" ;;
owns) mod="${mod}o" ;;
file) mod="${mod}p" ;;
search) mod="${mod}s" ;;
upgrades) mod="${mod}u" ;;
cascade) mod="${mod}c" ;;
dbonly) mod="${mod}k" ;;
nosave) mod="${mod}n" ;;
recursive) mod="${mod}s" ;;
unneeded) mod="${mod}u" ;;
esac ;;
*) toparse="${a}" ;;
esac
arglen=$(( ${#toparse}-1 ))
for c in $(seq 0 "${arglen}"); do
arg=${toparse:$c:1}
[ "${arg}" != "-" ] && mod="${mod}${arg}"
done
for o in 'D database' 'Q query' 'R remove' 'S sync' 'U upgrade'; do
_arch_incomp "$o" && break
done
cur=${COMP_WORDS[COMP_CWORD]}
if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '\
-h --help \
-Q --query \
-R --remove \
-S --sync \
-U --upgrade \
-V --version \
' -- $cur ) )
rem_selected
return 0
fi
if [[ "$cur" == -* ]]; then
case "${op}" in
U)
COMPREPLY=( $( compgen -W '\
--asdeps \
--asexplicit \
-d --nodeps \
-f --force \
-h --help \
--config \
--logfile \
--noconfirm \
--noprogressbar \
--noscriptlet \
-v --verbose \
-r --root \
-b --dbpath \
--cachedir \
' -- $cur ) )
return 0
;;
R)
COMPREPLY=( $( compgen -W '\
-c --cascade \
-d --nodeps \
-h --help \
-k --dbonly \
-n --nosave \
-s --recursive \
-u --unneeded \
--config \
--logfile \
--noconfirm \
--noprogressbar \
--noscriptlet \
-v --verbose \
-r --root \
-b --dbpath \
--cachedir \
' -- $cur ) )
return 0
;;
S)
COMPREPLY=( $( compgen -W '\
--asdeps \
--asexplicit \
-c --clean \
-d --nodeps \
-f --force \
-g --groups \
-h --help \
-i --info \
-l --list \
-p --print-uris \
-s --search \
-u --sysupgrade \
-w --downloadonly \
-y --refresh \
--needed \
--ignore \
--ignoregroup \
--config \
--logfile \
--noconfirm \
--noprogressbar \
--noscriptlet \
-v --verbose \
-r --root \
-b --dbpath \
--cachedir \
' -- $cur ) )
return 0
;;
if [[ $? != 0 ]]; then
_arch_ptr2comp core
elif [[ ! $prev =~ ^-\w*[Vbhr] &&
! $prev = --@(cachedir|config|dbpath|help|logfile|root|version) ]]
then
[[ $cur = -* ]] && _arch_ptr2comp ${o#* } common ||
case ${o% *} in
D|R)
_pacman_pkg Qq;;
Q)
COMPREPLY=( $( compgen -W '\
-c --changelog \
-d --deps \
-e --explicit \
-g --groups \
-h --help \
-i --info \
-l --list \
-m --foreign \
-o --owns \
-p --file \
-s --search \
-t --unrequired \
-u --upgrades \
--config \
--logfile \
--noconfirm \
--noprogressbar \
--noscriptlet \
-v --verbose \
-r --root \
-b --dbpath \
--cachedir \
' -- $cur ) )
return 0
;;
esac
rem_selected
else
case "${op}" in
U)
COMPREPLY=( $( compgen -d -- "$cur" ) \
$( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) )
return 0
;;
h|V)
COMPREPLY=''
return 0
;;
Q)
if _instring $mod g; then
_installed_groups
elif _instring $mod o; then
COMPREPLY=( $( compgen -d -- "$cur" ) \
$( compgen -f -- "$cur" ) )
elif _instring $mod p; then
COMPREPLY=( $( compgen -d -- "$cur" ) \
$( compgen -f -X '!*.pkg.tar.gz' -- "$cur" ) )
elif _instring $mod u; then
COMPREPLY=''
return 0
else
_installed_pkgs
fi
return 0
;;
R)
_installed_pkgs
return 0
;;
{ _arch_incomp 'g groups' && _pacman_pkg Qg sort; } ||
{ _arch_incomp 'p file' && _pacman_file; } ||
_arch_incomp 'o owns' || _arch_incomp 'u upgrades' ||
_pacman_pkg Qq;;
S)
if _instring $mod l; then
_available_repos
else
_available_pkgs
fi
return 0
;;
esac
{ _arch_incomp 'g groups' && _pacman_pkg Sg; } ||
{ _arch_incomp 'l list' && _pacman_pkg Sl sort; } ||
_pacman_pkg Slq;;
U)
_pacman_file;;
esac
fi
rem_selected
true
}
complete -o filenames -F _pacman pacman
if [[ $(type -t compopt) = "builtin" ]]; then
_pacman_file() {
compopt -o filenames; _filedir 'pkg.tar.*'
}
complete -F _pacman -o default pacman
else
_pacman_file() {
_filedir 'pkg.tar.*'
}
complete -F _pacman -o filenames -o default pacman
fi
complete -F _makepkg -o default makepkg
# ex:et ts=2 sw=2 ft=sh

View File

@@ -1,134 +0,0 @@
#!/bin/bash
#
# gensync
#
# Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
myver='3.1.1'
# functions
usage() {
printf "gensync (pacman) %s\n\n" "$myver"
printf "Usage: %s <root> <destfile> [package_directory]\n\n" "$0"
printf "\
gensync will generate a sync database by reading all PKGBUILD files\n\
from <root>. gensync builds the database in a temporary directory\n\
and then compresses it to <destfile>.\n\n"
printf "\
gensync will calculate md5sums of packages in the same directory as\n\
<destfile>, unless an alternate [package_directory] is specified.\n\n"
printf "\
note: The <destfile> name is important. It must be of the form\n\
{treename}.db.tar.gz where {treename} is the name of the custom\n\
package repository you configured in /etc/pacman.conf. The\n\
generated database must reside in the same directory as your\n\
custom packages (also configured in /etc/pacman.conf)\n\n"
echo "Example: gensync /var/abs/local /home/mypkgs/custom.db.tar.gz"
}
version() {
printf "gensync (pacman) %s\n" "$myver"
printf "\
Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>.\n\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n"
}
error () {
local mesg=$1; shift
printf "==> ERROR: ${mesg}\n" "$@" >&2
}
die () {
error $*
exit 1
}
# PROGRAM START
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
fi
if [ "$1" = "-V" -o "$1" = "--version" ]; then
version
exit 0
fi
if [ $# -lt 2 ]; then
usage
exit 1
fi
# source system and user makepkg.conf
if [ -r /etc/makepkg.conf ]; then
source /etc/makepkg.conf
else
die "/etc/makepkg.conf not found. Cannot continue."
fi
if [ -r ~/.makepkg.conf ]; then
source ~/.makepkg.conf
fi
d=$(dirname $1)
rootdir="$(cd $d && pwd)/$(basename $1)"
d="$(dirname $2)"
destdir="$(cd $d && pwd)"
destfile="$destdir/$(basename $2)"
pkgdir=""
if [ "$3" != "" ]; then
pkgdir="$3"
fi
[ ! -d "$rootdir" ] && die "invalid root dir: $rootdir"
echo "gensync: building database entries, generating md5sums..." >&2
cd "$destdir"
pkgs=""
for file in $(find "$rootdir"/* -name "$BUILDSCRIPT"); do
unset pkgname pkgver pkgrel options
source $file || die "failed to parse $file"
if [ "$arch" = 'any' ]; then
CARCH='any'
fi
if [ "$pkgdir" != "" ]; then
pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-${CARCH}${PKGEXT}"
else
pkgfile="$destdir/$pkgname-$pkgver-$pkgrel-${CARCH}${PKGEXT}"
fi
if [ ! -f "$pkgfile" ]; then
error "could not find %s-%s-%s-%s%s - skipping" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
else
pkgs="$pkgs $pkgfile"
fi
done
echo "creating repo DB..."
# we'll trim the output just a tad, as gensync may be used on large repos
repo-add $destfile $pkgs \
| grep -e "package" -e "database"
# vim: set ts=2 sw=2 noet:

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,64 @@
# 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
diffsearchpath=${DIFFSEARCHPATH:-/etc}
locate=0
usage() {
echo "pacdiff : a simple pacnew/pacorig/pacsave updater"
echo "Usage : pacdiff [-l]"
echo " -l/--locate makes pacdiff use locate rather than find"
echo " DIFFPROG variable allows to override the default vimdiff"
echo " DIFFSEARCHPATH allows to override the default /etc path"
echo "Example : DIFFPROG=meld DIFFSEARCHPATH=\"/boot /etc /usr\" pacdiff"
}
cmd() {
if [ $locate -eq 1 ]; then
locate -0 -e -b \*.pacnew \*.pacorig \*.pacsave
else
find $diffsearchpath \( -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

@@ -1,7 +1,7 @@
#!/usr/bin/perl
# pacsearch - Adds color and install information to a 'pacman -Ss' search
#
# Copyright (C) 2008 Dan McGee <dpmcgee@gmail.com>
# Copyright (C) 2008, 2010 Dan McGee <dpmcgee@gmail.com>
#
# Based off original shell script version:
# Copyright (C) 2006-2007 Dan McGee <dpmcgee@gmail.com>
@@ -39,7 +39,7 @@ if ($#ARGV lt 0 || $ARGV[0] eq "--help" || $ARGV[0] eq "-h") {
if ($ARGV[0] eq "--version" || $ARGV[0] eq "-v") {
print "$progname version $version\n";
print "Copyright (C) 2006-2008 Dan McGee\n";
print "Copyright (C) 2006-2010 Dan McGee\n";
exit 0;
}
@@ -53,17 +53,18 @@ my $CLR6 = "\e[0;33m";
my $CLR7 = "\e[1;36m";
my $INST = "\e[1;31m";
my $BASE = "\e[0m";
my $INSTMARK = $INST."***";
# color a "repo/pkgname pkgver" line based on the respository name
# color a "repo/pkgname pkgver" line based on the repository name
sub to_color {
my $line = shift;
# get the installed text colored first
$line =~ s/(\[.*\]$)/$INST$1$BASE/;
# and now the repo and dealings
$line =~ s/(^core\/.*)/$CLR1$1$BASE/;
$line =~ s/(^extra\/.*)/$CLR2$1$BASE/;
$line =~ s/(^community\/.*)/$CLR3$1$BASE/;
$line =~ s/(^testing\/.*)/$CLR4$1$BASE/;
$line =~ s/(^unstable\/.*)/$CLR5$1$BASE/;
$line =~ s/(^custom\/.*)/$CLR6$1$BASE/;
$line =~ s/(^community-testing\/.*)/$CLR5$1$BASE/;
$line =~ s/(^local\/.*)/$CLR7$1$BASE/;
# any other unknown repository
$line =~ s/(^[\w-]*\/.*)/$CLR6$1$BASE/;
@@ -83,10 +84,10 @@ if ($#syncpkgs >= 0) {
# counter var for packages, used here and in the query loop too
my $cnt = 0;
foreach $_ (@syncpkgs) {
# we grab 3 fields here: repo, name/ver, and desc
my @pkgfields = /^(.*?)\/(.*?)\n(.*)$/s;
# add a fourth field that will indicate install status
push (@pkgfields, "");
# we grab 4 fields here: repo, name/ver, installed, and desc
my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s;
# since installed is optional, we should fill it in if necessary
$pkgfields[2] = "" if not defined $pkgfields[2];
# add a fifth field that indicates original order
push (@pkgfields, $cnt++);
# add each sync pkg by name/ver to a hash table for quick lookup
@@ -102,16 +103,13 @@ if ($#querypkgs >= 0) {
}
foreach $_ (@querypkgs) {
# we grab 3 fields here: repo, name/ver, and desc
my @pkgfields = /^(.*?)\/(.*?)\n(.*)$/s;
# we grab 4 fields here: repo, name/ver, installed, and desc
my @pkgfields = /^(.*?)\/(.*?) ?(\[.*\])?\n(.*)$/s;
# since installed is optional, we should fill it in if necessary
$pkgfields[2] = "" if not defined $pkgfields[2];
# check if the package was listed in the sync out
# if it is we want to mark it with a *** marker
if (exists $allpkgs{$pkgfields[1]}) {
# mark it in our fourth field as installed
@{ $allpkgs{$pkgfields[1]} }[3] = $INSTMARK;
} else {
# add a fourth field that will indicate install status
push (@pkgfields, $INSTMARK);
if (not exists $allpkgs{$pkgfields[1]}) {
$pkgfields[2] = "[installed]";
# add a fifth field that indicates original order (after sync)
push (@pkgfields, $cnt++);
# add our local-only package to the hash
@@ -122,11 +120,11 @@ foreach $_ (@querypkgs) {
# sort by original order (the fifth field) and print
foreach $_ ( sort{ @{$allpkgs{$a}}[4] <=> @{$allpkgs{$b}}[4] } keys %allpkgs) {
my @v = @{$allpkgs{$_}};
my $line = "$v[0]/$v[1]";
my $line = "$v[0]/$v[1] $v[2]";
$line = to_color($line);
# print install marker + colorized "repo/pkgname pkgver" string
print "$v[3]$line\n";
print "$v[2]\n";
# print colorized "repo/pkgname pkgver" string with possible installed text
print "$line\n";
print "$v[3]\n";
}
#vim: set noet:

View File

@@ -41,7 +41,7 @@ arrow1_color="chocolate4" #color of the normal arrow
arrow2_color="grey" #color of the "provided by" headless arrow
readonly prog_name="pactree"
readonly prog_ver="0.2"
readonly prog_ver="0.3"
_usage(){
echo "This program generates the dependency tree of an installed package"
@@ -52,13 +52,14 @@ _usage(){
echo " -d, --depth INT Limit the shown dependencies depth"
echo " -g, --graph Use graphviz to make an image of the tree"
echo " -l, --linear Enable linear output"
echo " -r, --reversed Show reversed dependancies"
echo " -s, --silent Shh, let me hear those errors!"
echo " -u, --unique Print the dependency list with no duplicates"
echo
echo " -h, --help Print this help message"
echo " -v, --version Print the program name and version"
echo
echo "Example: $prog_name -c -d 2 readline"
echo "Example: $prog_name -c -d2 readline"
}
_version(){
@@ -140,7 +141,16 @@ _tree(){
if [[ ! " ${dep_list[@]} " =~ " $pkg_name " ]] && [ $spaces -ne $max_depth ]; then
dep_list=( "${dep_list[@]}" "$pkg_name" )
for dep_pkg in $(_grabfield "$pkg_dir/depends" %DEPENDS%); do
if [ $reversed_dep -eq 0 ]; then
deps_pkg="$(_grabfield "$pkg_dir/depends" %DEPENDS%)"
else
reqs_pkg_dir="$(_finddep "$pkg_name" %DEPENDS% depends)"
unset deps_pkg
for req_pkg_dir in $reqs_pkg_dir; do
deps_pkg=$(echo "$deps_pkg" "$(_grabfield "$req_pkg_dir/desc" %NAME%)")
done
fi
for dep_pkg in $deps_pkg; do
spaces=$2 #Bash scoping ;_;
if [ $graphviz -eq 1 ]; then
echo "\"$1\" -> \"${dep_pkg%%[<>=]*}\" [color=$arrow1_color];"
@@ -208,6 +218,12 @@ for (( n=0 ; n < $len_options ; n++ )); do
continue
fi
if [ "${options[$n]}" = "-r" -o "${options[$n]}" = "--reversed" ]; then
unset options[$n]
reversed_dep=1
continue
fi
if [[ "${options[$n]}" =~ -d[[:digit:]]+ || "${options[$n]}" == "--depth" ]]; then
if [[ "${options[$n]#-d}" =~ [[:digit:]]+ ]]; then
max_depth="${options[$n]#-d}"
@@ -229,6 +245,7 @@ linear=${linear:-0}
silent=${silent:-0}
nodup=${nodup:-0}
graphviz=${graphviz:-0}
reversed_dep=${reversed_dep:-0}
if [ $colored -ne 1 ]; then
unset branch1_color
@@ -292,8 +309,12 @@ if [ $graphviz -eq 1 ]; then
root_pkgs="${options[@]}"
# Uncomment for the "generated by pactree" node in graphviz
#advert="xyz [height=0.07, fontsize=8.0, label=\"GENERATED WITH PACTREE\",shape=box,color="black",style=filled,fontcolor="white"];\n"
echo -e "digraph G { START [color=$start_color, style=filled];\n node [style=filled, color=$nodes_color];\n$(_main)\n$advert}" | dot -T$gformat -o "${root_pkgs// /_}.deps.$gformat"
if [ $reversed_dep -eq 0 ]; then
file_extension="deps.$gformat"
else
file_extension="reqs.$gformat"
fi
echo -e "digraph G { START [color=$start_color, style=filled];\n node [style=filled, color=$nodes_color];\n$(_main)\n$advert}" | dot -T$gformat -o "${root_pkgs// /_}.$file_extension"
else _main
fi

View File

@@ -1,137 +0,0 @@
#!/bin/bash
#
# updatesync
#
# Copyright (c) 2004 by Jason Chu <jason@archlinux.org>
# Derived from gensync (c) 2002-2006 Judd Vinet <jvinet@zeroflux.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
myver='3.1.1'
# functions
usage() {
printf "updatesync (pacman) %s\n\n" "$myver"
printf "Usage: %s <action> <destfile> <option> [package_directory]\n\n" "$0"
printf "\
updatesync will update a sync database by reading a PKGBUILD and\n\
modifying the destfile. updatesync updates the database in a temporary\n\
directory and then compresses it to <destfile>.\n\n"
printf "There are two types of actions:\n\n"
printf "upd - Will update a package's entry or create it if it doesn't exist.\n It takes the package's PKGBUILD as an option.\n"
printf "del - Will remove a package's entry from the db. It takes the package's\n name as an option.\n"
echo
printf "\
updatesync will calculate md5sums of packages in the same directory as\n\
<destfile>, unless an alternate [package_directory] is specified.\n\n"
echo "Example: updatesync upd /home/mypkgs/custom.db.tar.gz PKGBUILD"
}
version() {
printf "updatesync (pacman) %s\n" "$myver"
printf "\
Copyright (C) 2004 Jason Chu <jason@archlinux.org>.\n\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n"
}
error () {
local mesg=$1; shift
printf "==> ERROR: ${mesg}\n" "$@" >&2
}
die () {
error $*
exit 1
}
# PROGRAM START
if [ "$1" = "-h" -o "$1" = "--help" ]; then
usage
exit 0
fi
if [ "$1" = "-V" -o "$1" = "--version" ]; then
version
exit 0
fi
if [ $# -lt 3 ]; then
usage
exit 1
fi
# source system and user makepkg.conf
if [ -r /etc/makepkg.conf ]; then
source /etc/makepkg.conf
else
die "/etc/makepkg.conf not found. Cannot continue."
fi
if [ -r ~/.makepkg.conf ]; then
source ~/.makepkg.conf
fi
if [ "$1" != "upd" -a "$1" != "del" ]; then
usage
exit 1
fi
action=$1
pkgdb=$2
option=$3
pkgdir="$(pwd)"
if [ "$4" != "" ]; then
pkgdir="$4"
fi
if [ "$action" = "upd" ]; then # INSERT / UPDATE
if [ ! -f "$option" ]; then
die "$option not found"
fi
unset pkgname pkgver pkgrel options
source $option || die "failed to parse $option"
if [ "$arch" = 'any' ]; then
CARCH='any'
fi
pkgfile="$pkgdir/$pkgname-$pkgver-$pkgrel-${CARCH}${PKGEXT}"
if [ ! -f "$pkgfile" ]; then
die "could not find %s-%s-%s-%s%s - aborting" $pkgname $pkgver $pkgrel $CARCH $PKGEXT
fi
repo-add "$pkgdb" "$pkgfile"
else # DELETE
fname="$(basename $option)"
if [ "$fname" = "PKGBUILD" ]; then
if [ ! -f "$option" ]; then
die "%s not found" $option
fi
unset pkgname pkgver pkgrel options
source $option
else
pkgname=$option
fi
repo-remove "$pkgdb" "$pkgname"
fi
exit 0
# vim: set ts=2 sw=2 noet:

View File

@@ -26,13 +26,14 @@ _pacman_opts_common=(
'--noconfirm[Do not ask for confirmation]'
'--noprogressbar[Do not show a progress bar when downloading files]'
'--noscriptlet[Do not execute the install scriptlet if one exists]'
'--print[Only print the targets instead of performing the operation]'
)
# options for passing to _arguments: options for --upgrade commands
_pacman_opts_pkgfile=(
'-d[Skip dependency checks]'
'-f[Overwrite conflicting files]'
'*:package file:_files -g "*.pkg.tar.gz(.)"'
'*:package file:_files -g "*.pkg.tar.*(.)"'
)
# options for passing to _arguments: subactions for --query command
@@ -50,6 +51,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]'
@@ -119,7 +121,7 @@ _pacman_action_query() {
_arguments -s : \
"$_pacman_opts_common[@]" \
"$_pacman_opts_query_modifiers[@]" \
'*:package file:_files -g "*.pkg.tar.gz"'
'*:package file:_files -g "*.pkg.tar.*"'
;;
query_group)
_arguments -s : \
@@ -294,11 +296,11 @@ _pacman() {
"$_pacman_opts_query_modifiers[@]" \
'*:package file:_files'
;;
-Q*p*) # file *.pkg.tar.gz
-Q*p*) # file *.pkg.tar.*
_arguments -s : \
"$_pacman_opts_common[@]" \
"$_pacman_opts_query_modifiers[@]" \
'*:package file:_files -g "*.pkg.tar.gz"'
'*:package file:_files -g "*.pkg.tar.*"'
;;
-Q*) _pacman_action_query ;;
-R*) _pacman_action_remove ;;

3
doc/.gitignore vendored
View File

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

View File

@@ -14,6 +14,25 @@ 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 \
HACKING.html
HTML_DOCS = \
$(HTML_MANPAGES) \
$(HTML_OTHER)
EXTRA_DIST = \
asciidoc.conf \
pacman.8.txt \
@@ -25,12 +44,15 @@ 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 $(ASCIIDOC_MANS)
MOSTLYCLEANFILES = *.xml $(ASCIIDOC_MANS) $(HTML_DOCS) repo-remove.8
# Ensure manpages are fresh when building a dist tarball
dist-hook:
@@ -56,29 +78,60 @@ doxygen.in:
$(DOXYGEN) $(srcdir)/Doxyfile
endif
html: $(HTML_DOCS)
website: html
bsdtar czf website.tar.gz $(HTML_DOCS) \
-C /etc/asciidoc/stylesheets/ \
xhtml11.css xhtml11-manpage.css xhtml11-quirks.css \
-C /etc/asciidoc/javascripts/ \
asciidoc-xhtml11.js \
-C /etc/asciidoc/ \
images
pkgdatadir = ${datadir}/${PACKAGE}
ASCIIDOC_OPTS = \
-f asciidoc.conf \
-a pacman_version="$(REAL_PACKAGE_VERSION)" \
-a pacman_date="`date +%Y-%m-%d`" \
-a pkgdatadir=$(pkgdatadir) \
-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'
--xsltproc-opts='-param man.endnotes.list.enabled 0 -param man.endnotes.are.numbered 0'
# These rules are due to the includes and files of the asciidoc text
$(ASCIIDOC_MANS): asciidoc.conf footer.txt
a2x $(A2X_OPTS) --asciidoc-opts="$(ASCIIDOC_OPTS)" $@.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
%.html: %.txt
asciidoc $(ASCIIDOC_OPTS) $*.txt
dos2unix $@
HACKING.html: ../HACKING
asciidoc $(ASCIIDOC_OPTS) -o $@ ../HACKING
dos2unix $@
# Customizations for certain HTML docs
$(HTML_MANPAGES): asciidoc.conf footer.txt
$(HTML_OTHER): asciidoc.conf
%.html: ASCIIDOC_OPTS += -a linkcss -a toc -a icons
%.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
rm -f repo-remove.8

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')
@@ -15,6 +15,6 @@ md5sums=('ee5ae84d115f051d87fcaaef3b4ae782')
build() {
cd $srcdir/$pkgname-$pkgver
./configure --prefix=/usr
make || return 1
make
make prefix=$pkgdir/usr install
}

View File

@@ -20,12 +20,10 @@ This manual page is meant to describe general rules about PKGBUILDs. Once a
PKGBUILD is written, the actual package is built using makepkg and installed
with pacman.
NOTE: If you are using Arch Linux and have a local copy of the Arch Build
System (ABS) tree on your computer, or are using another distribution that
provides a similar tree of build files, you can copy the provided
PKGBUILD.proto file to a new package build directory and make customizations to
suit your needs. An up to date prototype file can also be found in the source
distribution of this package.
NOTE: An example PKGBUILD, useful for reference, is located in '{pkgdatadir}'.
Also located there are other example files such as a ChangeLog and an install
script. You can copy the provided PKGBUILD.proto file to a new package build
directory and make customizations to suit your needs.
Options and Directives
@@ -40,18 +38,21 @@ This will prevent any possible name clashes with internal makepkg variables.
For example, to store the base kernel version in a variable, use something
similar to `$_basekernver`.
*pkgname*::
*pkgname (array)*::
The name of the package. This has be a unix-friendly name as it will be
used in the package filename.
used in the package filename. Members of the array are not allowed to start
with hyphens.
*pkgver*::
The version of the software as released from the author (e.g. '2.7.1').
The variable is not allowed to contain hyphens.
*pkgrel*::
This is the release number specific to the Arch Linux release. This
allows package maintainers to make updates to the package's configure
flags, for example. A pkgrel of 1 is typically used for each upstream
software release and is incremented for intermediate PKGBUILD updates.
software release and is incremented for intermediate PKGBUILD updates. The
variable is not allowed to contain hyphens.
*pkgdesc*::
This should be a brief description of the package and its functionality.
@@ -65,19 +66,25 @@ 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`).
*changelog*::
Specifies a changelog file 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. `changelog=$pkgname.changelog`).
*source (array)*::
An array of source files required to build the package. Source files
@@ -90,7 +97,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 +125,8 @@ 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')`). Packages that contain no architecture specific
files may use arch=('any').
*backup (array)*::
A space-delimited array of filenames, without preceding slashes, that
@@ -140,11 +148,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
for specifying optdepends is:
optdepends=('fakeroot: for makepkg usage as normal user')
@@ -161,7 +169,7 @@ name. The syntax is: `$$source=('filename::url')$$`
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. Provisions involving the '>' and '<'
operators are invalid as only specifc versions of a package may be
operators are invalid as only specific versions of a package may be
provided.
*replaces (array)*::
@@ -187,8 +195,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
@@ -198,7 +206,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
@@ -221,15 +229,17 @@ 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
----------------
In addition to the above directives, the build() bash function comprises the
remainder of the PKGBUILD. This is directly sourced and executed by makepkg, so
anything that bash or the system has available is available for use here. Be
sure any exotic commands used are covered by `makedepends`.
In addition to the above directives, the optional build() bash function usually
comprises the remainder of the PKGBUILD. This is directly sourced and executed
by makepkg, so anything that bash or the system has available is available for
use here. The function is run in `bash -e` mode, meaning any command that exits
with a non-zero status will cause the function to exit. Be sure any exotic
commands used are covered by `makedepends`.
All of the above variables such as `pkgname` and `pkgver` are available for use
in the build function. In addition, makepkg defines three variables for your
@@ -238,24 +248,51 @@ 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. The
function is run in `bash -e` mode, meaning any command that exits with a
non-zero status will cause the function to exit. When specified in combination
with the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot usage
will be limited to running the packaging stage. An existing 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:
`pkgver`, `pkgrel`, `pkgdesc`, `arch`, `license`, `groups`, `depends`,
`optdepends`, `provides`, `conflicts`, `replaces`, `backup`, `options`,
`install` and `changelog`.
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. The variable is not allowed to
begin with a hyphen.
Install/Upgrade/Remove Scripting
--------------------------------
Pacman has the ability to store and execute a package-specific script when it
@@ -294,9 +331,8 @@ same directory as the PKGBUILD script. Then use the install directive:
install=pkgname.install
The install script does not need to be specified in the source array. A
template install file is available with the source distribution of this
program, or one may be provided by your distribution. For example, Arch Linux
provides prototype install files in the ABS tree.
template install file is available in '{pkgdatadir}' as 'proto.install' for
reference with all of the available functions defined.
Development Directives

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[]

200
doc/index.txt Normal file
View File

@@ -0,0 +1,200 @@
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
---------------------
2010-06-16 v3.4.0
2009-11-10 v3.3.3
2009-10-05 v3.3.2
2009-09-22 v3.3.1
2009-08-02 v3.3.0
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-2010 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
@@ -78,10 +81,14 @@ Options
*-g, \--geninteg*::
For each source file in the source array of PKGBUILD, download the file
if required and generate integrity checks. The integrity checks
generated are determined by the value of the INTEGRITY_CHECK array in
linkman:makepkg.conf[5]. This output can be redirected into your
PKGBUILD for source validation using "`makepkg -g >> PKGBUILD`".
if required and generate integrity checks. The integrity checks generated
are determined by the checks present in the PKGBUILD, falling back to the
value of the INTEGRITY_CHECK array in makepkg.conf(5) if these are absent
This output can be redirected into your PKGBUILD for source validation
using "`makepkg -g >> PKGBUILD`".
*--skipinteg*::
Do not perform any integrity checks, just print a warning instead.
*-h, \--help*::
Output syntax and command line options.
@@ -119,9 +126,9 @@ Options
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
@@ -139,7 +146,12 @@ Options
Do not actually build the package, but build a source-only tarball that
does not include sources that can be fetched via a download URL. This is
useful for passing a single tarball to another program such as a chroot,
remote builder, or a tarball upload.
remote builder, or a tarball upload. Because integrity checks are verified,
all source files of the package need to be present or downloadable.
*\--pkg <`list`>*::
Only build listed packages from a split package. The use of quotes is
necessary when specifying multiple packages. e.g. `--pkg "pkg1 pkg3"`
*\--noconfirm*::
(Passed to pacman) Prevent pacman from waiting for user input before
@@ -158,6 +170,23 @@ separate utility 'versionpkg'. See linkman:PKGBUILD[5] for details on how to
set up a development PKGBUILD.
Environment Variables
---------------------
*PACMAN*::
The command that will be used to check for missing dependencies and to
install and remove packages. Pacman's -Qq, -Rns, -S, -T, and -U
operations must be supported by this command. If the variable is not
set or empty, makepkg will fall back to `pacman'.
**PKGDEST=**"/path/to/folder"::
Folder where the resulting packages will be stored. Overrides the
corresponding value defined in linkman:makepkg.conf[5].
**SRCDEST=**"/path/to/folder"::
Folder where the downloaded sources will be stored. Overrides the
corresponding value defined in linkman:makepkg.conf[5].
Configuration
-------------
See linkman:makepkg.conf[5] for more details on configuring makepkg using the

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,67 @@ 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
**STRIP_BINARIES=**"--strip-all"::
Options to be used when stripping binaries. See linkman:strip[1]
for details.
**STRIP_SHARED=**"--strip-unneeded"::
Options to be used when stripping shared libraries. See linkman:strip[1]
for details.
**STRIP_STATIC=**"--strip-debug"::
Options to be used when stripping static libraries. See linkman:strip[1]
for details.
**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 +183,16 @@ 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>"::
**SRCPKGDEST=**"/path/to/folder"::
If this value is not set, source package files will be stored in
PKGDEST. Many people like to keep all source package files in
a central location for easy cleanup, so this path can be set here.
**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,21 +22,30 @@ 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
----------
*-D, \--database*::
Modify the package database. This options allows you to modify certain
attributes of the installed packages in pacman's database. At the
moment, you can only change the install reason using '\--asdeps' and
'\--asexplicit' options.
*-Q, \--query*::
Query the package database. This operation allows you to view installed
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,10 +80,19 @@ 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
Files>> for an explanation on how pacman takes care of config files.
Upgrade or add package(s) to the system and install the required
dependencies from sync repos. Either a URL or file path can be
specified. This is a ``remove-then-add'' process. See <<UO,Upgrade
Options>> below; also see <<HCF,Handling Config Files>> for an explanation
on how pacman takes care of config files.
*-V, \--version*::
Display version and exit.
@@ -124,9 +142,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 +163,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*::
@@ -152,6 +174,19 @@ Options
If an install scriptlet exists, do not execute it. Do not use this
unless you know what you are doing.
*\--arch* <'arch'>::
Specify an alternate architecture.
*-p, \--print*::
Only print the targets instead of performing the actual operation (sync,
remove or upgrade). Use '\--print-format' to specify how targets are
displayed. The default format string is "%l", which displays url with '-S',
filename with '-U' and pkgname-pkgver with '-R'.
*\--print-format* <'format'>::
Specify a printf-like format to control the output of the '\--print'
operation. The possible are attributes are : %n for pkgname, %v for pkgver, %l
for location, %r for repo and %s for size.
Query Options[[QO]]
-------------------
@@ -160,16 +195,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 +217,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 +241,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]]
@@ -224,7 +274,7 @@ Remove Options[[RO]]
or more target packages. This operation is recursive, and must be used
with care since it can remove many potentially needed packages.
*-k, \--keep*::
*-k, \--dbonly*::
Removes the database entry only. Leaves all files in place.
*-n, \--nosave*::
@@ -267,26 +317,26 @@ linkman:pacman.conf[5].
view all groups and their members.
*-i, \--info*::
Display dependency and other information for a given package. This will
search through all repositories for a matching package.
Display information on a given sync database package. Passing two '\--info'
or '-i' flags will also display those packages in all repositories that
depend on this package.
*-l, \--list*::
List all packages in the specified repositories. Multiple repositories
can be specified on the command line.
*-p, \--print-uris*::
Print out URIs for each package that will be installed, including any
dependencies yet to be installed. These can be piped to a file and
downloaded at a later time, using a program like wget.
*-q, \--quiet*::
Show less information for certain sync operations. Search will only show
package names and not version, group, and description information; list
will only show package names and omit databases and versions.
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 +344,12 @@ 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. Additional targets can also be specified manually, so
that '-Su foo' will do a system upgrade and install/upgrade the foo package in
the same operation.
*-w, \--downloadonly*::
Retrieve all packages from the server, but do not install/upgrade
@@ -321,6 +376,14 @@ linkman:pacman.conf[5].
separating them with a comma.
Upgrade Options[[UO]]
--------------------
*-k, \--dbonly*::
Adds the database entries for the specified packages but do not install any
of the files. On an upgrade operation, the existing package and all files
will be removed and the database entry for the new package will be added.
Handling Config Files[[HCF]]
----------------------------
Pacman uses the same logic as rpm to determine action against files that are

View File

@@ -25,6 +25,7 @@ which defines global options.
Example
-------
--------
#
# pacman.conf
@@ -85,8 +86,11 @@ Options
*SyncFirst =* package ...::
Instructs pacman to check for newer version of these packages before any
sync operation. The user will have the choice to either cancel the current
operation and upgrade these packages first or go on with the current operation.
This option is typically used with the 'pacman' package.
operation and upgrade these packages first or go on with the current
operation. This option is typically used with the 'pacman' package.
*NOTE*: when a `SyncFirst` transaction takes place, no command line flags
(e.g. '\--force') are honored. If this is not ideal, disabling `SyncFirst`
and performing a manual sync of the involved packages may be required.
*IgnoreGroup =* group ...::
Instructs pacman to ignore any upgrades for all packages in this
@@ -94,7 +98,16 @@ Options
*Include =* path::
Include another config file. This file can include repositories or
general configuration options.
general configuration options. Wildcards in the specified paths will get
expanded based on linkman:glob[7] rules.
*Architecture =* auto | i686 | x86_64 | ...::
If set, pacman will only allow installation of packages of the given
architecture (e.g. 'i686', 'x86_64', etc). The special value 'auto' will
use the system architecture, provided by in ``uname -m''. If unset, no
architecture checks are made. *NOTE*: packages with the special
architecture 'any' can always be installed, as they are meant to be
architecture independent.
*XferCommand =* /path/to/command %u::
If set, an external program will be used to download all remote files.
@@ -107,12 +120,10 @@ Options
http/ftp support, or need the more advanced proxy support that comes with
utilities like wget.
*NoPassiveFtp*::
Disables passive ftp connections when downloading packages. (aka Active Mode)
*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 +154,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,
@@ -174,10 +185,12 @@ Include = /etc/pacman.d/mirrorlist
During parsing, pacman will define the `$repo` variable to the name of the
current section. This is often utilized in files specified using the 'Include'
directive so all repositories can use the same mirrorfile.
directive so all repositories can use the same mirrorfile. pacman also defines
the `$arch` variable to the value of `Architecture`, so the same mirrorfile can
even be used for different architectures.
--------
Server = ftp://ftp.archlinux.org/$repo/os/arch
Server = ftp://ftp.archlinux.org/$repo/os/$arch
--------
The order of repositories in the configuration files matters; repositories

View File

@@ -6,14 +6,8 @@ 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> <package1> [<package2> ...]

View File

@@ -13,6 +13,9 @@ edit = sed \
-e 's|@PACKAGE_NAME[@]|$(PACKAGE_NAME)|g' \
-e 's|@PKGEXT[@]|$(PKGEXT)|g' \
-e 's|@SRCEXT[@]|$(SRCEXT)|g' \
-e 's|@STRIP_BINARIES[@]|$(STRIP_BINARIES)|g' \
-e 's|@STRIP_SHARED[@]|$(STRIP_SHARED)|g' \
-e 's|@STRIP_STATIC[@]|$(STRIP_STATIC)|g' \
-e 's|@CARCH[@]|$(CARCH)|g' \
-e 's|@CHOST[@]|$(CHOST)|g' \
-e 's|@ARCHSWITCH[@]|$(ARCHSWITCH)|g' \
@@ -20,9 +23,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

@@ -26,11 +26,12 @@ DLAGENTS=('ftp::/usr/bin/wget -c --passive-ftp -t 3 --waitretry=3 -O %o %u'
CARCH="@CARCH@"
CHOST="@CHOST@"
#-- Exclusive: will only run on @CARCHFLAGS@
#-- Exclusive: will only run on @CARCH@
# -march (or -mcpu) builds exclusively for an architecture
# -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,34 @@ 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)
#-- Options to be used when stripping binaries. See `man strip' for details.
STRIP_BINARIES="@STRIP_BINARIES@"
#-- Options to be used when stripping shared libraries. See `man strip' for details.
STRIP_SHARED="@STRIP_SHARED@"
#-- Options to be used when stripping static libraries. See `man strip' for details.
STRIP_STATIC="@STRIP_STATIC@"
#-- 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
@@ -86,20 +97,19 @@ STRIP_DIRS=(bin lib sbin usr/{bin,lib,sbin,local/{bin,lib,sbin}} opt/*/{bin,lib,
#PKGDEST=/home/packages
#-- Source cache: specify a fixed directory where source files will be cached
#SRCDEST=/home/sources
#-- Source packages: specify a fixed directory where all src packages will be placed
#SRCPKGDEST=/home/srcpackages
#-- Packager: name/email of the person or organization building packages
#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

@@ -17,8 +17,9 @@ HoldPkg = pacman glibc
# If upgrades are available for these packages they will be asked for first
SyncFirst = pacman
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
#XferCommand = /usr/bin/curl %u > %o
#XferCommand = /usr/bin/curl -C - %u > %o
#CleanMethod = KeepInstalled
Architecture = auto
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
@@ -28,7 +29,6 @@ SyncFirst = pacman
#NoExtract =
# Misc options (all disabled by default)
#NoPassiveFtp
#UseSyslog
#ShowSize
#UseDelta
@@ -42,6 +42,7 @@ SyncFirst = pacman
# - repositories listed first will take precedence when packages
# have identical names, regardless of version number
# - URLs will have $repo replaced by the name of the current repo
# - URLs will have $arch replaced by the name of the architecture
#
# Repository entries are of the format:
# [repo-name]
@@ -57,7 +58,7 @@ SyncFirst = pacman
# servers immediately after the header and they will be used before the
# default mirrors.
#[core]
#Server = ftp://ftp.example.com/foobar/$repo/os/i686/
#Server = ftp://ftp.example.com/foobar/$repo/os/$arch/
# The file referenced here should contain a list of 'Server = ' lines.
#Include = @sysconfdir@/pacman.d/mirrorlist

View File

@@ -43,7 +43,8 @@ libalpm_la_SOURCES = \
remove.h remove.c \
sync.h sync.c \
trans.h trans.c \
util.h util.c
util.h util.c \
version.c
libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
libalpm_la_LIBADD = $(LTLIBINTL)

View File

@@ -1,7 +1,8 @@
/*
* add.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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
@@ -49,21 +50,30 @@
#include "remove.h"
#include "handle.h"
int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
/** Add a file target to the transaction.
* @param target the name of the file target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_add_target(char *target)
{
pmpkg_t *pkg = NULL;
const char *pkgname, *pkgver;
alpm_list_t *i;
pmtrans_t *trans;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
trans = handle->trans;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(name != NULL && strlen(name) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
_alpm_log(PM_LOG_DEBUG, "loading target '%s'\n", name);
_alpm_log(PM_LOG_DEBUG, "loading target '%s'\n", target);
if(alpm_pkg_load(name, 1, &pkg) != 0) {
if(alpm_pkg_load(target, 1, &pkg) != 0) {
goto error;
}
pkgname = alpm_pkg_get_name(pkg);
@@ -71,17 +81,19 @@ int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
/* check if an older version of said package is already in transaction
* packages. if so, replace it in the list */
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
pmpkg_t *transpkg = i->data;
if(strcmp(transpkg->name, pkgname) == 0) {
if(alpm_pkg_vercmp(transpkg->version, pkgver) < 0) {
_alpm_log(PM_LOG_WARNING, _("replacing older version %s-%s by %s in target list\n"),
transpkg->name, transpkg->version, pkgver);
_alpm_log(PM_LOG_WARNING,
_("replacing older version %s-%s by %s in target list\n"),
transpkg->name, transpkg->version, pkgver);
_alpm_pkg_free(i->data);
i->data = pkg;
} else {
_alpm_log(PM_LOG_WARNING, _("skipping %s-%s because newer version %s is in the target list\n"),
pkgname, pkgver, transpkg->version);
_alpm_log(PM_LOG_WARNING,
_("skipping %s-%s because newer version %s is in target list\n"),
pkgname, pkgver, transpkg->version);
_alpm_pkg_free(pkg);
}
return(0);
@@ -89,7 +101,7 @@ int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
}
/* add the package to the transaction */
trans->packages = alpm_list_add(trans->packages, pkg);
trans->add = alpm_list_add(trans->add, pkg);
return(0);
@@ -98,176 +110,6 @@ error:
return(-1);
}
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
{
alpm_list_t *lp = NULL;
ALPM_LOG_FUNC;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
/* Check dependencies
*/
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
/* look for unsatisfied dependencies */
_alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
lp = alpm_checkdeps(db, 1, NULL, trans->packages);
if(lp != NULL) {
if(data) {
*data = lp;
} else {
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(lp);
}
RET_ERR(PM_ERR_UNSATISFIED_DEPS, -1);
}
/* no unsatisfied deps, so look for conflicts */
_alpm_log(PM_LOG_DEBUG, "looking for conflicts\n");
alpm_list_t *inner = _alpm_innerconflicts(trans->packages);
alpm_list_t *outer = _alpm_outerconflicts(db, trans->packages);
lp = alpm_list_join(inner, outer);
/* TODO : factorize the conflict resolving code from sync.c to use it here (FS#3492) */
if(lp != NULL) {
if(data) {
*data = lp;
} else {
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_conflict_free);
alpm_list_free(lp);
}
if(inner) {
_alpm_log(PM_LOG_ERROR, _("conflicting packages were found in the target list\n"));
_alpm_log(PM_LOG_ERROR, _("you cannot install two conflicting packages at the same time\n"));
}
if(outer) {
_alpm_log(PM_LOG_ERROR, _("replacing packages with -U is not supported yet\n"));
_alpm_log(PM_LOG_ERROR, _("you can replace packages manually using -Rd and -U\n"));
}
RET_ERR(PM_ERR_CONFLICTING_DEPS, -1);
}
/* re-order w.r.t. dependencies */
_alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
lp = _alpm_sortbydeps(trans->packages, 0);
/* free the old alltargs */
alpm_list_free(trans->packages);
trans->packages = lp;
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_DONE, NULL, NULL);
}
/* Check for file conflicts */
if(!(trans->flags & PM_TRANS_FLAG_FORCE)) {
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);
if(lp != NULL) {
if(data) {
*data = lp;
} else {
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_fileconflict_free);
alpm_list_free(lp);
}
RET_ERR(PM_ERR_FILE_CONFLICTS, -1);
}
EVENT(trans, PM_TRANS_EVT_FILECONFLICTS_DONE, NULL, NULL);
}
return(0);
}
static int upgrade_remove(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans, pmdb_t *db) {
/* this is kinda odd. If the old package exists, at this point we make a
* NEW transaction, unrelated to handle->trans, and instantiate a "remove"
* with the type PM_TRANS_TYPE_REMOVEUPGRADE. TODO: kill this weird
* behavior. */
pmtrans_t *tr = _alpm_trans_new();
ALPM_LOG_FUNC;
_alpm_log(PM_LOG_DEBUG, "removing old package first (%s-%s)\n",
oldpkg->name, oldpkg->version);
if(!tr) {
RET_ERR(PM_ERR_TRANS_ABORT, -1);
}
if(_alpm_trans_init(tr, PM_TRANS_TYPE_REMOVEUPGRADE, trans->flags,
NULL, NULL, NULL) == -1) {
_alpm_trans_free(tr);
tr = NULL;
RET_ERR(PM_ERR_TRANS_ABORT, -1);
}
if(_alpm_remove_loadtarget(tr, db, newpkg->name) == -1) {
_alpm_trans_free(tr);
tr = NULL;
RET_ERR(PM_ERR_TRANS_ABORT, -1);
}
/* copy the remove skiplist over */
tr->skip_remove = alpm_list_strdup(trans->skip_remove);
const alpm_list_t *b;
/* Add files in the NEW backup array to the NoUpgrade array
* so this removal operation doesn't kill them */
alpm_list_t *old_noupgrade = alpm_list_strdup(handle->noupgrade);
/* old package backup list */
alpm_list_t *filelist = alpm_pkg_get_files(newpkg);
for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
char *backup = _alpm_backup_file(b->data);
/* safety check (fix the upgrade026 pactest) */
if(!alpm_list_find_str(filelist, backup)) {
FREE(backup);
continue;
}
_alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
backup);
handle->noupgrade = alpm_list_add(handle->noupgrade,
backup);
}
/* TODO: we could also add files in the OLD backup array, but this would
* change the backup handling behavior, and break several pactests, and we
* can't do this just before 3.1 release.
* The unlink_file function in remove.c would also need to be reviewed. */
#if 0
/* new package backup list */
for(b = alpm_pkg_get_backup(oldpkg); b; b = b->next) {
char *backup = _alpm_backup_file(b->data);
/* make sure we don't add duplicate entries */
if(!alpm_list_find_ptr(handle->noupgrade, backup)) {
_alpm_log(PM_LOG_DEBUG, "adding %s to the NoUpgrade array temporarily\n",
backup);
handle->noupgrade = alpm_list_add(handle->noupgrade,
backup);
}
}
#endif
int ret = _alpm_remove_commit(tr, db);
_alpm_trans_free(tr);
tr = NULL;
/* restore our "NoUpgrade" list to previous state */
FREELIST(handle->noupgrade);
handle->noupgrade = old_noupgrade;
if(ret == -1) {
RET_ERR(PM_ERR_TRANS_ABORT, -1);
}
return(0);
}
static int extract_single_file(struct archive *archive,
struct archive_entry *entry, pmpkg_t *newpkg, pmpkg_t *oldpkg,
pmtrans_t *trans, pmdb_t *db)
@@ -290,14 +132,14 @@ static int extract_single_file(struct archive *archive,
if(strcmp(entryname, ".INSTALL") == 0) {
/* the install script goes inside the db */
snprintf(filename, PATH_MAX, "%s%s-%s/install", db->path,
newpkg->name, newpkg->version);
archive_entry_set_mode(entry, 0644);
snprintf(filename, PATH_MAX, "%s%s-%s/install",
_alpm_db_path(db), newpkg->name, newpkg->version);
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);
snprintf(filename, PATH_MAX, "%s%s-%s/changelog",
_alpm_db_path(db), newpkg->name, newpkg->version);
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 +194,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 */
mode_t 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 +233,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 +294,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 +323,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 +349,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 +459,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);
@@ -642,25 +483,29 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
ALPM_LOG_FUNC;
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
alpm_pkg_get_name(newpkg), alpm_pkg_get_version(newpkg));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install",
_alpm_db_path(db), alpm_pkg_get_name(newpkg),
alpm_pkg_get_version(newpkg));
/* see if this is an upgrade. if so, remove the old package first */
pmpkg_t *local = _alpm_db_get_pkgfromcache(db, newpkg->name);
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)) {
@@ -690,8 +535,9 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
if(oldpkg) {
/* set up fake remove transaction */
int ret = upgrade_remove(oldpkg, newpkg, trans, db);
if(ret != 0) {
if(_alpm_upgraderemove_package(oldpkg, newpkg, trans) == -1) {
pm_errno = PM_ERR_TRANS_ABORT;
ret = -1;
goto cleanup;
}
}
@@ -857,7 +703,7 @@ cleanup:
return(ret);
}
int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
int _alpm_upgrade_packages(pmtrans_t *trans, pmdb_t *db)
{
int pkg_count, pkg_current;
alpm_list_t *targ;
@@ -867,15 +713,15 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(trans->packages == NULL) {
if(trans->add == NULL) {
return(0);
}
pkg_count = alpm_list_count(trans->packages);
pkg_count = alpm_list_count(trans->add);
pkg_current = 1;
/* loop through our package list adding/upgrading one at a time */
for(targ = trans->packages; targ; targ = targ->next) {
for(targ = trans->add; targ; targ = targ->next) {
if(handle->trans->state == STATE_INTERRUPTED) {
return(0);
}
@@ -886,7 +732,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-2010 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
@@ -23,9 +24,7 @@
#include "alpm_list.h"
#include "trans.h"
int _alpm_add_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name);
int _alpm_add_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data);
int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db);
int _alpm_upgrade_packages(pmtrans_t *trans, pmdb_t *db);
#endif /* _ALPM_ADD_H */

View File

@@ -1,7 +1,8 @@
/*
* alpm.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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>
@@ -70,6 +71,7 @@ int SYMEXPORT alpm_release(void)
}
_alpm_handle_free(handle);
handle = NULL;
return(0);
}

View File

@@ -1,7 +1,8 @@
/*
* alpm.h
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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;
@@ -67,10 +67,10 @@ const char *alpm_version(void);
/* Levels */
typedef enum _pmloglevel_t {
PM_LOG_ERROR = 0x01,
PM_LOG_WARNING = 0x02,
PM_LOG_DEBUG = 0x04,
PM_LOG_FUNCTION = 0x08
PM_LOG_ERROR = 1,
PM_LOG_WARNING = (1 << 1),
PM_LOG_DEBUG = (1 << 2),
PM_LOG_FUNCTION = (1 << 3)
} pmloglevel_t;
typedef void (*alpm_cb_log)(pmloglevel_t, char *, va_list);
@@ -83,6 +83,15 @@ 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 force whether to force an update, even if the file is the same
* @return 0 on success, 1 if the file exists and is identical, -1 on
* error.
*/
typedef int (*alpm_cb_fetch)(const char *url, const char *localpath,
int force);
/*
* Options
@@ -94,6 +103,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);
@@ -114,8 +126,8 @@ int alpm_option_set_logfile(const char *logfile);
const char *alpm_option_get_lockfile();
/* no set_lockfile, path is determined from dbpath */
unsigned short alpm_option_get_usesyslog();
void alpm_option_set_usesyslog(unsigned short usesyslog);
int alpm_option_get_usesyslog();
void alpm_option_set_usesyslog(int usesyslog);
alpm_list_t *alpm_option_get_noupgrades();
void alpm_option_add_noupgrade(const char *pkg);
@@ -132,26 +144,29 @@ 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);
const char *alpm_option_get_arch();
void alpm_option_set_arch(const char *arch);
unsigned short alpm_option_get_nopassiveftp();
void alpm_option_set_nopassiveftp(unsigned short nopasv);
void alpm_option_set_usedelta(unsigned short usedelta);
int alpm_option_get_usedelta();
void alpm_option_set_usedelta(int usedelta);
pmdb_t *alpm_option_get_localdb();
alpm_list_t *alpm_option_get_syncdbs();
/*
* Install reasons -- ie, why the package was installed
*/
typedef enum _pmpkgreason_t {
PM_PKG_REASON_EXPLICIT = 0, /* explicitly requested by the user */
PM_PKG_REASON_DEPEND = 1 /* installed as a dependency for another package */
} pmpkgreason_t;
/*
* Databases
*/
@@ -170,11 +185,12 @@ 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);
int alpm_db_set_pkgreason(pmdb_t *db, const char *name, pmpkgreason_t reason);
/*
* Packages
@@ -182,13 +198,7 @@ alpm_list_t *alpm_db_search(pmdb_t *db, const alpm_list_t* needles);
/* Info parameters */
/* reasons -- ie, why the package was installed */
typedef enum _pmpkgreason_t {
PM_PKG_REASON_EXPLICIT = 0, /* explicitly requested by the user */
PM_PKG_REASON_DEPEND = 1 /* installed as a dependency for another package */
} pmpkgreason_t;
int alpm_pkg_load(const char *filename, unsigned short full, pmpkg_t **pkg);
int alpm_pkg_load(const char *filename, int full, pmpkg_t **pkg);
int alpm_pkg_free(pmpkg_t *pkg);
int alpm_pkg_checkmd5sum(pmpkg_t *pkg);
char *alpm_fetch_pkgurl(const char *url);
@@ -218,24 +228,24 @@ 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);
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);
/*int alpm_pkg_changelog_feof(const pmpkg_t *pkg, void *fp);*/
int alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp);
unsigned short alpm_pkg_has_scriptlet(pmpkg_t *pkg);
unsigned short alpm_pkg_has_force(pmpkg_t *pkg);
int alpm_pkg_has_scriptlet(pmpkg_t *pkg);
int alpm_pkg_has_force(pmpkg_t *pkg);
off_t alpm_pkg_download_size(pmpkg_t *newpkg);
alpm_list_t *alpm_pkg_unused_deltas(pmpkg_t *pkg);
/*
* Deltas
*/
const char *alpm_delta_get_from(pmdelta_t *delta);
const char *alpm_delta_get_from_md5sum(pmdelta_t *delta);
const char *alpm_delta_get_to(pmdelta_t *delta);
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,43 +260,33 @@ 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
*/
/* Types */
typedef enum _pmtranstype_t {
PM_TRANS_TYPE_UPGRADE = 1,
PM_TRANS_TYPE_REMOVE,
PM_TRANS_TYPE_REMOVEUPGRADE,
PM_TRANS_TYPE_SYNC
} pmtranstype_t;
/* Flags */
typedef enum _pmtransflag_t {
PM_TRANS_FLAG_NODEPS = 0x01,
PM_TRANS_FLAG_FORCE = 0x02,
PM_TRANS_FLAG_NOSAVE = 0x04,
/* 0x08 flag can go here */
PM_TRANS_FLAG_CASCADE = 0x10,
PM_TRANS_FLAG_RECURSE = 0x20,
PM_TRANS_FLAG_DBONLY = 0x40,
/* 0x80 flag can go here */
PM_TRANS_FLAG_ALLDEPS = 0x100,
PM_TRANS_FLAG_DOWNLOADONLY = 0x200,
PM_TRANS_FLAG_NOSCRIPTLET = 0x400,
PM_TRANS_FLAG_NOCONFLICTS = 0x800,
PM_TRANS_FLAG_PRINTURIS = 0x1000,
PM_TRANS_FLAG_NEEDED = 0x2000,
PM_TRANS_FLAG_ALLEXPLICIT = 0x4000,
PM_TRANS_FLAG_UNNEEDED = 0x8000,
PM_TRANS_FLAG_RECURSEALL = 0x10000
PM_TRANS_FLAG_NODEPS = 1,
PM_TRANS_FLAG_FORCE = (1 << 1),
PM_TRANS_FLAG_NOSAVE = (1 << 2),
/* (1 << 3) flag can go here */
PM_TRANS_FLAG_CASCADE = (1 << 4),
PM_TRANS_FLAG_RECURSE = (1 << 5),
PM_TRANS_FLAG_DBONLY = (1 << 6),
/* (1 << 7) flag can go here */
PM_TRANS_FLAG_ALLDEPS = (1 << 8),
PM_TRANS_FLAG_DOWNLOADONLY = (1 << 9),
PM_TRANS_FLAG_NOSCRIPTLET = (1 << 10),
PM_TRANS_FLAG_NOCONFLICTS = (1 << 11),
/* (1 << 12) flag can go here */
PM_TRANS_FLAG_NEEDED = (1 << 13),
PM_TRANS_FLAG_ALLEXPLICIT = (1 << 14),
PM_TRANS_FLAG_UNNEEDED = (1 << 15),
PM_TRANS_FLAG_RECURSEALL = (1 << 16),
PM_TRANS_FLAG_NOLOCK = (1 << 17)
} pmtransflag_t;
/**
@@ -364,10 +364,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.
*/
@@ -377,13 +373,12 @@ typedef enum _pmtransevt_t {
/* Transaction Conversations (ie, questions) */
typedef enum _pmtransconv_t {
PM_TRANS_CONV_INSTALL_IGNOREPKG = 0x01,
PM_TRANS_CONV_REPLACE_PKG = 0x02,
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_INSTALL_IGNOREPKG = 1,
PM_TRANS_CONV_REPLACE_PKG = (1 << 1),
PM_TRANS_CONV_CONFLICT_PKG = (1 << 2),
PM_TRANS_CONV_CORRUPTED_PKG = (1 << 3),
PM_TRANS_CONV_LOCAL_NEWER = (1 << 4),
PM_TRANS_CONV_REMOVE_PKGS = (1 << 5),
} pmtransconv_t;
/* Transaction Progress */
@@ -404,19 +399,23 @@ typedef void (*alpm_trans_cb_conv)(pmtransconv_t, void *, void *,
/* Transaction Progress callback */
typedef void (*alpm_trans_cb_progress)(pmtransprog_t, const char *, int, int, int);
pmtranstype_t alpm_trans_get_type();
unsigned int alpm_trans_get_flags();
alpm_list_t * alpm_trans_get_pkgs();
int alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
int alpm_trans_get_flags();
alpm_list_t * alpm_trans_get_add();
alpm_list_t * alpm_trans_get_remove();
int alpm_trans_init(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_addtarget(char *target);
int alpm_trans_prepare(alpm_list_t **data);
int alpm_trans_commit(alpm_list_t **data);
int alpm_trans_interrupt(void);
int alpm_trans_release(void);
int alpm_sync_sysupgrade(int enable_downgrade);
int alpm_sync_target(char *target);
int alpm_sync_dbtarget(char *db, char *target);
int alpm_add_target(char *target);
int alpm_remove_target(char *target);
/*
* Dependencies and conflicts
*/
@@ -431,7 +430,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,15 +438,16 @@ 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);
const char *alpm_conflict_get_reason(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 +468,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 +494,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 +503,29 @@ 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_INVALID_ARCH,
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-2010 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
@@ -308,6 +309,7 @@ alpm_list_t SYMEXPORT *alpm_list_remove(alpm_list_t *haystack, const void *needl
while(i) {
if(i->data == NULL) {
i = i->next;
continue;
}
tmp = i->next;
@@ -614,7 +616,7 @@ static int ptr_cmp(const void *p, const void *q)
/**
* @brief Find an item in a list.
*
* Search for the item whos data matches that of the `needle`.
* Search for the item whose data matches that of the `needle`.
*
* @param needle the data to search for (== comparison)
* @param haystack the list
@@ -642,11 +644,65 @@ char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack,
}
/**
* @brief Find the items in list `lhs` that are not present in list `rhs`.
* @brief Find the differences between list `left` and list `right`
*
* Entries are not duplicated. Operation is O(m*n). The first list is stepped
* through one node at a time, and for each node in the first list, each node
* in the second list is compared to it.
* The two lists must be sorted. Items only in list `left` are added to the
* `onlyleft` list. Items only in list `right` are added to the `onlyright`
* list.
*
* @param left the first list
* @param right the second list
* @param fn the comparison function
* @param onlyleft pointer to the first result list
* @param onlyright pointer to the second result list
*
*/
void SYMEXPORT alpm_list_diff_sorted(const alpm_list_t *left,
const alpm_list_t *right, alpm_list_fn_cmp fn,
alpm_list_t **onlyleft, alpm_list_t **onlyright)
{
const alpm_list_t *l = left;
const alpm_list_t *r = right;
if(!onlyleft && !onlyright) {
return;
}
while (l != NULL && r != NULL) {
int cmp = fn(l->data, r->data);
if(cmp < 0) {
if(onlyleft) {
*onlyleft = alpm_list_add(*onlyleft, l->data);
}
l = l->next;
}
else if(cmp > 0) {
if(onlyright) {
*onlyright = alpm_list_add(*onlyright, r->data);
}
r = r->next;
} else {
l = l->next;
r = r->next;
}
}
while (l != NULL) {
if(onlyleft) {
*onlyleft = alpm_list_add(*onlyleft, l->data);
}
l = l->next;
}
while (r != NULL) {
if(onlyright) {
*onlyright = alpm_list_add(*onlyright, r->data);
}
r = r->next;
}
}
/**
* @brief Find the items in list `lhs` that are not present in list `rhs`.
*
* @param lhs the first list
* @param rhs the second list
@@ -657,21 +713,18 @@ char SYMEXPORT *alpm_list_find_str(const alpm_list_t *haystack,
alpm_list_t SYMEXPORT *alpm_list_diff(const alpm_list_t *lhs,
const alpm_list_t *rhs, alpm_list_fn_cmp fn)
{
const alpm_list_t *i, *j;
alpm_list_t *left, *right;
alpm_list_t *ret = NULL;
for(i = lhs; i; i = i->next) {
int found = 0;
for(j = rhs; j; j = j->next) {
if(fn(i->data, j->data) == 0) {
found = 1;
break;
}
}
if(!found) {
ret = alpm_list_add(ret, i->data);
}
}
left = alpm_list_copy(lhs);
left = alpm_list_msort(left, alpm_list_count(left), fn);
right = alpm_list_copy(rhs);
right = alpm_list_msort(right, alpm_list_count(right), fn);
alpm_list_diff_sorted(left, right, fn, &ret, NULL);
alpm_list_free(left);
alpm_list_free(right);
return(ret);
}

View File

@@ -1,7 +1,8 @@
/*
* alpm_list.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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
@@ -77,6 +78,8 @@ void *alpm_list_find(const alpm_list_t *haystack, const void *needle, alpm_list_
void *alpm_list_find_ptr(const alpm_list_t *haystack, const void *needle);
char *alpm_list_find_str(const alpm_list_t *haystack, const char *needle);
alpm_list_t *alpm_list_diff(const alpm_list_t *lhs, const alpm_list_t *rhs, alpm_list_fn_cmp fn);
void alpm_list_diff_sorted(const alpm_list_t *left, const alpm_list_t *right,
alpm_list_fn_cmp fn, alpm_list_t **onlyleft, alpm_list_t **onlyright);
#ifdef __cplusplus
}

View File

@@ -1,6 +1,7 @@
/*
* backup.c
*
* Copyright (c) 2006-2010 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>
@@ -32,7 +33,7 @@
#include "util.h"
/* split a backup string "file\thash" into two strings : file and hash */
int _alpm_backup_split(const char *string, char **file, char **hash)
static int backup_split(const char *string, char **file, char **hash)
{
char *str = strdup(string);
char *ptr;
@@ -64,14 +65,14 @@ int _alpm_backup_split(const char *string, char **file, char **hash)
char *_alpm_backup_file(const char *string)
{
char *file = NULL;
_alpm_backup_split(string, &file, NULL);
backup_split(string, &file, NULL);
return(file);
}
char *_alpm_backup_hash(const char *string)
{
char *hash = NULL;
_alpm_backup_split(string, NULL, &hash);
backup_split(string, NULL, &hash);
return(hash);
}
@@ -94,7 +95,7 @@ char *_alpm_needbackup(const char *file, const alpm_list_t *backup)
char *hash = NULL;
/* no hash found */
if(!_alpm_backup_split((char *)lp->data, &filename, &hash)) {
if(!backup_split((char *)lp->data, &filename, &hash)) {
FREE(filename);
continue;
}

View File

@@ -1,7 +1,8 @@
/*
* backup.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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

@@ -25,7 +25,7 @@
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdint.h> /* uintmax_t, intmax_t */
#include <stdint.h> /* intmax_t */
#include <sys/stat.h>
#include <dirent.h>
#include <ctype.h>
@@ -33,6 +33,10 @@
#include <limits.h> /* PATH_MAX */
#include <locale.h> /* setlocale */
/* libarchive */
#include <archive.h>
#include <archive_entry.h>
/* libalpm */
#include "db.h"
#include "alpm_list.h"
@@ -47,73 +51,155 @@
#include "dload.h"
/*
* Return the last update time as number of seconds from the epoch.
* Returns 0 if the value is unknown or can't be read.
*/
static time_t getlastupdate(const pmdb_t *db)
static int checkdbdir(pmdb_t *db)
{
FILE *fp;
char *file;
time_t ret = 0;
struct stat buf;
const char *path = _alpm_db_path(db);
ALPM_LOG_FUNC;
if(db == NULL) {
return(ret);
}
/* db->path + '.lastupdate' + NULL */
MALLOC(file, strlen(db->path) + 12, RET_ERR(PM_ERR_MEMORY, ret));
sprintf(file, "%s.lastupdate", db->path);
/* get the last update time, if it's there */
if((fp = fopen(file, "r")) == NULL) {
free(file);
return(ret);
} else {
char line[64];
if(fgets(line, sizeof(line), fp)) {
ret = atol(line);
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 invalid database: %s\n"), path);
if(unlink(path) != 0 || _alpm_makepath(path) != 0) {
RET_ERR(PM_ERR_SYSTEM, -1);
}
}
fclose(fp);
free(file);
return(ret);
return(0);
}
/*
* writes the dbpath/.lastupdate file with the value in time
*/
static int setlastupdate(const pmdb_t *db, time_t time)
/* create list of directories in db */
static int dirlist_from_tar(const char *archive, alpm_list_t **dirlist)
{
FILE *fp;
char *file;
int ret = 0;
struct archive *_archive;
struct archive_entry *entry;
ALPM_LOG_FUNC;
if((_archive = archive_read_new()) == NULL)
RET_ERR(PM_ERR_LIBARCHIVE, -1);
if(db == NULL || time == 0) {
return(-1);
archive_read_support_compression_all(_archive);
archive_read_support_format_all(_archive);
if(archive_read_open_filename(_archive, archive,
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);
}
/* db->path + '.lastupdate' + NULL */
MALLOC(file, strlen(db->path) + 12, RET_ERR(PM_ERR_MEMORY, ret));
sprintf(file, "%s.lastupdate", db->path);
while(archive_read_next_header(_archive, &entry) == ARCHIVE_OK) {
const struct stat *st;
const char *entryname; /* the name of the file in the archive */
if((fp = fopen(file, "w")) == NULL) {
free(file);
return(-1);
st = archive_entry_stat(entry);
entryname = archive_entry_pathname(entry);
if(S_ISDIR(st->st_mode)) {
char *name = strdup(entryname);
*dirlist = alpm_list_add(*dirlist, name);
}
}
if(fprintf(fp, "%ju", (uintmax_t)time) <= 0) {
ret = -1;
archive_read_finish(_archive);
*dirlist = alpm_list_msort(*dirlist, alpm_list_count(*dirlist), _alpm_str_cmp);
return(0);
}
/* create list of directories in db */
static int dirlist_from_fs(const char *syncdbpath, alpm_list_t **dirlist)
{
DIR *dbdir;
struct dirent *ent = NULL;
struct stat sbuf;
char path[PATH_MAX];
dbdir = opendir(syncdbpath);
if (dbdir != NULL) {
while((ent = readdir(dbdir)) != NULL) {
char *name = ent->d_name;
size_t len;
char *entry;
if(strcmp(name, ".") == 0 || strcmp(name, "..") == 0) {
continue;
}
/* stat the entry, make sure it's a directory */
snprintf(path, PATH_MAX, "%s%s", syncdbpath, name);
if(stat(path, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
continue;
}
len = strlen(name);
MALLOC(entry, len + 2, RET_ERR(PM_ERR_MEMORY, -1));
strcpy(entry, name);
entry[len] = '/';
entry[len+1] = '\0';
*dirlist = alpm_list_add(*dirlist, entry);
}
closedir(dbdir);
}
fclose(fp);
free(file);
return(ret);
*dirlist = alpm_list_msort(*dirlist, alpm_list_count(*dirlist), _alpm_str_cmp);
return(0);
}
/* remove old directories from dbdir */
static int remove_olddir(const char *syncdbpath, alpm_list_t *dirlist)
{
alpm_list_t *i;
for (i = dirlist; i; i = i->next) {
const char *name = i->data;
char *dbdir;
size_t len = strlen(syncdbpath) + strlen(name) + 2;
MALLOC(dbdir, len, RET_ERR(PM_ERR_MEMORY, -1));
snprintf(dbdir, len, "%s%s", syncdbpath, name);
_alpm_log(PM_LOG_DEBUG, "removing: %s\n", dbdir);
if(_alpm_rmrf(dbdir) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not remove database directory %s\n"), dbdir);
free(dbdir);
RET_ERR(PM_ERR_DB_REMOVE, -1);
}
free(dbdir);
}
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(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,12 +208,11 @@ static 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;
const char *dbpath, *syncdbpath;
alpm_list_t *newdirlist = NULL, *olddirlist = NULL;
alpm_list_t *onlynew = NULL, *onlyold = NULL;
size_t len;
int ret;
ALPM_LOG_FUNC;
@@ -141,109 +226,85 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
*/
ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(handle->trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
ASSERT(handle->trans->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
if(!alpm_list_find_ptr(handle->dbs_sync, db)) {
RET_ERR(PM_ERR_DB_NOT_FOUND, -1);
}
if(!force) {
/* get the lastupdate time */
lastupdate = getlastupdate(db);
if(lastupdate == 0) {
_alpm_log(PM_LOG_DEBUG, "failed to get lastupdate time for %s\n",
db->treename);
}
}
len = strlen(db->treename) + strlen(DBEXT) + 1;
MALLOC(dbfile, len, RET_ERR(PM_ERR_MEMORY, -1));
sprintf(dbfile, "%s" DBEXT, db->treename);
dbpath = alpm_option_get_dbpath();
ret = _alpm_download_single_file(dbfile, db->servers, dbpath,
lastupdate, &newmtime);
ret = _alpm_download_single_file(dbfile, db->servers, dbpath, force);
free(dbfile);
if(ret == 1) {
/* mtimes match, do nothing */
/* files match, do nothing */
pm_errno = 0;
return(1);
} else if(ret == -1) {
/* pm_errno was set by the download code */
_alpm_log(PM_LOG_DEBUG, "failed to sync db: %s\n", alpm_strerrorlast());
return(-1);
}
syncdbpath = _alpm_db_path(db);
/* form the path to the db location */
len = strlen(dbpath) + strlen(db->treename) + strlen(DBEXT) + 1;
MALLOC(dbfilepath, len, RET_ERR(PM_ERR_MEMORY, -1));
sprintf(dbfilepath, "%s%s" DBEXT, dbpath, db->treename);
if(force) {
/* if forcing update, remove the old dir and extract the db */
if(_alpm_rmrf(syncdbpath) != 0) {
_alpm_log(PM_LOG_ERROR, _("could not remove database %s\n"), db->treename);
RET_ERR(PM_ERR_DB_REMOVE, -1);
} else {
_alpm_log(PM_LOG_DEBUG, "database dir %s removed\n", _alpm_db_path(db));
}
} else {
/* remove the old dir */
_alpm_log(PM_LOG_DEBUG, "flushing database %s\n", db->path);
for(lp = _alpm_db_get_pkgcache(db); lp; lp = lp->next) {
pmpkg_t *pkg = lp->data;
if(pkg && _alpm_db_remove(db, pkg) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not remove database entry %s%s\n"),
db->treename, pkg->name);
RET_ERR(PM_ERR_DB_REMOVE, -1);
}
}
/* Cache needs to be rebuilt */
_alpm_db_free_pkgcache(db);
/* form the path to the db location */
len = strlen(dbpath) + strlen(db->treename) + strlen(DBEXT) + 1;
MALLOC(dbfilepath, len, RET_ERR(PM_ERR_MEMORY, -1));
sprintf(dbfilepath, "%s%s" DBEXT, dbpath, db->treename);
/* uncompress the sync database */
ret = _alpm_unpack(dbfilepath, db->path, NULL);
/* if not forcing, only remove and extract what is necessary */
ret = dirlist_from_tar(dbfilepath, &newdirlist);
if(ret) {
free(dbfilepath);
RET_ERR(PM_ERR_SYSTEM, -1);
goto cleanup;
}
ret = dirlist_from_fs(syncdbpath, &olddirlist);
if(ret) {
goto cleanup;
}
unlink(dbfilepath);
free(dbfilepath);
/* if we have a new mtime, set the DB last update value */
if(newmtime) {
_alpm_log(PM_LOG_DEBUG, "sync: new mtime for %s: %ju\n",
db->treename, (uintmax_t)newmtime);
setlastupdate(db, newmtime);
alpm_list_diff_sorted(olddirlist, newdirlist, _alpm_str_cmp, &onlyold, &onlynew);
ret = remove_olddir(syncdbpath, onlyold);
if(ret) {
goto cleanup;
}
}
/* Cache needs to be rebuilt */
_alpm_db_free_pkgcache(db);
checkdbdir(db);
ret = _alpm_unpack(dbfilepath, syncdbpath, onlynew, 0);
cleanup:
FREELIST(newdirlist);
FREELIST(olddirlist);
alpm_list_free(onlynew);
alpm_list_free(onlyold);
free(dbfilepath);
if(ret) {
RET_ERR(PM_ERR_SYSTEM, -1);
}
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 +351,19 @@ int _alpm_db_populate(pmdb_t *db)
struct dirent *ent = NULL;
struct stat sbuf;
char path[PATH_MAX];
const char *dbpath;
DIR *dbdir;
ALPM_LOG_FUNC;
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
rewinddir(db->handle);
while((ent = readdir(db->handle)) != NULL) {
dbpath = _alpm_db_path(db);
dbdir = opendir(dbpath);
if(dbdir == NULL) {
return(0);
}
while((ent = readdir(dbdir)) != NULL) {
const char *name = ent->d_name;
pmpkg_t *pkg;
@@ -304,13 +371,14 @@ int _alpm_db_populate(pmdb_t *db)
continue;
}
/* stat the entry, make sure it's a directory */
snprintf(path, PATH_MAX, "%s%s", db->path, name);
snprintf(path, PATH_MAX, "%s%s", dbpath, name);
if(stat(path, &sbuf) != 0 || !S_ISDIR(sbuf.st_mode)) {
continue;
}
pkg = _alpm_pkg_new();
if(pkg == NULL) {
closedir(dbdir);
return(-1);
}
/* split the db entry name */
@@ -321,6 +389,13 @@ int _alpm_db_populate(pmdb_t *db)
continue;
}
/* duplicated database entries are not allowed */
if(_alpm_pkg_find(db->pkgcache, pkg->name)) {
_alpm_log(PM_LOG_ERROR, _("duplicated database entry '%s'\n"), pkg->name);
_alpm_pkg_free(pkg);
continue;
}
/* explicitly read with only 'BASE' data, accessors will handle the rest */
if(_alpm_db_read(db, pkg, INFRQ_BASE) == -1) {
_alpm_log(PM_LOG_ERROR, _("corrupted database entry '%s'\n"), name);
@@ -336,6 +411,7 @@ int _alpm_db_populate(pmdb_t *db)
count++;
}
closedir(dbdir);
db->pkgcache = alpm_list_msort(db->pkgcache, count, _alpm_pkg_cmp);
return(count);
}
@@ -345,10 +421,12 @@ static char *get_pkgpath(pmdb_t *db, pmpkg_t *info)
{
size_t len;
char *pkgpath;
const char *dbpath;
len = strlen(db->path) + strlen(info->name) + strlen(info->version) + 3;
dbpath = _alpm_db_path(db);
len = strlen(dbpath) + strlen(info->name) + strlen(info->version) + 3;
MALLOC(pkgpath, len, RET_ERR(PM_ERR_MEMORY, NULL));
sprintf(pkgpath, "%s%s-%s/", db->path, info->name, info->version);
sprintf(pkgpath, "%s%s-%s/", dbpath, info->name, info->version);
return(pkgpath);
}
@@ -357,6 +435,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
FILE *fp = NULL;
char path[PATH_MAX];
char line[513];
int sline = sizeof(line)-1;
char *pkgpath = NULL;
ALPM_LOG_FUNC;
@@ -388,7 +467,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
info->name, inforeq);
/* clear out 'line', to be certain - and to make valgrind happy */
memset(line, 0, 513);
memset(line, 0, sline+1);
pkgpath = get_pkgpath(db, info);
@@ -412,7 +491,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
_alpm_strtrim(line);
if(strcmp(line, "%NAME%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
if(strcmp(_alpm_strtrim(line), info->name) != 0) {
@@ -420,7 +499,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
"mismatch on package %s\n"), db->treename, info->name);
}
} else if(strcmp(line, "%VERSION%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
if(strcmp(_alpm_strtrim(line), info->version) != 0) {
@@ -428,46 +507,46 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
"mismatch on package %s\n"), db->treename, info->name);
}
} else if(strcmp(line, "%FILENAME%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->filename, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%DESC%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->desc, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%GROUPS%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->groups = alpm_list_add(info->groups, linedup);
}
} else if(strcmp(line, "%URL%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->url, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%LICENSE%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->licenses = alpm_list_add(info->licenses, linedup);
}
} else if(strcmp(line, "%ARCH%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->arch, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%BUILDDATE%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
_alpm_strtrim(line);
char first = tolower(line[0]);
char first = tolower((unsigned char)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);
@@ -476,14 +555,14 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
info->builddate = atol(line);
}
} else if(strcmp(line, "%INSTALLDATE%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
_alpm_strtrim(line);
char first = tolower(line[0]);
char first = tolower((unsigned char)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);
@@ -492,12 +571,12 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
info->installdate = atol(line);
}
} else if(strcmp(line, "%PACKAGER%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->packager, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%REASON%") == 0) {
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
info->reason = (pmpkgreason_t)atol(_alpm_strtrim(line));
@@ -507,7 +586,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
* is currently only used in sync databases, and SIZE is
* only used in local databases.
*/
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
info->size = atol(_alpm_strtrim(line));
@@ -518,19 +597,19 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
} else if(strcmp(line, "%ISIZE%") == 0) {
/* ISIZE (installed size) tag only appears in sync repositories,
* not the local one. */
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
info->isize = atol(_alpm_strtrim(line));
} else if(strcmp(line, "%MD5SUM%") == 0) {
/* MD5SUM tag only appears in sync repositories,
* not the local one. */
if(fgets(line, 512, fp) == NULL) {
if(fgets(line, sline, fp) == NULL) {
goto error;
}
STRDUP(info->md5sum, _alpm_strtrim(line), goto error);
} else if(strcmp(line, "%REPLACES%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->replaces = alpm_list_add(info->replaces, linedup);
@@ -553,13 +632,13 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
while(fgets(line, 256, fp)) {
_alpm_strtrim(line);
if(strcmp(line, "%FILES%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->files = alpm_list_add(info->files, linedup);
}
} else if(strcmp(line, "%BACKUP%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->backup = alpm_list_add(info->backup, linedup);
@@ -581,24 +660,24 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
fgets(line, 255, fp);
_alpm_strtrim(line);
if(strcmp(line, "%DEPENDS%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
pmdepend_t *dep = _alpm_splitdep(_alpm_strtrim(line));
info->depends = alpm_list_add(info->depends, dep);
}
} else if(strcmp(line, "%OPTDEPENDS%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->optdepends = alpm_list_add(info->optdepends, linedup);
}
} else if(strcmp(line, "%CONFLICTS%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->conflicts = alpm_list_add(info->conflicts, linedup);
}
} else if(strcmp(line, "%PROVIDES%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
char *linedup;
STRDUP(linedup, _alpm_strtrim(line), goto error);
info->provides = alpm_list_add(info->provides, linedup);
@@ -617,7 +696,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
fgets(line, 255, fp);
_alpm_strtrim(line);
if(strcmp(line, "%DELTAS%") == 0) {
while(fgets(line, 512, fp) && strlen(_alpm_strtrim(line))) {
while(fgets(line, sline, fp) && strlen(_alpm_strtrim(line))) {
pmdelta_t *delta = _alpm_delta_parse(line);
if(delta) {
info->deltas = alpm_list_add(info->deltas, delta);
@@ -658,12 +737,16 @@ int _alpm_db_prepare(pmdb_t *db, pmpkg_t *info)
int retval = 0;
char *pkgpath = NULL;
oldmask = umask(0000);
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));
_alpm_log(PM_LOG_ERROR, _("could not create directory %s: %s\n"),
pkgpath, strerror(errno));
}
free(pkgpath);
@@ -727,10 +810,11 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
fprintf(fp, "\n");
}
if(info->force) {
fprintf(fp, "%%FORCE%%\n\n");
}
if(local) {
if(info->force) {
fprintf(fp, "%%EPOCH%%\n"
"1\n\n");
}
if(info->url) {
fprintf(fp, "%%URL%%\n"
"%s\n\n", info->url);
@@ -748,11 +832,11 @@ int _alpm_db_write(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
if(info->builddate) {
fprintf(fp, "%%BUILDDATE%%\n"
"%ju\n\n", (uintmax_t)info->builddate);
"%ld\n\n", info->builddate);
}
if(info->installdate) {
fprintf(fp, "%%INSTALLDATE%%\n"
"%ju\n\n", (uintmax_t)info->installdate);
"%ld\n\n", info->installdate);
}
if(info->packager) {
fprintf(fp, "%%PACKAGER%%\n"
@@ -761,7 +845,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"
@@ -770,11 +854,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"
@@ -826,7 +910,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-2010 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
@@ -74,6 +75,8 @@ static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
STRDUP(newpkg->version, ptr, RET_ERR(PM_ERR_MEMORY, -1));
} else if(!strcmp(key, "pkgdesc")) {
STRDUP(newpkg->desc, ptr, RET_ERR(PM_ERR_MEMORY, -1));
} else if(!strcmp(key, "force")) {
newpkg->force = 1;
} else if(!strcmp(key, "group")) {
newpkg->groups = alpm_list_add(newpkg->groups, strdup(ptr));
} else if(!strcmp(key, "url")) {
@@ -81,9 +84,9 @@ static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
} else if(!strcmp(key, "license")) {
newpkg->licenses = alpm_list_add(newpkg->licenses, strdup(ptr));
} else if(!strcmp(key, "builddate")) {
char first = tolower(ptr[0]);
char first = tolower((unsigned char)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);
@@ -111,6 +114,8 @@ static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
newpkg->provides = alpm_list_add(newpkg->provides, strdup(ptr));
} else if(!strcmp(key, "backup")) {
newpkg->backup = alpm_list_add(newpkg->backup, strdup(ptr));
} else if(!strcmp(key, "makepkgopt")) {
/* not used atm */
} else {
_alpm_log(PM_LOG_DEBUG, "%s: syntax error in description file line %d\n",
newpkg->name ? newpkg->name : "error", linenum);
@@ -129,7 +134,7 @@ static int parse_descfile(struct archive *a, pmpkg_t *newpkg)
* through the full archive
* @return An information filled pmpkg_t struct
*/
static pmpkg_t *pkg_load(const char *pkgfile, unsigned short full)
static pmpkg_t *pkg_load(const char *pkgfile, int full)
{
int ret = ARCHIVE_OK;
int config = 0;
@@ -266,8 +271,7 @@ error:
* @param pkg address of the package pointer
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_pkg_load(const char *filename, unsigned short full,
pmpkg_t **pkg)
int SYMEXPORT alpm_pkg_load(const char *filename, int full, pmpkg_t **pkg)
{
ALPM_LOG_FUNC;

View File

@@ -1,7 +1,8 @@
/*
* cache.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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
@@ -54,6 +55,7 @@ int _alpm_db_load_pkgcache(pmdb_t *db)
return(-1);
}
db->pkgcache_loaded = 1;
return(0);
}
@@ -61,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;
}
@@ -71,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)
@@ -85,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);
@@ -104,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);
}
@@ -139,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);
}
@@ -172,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);
}
@@ -192,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);
@@ -230,6 +227,7 @@ int _alpm_db_load_grpcache(pmdb_t *db)
}
}
db->grpcache_loaded = 1;
return(0);
}
@@ -239,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)
@@ -258,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-2010 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-2010 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>
@@ -28,6 +29,7 @@
#include <string.h>
#include <limits.h>
#include <sys/stat.h>
#include <dirent.h>
/* libalpm */
#include "conflict.h"
@@ -39,7 +41,7 @@
#include "cache.h"
#include "deps.h"
pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2)
pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2, const char *reason)
{
pmconflict_t *conflict;
@@ -49,6 +51,7 @@ pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2)
STRDUP(conflict->package1, package1, RET_ERR(PM_ERR_MEMORY, NULL));
STRDUP(conflict->package2, package2, RET_ERR(PM_ERR_MEMORY, NULL));
STRDUP(conflict->reason, reason, RET_ERR(PM_ERR_MEMORY, NULL));
return(conflict);
}
@@ -57,6 +60,7 @@ void _alpm_conflict_free(pmconflict_t *conflict)
{
FREE(conflict->package2);
FREE(conflict->package1);
FREE(conflict->reason);
FREE(conflict);
}
@@ -67,6 +71,7 @@ pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict)
STRDUP(newconflict->package1, conflict->package1, RET_ERR(PM_ERR_MEMORY, NULL));
STRDUP(newconflict->package2, conflict->package2, RET_ERR(PM_ERR_MEMORY, NULL));
STRDUP(newconflict->reason, conflict->reason, RET_ERR(PM_ERR_MEMORY, NULL));
return(newconflict);
}
@@ -120,9 +125,9 @@ static int does_conflict(pmpkg_t *pkg1, const char *conflict, pmpkg_t *pkg2)
* @param pkg2 package causing conflict
*/
static void add_conflict(alpm_list_t **baddeps, const char *pkg1,
const char *pkg2)
const char *pkg2, const char *reason)
{
pmconflict_t *conflict = _alpm_conflict_new(pkg1, pkg2);
pmconflict_t *conflict = _alpm_conflict_new(pkg1, pkg2, reason);
if(conflict && !_alpm_conflict_isin(conflict, *baddeps)) {
*baddeps = alpm_list_add(*baddeps, conflict);
} else {
@@ -166,9 +171,9 @@ static void check_conflict(alpm_list_t *list1, alpm_list_t *list2,
if(does_conflict(pkg1, conflict, pkg2)) {
if(order >= 0) {
add_conflict(baddeps, pkg1name, pkg2name);
add_conflict(baddeps, pkg1name, pkg2name, conflict);
} else {
add_conflict(baddeps, pkg2name, pkg1name);
add_conflict(baddeps, pkg2name, pkg1name, conflict);
}
}
}
@@ -218,11 +223,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.
@@ -347,19 +352,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 || trans == NULL) {
return(NULL);
}
@@ -367,8 +416,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];
@@ -392,7 +441,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));
}
@@ -408,7 +457,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) {
@@ -420,12 +469,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) {
@@ -436,47 +483,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(filestr));
_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);
@@ -507,6 +581,17 @@ const char SYMEXPORT *alpm_conflict_get_package2(pmconflict_t *conflict)
return conflict->package2;
}
const char SYMEXPORT *alpm_conflict_get_reason(pmconflict_t *conflict)
{
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(conflict != NULL, return(NULL));
return conflict->reason;
}
const char SYMEXPORT *alpm_fileconflict_get_target(pmfileconflict_t *conflict)
{
ALPM_LOG_FUNC;

View File

@@ -1,7 +1,8 @@
/*
* conflict.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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
@@ -26,6 +27,7 @@
struct __pmconflict_t {
char *package1;
char *package2;
char *reason;
};
struct __pmfileconflict_t {
@@ -35,13 +37,14 @@ struct __pmfileconflict_t {
char *ctarget;
};
pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2);
pmconflict_t *_alpm_conflict_new(const char *package1, const char *package2, const char *reason);
pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict);
void _alpm_conflict_free(pmconflict_t *conflict);
int _alpm_conflict_isin(pmconflict_t *needle, alpm_list_t *haystack);
alpm_list_t *_alpm_innerconflicts(alpm_list_t *packages);
alpm_list_t *_alpm_outerconflicts(pmdb_t *db, alpm_list_t *packages);
alpm_list_t *_alpm_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-2010 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>
@@ -85,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);
}
@@ -235,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;
@@ -263,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;
@@ -295,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;
@@ -322,20 +321,55 @@ alpm_list_t SYMEXPORT *alpm_db_search(pmdb_t *db, const alpm_list_t* needles)
return(_alpm_db_search(db, needles));
}
/* Set install reason for a package in db
* @param db pointer to the package database
* @param name the name of the package
* @param reason the new install reason
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_db_set_pkgreason(pmdb_t *db, const char *name, pmpkgreason_t reason)
{
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
ASSERT(db != NULL && name != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
pmpkg_t *pkg = _alpm_db_get_pkgfromcache(db, name);
if(pkg == NULL) {
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
}
_alpm_log(PM_LOG_DEBUG, "setting install reason %u for %s/%s\n", reason, db->treename, name);
/* read DESC */
if(_alpm_db_read(db, pkg, INFRQ_DESC)) {
return(-1);
}
if(pkg->reason == reason) {
/* we are done */
return(0);
}
/* set reason (in pkgcache) */
pkg->reason = reason;
/* write DESC */
if(_alpm_db_write(db, pkg, INFRQ_DESC)) {
return(-1);
}
return(0);
}
/** @} */
pmdb_t *_alpm_db_new(const char *dbpath, const char *treename)
static pmdb_t *_alpm_db_new(const char *treename, int is_local)
{
pmdb_t *db;
const size_t pathsize = strlen(dbpath) + strlen(treename) + 2;
ALPM_LOG_FUNC;
CALLOC(db, 1, sizeof(pmdb_t), RET_ERR(PM_ERR_MEMORY, NULL));
CALLOC(db->path, 1, pathsize, RET_ERR(PM_ERR_MEMORY, NULL));
sprintf(db->path, "%s%s/", dbpath, treename);
STRDUP(db->treename, treename, RET_ERR(PM_ERR_MEMORY, NULL));
db->is_local = is_local;
return(db);
}
@@ -348,13 +382,44 @@ void _alpm_db_free(pmdb_t *db)
_alpm_db_free_pkgcache(db);
/* cleanup server list */
FREELIST(db->servers);
FREE(db->path);
FREE(db->_path);
FREE(db->treename);
FREE(db);
return;
}
const char *_alpm_db_path(pmdb_t *db)
{
if(!db) {
return(NULL);
}
if(!db->_path) {
const char *dbpath;
size_t pathsize;
dbpath = alpm_option_get_dbpath();
if(!dbpath) {
_alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
if(db->is_local) {
pathsize = strlen(dbpath) + strlen(db->treename) + 2;
CALLOC(db->_path, 1, pathsize, RET_ERR(PM_ERR_MEMORY, NULL));
sprintf(db->_path, "%s%s/", dbpath, db->treename);
} else {
pathsize = strlen(dbpath) + 5 + strlen(db->treename) + 2;
CALLOC(db->_path, 1, pathsize, RET_ERR(PM_ERR_MEMORY, NULL));
/* all sync DBs now reside in the sync/ subdir of the dbpath */
sprintf(db->_path, "%ssync/%s/", dbpath, db->treename);
}
_alpm_log(PM_LOG_DEBUG, "database path for tree %s set to %s\n",
db->treename, db->_path);
}
return(db->_path);
}
int _alpm_db_cmp(const void *d1, const void *d2)
{
pmdb_t *db1 = (pmdb_t *)d1;
@@ -400,10 +465,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;
@@ -411,6 +476,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",
@@ -431,10 +505,7 @@ 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;
@@ -445,43 +516,18 @@ 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");
db = _alpm_db_new("local", 1);
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];
alpm_list_t *i;
ALPM_LOG_FUNC;
@@ -496,38 +542,11 @@ 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);
db = _alpm_db_new(treename, 0);
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->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-2010 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>
*
@@ -27,37 +28,39 @@
/* Database entries */
typedef enum _pmdbinfrq_t {
INFRQ_BASE = 0x01,
INFRQ_DESC = 0x02,
INFRQ_DEPENDS = 0x04,
INFRQ_FILES = 0x08,
INFRQ_SCRIPTLET = 0x10,
INFRQ_DELTAS = 0x20,
/* ALL should be sum of all above */
INFRQ_BASE = 1,
INFRQ_DESC = (1 << 1),
INFRQ_DEPENDS = (1 << 2),
INFRQ_FILES = (1 << 3),
INFRQ_SCRIPTLET = (1 << 4),
INFRQ_DELTAS = (1 << 5),
INFRQ_DSIZE = (1 << 6),
/* ALL should be info stored in the package or database */
INFRQ_ALL = 0x3F
} pmdbinfrq_t;
/* Database */
struct __pmdb_t {
char *path;
char *treename;
void *handle;
/* do not access directly, use _alpm_db_path(db) for lazy access */
char *_path;
int pkgcache_loaded;
int grpcache_loaded;
int is_local;
alpm_list_t *pkgcache;
alpm_list_t *grpcache;
alpm_list_t *servers;
};
/* db.c, database general calls */
pmdb_t *_alpm_db_new(const char *dbpath, const char *treename);
void _alpm_db_free(pmdb_t *db);
const char *_alpm_db_path(pmdb_t *db);
int _alpm_db_cmp(const void *d1, const void *d2);
alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles);
pmdb_t *_alpm_db_register_local(void);
pmdb_t *_alpm_db_register_sync(const char *treename);
/* 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);

View File

@@ -1,7 +1,8 @@
/*
* delta.c
*
* Copyright (c) 2007-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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,6 +22,7 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h> /* intmax_t */
#include <limits.h>
#include <sys/types.h>
#include <regex.h>
@@ -43,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));
@@ -81,36 +71,16 @@ off_t SYMEXPORT alpm_delta_get_size(pmdelta_t *delta)
/** @} */
static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
static alpm_list_t *graph_init(alpm_list_t *deltas, int reverse)
{
alpm_list_t *i, *j;
alpm_list_t *vertices = NULL;
/* create the vertices */
for(i = deltas; i; i = i->next) {
char *fpath, *md5sum;
pmgraph_t *v = _alpm_graph_new();
pmdelta_t *vdelta = i->data;
vdelta->download_size = vdelta->delta_size;
v->weight = LONG_MAX;
/* determine whether the delta file already exists */
fpath = _alpm_filecache_find(vdelta->delta);
md5sum = alpm_get_md5sum(fpath);
if(fpath && md5sum && strcmp(md5sum, vdelta->delta_md5) == 0) {
vdelta->download_size = 0;
}
FREE(fpath);
FREE(md5sum);
/* determine whether a base 'from' file exists */
fpath = _alpm_filecache_find(vdelta->from);
md5sum = alpm_get_md5sum(fpath);
if(fpath && md5sum && strcmp(md5sum, vdelta->from_md5) == 0) {
v->weight = vdelta->download_size;
}
FREE(fpath);
FREE(md5sum);
v->data = vdelta;
vertices = alpm_list_add(vertices, v);
}
@@ -131,8 +101,8 @@ 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((!reverse && strcmp(d_j->from, d_i->to) == 0) ||
(reverse && strcmp(d_j->to, d_i->from) == 0)) {
v_i->children = alpm_list_add(v_i->children, v_j);
}
}
@@ -141,8 +111,36 @@ static alpm_list_t *delta_graph_init(alpm_list_t *deltas)
return(vertices);
}
static off_t delta_vert(alpm_list_t *vertices,
const char *to, const char *to_md5, alpm_list_t **path) {
static void graph_init_size(alpm_list_t *vertices)
{
alpm_list_t *i;
for(i = vertices; i; i = i->next) {
char *fpath, *md5sum;
pmgraph_t *v = i->data;
pmdelta_t *vdelta = v->data;
/* determine whether the delta file already exists */
fpath = _alpm_filecache_find(vdelta->delta);
md5sum = alpm_compute_md5sum(fpath);
if(fpath && md5sum && strcmp(md5sum, vdelta->delta_md5) == 0) {
vdelta->download_size = 0;
}
FREE(fpath);
FREE(md5sum);
/* determine whether a base 'from' file exists */
fpath = _alpm_filecache_find(vdelta->from);
if(fpath) {
v->weight = vdelta->download_size;
}
FREE(fpath);
}
}
static void dijkstra(alpm_list_t *vertices)
{
alpm_list_t *i;
pmgraph_t *v;
while(1) {
@@ -178,16 +176,20 @@ static off_t delta_vert(alpm_list_t *vertices,
}
}
}
v = NULL;
static off_t shortest_path(alpm_list_t *vertices, const char *to, alpm_list_t **path)
{
alpm_list_t *i;
pmgraph_t *v = NULL;
off_t bestsize = 0;
alpm_list_t *rpath = NULL;
for(i = vertices; i; i = i->next) {
pmgraph_t *v_i = i->data;
pmdelta_t *d_i = v_i->data;
if(strcmp(d_i->to, to) == 0
|| strcmp(d_i->to_md5, to_md5) == 0) {
if(strcmp(d_i->to, to) == 0) {
if(v == NULL || v_i->weight < v->weight) {
v = v_i;
bestsize = v->weight;
@@ -195,7 +197,6 @@ static off_t delta_vert(alpm_list_t *vertices,
}
}
alpm_list_t *rpath = NULL;
while(v != NULL) {
pmdelta_t *vdelta = v->data;
rpath = alpm_list_add(rpath, vdelta);
@@ -212,14 +213,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;
@@ -232,13 +232,14 @@ 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);
vertices = graph_init(deltas, 0);
graph_init_size(vertices);
dijkstra(vertices);
bestsize = shortest_path(vertices, to, &bestpath);
bestsize = delta_vert(vertices, to, to_md5, &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);
@@ -247,10 +248,49 @@ off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
return(bestsize);
}
static alpm_list_t *find_unused(alpm_list_t *deltas, const char *to, off_t quota)
{
alpm_list_t *unused = NULL;
alpm_list_t *vertices;
alpm_list_t *i;
vertices = graph_init(deltas, 1);
for(i = vertices; i; i = i->next) {
pmgraph_t *v = i->data;
pmdelta_t *vdelta = v->data;
if(strcmp(vdelta->to, to) == 0)
{
v->weight = vdelta->download_size;
}
}
dijkstra(vertices);
for(i = vertices; i; i = i->next) {
pmgraph_t *v = i->data;
pmdelta_t *vdelta = v->data;
if(v->weight > quota) {
unused = alpm_list_add(unused, vdelta->delta);
}
}
alpm_list_free_inner(vertices, _alpm_graph_free);
alpm_list_free(vertices);
return(unused);
}
alpm_list_t SYMEXPORT *alpm_pkg_unused_deltas(pmpkg_t *pkg)
{
off_t pkgsize = alpm_pkg_get_size(pkg);
alpm_list_t *unused = find_unused(
alpm_pkg_get_deltas(pkg),
alpm_pkg_get_filename(pkg),
pkgsize * MAX_DELTA_RATIO);
return(unused);
}
/** 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
*/
@@ -262,9 +302,8 @@ pmdelta_t *_alpm_delta_parse(char *line)
regex_t reg;
regcomp(&reg,
"^[^[:space:]]* [[:xdigit:]]{32}"
" [^[:space:]]* [[:xdigit:]]{32}"
" [^[:space:]]* [[:xdigit:]]{32} [[:digit:]]*$",
"^[^[: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 */
@@ -275,26 +314,6 @@ pmdelta_t *_alpm_delta_parse(char *line)
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';
@@ -305,7 +324,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 '%jd'\n", delta->from, delta->to, (intmax_t)delta->delta_size);
return(delta);
}
@@ -313,9 +345,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-2010 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-2010 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,67 +567,102 @@ 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 localpkgs is the list of local packages
* @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(alpm_list_t *localpkgs, 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;
if(local == NULL || dbs_sync == NULL) {
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(localpkgs, 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 +744,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-2010 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(alpm_list_t *localpkgs, 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-2010 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,10 @@
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <limits.h>
/* the following two are needed on BSD for libfetch */
#if defined(HAVE_SYS_SYSLIMITS_H)
@@ -33,16 +38,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,10 +58,11 @@ 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 */
int len = strlen(path) + strlen(filename) + 1;
size_t len = strlen(path) + strlen(filename) + 1;
CALLOC(destfile, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
snprintf(destfile, len, "%s%s", path, filename);
@@ -74,120 +72,161 @@ static char *get_destfile(const char *path, const char *filename) {
static char *get_tempfile(const char *path, const char *filename) {
char *tempfile;
/* len = localpath len + filename len + '.part' len + null */
int len = strlen(path) + strlen(filename) + 6;
size_t len = strlen(path) + strlen(filename) + 6;
CALLOC(tempfile, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, NULL));
snprintf(tempfile, len, "%s%s.part", path, filename);
return(tempfile);
}
#if defined(INTERNAL_DOWNLOAD)
/* Build a 'struct url' from an url. */
static struct url *url_for_string(const char *url)
static const char *gethost(struct url *fileurl)
{
struct url *ret = NULL;
ret = downloadParseURL(url);
if(!ret) {
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
RET_ERR(PM_ERR_SERVER_BAD_URL, NULL);
const char *host = _("disk");
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
host = fileurl->host;
}
/* if no URL scheme specified, assume HTTP */
if(strlen(ret->scheme) == 0) {
_alpm_log(PM_LOG_WARNING, _("url scheme not specified, assuming HTTP\n"));
strcpy(ret->scheme, SCHEME_HTTP);
}
/* add a user & password for anonymous FTP */
if(strcmp(ret->scheme,SCHEME_FTP) == 0 && strlen(ret->user) == 0) {
strcpy(ret->user, "anonymous");
strcpy(ret->pwd, "libalpm@guest");
}
return(ret);
return(host);
}
static int download_internal(const char *url, const char *localpath,
time_t mtimeold, time_t *mtimenew) {
FILE *dlf, *localf = NULL;
struct url_stat ust;
struct stat st;
int chk_resume = 0, ret = 0;
size_t dl_thisfile = 0, nread = 0;
char *tempfile, *destfile, *filename;
struct url *fileurl = url_for_string(url);
char buffer[PM_DLBUF_LEN];
int dload_interrupted;
static RETSIGTYPE inthandler(int signum)
{
dload_interrupted = 1;
}
if(!fileurl) {
return(-1);
}
#define check_stop() if(dload_interrupted) { ret = -1; goto cleanup; }
enum sighandlers { OLD = 0, NEW = 1 };
static int download_internal(const char *url, const char *localpath,
int force) {
FILE *localf = NULL;
struct stat st;
int ret = 0;
off_t dl_thisfile = 0;
ssize_t nread = 0;
char *tempfile, *destfile, *filename;
struct sigaction sig_pipe[2], sig_int[2];
off_t local_size = 0;
time_t local_time = 0;
struct url *fileurl;
struct url_stat ust;
fetchIO *dlf = NULL;
char buffer[PM_DLBUF_LEN];
filename = get_filename(url);
if(!filename) {
return(-1);
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
RET_ERR(PM_ERR_SERVER_BAD_URL, -1);
}
fileurl = fetchParseURL(url);
if(!fileurl) {
_alpm_log(PM_LOG_ERROR, _("url '%s' is invalid\n"), url);
RET_ERR(PM_ERR_LIBFETCH, -1);
}
destfile = get_destfile(localpath, filename);
tempfile = get_tempfile(localpath, filename);
/* pass the raw filename for passing to the callback function */
_alpm_log(PM_LOG_DEBUG, "using '%s' for download progress\n", filename);
if(stat(tempfile, &st) == 0 && st.st_size > 0) {
_alpm_log(PM_LOG_DEBUG, "existing file found, using it\n");
fileurl->offset = (off_t)st.st_size;
_alpm_log(PM_LOG_DEBUG, "tempfile found, attempting continuation\n");
local_time = fileurl->last_modified = st.st_mtime;
local_size = fileurl->offset = (off_t)st.st_size;
dl_thisfile = st.st_size;
localf = fopen(tempfile, "ab");
chk_resume = 1;
} else if(!force && stat(destfile, &st) == 0 && st.st_size > 0) {
_alpm_log(PM_LOG_DEBUG, "destfile found, using mtime only\n");
local_time = fileurl->last_modified = st.st_mtime;
local_size = /* no fu->off here */ (off_t)st.st_size;
} else {
fileurl->offset = (off_t)0;
dl_thisfile = 0;
_alpm_log(PM_LOG_DEBUG, "no file found matching criteria, starting from scratch\n");
}
/* pass the raw filename for passing to the callback function */
_alpm_log(PM_LOG_DEBUG, "using '%s' for download progress\n", filename);
/* 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"));
/* libdownload does not reset the error code, reset it in
* the case of previous errors */
downloadLastErrCode = 0;
/* 10s timeout */
fetchTimeout = 10;
/* 10s timeout - TODO make a config option */
downloadTimeout = 10000;
/* ignore any SIGPIPE signals- these may occur if our FTP socket dies or
* something along those lines. Store the old signal handler first. */
sig_pipe[NEW].sa_handler = SIG_IGN;
sigemptyset(&sig_pipe[NEW].sa_mask);
sig_pipe[NEW].sa_flags = 0;
sigaction(SIGPIPE, NULL, &sig_pipe[OLD]);
sigaction(SIGPIPE, &sig_pipe[NEW], NULL);
dlf = downloadXGet(fileurl, &ust, (handle->nopassiveftp ? "" : "p"));
dload_interrupted = 0;
sig_int[NEW].sa_handler = &inthandler;
sigemptyset(&sig_int[NEW].sa_mask);
sig_int[NEW].sa_flags = 0;
sigaction(SIGINT, NULL, &sig_int[OLD]);
sigaction(SIGINT, &sig_int[NEW], NULL);
if(downloadLastErrCode != 0 || dlf == NULL) {
const char *host = _("disk");
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
host = fileurl->host;
}
pm_errno = PM_ERR_LIBDOWNLOAD;
/* NOTE: libfetch does not reset the error code, be sure to do it before
* calls into the library */
/* find out the remote size *and* mtime in one go. there is a lot of
* trouble in trying to do both size and "if-modified-since" logic in a
* non-stat request, so avoid it. */
fetchLastErrCode = 0;
if(fetchStat(fileurl, &ust, "") == -1) {
pm_errno = PM_ERR_LIBFETCH;
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
filename, host, downloadLastErrString);
filename, gethost(fileurl), fetchLastErrString);
ret = -1;
goto cleanup;
}
check_stop();
_alpm_log(PM_LOG_DEBUG, "ust.mtime: %ld local_time: %ld compare: %ld\n",
ust.mtime, local_time, local_time - ust.mtime);
_alpm_log(PM_LOG_DEBUG, "ust.size: %jd local_size: %jd compare: %jd\n",
(intmax_t)ust.size, (intmax_t)local_size, (intmax_t)(local_size - ust.size));
if(!force && ust.mtime && ust.mtime == local_time
&& ust.size && ust.size == local_size) {
/* the remote time and size values agreed with what we have, so move on
* because there is nothing more to do. */
_alpm_log(PM_LOG_DEBUG, "files are identical, skipping %s\n", filename);
ret = 1;
goto cleanup;
}
if(!ust.mtime || ust.mtime != local_time) {
_alpm_log(PM_LOG_DEBUG, "mtimes were different or unavailable, downloading %s from beginning\n", filename);
fileurl->offset = 0;
}
fetchLastErrCode = 0;
dlf = fetchGet(fileurl, "");
check_stop();
if(fetchLastErrCode != 0 || dlf == NULL) {
pm_errno = PM_ERR_LIBFETCH;
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s : %s\n"),
filename, gethost(fileurl), fetchLastErrString);
ret = -1;
goto cleanup;
} else {
_alpm_log(PM_LOG_DEBUG, "connected to %s successfully\n", fileurl->host);
}
if(ust.mtime && mtimeold && ust.mtime == mtimeold) {
_alpm_log(PM_LOG_DEBUG, "mtimes are identical, skipping %s\n", filename);
ret = 1;
goto cleanup;
if(localf && fileurl->offset == 0) {
_alpm_log(PM_LOG_WARNING, _("resuming download of %s not possible; starting over\n"), filename);
fclose(localf);
localf = NULL;
} else if(fileurl->offset) {
_alpm_log(PM_LOG_DEBUG, "resuming download at position %jd\n", (intmax_t)fileurl->offset);
}
if(ust.mtime && mtimenew) {
*mtimenew = ust.mtime;
}
if(chk_resume && fileurl->offset == 0) {
_alpm_log(PM_LOG_WARNING, _("cannot resume download, starting over\n"));
if(localf != NULL) {
fclose(localf);
localf = NULL;
}
}
if(localf == NULL) {
_alpm_rmrf(tempfile);
@@ -195,7 +234,9 @@ static int download_internal(const char *url, const char *localpath,
dl_thisfile = 0;
localf = fopen(tempfile, "wb");
if(localf == NULL) { /* still null? */
_alpm_log(PM_LOG_ERROR, _("cannot write to file '%s'\n"), tempfile);
pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
tempfile, strerror(errno));
ret = -1;
goto cleanup;
}
@@ -206,39 +247,58 @@ static int download_internal(const char *url, const char *localpath,
handle->dlcb(filename, 0, ust.size);
}
while((nread = fread(buffer, 1, PM_DLBUF_LEN, dlf)) > 0) {
while((nread = fetchIO_read(dlf, buffer, PM_DLBUF_LEN)) > 0) {
check_stop();
size_t nwritten = 0;
if(ferror(dlf)) {
pm_errno = PM_ERR_LIBDOWNLOAD;
_alpm_log(PM_LOG_ERROR, _("error downloading '%s': %s\n"),
filename, downloadLastErrString);
nwritten = fwrite(buffer, 1, nread, localf);
if((nwritten != nread) || ferror(localf)) {
pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
tempfile, strerror(errno));
ret = -1;
goto cleanup;
}
while(nwritten < nread) {
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
if(ferror(localf)) {
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
destfile, strerror(errno));
ret = -1;
goto cleanup;
}
}
dl_thisfile += nread;
if(handle->dlcb) {
handle->dlcb(filename, dl_thisfile, ust.size);
}
}
/* did the transfer complete normally? */
if (nread == -1) {
/* not PM_ERR_LIBFETCH here because libfetch error string might be empty */
pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("failed retrieving file '%s' from %s\n"),
filename, gethost(fileurl));
ret = -1;
goto cleanup;
}
if (ust.size != -1 && dl_thisfile < ust.size) {
pm_errno = PM_ERR_RETRIEVE;
_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;
/* set the times on the file to the same as that of the remote file */
if(ust.mtime) {
struct timeval tv[2];
memset(&tv, 0, sizeof(tv));
tv[0].tv_sec = ust.atime;
tv[1].tv_sec = ust.mtime;
utimes(tempfile, tv);
}
rename(tempfile, destfile);
ret = 0;
@@ -246,153 +306,80 @@ cleanup:
FREE(tempfile);
FREE(destfile);
if(localf != NULL) {
/* if we still had a local file open, we got interrupted. set the mtimes on
* the file accordingly. */
fflush(localf);
if(ust.mtime) {
struct timeval tv[2];
memset(&tv, 0, sizeof(tv));
tv[0].tv_sec = ust.atime;
tv[1].tv_sec = ust.mtime;
futimes(fileno(localf), tv);
}
fclose(localf);
}
if(dlf != NULL) {
fclose(dlf);
fetchIO_close(dlf);
}
downloadFreeURL(fileurl);
fetchFreeURL(fileurl);
/* restore the old signal handlers */
sigaction(SIGINT, &sig_int[OLD], NULL);
sigaction(SIGPIPE, &sig_pipe[OLD], NULL);
/* if we were interrupted, trip the old handler */
if(dload_interrupted) {
raise(SIGINT);
}
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) {
int force) {
if(handle->fetchcb == NULL) {
#if defined(INTERNAL_DOWNLOAD)
ret = download_internal(url, localpath, mtimeold, mtimenew);
return(download_internal(url, localpath, force));
#else
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
#endif
} else {
ret = download_external(url, localpath, mtimeold, mtimenew);
int ret = handle->fetchcb(url, localpath, force);
if(ret == -1) {
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
}
return(ret);
}
return(ret);
}
/*
* Download a single file
* - if mtimeold is non-NULL, then only download the file if it's different
* than mtimeold.
* - if *mtimenew is non-NULL, it will be filled with the mtime of the remote
* file.
* - servers must be a list of urls WITHOUT trailing slashes.
*
* RETURN: 0 for successful download
* 1 if the mtimes are identical
* 1 if the files are identical
* -1 on error
*/
int _alpm_download_single_file(const char *filename,
alpm_list_t *servers, const char *localpath,
time_t mtimeold, time_t *mtimenew)
int force)
{
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;
int len;
size_t len;
/* print server + filename into a buffer */
len = strlen(server) + strlen(filename) + 2;
CALLOC(fileurl, len, sizeof(char), RET_ERR(PM_ERR_MEMORY, -1));
snprintf(fileurl, len, "%s/%s", server, filename);
ret = download(fileurl, localpath, mtimeold, mtimenew);
ret = download(fileurl, localpath, force);
FREE(fileurl);
if(ret != -1) {
break;
@@ -411,7 +398,7 @@ int _alpm_download_files(alpm_list_t *files,
for(lp = files; lp; lp = lp->next) {
char *filename = lp->data;
if(_alpm_download_single_file(filename, servers,
localpath, 0, NULL) == -1) {
localpath, 0) == -1) {
ret++;
}
}
@@ -438,7 +425,7 @@ char SYMEXPORT *alpm_fetch_pkgurl(const char *url)
cachedir = _alpm_filecache_setup();
/* download the file */
ret = download(url, cachedir, 0, NULL);
ret = download(url, cachedir, 0);
if(ret == -1) {
_alpm_log(PM_LOG_WARNING, _("failed to download %s\n"), url);
return(NULL);

View File

@@ -1,7 +1,8 @@
/*
* dload.h
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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,11 +25,11 @@
#include <time.h>
#define PM_DLBUF_LEN (1024 * 10)
#define PM_DLBUF_LEN (1024 * 16)
int _alpm_download_single_file(const char *filename,
alpm_list_t *servers, const char *localpath,
time_t mtimeold, time_t *mtimenew);
int force);
int _alpm_download_files(alpm_list_t *files,
alpm_list_t *servers, const char *localpath);

View File

@@ -1,7 +1,8 @@
/*
* error.c
*
* Copyright (c) 2002-2008 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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,35 +102,30 @@ 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:
return _("package filename is not valid");
case PM_ERR_PKG_INVALID_ARCH:
return _("package architecture is not valid");
case PM_ERR_PKG_REPO_NOT_FOUND:
return _("no such repository");
return _("could not find repository for target");
/* Deltas */
case PM_ERR_DLT_INVALID:
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 +134,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 +144,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-2010 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-2010 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-2010 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-2010 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,11 @@ void _alpm_handle_free(pmhandle_t *handle)
FREELIST(handle->cachedirs);
FREE(handle->logfile);
FREE(handle->lockfile);
FREE(handle->xfercommand);
FREE(handle->arch);
FREELIST(handle->dbs_sync);
FREELIST(handle->noupgrade);
FREELIST(handle->noextract);
FREELIST(handle->ignorepkg);
FREELIST(handle->holdpkg);
FREELIST(handle->ignoregrp);
FREE(handle);
}
@@ -115,6 +106,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) {
@@ -169,7 +169,7 @@ const char SYMEXPORT *alpm_option_get_lockfile()
return handle->lockfile;
}
unsigned short SYMEXPORT alpm_option_get_usesyslog()
int SYMEXPORT alpm_option_get_usesyslog()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
@@ -205,15 +205,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,22 +214,22 @@ alpm_list_t SYMEXPORT *alpm_option_get_ignoregrps()
return handle->ignoregrp;
}
const char SYMEXPORT *alpm_option_get_xfercommand()
const char SYMEXPORT *alpm_option_get_arch()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return NULL;
}
return handle->xfercommand;
return handle->arch;
}
unsigned short SYMEXPORT alpm_option_get_nopassiveftp()
int SYMEXPORT alpm_option_get_usedelta()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return -1;
}
return handle->nopassiveftp;
return handle->usedelta;
}
pmdb_t SYMEXPORT *alpm_option_get_localdb()
@@ -277,6 +268,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 +305,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);
}
@@ -445,7 +446,7 @@ int SYMEXPORT alpm_option_set_logfile(const char *logfile)
return(0);
}
void SYMEXPORT alpm_option_set_usesyslog(unsigned short usesyslog)
void SYMEXPORT alpm_option_set_usesyslog(int usesyslog)
{
handle->usesyslog = usesyslog;
}
@@ -516,28 +517,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,18 +539,13 @@ int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
return(0);
}
void SYMEXPORT alpm_option_set_xfercommand(const char *cmd)
void SYMEXPORT alpm_option_set_arch(const char *arch)
{
if(handle->xfercommand) FREE(handle->xfercommand);
if(cmd) handle->xfercommand = strdup(cmd);
if(handle->arch) FREE(handle->arch);
if(arch) handle->arch = strdup(arch);
}
void SYMEXPORT alpm_option_set_nopassiveftp(unsigned short nopasv)
{
handle->nopassiveftp = nopasv;
}
void SYMEXPORT alpm_option_set_usedelta(unsigned short usedelta)
void SYMEXPORT alpm_option_set_usedelta(int usedelta)
{
handle->usedelta = usedelta;
}

View File

@@ -1,7 +1,8 @@
/*
* handle.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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,14 +54,12 @@ 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 */
int usesyslog; /* Use syslog instead of logfile? */ /* TODO move to frontend */
char *arch; /* Architecture of packages we should allow */
int usedelta; /* Download deltas if possible */
} pmhandle_t;
/* global handle variable */

View File

@@ -1,7 +1,8 @@
/*
* log.c
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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-2010 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

@@ -37,6 +37,9 @@
* to
* int md5_file( const char *path, unsigned char *output )
* * various static/inline changes
*
* NOTE: XySSL has been renamed to PolarSSL, which is available at
* www.polarssl.org. If we update, we should get it from there.
*/
#include <string.h>
@@ -248,7 +251,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-2010 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>
@@ -294,7 +295,7 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_groups(pmpkg_t *pkg)
return pkg->groups;
}
unsigned short SYMEXPORT alpm_pkg_has_force(pmpkg_t *pkg)
int SYMEXPORT alpm_pkg_has_force(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -422,6 +423,15 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_backup(pmpkg_t *pkg)
return pkg->backup;
}
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
@@ -449,7 +459,6 @@ void SYMEXPORT *alpm_pkg_changelog_open(pmpkg_t *pkg)
struct archive *archive = NULL;
struct archive_entry *entry;
const char *pkgfile = pkg->origin_data.file;
int ret = ARCHIVE_OK;
if((archive = archive_read_new()) == NULL) {
RET_ERR(PM_ERR_LIBARCHIVE, NULL);
@@ -463,7 +472,7 @@ void SYMEXPORT *alpm_pkg_changelog_open(pmpkg_t *pkg)
RET_ERR(PM_ERR_PKG_OPEN, NULL);
}
while((ret = archive_read_next_header(archive, &entry)) == ARCHIVE_OK) {
while(archive_read_next_header(archive, &entry) == ARCHIVE_OK) {
const char *entry_name = archive_entry_pathname(entry);
if(strcmp(entry_name, ".CHANGELOG") == 0) {
@@ -531,7 +540,7 @@ int SYMEXPORT alpm_pkg_changelog_close(const pmpkg_t *pkg, void *fp)
return(ret);
}
unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
int SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -546,6 +555,23 @@ unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
return pkg->scriptlet;
}
static void find_requiredby(pmpkg_t *pkg, pmdb_t *db, alpm_list_t **reqs)
{
const alpm_list_t *i;
for(i = _alpm_db_get_pkgcache(db); i; i = i->next) {
if(!i->data) {
continue;
}
pmpkg_t *cachepkg = i->data;
if(_alpm_dep_edge(cachepkg, pkg)) {
const char *cachepkgname = cachepkg->name;
if(alpm_list_find_str(*reqs, cachepkgname) == 0) {
*reqs = alpm_list_add(*reqs, strdup(cachepkgname));
}
}
}
}
/**
* @brief Compute the packages requiring a given package.
* @param pkg a package
@@ -555,192 +581,29 @@ alpm_list_t SYMEXPORT *alpm_pkg_compute_requiredby(pmpkg_t *pkg)
{
const alpm_list_t *i;
alpm_list_t *reqs = NULL;
pmdb_t *db;
pmdb_t *localdb = alpm_option_get_localdb();
for(i = _alpm_db_get_pkgcache(localdb); i; i = i->next) {
if(!i->data) {
continue;
}
pmpkg_t *cachepkg = i->data;
if(_alpm_dep_edge(cachepkg, pkg)) {
const char *cachepkgname = alpm_pkg_get_name(cachepkg);
reqs = alpm_list_add(reqs, strdup(cachepkgname));
if(pkg->origin == PKG_FROM_FILE) {
/* The sane option; search locally for things that require this. */
db = alpm_option_get_localdb();
find_requiredby(pkg, db, &reqs);
} else {
/* We have a DB package. if it is a local package, then we should
* only search the local DB; else search all known sync databases. */
db = pkg->origin_data.db;
if(db->is_local) {
find_requiredby(pkg, db, &reqs);
} else {
for(i = handle->dbs_sync; i; i = i->next) {
db = i->data;
find_requiredby(pkg, db, &reqs);
reqs = alpm_list_msort(reqs, alpm_list_count(reqs), _alpm_str_cmp);
}
}
}
return(reqs);
}
/** Compare two version strings and determine which one is 'newer'.
* Returns a value comparable to the way strcmp works. Returns 1
* if a is newer than b, 0 if a and b are the same version, or -1
* if b is newer than a.
*
* This function has been adopted from the rpmvercmp function located
* at lib/rpmvercmp.c, and was most recently updated against rpm
* version 4.4.2.3. Small modifications have been made to make it more
* consistent with the libalpm coding style.
*
* Keep in mind that the pkgrel is only compared if it is available
* on both versions handed to this function. For example, comparing
* 1.5-1 and 1.5 will yield 0; comparing 1.5-1 and 1.5-2 will yield
* -1 as expected. This is mainly for supporting versioned dependencies
* that do not include the pkgrel.
*/
int SYMEXPORT alpm_pkg_vercmp(const char *a, const char *b)
{
char oldch1, oldch2;
char *str1, *str2;
char *ptr1, *ptr2;
char *one, *two;
int rc;
int isnum;
int ret = 0;
ALPM_LOG_FUNC;
/* libalpm added code. ensure our strings are not null */
if(!a) {
if(!b) return(0);
return(-1);
}
if(!b) return(1);
/* easy comparison to see if versions are identical */
if(strcmp(a, b) == 0) return(0);
str1 = strdup(a);
str2 = strdup(b);
one = str1;
two = str2;
/* loop through each version segment of str1 and str2 and compare them */
while(*one && *two) {
while(*one && !isalnum((int)*one)) one++;
while(*two && !isalnum((int)*two)) two++;
/* If we ran to the end of either, we are finished with the loop */
if(!(*one && *two)) break;
ptr1 = one;
ptr2 = two;
/* grab first completely alpha or completely numeric segment */
/* leave one and two pointing to the start of the alpha or numeric */
/* segment and walk ptr1 and ptr2 to end of segment */
if(isdigit((int)*ptr1)) {
while(*ptr1 && isdigit((int)*ptr1)) ptr1++;
while(*ptr2 && isdigit((int)*ptr2)) ptr2++;
isnum = 1;
} else {
while(*ptr1 && isalpha((int)*ptr1)) ptr1++;
while(*ptr2 && isalpha((int)*ptr2)) ptr2++;
isnum = 0;
}
/* save character at the end of the alpha or numeric segment */
/* so that they can be restored after the comparison */
oldch1 = *ptr1;
*ptr1 = '\0';
oldch2 = *ptr2;
*ptr2 = '\0';
/* this cannot happen, as we previously tested to make sure that */
/* the first string has a non-null segment */
if (one == ptr1) {
ret = -1; /* arbitrary */
goto cleanup;
}
/* take care of the case where the two version segments are */
/* different types: one numeric, the other alpha (i.e. empty) */
/* numeric segments are always newer than alpha segments */
/* XXX See patch #60884 (and details) from bugzilla #50977. */
if (two == ptr2) {
ret = isnum ? 1 : -1;
goto cleanup;
}
if (isnum) {
/* this used to be done by converting the digit segments */
/* to ints using atoi() - it's changed because long */
/* digit segments can overflow an int - this should fix that. */
/* throw away any leading zeros - it's a number, right? */
while (*one == '0') one++;
while (*two == '0') two++;
/* whichever number has more digits wins */
if (strlen(one) > strlen(two)) {
ret = 1;
goto cleanup;
}
if (strlen(two) > strlen(one)) {
ret = -1;
goto cleanup;
}
}
/* strcmp will return which one is greater - even if the two */
/* segments are alpha or if they are numeric. don't return */
/* if they are equal because there might be more segments to */
/* compare */
rc = strcmp(one, two);
if (rc) {
ret = rc < 1 ? -1 : 1;
goto cleanup;
}
/* restore character that was replaced by null above */
*ptr1 = oldch1;
one = ptr1;
*ptr2 = oldch2;
two = ptr2;
/* libalpm added code. check if version strings have hit the pkgrel
* portion. depending on which strings have hit, take correct action.
* this is all based on the premise that we only have one dash in
* the version string, and it separates pkgver from pkgrel. */
if(*ptr1 == '-' && *ptr2 == '-') {
/* no-op, continue comparing since we are equivalent throughout */
} else if(*ptr1 == '-') {
/* ptr1 has hit the pkgrel and ptr2 has not. continue version
* comparison after stripping the pkgrel from ptr1. */
*ptr1 = '\0';
} else if(*ptr2 == '-') {
/* ptr2 has hit the pkgrel and ptr1 has not. continue version
* comparison after stripping the pkgrel from ptr2. */
*ptr2 = '\0';
}
}
/* this catches the case where all numeric and alpha segments have */
/* compared identically but the segment separating characters were */
/* different */
if ((!*one) && (!*two)) {
ret = 0;
goto cleanup;
}
/* the final showdown. we never want a remaining alpha string to
* beat an empty string. the logic is a bit weird, but:
* - if one is empty and two is not an alpha, two is newer.
* - if one is an alpha, two is newer.
* - otherwise one is newer.
* */
if ( ( !*one && !isalpha((int)*two) )
|| isalpha((int)*one) ) {
ret = -1;
} else {
ret = 1;
}
cleanup:
free(str1);
free(str2);
return(ret);
}
/** @} */
pmpkg_t *_alpm_pkg_new(void)
@@ -833,6 +696,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);
@@ -840,6 +704,28 @@ void _alpm_pkg_free(pmpkg_t *pkg)
FREE(pkg);
}
/* This function should be used when removing a target from upgrade/sync target list
* Case 1: If pkg is a loaded package file (PKG_FROM_FILE), it will be freed.
* Case 2: If pkg is a pkgcache entry (PKG_FROM_CACHE), it won't be freed,
* only the transaction specific fields of pkg will be freed.
*/
void _alpm_pkg_free_trans(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
if(pkg == NULL) {
return;
}
if(pkg->origin == PKG_FROM_FILE) {
_alpm_pkg_free(pkg);
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)
{
@@ -863,7 +749,7 @@ int _alpm_pkg_cmp(const void *p1, const void *p2)
{
pmpkg_t *pkg1 = (pmpkg_t *)p1;
pmpkg_t *pkg2 = (pmpkg_t *)p2;
return(strcmp(alpm_pkg_get_name(pkg1), alpm_pkg_get_name(pkg2)));
return(strcmp(pkg1->name, pkg2->name));
}
/* Test for existence of a package in a alpm_list_t*
@@ -882,7 +768,7 @@ pmpkg_t *_alpm_pkg_find(alpm_list_t *haystack, const char *needle)
for(lp = haystack; lp; lp = lp->next) {
pmpkg_t *info = lp->data;
if(info && strcmp(alpm_pkg_get_name(info), needle) == 0) {
if(info && strcmp(info->name, needle) == 0) {
return(info);
}
}

View File

@@ -1,7 +1,8 @@
/*
* package.h
*
* Copyright (c) 2002-2007 by Judd Vinet <jvinet@zeroflux.org>
* Copyright (c) 2006-2010 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>
@@ -48,8 +49,8 @@ struct __pmpkg_t {
off_t size;
off_t isize;
off_t download_size;
unsigned short scriptlet;
unsigned short force;
int scriptlet;
int force;
pmpkgreason_t reason;
alpm_list_t *licenses;
alpm_list_t *replaces;
@@ -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

@@ -1,14 +1,22 @@
# Set of available languages.
ca
cs
de
el
en_GB
es
fr
hu
it
kk
nb
pl
pt
pt_BR
ro
ru
sk
sv
tr
uk
zh_CN

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.

563
lib/libalpm/po/ca.po Normal file
View File

@@ -0,0 +1,563 @@
# Translation of libpalm.po to Catalan
# Copyright (C) YEAR Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the PACKAGE package.
#
# Manuel Tortosa <manutortosa@gmail.com>, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-12 19:17+0200\n"
"Last-Translator: Manuel Tortosa <manutortosa@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
"s'està reemplaçant l'antiga versió %s-%s per %s en la llista d'objectius\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"s'ometrà %s-%s perquè la versió més nova %s és en la llista d'objectius\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"els permisos del directori difereixen en %s\n"
"sistema de fitxers: %o paquet: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extracció: no se sobreescriurà el directori amb el fitxer %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extracció: l'enllaç simbòlic %s no apunta al directori\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "no es pot extreure %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "no es pot reanomenar %s a %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s desat com %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "no es pot instal·lar %s com %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s instal·lat com %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "s'està extraient %s com %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "no es pot obtenir el directori de treball actual\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "ha ocorregut un problema en actualitzar %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "ha ocorregut un problema en instal·lar %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "no s'ha pogut actualitzar l'entrada de la base de dades %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "no s'ha pogut afegir l'entrada '%s' en la memòria cau\n"
#, c-format
msgid "removing invalid database: %s\n"
msgstr "s'està eliminant la base de dades invàlida: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "no s'ha pogut obrir %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "no s'ha pogut eliminar el directori de la base de dades %s\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "no s'ha pogut eliminar la base de dades %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "nom invàlid per l'entrada de la base de dades '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "entrada de la base de dades duplicada '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "entrada de la base de dades corrupta '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "no es pot obrir el fitxer %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "la base de dades %s és inconsistent: nom erroni en el paquet %s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "la base de dades %s és inconsistent: versió errònia en el paquet %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "no s'ha pogut crear el directori %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "no s'ha pogut analitzar el fitxers de descripció de paquet en %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "falta nom de paquet en %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "falta versió de paquet en %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "error en llegir paquet %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "falten les metadades del paquet en %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "no s'ha definit la ruta de la base de dades\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "intent de re-registre de la BD 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "s'ha detectat una dependència cíclica:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s serà eliminat després de la seva dependència %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s serà instal·lar abans de la seva dependència %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "s'està ignorant paquet %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "s'ha seleccionat un paquet proveïdor (%s proveeix %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "no es pot resoldre \"%s\", una dependència de \"%s\"\n"
#, c-format
msgid "disk"
msgstr "disc"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' és invàlid\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "ha fallat en recuperar el fitxer '%s' des de %s : %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "no es pot la reprendre la baixada de %s, s'està iniciant de nou\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "error en escriure al fitxer '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "ha fallat en recuperar el fitxer '%s' de %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sembla estar truncat: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "ha fallat en baixar %s\n"
#, c-format
msgid "out of memory!"
msgstr "memòria esgotada!"
#, c-format
msgid "unexpected system error"
msgstr "error inesperat del sistema"
#, c-format
msgid "insufficient privileges"
msgstr "privilegis insuficients"
#, c-format
msgid "could not find or read file"
msgstr "no es pot trobar o llegir fitxer"
#, c-format
msgid "could not find or read directory"
msgstr "no es pot trobar o llegir directori"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "s'ha passat un argument erroni o NULL"
#, c-format
msgid "library not initialized"
msgstr "llibreria no inicialitzada"
#, c-format
msgid "library already initialized"
msgstr "la llibreria ja s'ha inicialitzat"
#, c-format
msgid "unable to lock database"
msgstr "no s'ha pogut bloquejar la base de dades"
#, c-format
msgid "could not open database"
msgstr "no s'ha pogut obrir la base de dades"
#, c-format
msgid "could not create database"
msgstr "no s'ha pogut crear la base de dades"
#, c-format
msgid "database not initialized"
msgstr "base de dades no inicialitzada"
#, c-format
msgid "database already registered"
msgstr "la base de dades ja s'ha registrat"
#, c-format
msgid "could not find database"
msgstr "no s'ha pogut trobar la base de dades"
#, c-format
msgid "could not update database"
msgstr "no s'ha pogut actualitzar la base de dades"
#, c-format
msgid "could not remove database entry"
msgstr "no s'ha pogut suprimir l'entrada de la base de dades"
#, c-format
msgid "invalid url for server"
msgstr "url del servidor invàlid"
#, c-format
msgid "no servers configured for repository"
msgstr "no s'ha configurat cap servidor pel repositori"
#, c-format
msgid "transaction already initialized"
msgstr "ja s'ha inicialitzat la transacció"
#, c-format
msgid "transaction not initialized"
msgstr "no s'ha inicialitzat la transacció"
#, c-format
msgid "duplicate target"
msgstr "objectiu duplicat"
#, c-format
msgid "transaction not prepared"
msgstr "transacció no preparada"
#, c-format
msgid "transaction aborted"
msgstr "transacció cancel·lada"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "l'operació no és compatible amb el tipus de transacció"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr ""
"intent de publicació de la transacció amb la base de dades no bloquejada"
#, c-format
msgid "could not find or read package"
msgstr "no s'ha pogut trobar o llegir el paquet"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operació cancel·lada degut a ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "paquet invàlid o corrupte"
#, c-format
msgid "cannot open package file"
msgstr "no s'ha pogut obrir el fitxer de paquet"
#, c-format
msgid "cannot remove all files for package"
msgstr "no s'han pogut eliminar tots els fitxers del paquet"
#, c-format
msgid "package filename is not valid"
msgstr "el nom de fitxer del paquet no és vàlid"
#, c-format
msgid "package architecture is not valid"
msgstr "l'arquitectura del paquet no és vàlida"
#, c-format
msgid "could not find repository for target"
msgstr "no s'ha pogut trobar el repositori per l'objectiu"
#, c-format
msgid "invalid or corrupted delta"
msgstr "delta invàlid o corrupte"
#, c-format
msgid "delta patch failed"
msgstr "ha fallat el pedaç delta"
#, c-format
msgid "could not satisfy dependencies"
msgstr "no s'han pogut satisfer les dependències"
#, c-format
msgid "conflicting dependencies"
msgstr "dependències conflictives"
#, c-format
msgid "conflicting files"
msgstr "fitxers conflictius"
#, c-format
msgid "failed to retrieve some files"
msgstr "ha fallat en recuperar alguns fitxers"
#, c-format
msgid "invalid regular expression"
msgstr "expressió regular invàlida"
#, c-format
msgid "libarchive error"
msgstr "error de libarchive"
#, c-format
msgid "download library error"
msgstr "error de la llibreria de baixades"
#, c-format
msgid "error invoking external downloader"
msgstr "error en invocar el baixador extern"
#, c-format
msgid "unexpected error"
msgstr "error inesperat"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "no s'ha pogut trobar %s en la base de dades -- s'està ometent\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "s'està eliminant %s de la llista d'objectius\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "no s'ha pogut eliminar el fitxer '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "no s'ha pogut eliminar la entrada de la base de dades %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "no s'ha pogut eliminar l'entrada '%s' de la memòria cau\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: s'ha ignorat l'actualització del paquet (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: s'ha ignorat la desactualització del paquet (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: desactualitzant de la versió %s a la versió %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: local (%s) és més nou que %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "s'està ignorant el reemplaçament del paquet (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "no s'ha pogut reemplaçar %s per %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s és al dia -- s'ignorarà\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s és al dia -- es reinstal·larà\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "desactualitzant paquet %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "s'ha detectat un paquet amb un conflicte impossible de resoldre\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"s'està eliminant '%s' de la llista d'objectius perquè té conflictes amb "
"'%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "ha fallat en recuperar alguns fitxers de %s\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "no s'ha pogut publicar la transacció d'eliminació\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "no s'ha pogut publicar la transacció\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "no s'ha pogut eliminar el fitxer de bloqueig %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "no s'ha pogut crear el directori temporal\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "no s'ha pogut copiar el fitxer temporal a %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "no s'ha pogut eliminar el directori temporal %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "no s'ha pogut canviar el directori a %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "no s'ha pogut bifurcar a un nou procés (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "no s'ha pogut canviar el directori arrel (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "no s'ha pogut canviar el directori a / (%s)\n"
#, c-format
msgid "call to popen failed (%s)\n"
msgstr "ha fallat la crida a popen (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "ha fallat la crida a waitpid (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "l'ordre a fallat a executar-se correctament\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "no existeix memòria cau %s, s'està creant...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "no s'ha pogut crear la memòria cau del paquet, s'usarà /tmp\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "s'han trobat paquets conflictius en la llista d'objectius\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "no podeu instal·lar dos paquets amb conflictes alhora\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "no està implementat reemplaçar paquets amb -U\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "podeu reemplaçar paquets manualment usant -Rd i -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "no s'ha especificat l'esquema url, s'està assumint HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "no s'ha pogut escriure al fitxer '%s'\n"
#~ msgid "no such repository"
#~ msgstr "no existeix aquest repositori"
#~ msgid "repository '%s' not found\n"
#~ msgstr "no s'ha trobat el repositori '%s'\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "no s'ha pogut crear la transacció d'eliminació\n"
#~ msgid "could not create transaction\n"
#~ msgstr "no s'ha pogut crear la transacció\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "no s'ha pogut inicialitzar la transacció d'eliminació\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "no s'ha pogut inicialitzar la transacció\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "no s'ha pogut preparar la transacció d'eliminació\n"

View File

@@ -1,20 +1,20 @@
# translation of cs.po to Čeština
# 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, 2009.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Vojtěch Gondžala <vojtech.gondzala@gmail.com>, 2007, 2008, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: cs\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-04 21:59+0100\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-05 12:56+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"
"Language: cs\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
@@ -22,25 +22,9 @@ msgid "replacing older version %s-%s by %s in target list\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"
msgid "skipping %s-%s because newer version %s is in target list\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"
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 "nelze instalovat dva konfliktní balíčky současně\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "nahrazování balíčků pomocí -U není nyní podporováno\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "balíčky lze nahradit ručně použitím -Rd a -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -49,14 +33,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"
@@ -102,13 +86,29 @@ 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 "removing invalid database: %s\n"
msgstr "odstraňuje se chybná databáze: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nelze otevřít %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "nelze odstranit adresář databáze %s\n"
#, c-format
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"
msgstr "chybný název záznamu v databázi '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "duplicitní záznam v databázi '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "poškozený záznam v databázi '%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"
@@ -145,14 +149,14 @@ msgstr "chyba při čtení balíčku %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "chybí metadata balíčku v %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "pokus o opětovné zaregistrování databáze 'local'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "cesta k databázi není definována\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "pokus o opětovné zaregistrování databáze 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "zjištěna cyklická závislost:\n"
@@ -165,6 +169,10 @@ 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"
@@ -173,45 +181,33 @@ msgstr "byl vybrán nahrazující balíček (%s poskytuje %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%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"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "schéma URL nedefinováno, předpokládá se HTTP\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' je chybná\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
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á 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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "nelze navázat stahování %s, začíná se znovu\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "selhalo získání souboru '%s' z %s\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "spouští se 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"
@@ -285,6 +281,10 @@ msgstr "nelze odstranit záznam v databázi"
msgid "invalid url for 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"
msgstr "transakce inicializována"
@@ -310,17 +310,17 @@ 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 +329,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"
@@ -346,8 +338,12 @@ msgid "package filename is not valid"
msgstr "jméno souboru balíčku není platné"
#, c-format
msgid "no such repository"
msgstr "takový repositář není nastaven"
msgid "package architecture is not valid"
msgstr "architektura balíčku není platná"
#, c-format
msgid "could not find repository for target"
msgstr "nelze nalézt repositář cíle"
#, c-format
msgid "invalid or corrupted delta"
@@ -357,10 +353,6 @@ msgstr "neplatný nebo poškozený delta rozdíl"
msgid "delta patch failed"
msgstr "aplikace delta rozdílu selhala"
#, c-format
msgid "group not found"
msgstr "skupina nebyla nalezena"
#, 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"
@@ -409,6 +393,10 @@ msgstr "neočekávaná chyba"
msgid "could not find %s in database -- skipping\n"
msgstr "nelze nalézt %s v databázi -- vynechat\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "'%s' odstraněn ze seznamu cílů\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "nelze odstranit soubor '%s': %s\n"
@@ -422,20 +410,28 @@ 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: ignoruje se aktualizace balíčku (měl být 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í verze (%s) je novější než v %s (%s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignoruje se aktualizace 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 "repository '%s' not found\n"
msgstr "repositář '%s' nebyl nalezen\n"
msgid "cannot replace %s by %s\n"
msgstr "nelze nahradit soubor %s souborem %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -457,42 +453,14 @@ msgstr "zjištěn konflikt nerozlišitelných balíčků\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' odstraněn ze seznamu cílů, protože je konfliktní s '%s'\n"
#, c-format
msgid "command: %s\n"
msgstr "příkaz: %s\n"
#, c-format
msgid "failed to retrieve some files from %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 initialize the removal transaction\n"
msgstr "nelze inicializovat transakci pro odstranění\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nelze připravit transakci pro odstranění\n"
#, c-format
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 +469,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ší se provádění skriptů\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "nelze vytvořit dočasný adresář\n"
@@ -513,6 +477,10 @@ 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 change directory to %s (%s)\n"
msgstr "nelze změnit adresář na %s (%s)\n"
@@ -530,24 +498,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "nelze změnit adresář na / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "volání popen selhalo (%s)"
msgid "call to popen failed (%s)\n"
msgstr "volání popen selhalo (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "volání waitpid selhalo (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "skript se nepodařilo spustit správně\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"
@@ -556,3 +516,87 @@ 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á se /tmp\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "v seznamu cílů byly nalezeny konfliktní balíčky\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "nelze instalovat dva konfliktní balíčky současně\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "nahrazování balíčků pomocí -U není nyní podporováno\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "balíčky lze nahradit ručně použitím -Rd a -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "schéma URL nedefinováno, předpokládá se HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "nelze zapisovat do souboru '%s'\n"
#~ msgid "no such repository"
#~ msgstr "takový repositář není nastaven"
#~ msgid "repository '%s' not found\n"
#~ msgstr "repositář '%s' nebyl nalezen\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "nelze vytvořit transakci pro odstranění\n"
#~ msgid "could not create transaction\n"
#~ msgstr "nelze vytvořit transakci\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "nelze inicializovat transakci pro odstranění\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "nelze inicializovat transakci\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "nelze připravit transakci pro odstranění\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

@@ -1,20 +1,21 @@
# translation of de.po to German
# German translations for Pacman package manager package.
# Copyright (C) 2002-2008 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
#
# 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"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-03 11:58+0100\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-07 20:02+0100\n"
"Last-Translator: Matthias Gorissen <matthias@archlinux.de>\n"
"Language-Team: German <archlinux.de>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -26,26 +27,9 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "Ersetze ältere Version %s-%s durch %s in der Ziel-Liste\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "Überspringe %s-%s, da die Ziel-Liste die neuere Version %s enthält\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "In Konflikt stehende Pakete wurden in Ziel-Liste gefunden\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"Sie können nicht zwei in Konflikt stehende Pakete zur selben Zeit "
"installieren\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "Das Ersetzen von Paketen mit -U wird noch nicht unterstützt\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "Sie können Pakete manuell mit -Rd und -U ersetzen\n"
"Überspringe %s-%s, da sich die neuere Version %s in der Ziel-Liste befindet\n"
#, c-format
msgid ""
@@ -55,14 +39,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,13 +92,29 @@ 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 "removing invalid database: %s\n"
msgstr "Entferne die ungültige Datenbank: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "Konnte Datenbank-Verzeichnis %s nicht entfernen\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "Konnte Datenbank %s nicht entfernen\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "Ungültiger Name für Datenbank-Eintrag '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "Doppelter Datenbank-Eintrag '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "Beschädigter Datenbank-Eintrag '%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"
@@ -155,14 +159,14 @@ msgstr "Fehler beim Lesen des Paketes %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "Fehlende Paket-Metadaten in %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "Versuche die lokale Datenbank neu zu registrieren\n"
#, c-format
msgid "database path is undefined\n"
msgstr "Datenbank-Pfad ist nicht definiert\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "Versuche die lokale Datenbank neu zu registrieren\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "Abhängigkeits-Zyklus entdeckt:\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"
@@ -183,45 +191,33 @@ msgstr "Bereitstellendes Paket wurde ausgewählt (%s enthält %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "Kann \"%s\" nicht auflösen (eine Abhängigkeit von \"%s\")\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' ist ungültig\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "URL-Schema nicht spezifiziert, vermute HTTP\n"
#, c-format
msgid "disk"
msgstr "Platte"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' ist ungültig\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "Konnte Datei '%s' nicht von %s übertragen : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "Kann den Download nicht wieder aufnehmen, starte neu\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "Kann den Download von %s wieder aufnehmen, starte neu\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "Konnte Datei '%s' nicht von %s übertragen\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 +291,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 +320,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 +340,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"
@@ -356,8 +349,12 @@ msgid "package filename is not valid"
msgstr "Der Dateiname des Paketes ist nicht gültig"
#, c-format
msgid "no such repository"
msgstr "Kein solches Repositorium"
msgid "package architecture is not valid"
msgstr "Die Paket-Architektur ist ungültig"
#, c-format
msgid "could not find repository for target"
msgstr "Konnte kein Repositorium für das Ziel finden"
#, c-format
msgid "invalid or corrupted delta"
@@ -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"
@@ -419,6 +404,10 @@ msgstr "Unerwarteter Fehler"
msgid "could not find %s in database -- skipping\n"
msgstr "Konnte %s nicht in Datenbank finden -- Überspringe\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "Entferne '%s' aus der Ziel-Liste\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "Kann Datei '%s' nicht entfernen: %s\n"
@@ -432,20 +421,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 "repository '%s' not found\n"
msgstr "Repositorium '%s' nicht gefunden\n"
msgid "cannot replace %s by %s\n"
msgstr "Kann %s nicht durch %s ersetzen\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -467,42 +464,14 @@ 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"
#, c-format
msgid "could not create removal transaction\n"
msgstr "Konnte den Lösch-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 prepare removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht vorbereiten\n"
#, c-format
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 +480,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 +488,10 @@ 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 change directory to %s (%s)\n"
msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)\n"
@@ -540,24 +509,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "Konnte nicht zu Verzeichnis / (%s) wechseln\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "Aufruf von 'popen' fehlgeschlagen (%s)"
msgid "call to popen failed (%s)\n"
msgstr "Aufruf von 'popen' fehlgeschlagen (%s)\n"
#, c-format
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"

563
lib/libalpm/po/el.po Normal file
View File

@@ -0,0 +1,563 @@
# Greek translations for Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
#
# Christos Nouskas <nous@archlinux.us>, 2009, 2010.
# Χρήστος Νούσκας (Christos Nouskas) <nous@archlinux.us>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-09 23:02+0300\n"
"Last-Translator: Χρήστος Νούσκας (Christos Nouskas) <nous@archlinux.us>\n"
"Language-Team: Greek <>\n"
"Language: Greek\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\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 target list\n"
msgstr ""
"παράλειψη %s-%s καθώς υπάρχει νεότερη έκδοση %s στην λίστα διεκπεραίωσης\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 "removing invalid database: %s\n"
msgstr "διαγραφή άκυρης βάσης: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "αδυναμία ανάγνωσης %s: %s\n"
#, c-format
msgid "could not remove database directory %s\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 "duplicated 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 "database path is undefined\n"
msgstr "ακαθόριστη διαδρομή βάσης\n"
#, c-format
msgid "attempt to re-register the 'local' DB\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 "disk"
msgstr "δίσκο"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "άκυρη διεύθυνση '%s'\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "αποτυχία λήψης αρχείου '%s' από %s : %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "συνέχιση λήψης %s αδύνατη, επανεκκίνηση\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "σφάλμα εγγραφής στο '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "αποτυχία λήψης αρχείου '%s' από %s\n"
#, c-format
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"
#, c-format
msgid "out of memory!"
msgstr "ανεπαρκής μνήμη!"
#, c-format
msgid "unexpected system error"
msgstr "απροσδόκητο σφάλμα συστήματος"
#, c-format
msgid "insufficient privileges"
msgstr "ανεπαρκή προνόμια"
#, c-format
msgid "could not find or read file"
msgstr "αδυναμία εύρεσης ή ανάγνωσης αρχείου"
#, c-format
msgid "could not find or read directory"
msgstr "αδυναμία εύρεσης ή ανάγνωσης καταλόγου"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "εσφαλμένο ή NULL όρισμα"
#, c-format
msgid "library not initialized"
msgstr "βιβλιοθήκη μη εκκινηθείσα"
#, c-format
msgid "library already initialized"
msgstr "βιβλιοθήκη ήδη εκκινηθείσα"
#, c-format
msgid "unable to lock database"
msgstr "αδυναμία κλειδώματος βάσης"
#, c-format
msgid "could not open database"
msgstr "αδυναμία ανάγνωσης βάσης"
#, c-format
msgid "could not create database"
msgstr "αδυναμία δημιουργίας βάσης"
#, c-format
msgid "database not initialized"
msgstr "βάση μη εκκινηθείσα"
#, c-format
msgid "database already registered"
msgstr "βάση ήδη εκκινηθείσα"
#, c-format
msgid "could not find database"
msgstr "αδυναμία εύρεσης βάσης"
#, c-format
msgid "could not update database"
msgstr "αδυναμία ενημέρωσης βάσης"
#, c-format
msgid "could not remove database entry"
msgstr "αδυναμία κατάργησης εγγραφής βάσης"
#, c-format
msgid "invalid url for server"
msgstr "άκυρη διεύθυνση διακομιστή"
#, c-format
msgid "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 "package architecture is not valid"
msgstr "μη έγκυρη αρχιτεκτονική πακέτου"
#, c-format
msgid "could not find repository for target"
msgstr "αδυναμία εύρεσης αποθήκης για διεκπεραίωση"
#, c-format
msgid "invalid or corrupted delta"
msgstr "άκυρο ή κατεστραμμένο delta"
#, c-format
msgid "delta patch failed"
msgstr "αποτυχία μπάλωματος delta"
#, 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 "σφάλμα βιβλιοθήκης λήψης"
#, 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 "removing %s from target list\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 "%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 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 "αδυναμία διαγραφής προσωρινού καταλόγου %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)\n"
msgstr "αποτυχία κλήσης popen (%s)\n"
#, 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 "conflicting packages were found in target list\n"
#~ msgstr "βρέθηκαν αντιτιθέμενα πακέτα στην λίστα διεκπεραίωσης\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr ""
#~ "δεν επιτρέπεται η ταυτόχρονη εγκατάσταση δύο αντιτιθεμένων πακέτων\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "η αντικατάσταση πακέτων με όρισμα -U δεν υποστηρίζεται ακόμη\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "η αντικατάσταση πακέτων μπορεί να γίνει χειροκίνητα με -Rd and -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "ακαθόριστο πρωτόκολλο url, εικάζεται HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "αδυναμία εγγραφής στο '%s'\n"
#~ msgid "no such repository"
#~ msgstr "δεν υπάρχει τέτοια αποθήκη"
#~ msgid "repository '%s' not found\n"
#~ msgstr "δεν βρέθηκε αποθήκη'%s'\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "αδυναμία διεκπεραίωσης κατάργησης\n"
#~ msgid "could not create transaction\n"
#~ msgstr "αδυναμία δημιουργίας διεκπεραίωσης\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "αδυναμία εκκίνησης κατάργησης\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "αδυναμία εκκίνησης διεκπεραίωσης\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "αδυναμία προετοιμασίας κατάργησης\n"

View File

@@ -1,16 +1,16 @@
# 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.
#
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Jeff Bailes <thepizzaking@gmail.com>, 2007, 2009.
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Project-Id-Version: Pacman package manager 3.3.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 23:38+0200\n"
"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2009-10-04 17:08+0200\n"
"Last-Translator: Dan McGee <dpmcgee@gmail.com>\n"
"Language-Team: English <en_gb@li.org>\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -21,24 +21,8 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "replacing older version %s-%s by %s in target list\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "skipping %s-%s because newer version %s is in the target list\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "conflicting packages were found in the target list\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "you cannot install two conflicting packages at the same time\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "replacing packages with -U is not supported yet\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "you can replace packages manually using -Rd and -U\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "skipping %s-%s because newer version %s is in target list\n"
#, c-format
msgid ""
@@ -48,14 +32,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,13 +85,29 @@ 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 "removing invalid database: %s\n"
msgstr "removing invalid database: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "could not open %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "could not remove database directory %s\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "could not remove database %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "invalid name for database entry '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "duplicated database entry '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "corrupted 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"
@@ -144,14 +148,14 @@ msgstr "error while reading package %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "missing package metadata in %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "attempt to re-register the 'local' DB\n"
#, c-format
msgid "database path is undefined\n"
msgstr "database path is undefined\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "attempt to re-register the 'local' DB\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "dependency cycle detected:\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"
@@ -172,45 +180,33 @@ msgstr "provider package was selected (%s provides %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "cannot resolve \"%s\", a dependency of \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' is invalid\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "URL scheme not specified, assuming HTTP\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' is invalid\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "failed retrieving file '%s' from %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "cannot resume download, starting over\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "resuming download of %s not possible; starting over\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "failed retrieving file '%s' from %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 +280,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 +309,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 +328,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"
@@ -345,8 +337,12 @@ msgid "package filename is not valid"
msgstr "package filename is not valid"
#, c-format
msgid "no such repository"
msgstr "no such repository"
msgid "package architecture is not valid"
msgstr "package architecture is not valid"
#, c-format
msgid "could not find repository for target"
msgstr "could not find repository for target"
#, c-format
msgid "invalid or corrupted delta"
@@ -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"
@@ -408,6 +392,10 @@ msgstr "unexpected error"
msgid "could not find %s in database -- skipping\n"
msgstr "could not find %s in database -- skipping\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "removing %s from target list\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "cannot remove file '%s': %s\n"
@@ -421,20 +409,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 "repository '%s' not found\n"
msgstr "repository '%s' not found\n"
msgid "cannot replace %s by %s\n"
msgstr "cannot replace %s by %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -456,42 +452,14 @@ 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"
#, c-format
msgid "could not create removal transaction\n"
msgstr "could not create removal 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 prepare removal transaction\n"
msgstr "could not prepare removal transaction\n"
#, c-format
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 +468,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 +476,10 @@ 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 change directory to %s (%s)\n"
msgstr "could not change directory to %s (%s)\n"
@@ -529,24 +497,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "could not change directory to / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "call to popen failed (%s)"
msgid "call to popen failed (%s)\n"
msgstr "call to popen failed (%s)\n"
#, c-format
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"
@@ -555,4 +515,3 @@ msgstr "no %s cache exists, creating...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "couldn't create package cache, using /tmp instead\n"

View File

@@ -1,19 +1,22 @@
# Juan Pablo González Tognarelli <jotapesan@gmail.com>, 2008, 2009.
# Juan Pablo González Tognarelli <juan.gonzalez.tognarelli@gmail.com>, 2009.
# Juan Pablo Gonzalez <jotapesan@gmail.com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: libalpm\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-03 03:18-0300\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: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-13 10:49-0400\n"
"Last-Translator: Juan Pablo Gonzalez <jotapesan@gmail.com>\n"
"Language-Team: Spanish <kde-i18n-doc@kde.org>\n"
"Language: es\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 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#, c-format
@@ -21,27 +24,12 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
"reemplazando la versión antigua %s-%s por %s en la lista de objetivos\n"
# , c-format
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "saltando %s-%s debido a que una nueva versión de %s esta en la lista\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "paquetes con conflictos fueron encontrados en la lista\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"usted no puede instalar simultáneamente dos paquetes que poseen conflictos "
"entre si\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "reemplazar paquetes con -U aún no esta soportado\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "usted puede reemplazar manualmente los paquetes usando -Rd y -U\n"
"saltando %s-%s debido a la nueva versión de %s esta en la lista de "
"objetivos\n"
#, c-format
msgid ""
@@ -51,14 +39,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"
@@ -103,14 +91,31 @@ msgstr "no se pudo actualizar en la base de datos la entrada %s-%s\n"
msgid "could not add entry '%s' in cache\n"
msgstr "no se pudo agregar '%s' en la cache\n"
# , c-format
#, 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 "removing invalid database: %s\n"
msgstr "quitando la base de datos inválida: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "no se pudo abrir %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "no se pudo quitar el directorio de la base de datos %s\n"
#, c-format
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"
msgstr "nombre invalido para la entrada de la base de datos '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "entrada duplicada en la base de datos '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "entrada corrupta en la base de datos '%s'\n"
@@ -122,14 +127,18 @@ msgstr "no se pudo abrir el archivo %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr ""
"la base de datos %s es inconsistente: nombre mal emparejado en el paquete %"
"s\n"
"la base de datos %s es inconsistente: nombre mal emparejado en el paquete "
"%s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr ""
"la base de datos %s es inconsistente: versión mal emparejada en el paquete %"
"s\n"
"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"
@@ -151,14 +160,14 @@ msgstr "error mientras se leía el paquete %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "faltan los metadatos del paquete en %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "intento para re-registrar la base de datos 'local'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "la ruta para la base de datos no está definida\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "intento para re-registrar la base de datos 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "ciclo de dependencias detectado:\n"
@@ -171,6 +180,10 @@ msgstr "%s será quitado luego de su dependencia %s\n"
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"
@@ -179,45 +192,33 @@ msgstr "El paquete proveedor fue seleccionado (%s provee %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "no se pudo resolver \"%s\", una dependencia para \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "la url %s no es válida\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "no fue especificado el esquema de url, asumiendo HTTP\n"
#, c-format
msgid "disk"
msgstr "disco"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "la url %s no es válida\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "falló al obtener archivo '%s' desde %s: %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "no se puede resumir la descarga, empezando de nuevo\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "no es posible continuar la descarga de %s; empezando de nuevo\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "falló al obtener archivo '%s' desde %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"
@@ -245,7 +246,7 @@ msgstr "no se pudo leer el directorio"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "argumento erroneo o NULO"
msgstr "se pasó un argumento erróneo o NULO"
#, c-format
msgid "library not initialized"
@@ -291,6 +292,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 +321,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 +341,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"
@@ -352,8 +350,12 @@ msgid "package filename is not valid"
msgstr "el nombre de archivo del paquete no es válido"
#, c-format
msgid "no such repository"
msgstr "no existe el repositorio"
msgid "package architecture is not valid"
msgstr "no es válida la arquitectura del paquete"
#, c-format
msgid "could not find repository for target"
msgstr "no pudo encontrarse un repositorio para el objetivo"
#, c-format
msgid "invalid or corrupted delta"
@@ -361,11 +363,7 @@ msgstr "invalido o diferencial corrupto"
#, c-format
msgid "delta patch failed"
msgstr "parche delta fallado"
#, c-format
msgid "group not found"
msgstr "grupo no encontrado"
msgstr "parche diferencial fallado"
#, c-format
msgid "could not satisfy dependencies"
@@ -380,16 +378,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"
@@ -415,6 +405,11 @@ msgstr "error inesperado"
msgid "could not find %s in database -- skipping\n"
msgstr "no se pudo encontrar %s en la base de datos -- saltando\n"
# , c-format
#, c-format
msgid "removing %s from target list\n"
msgstr "quitando %s de la lista de objetivos\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "no se pudo quitar el archivo '%s': %s\n"
@@ -428,22 +423,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 "repository '%s' not found\n"
msgstr "repositorio '%s' no encontrado\n"
msgid "cannot replace %s by %s\n"
msgstr "no se pudo reemplazar el archivo %s por %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -464,45 +465,17 @@ msgstr "se han detectado paquetes con conflictos no resueltos\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr ""
"quitando '%s' de la lista de objetivos debido a que posee conflictos con '%"
"s'\n"
#, c-format
msgid "command: %s\n"
msgstr "comando: %s\n"
"quitando '%s' de la lista de objetivos debido a que posee conflictos con "
"'%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "falló al descargar algunos archivos desde %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "no se pudo crear la operación de eliminació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 prepare removal transaction\n"
msgstr "no se pudo preparar la operación de eliminación\n"
#, c-format
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 +484,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 +492,10 @@ 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 change directory to %s (%s)\n"
msgstr "no se pudo cambiar el directorio a %s (%s)\n"
@@ -539,25 +512,18 @@ msgstr "no se pudo cambiar el directorio raíz (%s)\n"
msgid "could not change directory to / (%s)\n"
msgstr "no se pudo cambiar el directorio a / (%s)\n"
# , c-format
#, c-format
msgid "call to popen failed (%s)"
msgstr "llamada a popen fallida (%s)"
msgid "call to popen failed (%s)\n"
msgstr "falló la llamada a popen (%s)\n"
#, c-format
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"
@@ -567,3 +533,44 @@ msgstr "no existe la cache %s, creando...\n"
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"
# , c-format
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "se encontraron paquetes con conflictos en la lista de objetivos\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr ""
#~ "usted no puede instalar simultáneamente dos paquetes que poseen "
#~ "conflictos entre si\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "reemplazar paquetes con -U aún no esta soportado\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "usted puede reemplazar manualmente los paquetes usando -Rd y -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "no fue especificado el esquema de url, asumiendo HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "no se puede escribir en el archivo '%s'\n"
#~ msgid "no such repository"
#~ msgstr "no existe el repositorio"
#~ msgid "repository '%s' not found\n"
#~ msgstr "repositorio '%s' no encontrado\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "no se pudo crear la operación de eliminación\n"
#~ msgid "could not create transaction\n"
#~ msgstr "no se pudo crear la operación\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "no se pudo iniciar la operación de eliminación\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "no se pudo iniciar la operación\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "no se pudo preparar la operación de eliminación\n"

View File

@@ -1,14 +1,15 @@
# French translations for Pacman package manager package.
# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.1\n"
"Project-Id-Version: Pacman package manager 3.3.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: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-06 20:26+0200\n"
"Last-Translator: Xavier <shiningxc@gmail.com>\n"
"Language-Team: solsTiCe d'Hiver <solstice.dhiver@laposte.net>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -21,28 +22,11 @@ msgstr ""
"remplacement de l'ancienne version %s-%s par %s dans la liste des cibles\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"ignore le paquet %s-%s car une version plus récente %s est dans la liste des "
"cibles\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "des paquets en conflit ont été trouvés dans la liste des cibles\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "vous ne pouvez pas installer deux paquets en conflit en même temps\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "remplacer un paquet avec -U n'est pas encore possible\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr ""
"vous pouvez remplacer les paquets manuellement en utilisant -Rd et -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -51,14 +35,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,13 +89,29 @@ 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 "removing invalid database: %s\n"
msgstr "suppression d'une base de données invalide: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "l'ouverture de %s: %s a échoué\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "la suppression de la base de données %s a échoué\n"
#, c-format
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"
msgstr "nom invalide pour l'entrée de base de données '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "l'entrée '%s' de la base de données est dupliquée\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "l'entrée '%s' de la base de données est corrompue\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"
@@ -148,14 +152,14 @@ msgstr "erreur lors de la lecture du paquet %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "méta-données du paquet manquantes dans %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "tentative de ré-enregistrer la base de données locale\n"
#, c-format
msgid "database path is undefined\n"
msgstr "base de données non initialisée\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "tentative de ré-enregistrer la base de données locale\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "cycle de dépendances détecté:\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"
@@ -176,45 +184,33 @@ msgstr "Une provision a été sélectionnée (%s fournit %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "impossible de résoudre \"%s\", une dépendance de \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' est invalide\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "Le protocole n'a pas été spécifié dans l'url, assume http\n"
#, c-format
msgid "disk"
msgstr "disque"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' est invalide\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "échec de récupération du fichier '%s' depuis %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "le téléchargement ne peut pas être repris, relance\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "le téléchargement de %s ne peut pas être continué, reprise au début\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "échec de récupération du fichier '%s' depuis %s\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 +284,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,16 +313,18 @@ 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é"
msgstr "impossible de trouver ou de lire le paquet"
#, 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"
@@ -332,14 +334,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"
@@ -349,8 +343,12 @@ msgid "package filename is not valid"
msgstr "nom de paquet invalide"
#, c-format
msgid "no such repository"
msgstr "ce dépôt n'existe pas"
msgid "package architecture is not valid"
msgstr "architecture invalide"
#, c-format
msgid "could not find repository for target"
msgstr "impossible de trouver le dépôt pour la cible"
#, c-format
msgid "invalid or corrupted delta"
@@ -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"
@@ -412,6 +398,10 @@ msgstr "erreur non prévue"
msgid "could not find %s in database -- skipping\n"
msgstr "trouver %s dans la base de données a échoué -- ignoré\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "supprime %s de la liste de cible\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "suppression du fichier '%s' impossible: %s\n"
@@ -425,20 +415,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 "repository '%s' not found\n"
msgstr "dépôt '%s' non trouvé\n"
msgid "cannot replace %s by %s\n"
msgstr "le remplacement de %s par %s est impossible\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -460,42 +458,14 @@ 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"
#, c-format
msgid "could not create removal transaction\n"
msgstr "la création de la transaction de suppression 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 prepare removal transaction\n"
msgstr "la préparation de la transaction de suppression a échoué\n"
#, c-format
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 +474,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 +482,10 @@ 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 change directory to %s (%s)\n"
msgstr "changer de répertoire vers %s a échoué (%s)\n"
@@ -534,24 +503,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "changer de répertoire vers / a échoué (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "call to popen failed (%s)"
msgid "call to popen failed (%s)\n"
msgstr "l'appel de popen a échoué (%s)\n"
#, 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 +521,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

@@ -1,16 +1,17 @@
# Hungarian translations for libalpm package.
# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the libalpm library.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Miklos Vajna <vmiklos@frugalware.org>, 2006.
#
msgid ""
msgstr ""
"Project-Id-Version: hu\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2007-03-14 13:45+0100\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2009-10-04 17:08+0200\n"
"Last-Translator: Nagy Gabor <ngaba@bibl.u-szeged.hu>\n"
"Language-Team: <hu@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -22,25 +23,9 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "régebbi verzió (%s-%s) lecserélése %s verzióra a célok listájában\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "%s-%s kihagyása, mert újabb verzió (%s) van a célok között\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "ütköző csomagokat találtam a célok között\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "nem telepíthető két ütköző csomag egyszerre\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "csomagok lecserélése még nem támogatott -U esetén\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "a -Rd és -U használatával elvégezhető a csere\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -49,14 +34,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,16 +87,32 @@ 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 "removing invalid database: %s\n"
msgstr "hibás adatbázis eltávolítása: %s\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 remove database directory %s\n"
msgstr "nem sikerült eltávolítani a(z) %s adatbázis-könyvtárat\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "sikertelen a(z) %s adatbázis eltávolítása\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "hibás név a '%s' adatbázis-bejegyzés számára\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "duplikált adatbázis-bejegyzés: '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "sérült adatbázis bejegyzés: '%s'\n"
msgstr "sérült adatbázis-bejegyzés: '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
@@ -125,6 +126,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"
@@ -145,14 +150,14 @@ msgstr "hiba a(z) %s csomag olvasása közben: %s\n"
msgid "missing package metadata in %s\n"
msgstr "hiányzó csomaginformációs fájl itt: %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "kísérlet a 'local' adatbázis újraregisztrálására\n"
#, c-format
msgid "database path is undefined\n"
msgstr "az adatbázis-útvonal nincs megadva\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "kísérlet a 'local' adatbázis újraregisztrálására\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "körkörös függőséget észleltem:\n"
@@ -165,6 +170,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"
@@ -173,45 +182,33 @@ msgstr "közvetett csomagválasztás (%s szolgáltatja %s-t)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nem sikerült a(z) \"%2$s\" csomag \"%1$s\" függőségét feloldani\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "a '%s' URL hibás\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "az URL séma nem definiált, http feltételezése\n"
#, c-format
msgid "disk"
msgstr "diszk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "a '%s' URL hibás\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "nem sikerült a(z) '%s' fájlt letölteni a %s helyről : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "nem tudom folytatni a letöltést, újrakezdem\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "nem tudom folytatni a(z) %s letöltését; újrakezdem\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "nem sikerült a(z) '%s' fájlt letölteni a %s helyről\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 +282,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 +311,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 +330,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"
@@ -346,8 +339,12 @@ msgid "package filename is not valid"
msgstr "érvénytelen csomagnév"
#, c-format
msgid "no such repository"
msgstr "nincs ilyen repó"
msgid "package architecture is not valid"
msgstr "érvénytelen csomag-architektúra"
#, c-format
msgid "could not find repository for target"
msgstr "nem található repó a célcsomaghoz"
#, c-format
msgid "invalid or corrupted delta"
@@ -357,10 +354,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 +367,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"
@@ -409,6 +394,10 @@ msgstr "nemvárt hiba"
msgid "could not find %s in database -- skipping\n"
msgstr "nem található a(z) %s az adatbázisban -- kihagyás\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "%s eltávolítása a cél listából\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "nem sikerült eltávolítani a '%s' fájlt : %s\n"
@@ -422,20 +411,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 "repository '%s' not found\n"
msgstr "a(z) '%s' repó nem található\n"
msgid "cannot replace %s by %s\n"
msgstr "nem lehet lecserélni a(z) %s csomagot a(z) %s csomaggal\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -457,42 +454,14 @@ 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"
#, c-format
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 initialize the removal transaction\n"
msgstr "nem sikerült inicializálni az eltávolító 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"
#, c-format
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 +470,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 +478,10 @@ 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 change directory to %s (%s)\n"
msgstr "nem sikerült a könyvtárváltás ide: %s (%s)\n"
@@ -530,24 +499,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "nem sikerült a könyvtárat a /-re váltani (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "popen hívás sikertelen (%s)"
msgid "call to popen failed (%s)\n"
msgstr "popen hívás sikertelen (%s)\n"
#, c-format
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,19 +1,20 @@
# 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 <giovanni@archlinux.org>, 2007, 2008, 2009
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Giovanni 'voidnull' Scafora <giovanni@archlinux.org>, 2007, 2008, 2009, 2010
# Andrea 'bash' Scarpino <bash.lnx@gmail.com>, 2008
# Alessio 'mOLOk' Bolognino <themolok@gmail.com>, 2007
# Lorenzo '^zanDarK' Masini <lorenxo86@gmail.com>, 2007
#
msgid ""
msgstr ""
"Project-Id-Version: libalpm VERSION\n"
"Project-Id-Version: Pacman package manager 3.4.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 19:30+0200\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-05 18:00+0200\n"
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -23,25 +24,10 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "sostituzione in corso della vecchia versione di %s-%s con %s\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\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"
msgstr "sono stati individuati dei pacchetti che vanno in conflitto\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "impossibile installare due pacchetti che vanno in conflitto\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "la sostituzione dei pacchetti con -U non è ancora supportata\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"puoi sostituire manualmente i pacchetti, usando le opzioni -Rd e -U\n"
"ignoro %s-%s perché la nuova versione %s è presente nella lista dei "
"pacchetti\n"
#, c-format
msgid ""
@@ -51,14 +37,14 @@ msgstr ""
"i permessi delle directory differiscono su %s\n"
"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"
#, c-format
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: 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"
msgstr "impossibile estrarre %s (%s)\n"
@@ -104,13 +90,29 @@ 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 "removing invalid database: %s\n"
msgstr "rimozione del database: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "impossibile aprire %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "impossibile rimuovere la directory %s del database\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "impossibile rimuovere il database %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "nome non valido per la voce del database '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "la voce nel database '%s' è duplicata\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "la voce nel database '%s' è corrotta\n"
@@ -121,11 +123,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 è inconsistente: il nome del pacchetto %s non corrisponde\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 è inconsistente: la versione del pacchetto %s non corrisponde\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"
@@ -147,14 +156,14 @@ msgstr "si è verificato un errore durante la lettura del pacchetto %s: %s\n"
msgid "missing package metadata in %s\n"
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 DB 'locale'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "il percorso del database non è stato definito\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "tentativo in corso di registrare di nuovo il DB 'locale'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "individuato un possibile ciclo di dipendenze:\n"
@@ -167,6 +176,10 @@ 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 è già stato selezionato (%s dipende da %s)\n"
@@ -175,45 +188,33 @@ msgstr "il pacchetto è già stato selezionato (%s dipende da %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "impossibile risolvere \"%s\", una dipendenza di \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' non è esatto\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "non è stato specificato il protocollo dell'url, sarà usato HTTP\n"
#, c-format
msgid "disk"
msgstr "disco"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "l'url '%s' non è esatto\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "impossibile scaricare il pacchetto '%s' da %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "impossibile riprendere il download\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "impossibile riprendere il download di %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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "impossibile scaricare il pacchetto '%s' da %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"
@@ -287,6 +288,10 @@ 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 "l'operazione è già stata inizializzata"
@@ -312,17 +317,17 @@ msgid "operation not compatible with the transaction type"
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 scaricare 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 "il pacchetto non è valido oppure è corrotto"
@@ -331,14 +336,6 @@ msgstr "il pacchetto non è valido oppure è corrotto"
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 "il pacchetto non è stato installato oppure è una versione meno recente"
#, c-format
msgid "cannot remove all files for package"
msgstr "impossibile rimuovere tutti i file del pacchetto"
@@ -348,8 +345,12 @@ msgid "package filename is not valid"
msgstr "il nome del pacchetto non è valido"
#, c-format
msgid "no such repository"
msgstr "nessun repository corrispondente"
msgid "package architecture is not valid"
msgstr "l'architettura del pacchetto non è valida"
#, c-format
msgid "could not find repository for target"
msgstr "impossibile trovare un repository contenente questo pacchetto"
#, c-format
msgid "invalid or corrupted delta"
@@ -359,10 +360,6 @@ msgstr "il delta non è valido oppure è corrotto"
msgid "delta patch failed"
msgstr "si sono verificati degli errori con la patch di delta"
#, c-format
msgid "group not found"
msgstr "impossibile trovare il gruppo"
#, c-format
msgid "could not satisfy dependencies"
msgstr "impossibile soddisfare le dipendenze"
@@ -376,16 +373,8 @@ msgid "conflicting files"
msgstr "file in conflitto"
#, c-format
msgid "user aborted the operation"
msgstr "l'utente ha annullato l'operazione"
#, 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"
@@ -411,6 +400,10 @@ msgstr "errore inaspettato"
msgid "could not find %s in database -- skipping\n"
msgstr "impossibile trovare %s nel database, sarà ignorato\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "rimozione di %s dalla lista dei pacchetti\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "impossibile rimuovere il file '%s': %s\n"
@@ -423,24 +416,30 @@ msgstr "impossibile rimuovere la voce %s-%s dal database\n"
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: l'aggiornamento del pacchetto è stato ignorato (per essere sostituito con %s-%"
"s)\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr ""
"%s: la versione installata (%s) è più recente di quella in %s (%s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: l'aggiornamento del pacchetto è stato ignorato (%s => %s)\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "impossibile trovare il repository '%s'\n"
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"
msgstr ""
"%s: la versione installata (%s) è più recente di quella presente in %s (%s)\n"
#, c-format
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 "%s-%s is up to date -- skipping\n"
@@ -453,8 +452,8 @@ msgstr "%s-%s è aggiornato, sarà reinstallato\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr ""
"installazione in corso di una versione meno recente del pacchetto %s (%s => %"
"s)\n"
"installazione in corso di una versione meno recente del pacchetto %s (%s => "
"%s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
@@ -462,44 +461,17 @@ 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 dei pacchetti 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 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 initialize the removal transaction\n"
msgstr "impossibile inizializzare l'operazione di rimozione\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "impossibile preparare l'operazione di rimozione\n"
#, c-format
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 +480,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 +488,10 @@ 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 change directory to %s (%s)\n"
msgstr "impossibile spostarsi nella directory %s (%s)\n"
@@ -537,24 +509,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "impossibile spostarsi nella directory / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "chiamata a popen non riuscita (%s)"
msgid "call to popen failed (%s)\n"
msgstr "chiamata a popen non riuscita (%s)\n"
#, c-format
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"

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

@@ -0,0 +1,606 @@
# Kazakh translations for Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.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.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-07 09:22+0600\n"
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
"Language-Team: Kazakh\n"
"Language: \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 target list\n"
msgstr ""
"%s-%s өткізіледі, өйткені жаңа %s нұсқасы мақсаттар тізімінде бар болып тұр\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 "removing invalid database: %s\n"
msgstr "қате дерекқорды өшіру: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "%s ашу мүмкін емес: %s\n"
#, c-format
msgid "could not remove database directory %s\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 "duplicated 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 "database path is undefined\n"
msgstr "дерекқорға жол анықталмаған\n"
#, c-format
msgid "attempt to re-register the 'local' DB\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 "disk"
msgstr "дискі"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "'%s' сілтемесі қате\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "'%s' файлын %s адресінен алу қатемен аяқталды : %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "%s жүктемесін жалғастыру мүмкін емес; басынан басталады\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "'%s' файлына жазу қатесі: %s\n"
#, c-format
msgid "failed retrieving file '%s' from %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 "жинақ іске қосылмады"
#, c-format
msgid "library already initialized"
msgstr "жинақ іске қосылған болып тұр"
#, c-format
msgid "unable to lock database"
msgstr "дерекқорды оқшаулау мүмкін емес"
#, c-format
msgid "could not open database"
msgstr "дерекқорды ашу мүмкін емес"
#, c-format
msgid "could not create database"
msgstr "дерекқорды жасау мүмкін емес"
#, c-format
msgid "database not initialized"
msgstr "дерекқор іске қосылмады"
#, c-format
msgid "database already registered"
msgstr "дерекқор тіркелген болып тұр"
#, c-format
msgid "could not find database"
msgstr "дерекқорды табу мүмкін емес"
#, c-format
msgid "could not update database"
msgstr "дерекқорды жаңарту мүмкін емес"
#, c-format
msgid "could not remove database entry"
msgstr "дерекқордан жазбаны өшіру мүмкін емес"
#, c-format
msgid "invalid url for server"
msgstr "сервер адресі қате"
#, c-format
msgid "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 "package architecture is not valid"
msgstr "десте файлдың архитектурасы қате"
#, c-format
msgid "could not find repository for target"
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 "removing %s from target list\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 "%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 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 "%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)\n"
msgstr "popen шақыру сәтсіз аяқталды (%s)\n"
#, 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 "conflicting packages were found in target list\n"
#~ msgstr "мақсаттар тізімінде ерегісетін дестелер табылды\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "сіз екі екі ерегісетін дестені орната алмайсыз\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "дестелерді -A мен -U опцияларын қолданып алмастыру әлі жасалмаған\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr ""
#~ "сіз дестелерді қолмен алмастыра аласыз, ол үшін -Rd мен -U қолданыңыз\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "сілтеменің түрі анықталмады, HTTP деп саналады\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "'%s' файлына жазу мүмкін емес\n"
#~ msgid "no such repository"
#~ msgstr "мұндай репозиторий жоқ"
#~ msgid "repository '%s' not found\n"
#~ msgstr "'%s' репозиторийі табылмады\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "өшіруге сұранымды құру мүмкін емес\n"
#~ msgid "could not create transaction\n"
#~ msgstr "сұранымды жасау мүмкін емес\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "өшіруге сұранымды іске қосу мүмкін емес\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "сұранымды іске қосу мүмкін емес\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "өшіруге сұранымды дайындау мүмкін емес\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,10 +8,11 @@ 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: 2010-06-04 13:36-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"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -21,23 +22,7 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr ""
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr ""
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr ""
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr ""
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
#, c-format
@@ -47,11 +32,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,13 +84,29 @@ msgid "could not add entry '%s' in cache\n"
msgstr ""
#, c-format
msgid "could not remove database entry %s%s\n"
msgid "removing invalid database: %s\n"
msgstr ""
#, c-format
msgid "could not open %s: %s\n"
msgstr ""
#, c-format
msgid "could not remove database directory %s\n"
msgstr ""
#, c-format
msgid "could not remove database %s\n"
msgstr ""
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr ""
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr ""
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr ""
@@ -122,6 +123,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 ""
@@ -143,11 +148,11 @@ msgid "missing package metadata in %s\n"
msgstr ""
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgid "database path is undefined\n"
msgstr ""
#, c-format
msgid "database path is undefined\n"
msgid "attempt to re-register the 'local' DB\n"
msgstr ""
#, c-format
@@ -162,6 +167,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 ""
@@ -170,32 +179,20 @@ msgstr ""
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr ""
#, c-format
msgid "url '%s' is invalid\n"
msgstr ""
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr ""
#, c-format
msgid "disk"
msgstr ""
#, c-format
msgid "url '%s' is invalid\n"
msgstr ""
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr ""
#, c-format
msgid "cannot resume download, starting over\n"
msgstr ""
#, c-format
msgid "cannot write to file '%s'\n"
msgstr ""
#, c-format
msgid "error downloading '%s': %s\n"
msgid "resuming download of %s not possible; starting over\n"
msgstr ""
#, c-format
@@ -203,11 +200,11 @@ msgid "error writing to file '%s': %s\n"
msgstr ""
#, c-format
msgid "could not chdir to %s\n"
msgid "failed retrieving file '%s' from %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 +279,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 +308,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 +327,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 ""
@@ -343,7 +336,11 @@ msgid "package filename is not valid"
msgstr ""
#, c-format
msgid "no such repository"
msgid "package architecture is not valid"
msgstr ""
#, c-format
msgid "could not find repository for target"
msgstr ""
#, c-format
@@ -354,10 +351,6 @@ msgstr ""
msgid "delta patch failed"
msgstr ""
#, c-format
msgid "group not found"
msgstr ""
#, c-format
msgid "could not satisfy dependencies"
msgstr ""
@@ -371,15 +364,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
@@ -406,6 +391,10 @@ msgstr ""
msgid "could not find %s in database -- skipping\n"
msgstr ""
#, c-format
msgid "removing %s from target list\n"
msgstr ""
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr ""
@@ -419,7 +408,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,11 +424,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 "repository '%s' not found\n"
msgid "cannot replace %s by %s\n"
msgstr ""
#, c-format
@@ -454,42 +451,14 @@ 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 ""
#, c-format
msgid "could not create removal transaction\n"
msgstr ""
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr ""
#, c-format
msgid "could not prepare removal transaction\n"
msgstr ""
#, c-format
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 +467,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 +475,10 @@ 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 change directory to %s (%s)\n"
msgstr ""
@@ -527,7 +496,7 @@ msgid "could not change directory to / (%s)\n"
msgstr ""
#, c-format
msgid "call to popen failed (%s)"
msgid "call to popen failed (%s)\n"
msgstr ""
#, c-format
@@ -535,15 +504,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

556
lib/libalpm/po/nb.po Normal file
View File

@@ -0,0 +1,556 @@
# Language libalpm translations for PACKAGE package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# <maister@archlinux.us>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2009-10-04 17:09+0200\n"
"Last-Translator: <maister@archlinux.us>\n"
"Language-Team: Language libalpm\n"
"Language: \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 "bytter ut eldre versjon %s-%s med %s i liste\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "hopper over %s-%s siden nyere versjon %s finnes i liste\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"mapperettigheter er forskjellige i %s\n"
"filsystem: %o pakke: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "utpakking: skriver ikke over mappe med fil %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "utpakking: symlink %s viser ikke til mappe\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "kunne ikke pakke ut %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kunne ikke døpe om %s til %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s lagret som %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "kunne ikke installere %s som %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s installert som %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "pakker ut %s som %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "kunne ikke motta nåværende mappe\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "problem oppstod under oppgradering av %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "problem oppstod under installasjon av %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "kunne ikke oppdatere databaseelement %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "kunne ikke legge til '%s' i cache\n"
#, c-format
msgid "removing invalid database: %s\n"
msgstr "fjerner ugyldig database: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "kunne ikke åpne %s: %s\n"
#, fuzzy, c-format
msgid "could not remove database directory %s\n"
msgstr "kunne ikke fjerne databaseelement %s-%s\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "kunne ikke fjerne database %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "ugyldig navn for databaseelement '%s'\n"
#, fuzzy, c-format
msgid "duplicated database entry '%s'\n"
msgstr "korrupt databaseelement '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "korrupt databaseelement '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "kunne ikke åpne fil %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "%s database er ukonsistent: navn samsvarer ikke med pakke %s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "%s database er ukonsistent: versjon samsvarer ikke med pakke %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "kunne ikke opprette mappe %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "kunne ikke analysere pakkebeskrivelse i fil %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "mangler pakkenavn i %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "mangler pakkeversjon i %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "feil oppstod under lesing av pakke: %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "mangler metadata i %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "databaseplassering er udefinert\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "forsøker å re-registrere den lokale databasen\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "avhengighetssyklus oppdaget\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s vil fjernes etter dens avhengighet %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s vil bli installert før dens avhengighet %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorerer pakke %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "tilføringspakke ble valgt (%s tilfører %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "kan ikke avgjøre \"%s\", en avhengighet av \"%s\"\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' er ugyldig\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "mottakelse av fil '%s' fra %s : %s feilet\n"
#, fuzzy, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "kan ikke fortsette nedlasting, starter på nytt\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "skriving til fil '%s': %s feilet\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "mottakelse av fil '%s' fra %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s ser ut til å være trunkert: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "nedlasting av %s feilet\n"
#, c-format
msgid "out of memory!"
msgstr "ikke mer minne!"
#, c-format
msgid "unexpected system error"
msgstr "uventet systemfeil"
#, c-format
msgid "insufficient privileges"
msgstr "ikke nok rettigheter"
#, c-format
msgid "could not find or read file"
msgstr "kunne ikke finne eller lese fil"
#, c-format
msgid "could not find or read directory"
msgstr "kunne ikke finne eller lese mappe"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "feil eller NULL-argument gitt"
#, c-format
msgid "library not initialized"
msgstr "bibliotek ikke initialisert"
#, c-format
msgid "library already initialized"
msgstr "bibliotek allerede initialisert"
#, c-format
msgid "unable to lock database"
msgstr "kunne ikke låse database"
#, c-format
msgid "could not open database"
msgstr "kunne ikke åpne database"
#, c-format
msgid "could not create database"
msgstr "kunne ikke opprette database"
#, c-format
msgid "database not initialized"
msgstr "database ikke initialisert"
#, c-format
msgid "database already registered"
msgstr "database allerede registret"
#, c-format
msgid "could not find database"
msgstr "kunne ikke finne database"
#, c-format
msgid "could not update database"
msgstr "kunne ikke oppdatere database"
#, c-format
msgid "could not remove database entry"
msgstr "kunne ikke fjerne databaseelement"
#, c-format
msgid "invalid url for server"
msgstr "ugyldig url for server"
#, c-format
msgid "no servers configured for repository"
msgstr "ingen servere konfigurert for pakkebrønn"
#, c-format
msgid "transaction already initialized"
msgstr "transaksjon allerede initialisert"
#, c-format
msgid "transaction not initialized"
msgstr "transaksjon ikke initialisert"
#, c-format
msgid "duplicate target"
msgstr "klonet mål"
#, c-format
msgid "transaction not prepared"
msgstr "transaksjon ikke forberedt"
#, c-format
msgid "transaction aborted"
msgstr "transaksjon avsluttet"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operasjon ikke kompatibel med transaksjonstypen"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr "førsøk på utføring av transaksjon mens databasen ikke er lukket"
#, c-format
msgid "could not find or read package"
msgstr "kunne ikke finne eller lese pakke"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operasjon avsluttet grunnet ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "invalid eller korrupt pakke"
#, c-format
msgid "cannot open package file"
msgstr "kan ikke åpne pakkefil"
#, c-format
msgid "cannot remove all files for package"
msgstr "kan ikke fjerne alle filer for pakke"
#, c-format
msgid "package filename is not valid"
msgstr "pakkens filnavn er ikke gyldig"
#, fuzzy, c-format
msgid "package architecture is not valid"
msgstr "pakkens filnavn er ikke gyldig"
#, fuzzy, c-format
msgid "could not find repository for target"
msgstr "kunne ikke finne eller lese pakke"
#, c-format
msgid "invalid or corrupted delta"
msgstr "invalid"
#, c-format
msgid "delta patch failed"
msgstr "delta-patch feilet"
#, c-format
msgid "could not satisfy dependencies"
msgstr "kunne ikke tilfredstille avhengigheter"
#, c-format
msgid "conflicting dependencies"
msgstr "modstridige avhengigheter"
#, c-format
msgid "conflicting files"
msgstr "modstridige filer"
#, c-format
msgid "failed to retrieve some files"
msgstr "mottagelsen av noen filer feilet"
#, c-format
msgid "invalid regular expression"
msgstr "ugyldig uttrykk"
#, c-format
msgid "libarchive error"
msgstr "feil i libarchive"
#, c-format
msgid "download library error"
msgstr "feil i nedlastingsbibliotek"
#, c-format
msgid "error invoking external downloader"
msgstr "påkalling av ekstern nedlaster feilet"
#, c-format
msgid "unexpected error"
msgstr "uforventet feil"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "kunne ikke finne %s i database -- hopper over\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "fjerner %s fra målliste\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "kan ikke fjerne fil '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "kunne ikke fjerne databaseelement %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "kunne ikke fjerne element '%s' fra cache\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorerer pakkeoppgradering (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorerer pakkenedgradering (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: nedgradering fra versjon %s til versjon %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: lokal (%s) er nyere enn %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorerer utbytting av pakke (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "kan ikke bytte ut %s med %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s er allerede oppdatert -- hopper over\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s er allerede oppdatert -- installerer på nytt\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "nedgraderer pakke %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "uløselige pakkekonflikter oppdaget\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "fjerner '%s' fra mållisten fordi den strider mot '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "feilet å motta noen filer fra %s\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kunne ikke begå fjerningstransaksjon\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "kunne ikke begå transaksjon\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "kunne ikke fjerne låsingsfil %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "kunne ikke opprette midlertidig mappe\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "kunne ikke kopiere midertidig fil til %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "kunne ikke fjerne midlertidig mappe %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "kunne ikke endre mappe til %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "kunne ikke skille ut en ny prosess (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "kunne ikke endre root-mappe (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "kunne ikke endre mappe til / (%s)\n"
#, c-format
msgid "call to popen failed (%s)\n"
msgstr "kall på popen feilet (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "kall på waitpid feilet (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "kommando feilet å kjøre korrekt\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "ingen %s cache eksisterer, lager en ...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "kunne ikke danne pakke-cache, bruker /tmp istedenfor\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "motstridige pakker ble funnet i målliste\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "du kan ikke installere to motstridige pakker samtidig\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "å bytte ut pakker med -U er ikke støttet enda\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "du kan bytte ut pakker manuelt ved å bruke -Rd og -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "url-protokoll ikke gitt, bruker HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "kan ikke skrive til fil '%s'\n"
#~ msgid "no such repository"
#~ msgstr "ingen slik pakkebrønn"
#~ msgid "repository '%s' not found\n"
#~ msgstr "pakkebrønn '%s' ikke funnet\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "kunne ikke opprette fjerningstransaksjon\n"
#~ msgid "could not create transaction\n"
#~ msgstr "kunne ikke opprette transaksjon\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "kunne ikke initialisere fjerningstransaksjonen\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "kunne ikke initialisere transaksjon\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "kunne ikke forberede fjerningstransaksjon\n"

View File

@@ -1,18 +1,19 @@
# Polish translations for Pacman package manager package
# Polskie tłumaczenia dla pakietu Pacman package manager.
# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.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"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-03 16:50+0100\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-08-01 05:10+0100\n"
"Last-Translator: Mateusz Herych <heniekk@gmail.com>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -24,28 +25,8 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "zastępowanie starszej wersji %s-%s na %s z listy celów\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "pomijam %s-%s ponieważ na liście celów znajduje się nowsza wersja %s\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr ""
"konfliktujące pakiety znalazły się na liście pakietów do zainstalowania\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr ""
"nie możesz mieć zainstalowanych dwóch konfliktujących ze sobą pakietów w tym "
"samym czasie\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "zastępowanie pakietów za pomocą -U nie jest już wspierane\n"
# hmm
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "możesz zastąpić pakiety ręcznie, używając opcji -Rd oraz -U\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "pomijam %s-%s ponieważ nowsza wersja %s jest na liście celów\n"
#, c-format
msgid ""
@@ -55,14 +36,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,13 +89,29 @@ 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 "removing invalid database: %s\n"
msgstr "usuwanie niepoprawnej bazy danych: %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 remove database directory %s\n"
msgstr "nie udało się usunąć katalogu bazy danych %s\n"
#, c-format
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"
msgstr "nieprawidłowa nazwa dla wpisu bazy danych '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "zduplikowany wpis '%s' w bazie danych\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "zepsuty wpis w bazie danych '%s'\n"
@@ -131,6 +128,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"
@@ -151,14 +152,14 @@ msgstr "błąd odczytywania pakietu: %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "brak metadanych pakietu w %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "próba ponownej rejestracji 'lokalnej' BD\n"
#, c-format
msgid "database path is undefined\n"
msgstr "ścieżka bazy danych jest niezdefiniowana\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "próba ponownej rejestracji 'lokalnej' BD\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "wykryto cykl zależności:\n"
@@ -171,6 +172,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"
@@ -179,45 +184,33 @@ msgstr "dostawca pakietu został wybrany (%s dostarcza %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nie można rozwiązać \"%s\", zależności od \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' jest błędny\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "schemat url nie został sprecyzowany, wybieranie HTTP\n"
#, c-format
msgid "disk"
msgstr "dysk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' jest błędny\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "nie udało się pobrać pliku '%s' z %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "nie można kontynuować pobieranie, zaczynanie od początku\n"
#, c-format
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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "kontynuowanie pobieranie %s jest niemożliwe; zaczynam od nowa\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "nie udało się pobrać pliku '%s' z %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 +284,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 +313,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 +332,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"
@@ -352,8 +341,12 @@ msgid "package filename is not valid"
msgstr "nazwa pakietu jest nieprawidłowa"
#, c-format
msgid "no such repository"
msgstr "nie ma takiego repozytorium"
msgid "package architecture is not valid"
msgstr "architektura pakietu jest nieprawidłowa"
#, c-format
msgid "could not find repository for target"
msgstr "nie mogę znaleźć repozytorium dla celu"
#, c-format
msgid "invalid or corrupted delta"
@@ -363,13 +356,9 @@ 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"
msgstr "nie udało się rozwiązać zależności"
#, c-format
msgid "conflicting dependencies"
@@ -380,16 +369,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"
@@ -416,6 +397,10 @@ msgstr "niespodziewany błąd"
msgid "could not find %s in database -- skipping\n"
msgstr "nie udało się odnaleźć %s w bazie danych -- pomijanie\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "usuwanie %s z listy celów\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "nie udało się usunąć pliku '%s': %s\n"
@@ -429,21 +414,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 "repository '%s' not found\n"
msgstr "repozytorium '%s' nie zostało znalezione\n"
msgid "cannot replace %s by %s\n"
msgstr "nie udało się zastąpić %s przez %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -465,42 +457,14 @@ 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"
#, c-format
msgid "could not create removal transaction\n"
msgstr "nie udało się utworzyć tranzakcji usuwania\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 prepare removal transaction\n"
msgstr "nie udało się przygotować tranzakcji usuwania\n"
#, c-format
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 +473,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 +481,10 @@ 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 change directory to %s (%s)\n"
msgstr "nie udało się zmienić katalogu na %s (%s)\n"
@@ -538,24 +502,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "nie udało się zmienić katalogu na / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "zawołanie do popen nieudane (%s)"
msgid "call to popen failed (%s)\n"
msgstr "zawołanie do popen nieudane (%s)\n"
#, c-format
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"
@@ -565,3 +521,14 @@ msgstr "brak pamięci podręcznej dla %s, tworzenie...\n"
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 "conflicting packages were found in target list\n"
#~ msgstr "konfliktujące pakiety zostały znalezione na liście celów\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr ""
#~ "nie możesz mieć zainstalowanych dwóch konfliktujących ze sobą pakietów w "
#~ "tym samym czasie\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "zastępowanie pakietów za pomocą -U nie jest już wspierane\n"

615
lib/libalpm/po/pt.po Normal file
View File

@@ -0,0 +1,615 @@
# translation of pt_PT.po to European Portuguese
# European Portuguese translations for Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Gaspar Santos aka ArchGalileu <omeuviolino@gmail.com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-08-31 18:25+0100\n"
"Last-Translator: \n"
"Language-Team: Gaspar Santos aka ArchGalileu <omeuviolino@gmail.com>\n"
"Language: pt_PT\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"
"X-Generator: Lokalize 1.1\n"
#, c-format
msgid "replacing older version %s-%s by %s in target list\n"
msgstr ""
"a substituir a versão antiga %s-%s por %s na lista de pacotes para "
"actualizar\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"a ignorar %s-%s por que uma versão mais nova %s está na lista de pacotes "
"para actualizar\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"permissões do diretório diferem em %s\n"
"sistema de ficheiros: %o pacote: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extracção: não sobrescrever diretório com o ficheiro %s\n"
# ?
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extracçã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"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "não foi possível renomear %s para %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s salvo como %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "não foi possível instalar %s como %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s instalado como %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "a extrair %s como %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "não foi possível obter o diretório de trabalho actual\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "ocorreram erros durante a actualização de %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "ocorreram erros durante a instalação de %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "não foi possível actualizar a entrada na base de dados %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "não foi possível adicionar a entrada '%s' à cache\n"
#, c-format
msgid "removing invalid database: %s\n"
msgstr "a remover banco de dados inválido: %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 remove database directory %s\n"
msgstr "não foi possível remover o diretório da base de dados %s\n"
#, c-format
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"
msgstr "nome inválido para a entrada na base de dados '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "entrada da base de dados duplicada '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "entrada da base de dados corrompida '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "não foi possível abrir o ficheiro %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "%s base de dados está inconsistente: nome no pacote %s não coincide\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr ""
"%s base de dados está inconsistente: versão do pacote %s não coincide\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "não foi possível criar o 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 ficheiro de descrição do pacote em %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "em falta o nome do pacote em %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "em falta a versão do pacote em %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "erro ao ler o pacote %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "em falta metadados do pacote em %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "localização da base de dados não definida\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "nova tentativa de registrar a base de dados 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "dependência cíclica detectada:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s será removido após a dependência %s\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s será instalado antes da dependência %s\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "a ignorar pacote %s-%s\n"
# ?
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "foi selecionado o pacote que fornece (%s fornece %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "não é possível resolver \"%s\", uma dependência de \"%s\"\n"
#, c-format
msgid "disk"
msgstr "disco"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' é inválida\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "falha ao obter ficheiro '%s' de %s : %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "não foi possível retomar a descarga de %s; a reiniciar a descarga\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "erro ao escrever no ficheiro '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "falha ao obter o ficheiro '%s' de %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar quebrado: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "falha ao fazer a descarga de %s\n"
#, c-format
msgid "out of memory!"
msgstr "memória cheia!"
#, c-format
msgid "unexpected system error"
msgstr "erro inesperado do sistema"
#, c-format
msgid "insufficient privileges"
msgstr "privilégios insuficientes"
#, c-format
msgid "could not find or read file"
msgstr "não foi possível encontrar ou ler o ficheiro"
#, c-format
msgid "could not find or read directory"
msgstr "não foi possível encontrar ou ler o diretório"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "argumento comunicado está errado ou NULO"
#, c-format
msgid "library not initialized"
msgstr "biblioteca não inicializada"
#, c-format
msgid "library already initialized"
msgstr "biblioteca já inicializada"
#, c-format
msgid "unable to lock database"
msgstr "não foi possível bloquear a base de dados"
#, c-format
msgid "could not open database"
msgstr "não foi possível abrir a base de dados"
#, c-format
msgid "could not create database"
msgstr "não foi possível criar a base de dados"
#, c-format
msgid "database not initialized"
msgstr "base de dados não inicializada"
#, c-format
msgid "database already registered"
msgstr "base de dados já registrada"
#, c-format
msgid "could not find database"
msgstr "não foi possível encontrar a base de dados"
#, c-format
msgid "could not update database"
msgstr "não foi possível actualizar a base de dados"
#, c-format
msgid "could not remove database entry"
msgstr "não foi possível remover a entrada da base de dados"
#, c-format
msgid "invalid url for server"
msgstr "url inválida para o servidor"
#, c-format
msgid "no servers configured for repository"
msgstr "nenhum servidor configurado para o repositório"
#, c-format
msgid "transaction already initialized"
msgstr "operação já inicializada"
#, c-format
msgid "transaction not initialized"
msgstr "operação não inicializada"
#, c-format
msgid "duplicate target"
msgstr "objecto alvo duplicado"
#, c-format
msgid "transaction not prepared"
msgstr "operação não está pronta"
#, c-format
msgid "transaction aborted"
msgstr "operação abortada"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "actividade não compatível com o tipo de operação"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr "tentativa de aceitar a operação com a base de dados não bloqueada"
#, 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"
#, c-format
msgid "cannot open package file"
msgstr "não foi possível abrir o ficheiro do pacote"
#, c-format
msgid "cannot remove all files for package"
msgstr "não foi possível remover todos os ficheiros do pacote"
#, c-format
msgid "package filename is not valid"
msgstr "o nome do pacote não é válido"
#, c-format
msgid "package architecture is not valid"
msgstr "a arquitectura do pacote não é válida"
#, c-format
msgid "could not find repository for target"
msgstr "não foi possível encontrar o repositório para o pacote"
#, c-format
msgid "invalid or corrupted delta"
msgstr "delta inválido ou corrompido"
#, c-format
msgid "delta patch failed"
msgstr "patch do delta falhou"
#, c-format
msgid "could not satisfy dependencies"
msgstr "não foi possível cumprir as dependências"
#, c-format
msgid "conflicting dependencies"
msgstr "dependências em conflito"
#, c-format
msgid "conflicting files"
msgstr "ficheiros em conflito"
#, c-format
msgid "failed to retrieve some files"
msgstr "falha ao descarregar alguns ficheiros"
#, c-format
msgid "invalid regular expression"
msgstr "expressão regular inválida"
#, c-format
msgid "libarchive error"
msgstr "erro na libarchive"
#, c-format
msgid "download library error"
msgstr "erro na biblioteca de descargas"
#, c-format
msgid "error invoking external downloader"
msgstr "erro ao invocar o programa de descargas externo"
#, c-format
msgid "unexpected error"
msgstr "erro inesperado"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "não foi possível encontrar %s na base de dados - a ignorar\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "a remover \"%s\" da lista de pacotes a serem actualizados\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "não foi possível remover o ficheiro '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "não foi possível remover a entrada da base de dados %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "não foi possível remover a entrada '%s' da cache\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: a ignorar actualização do pacote (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: a ignorar downgrade do pacote (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: a voltar 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 recente que %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "a ignorar 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 "%s-%s is up to date -- skipping\n"
msgstr "%s-%s está actualizado -- a ignorar\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s está actualizado -- a reinstalar\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "a fazer downgrade do pacote %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "detectado conflito entre pacotes sem solução\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "a remover '%s' da lista de pacotes porque entra em conflito com '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "falha ao obter alguns ficheiros de %s\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "não foi possível efectuar a operação de remoção\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "não foi possível efectuar a operação\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "não foi possível remover o ficheiro bloqueado %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "não foi possível criar diretório temporário\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "não foi possível copiar ficheiro 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 change directory to %s (%s)\n"
msgstr "não foi possível mudar o diretório para %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "não foi possível fazer fork de um novo processo (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "não foi possível mudar o diretório raiz (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "não foi possível mudar o diretório para / (%s)\n"
#, c-format
msgid "call to popen failed (%s)\n"
msgstr "chamada para popen falhou (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "chamada para waitpid falhou (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "comando não executado corretamente\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "cache %s não existe, a criar...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr ""
"não foi possível criar cache de pacotes, a usar /tmp como alternativa\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr ""
#~ "pacotes conflitantes foram encontrados na lista de pacotes a serem "
#~ "atualizados\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "você não pode instalar dois pacotes conflitantes ao mesmo tempo\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "substituir pacotes com -U ainda não é suportado\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr ""
#~ "você pode substituir pacotes manualmente usando as opções -Rd e -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "esquema da url não especificado, assumindo HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "não foi possível escrever no arquivo '%s'\n"
#~ msgid "no such repository"
#~ msgstr "repositório não existe"
#~ msgid "repository '%s' not found\n"
#~ msgstr "repositório '%s' não encontrado\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "não foi possível criar transação de remoção\n"
#~ msgid "could not create transaction\n"
#~ msgstr "não foi possível criar a transação\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "não foi possível inicializar a transação de remoção\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "não foi possível inicializar a transação\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "não foi possível preparar a transação de remoção\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"

View File

@@ -1,21 +1,22 @@
# translation of pt_BR.po to Português do Brasil
# Portuguese translations for Pacman package manager package.
# Copyright (C) 2002-2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Lincoln de Sousa <lincoln@archlinux-br.org>, 2007.
# Hugo Doria <hugodoria@archlinux-br.org>, 2007-2008.
# Douglas Soares de Andrade <dsandrade@gmail.com>, 2008.
# João Felipe Santos <jfsantos@archlinux-br.org>, 2008.
# Armando M. Baratti <ambaratti@archlinux-br.org>, 2008.
#
# Rodrigo L. M. Flores <flores@archlinux-br.org>, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: pt_BR\n"
"Project-Id-Version: Pacman package manager 3.3.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-24 11:24-0300\n"
"Last-Translator: Hugo Doria <hugo@archlinux.org>\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-07 21:09-0300\n"
"Last-Translator: Rodrigo L. M. Flores <flores@archlinux-br.org>\n"
"Language-Team: Português do Brasil <www.archlinux-br.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -28,28 +29,10 @@ msgstr ""
"atualizados\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"ignorando %s-%s porque uma nova versão %s está na lista de pacotes a serem "
"atualizados\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr ""
"pacotes conflitantes foram encontrados na lista de pacotes a serem "
"atualizados\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "você não pode instalar dois pacotes conflitantes ao mesmo tempo\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "substituir pacotes com -U ainda não é suportado\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "você pode substituir pacotes manualmente usando as opções -Rd e -U\n"
"pulando %s-%s por que uma versão mais nova %s está na lista de pacotes a "
"serem atualizados\n"
#, c-format
msgid ""
@@ -59,14 +42,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"
@@ -81,7 +64,7 @@ msgstr "%s salvo como %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "não foi possível instalar %s como %s: (%s)\n"
msgstr "não foi possível instalar %s como %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
@@ -97,7 +80,7 @@ msgstr "não foi possível obter o diretório de trabalho atual\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "erros ocorreram durante o upgrade de %s\n"
msgstr "erros ocorreram durante a atualização de %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
@@ -112,16 +95,32 @@ 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 "removing invalid database: %s\n"
msgstr "removendo banco de dados inválido: %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 remove database directory %s\n"
msgstr "não foi possível remover o diretório da base de dados %s\n"
#, c-format
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"
msgstr "nome inválido para a entrada na base de dados '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "entrada da base de dados duplicada '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "entrada corrompida na base de dados '%s'\n"
msgstr "entrada da base de dados corrompida '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
@@ -134,7 +133,11 @@ msgstr "%s base de dados está inconsistente: nome no pacote %s não coincide\n"
#, c-format
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"
"%s base de dados está inconsistente: versão do 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"
@@ -154,16 +157,16 @@ 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"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "tentativa de registrar a base de dados 'local' novamente\n"
msgstr "faltando metadados do pacote em %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "caminho da base de dados não definido\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "nova tentativa de registrar a base de dados 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "dependência cíclica detectada:\n"
@@ -176,6 +179,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"
@@ -184,45 +191,33 @@ msgstr "pacote provedor foi selecionado (%s provê %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "não é possível resolver \"%s\", uma dependência de \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' é inválida\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "esquema da url não especificado, assumindo HTTP\n"
#, c-format
msgid "disk"
msgstr "disco"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' é inválida\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
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"
#, 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"
msgid "resuming download of %s not possible; starting over\n"
msgstr "não foi possível retomar o download de %s; reiniciando download\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "falha ao obter arquivo '%s' de %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 +245,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"
@@ -294,7 +289,11 @@ msgstr "não foi possível remover a entrada da base de dados"
#, c-format
msgid "invalid url for server"
msgstr "url inválida para servidor"
msgstr "url inválida para o servidor"
#, c-format
msgid "no servers configured for repository"
msgstr "nenhum servidor configurado para o repositório"
#, c-format
msgid "transaction already initialized"
@@ -321,17 +320,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,25 +339,21 @@ 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"
msgstr "não foi possível remover todos os arquivos do pacote"
#, c-format
msgid "package filename is not valid"
msgstr "o nome do arquivo do pacote não é valido"
msgstr "o nome do pacote não é valido"
#, c-format
msgid "no such repository"
msgstr "repositório não existe"
msgid "package architecture is not valid"
msgstr "a arquitetura do pacote não é valida"
#, c-format
msgid "could not find repository for target"
msgstr "não foi possível encontrar o repositório para o pacote"
#, c-format
msgid "invalid or corrupted delta"
@@ -368,10 +363,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 +376,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"
@@ -410,7 +393,7 @@ msgstr "erro na biblioteca de download"
#, c-format
msgid "error invoking external downloader"
msgstr "erro invocando programa de download externo"
msgstr "erro ao invocar o programa de download externo"
#, c-format
msgid "unexpected error"
@@ -420,6 +403,10 @@ msgstr "erro inesperado"
msgid "could not find %s in database -- skipping\n"
msgstr "não foi possível encontrar %s na base de dados - pulando\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "removendo \"%s\" da lista de pacotes a serem atualizados\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "não foi possível remover o arquivo '%s': %s\n"
@@ -430,23 +417,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"
#, 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"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: local (%s) é mais novo que %s (%s)\n"
msgstr "não foi possível remover a entrada '%s' do cache\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorando atualização do pacote (%s => %s)\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repositório '%s' não encontrado\n"
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorando downgrade 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 "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 "%s-%s is up to date -- skipping\n"
@@ -468,42 +463,14 @@ 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"
#, c-format
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 initialize the removal transaction\n"
msgstr "não foi possível inicializar a transação de remoçã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"
#, c-format
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 +479,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,9 +487,13 @@ 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 change directory to %s (%s)\n"
msgstr "não foi possível mudar diretório para %s (%s)\n"
msgstr "não foi possível mudar o diretório para %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
@@ -541,24 +508,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "não foi possível mudar o diretório para / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "chamada para popen falhou (%s)"
msgid "call to popen failed (%s)\n"
msgstr "chamada para popen falhou (%s)\n"
#, c-format
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 "comando não executado corretamente\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -566,5 +525,92 @@ 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 "conflicting packages were found in target list\n"
#~ msgstr ""
#~ "pacotes conflitantes foram encontrados na lista de pacotes a serem "
#~ "atualizados\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "você não pode instalar dois pacotes conflitantes ao mesmo tempo\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "substituir pacotes com -U ainda não é suportado\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr ""
#~ "você pode substituir pacotes manualmente usando as opções -Rd e -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "esquema da url não especificado, assumindo HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "não foi possível escrever no arquivo '%s'\n"
#~ msgid "no such repository"
#~ msgstr "repositório não existe"
#~ msgid "repository '%s' not found\n"
#~ msgstr "repositório '%s' não encontrado\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "não foi possível criar transação de remoção\n"
#~ msgid "could not create transaction\n"
#~ msgstr "não foi possível criar a transação\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "não foi possível inicializar a transação de remoção\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "não foi possível inicializar a transação\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "não foi possível preparar a transação de remoção\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"

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

@@ -0,0 +1,561 @@
# libalpm Romanian translation.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Volodia Macovei <blog@volodia.ro>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2009-10-04 17:09+0200\n"
"Last-Translator: volodia macovei <blog@volodia.ro>\n"
"Language-Team: Romanian SbLUG for Arch <blog@volodia.ro>\n"
"Language: \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 target list\n"
msgstr ""
"se trece peste %s-%s deoarece o versiune mai nouă %s există în lista ţintă\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 "removing invalid database: %s\n"
msgstr "se elimină baza de date nevalidă %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nu se poate deschide %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "nu se poate elimina directorul cu baza de date %s\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 "duplicated database entry '%s'\n"
msgstr "intrare duplicitara pentru baza de date '%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 "database path is undefined\n"
msgstr "calea bazei de date este nedefinită\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "încercare de a reînregistra 'local' DB\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 "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' este nevalid\n"
#, 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 "resuming download of %s not possible; starting over\n"
msgstr "nu se poate relua descărcare pentru %s; se începe peste\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "eroare la scriere în fişierul '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "eşec la regăsirea fişierului '%s' din %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 "package architecture is not valid"
msgstr "architectura pachetului este nevalidă"
#, c-format
msgid "could not find repository for target"
msgstr "depozitul pentru țintă nu poate fi găsit"
#, 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 "removing %s from target list\n"
msgstr "se elimină '%s' din lista ţintă\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 "%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 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 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)\n"
msgstr "cererea către popen a eşuat (%s)\n"
#, 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"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "s-au găsit pachete în conflict în lista ţintă\n"
#~ 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"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "înlocuirea pachetelor cu -U nu este suportată încă\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "puteţi înlocui manual pachetele folosind -Rd şi -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "schemă URL nespecificată, se presupune HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "nu se poate scrie în fişierul '%s'\n"
#~ msgid "no such repository"
#~ msgstr "nu există astfel de depozit"
#~ msgid "repository '%s' not found\n"
#~ msgstr "depozit '%s' negăsit\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "nu poate fi creată tranzacţia de eliminare\n"
#~ msgid "could not create transaction\n"
#~ msgstr "nu poate fi creată tranzacţia\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "nu poate fi iniţializată tranzacţia de eliminare\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "nu poate fi iniţializată tranzacţia\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "nu poate fi pregătită tranzacţia de eliminare\n"

View File

@@ -1,77 +1,62 @@
# Russian translations for Pacman package manager package.
# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# <4rayven@gmail.com>, 2007. <serg.partizan@gmail.com> 2008
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.0.0\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-03 15:55+0300\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-06 10:07+0300\n"
"Last-Translator: Sergey Tereschenko <serg.partizan@gmail.com>\n"
"Language-Team: Russian\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#, 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"
msgid "skipping %s-%s because newer version %s is in 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"
"права доступа различаются у каталога %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 +64,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 +80,35 @@ 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 "removing invalid database: %s\n"
msgstr "удаление некорректной базы данных %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "не удалось открыть %s: %s\n"
#, c-format
msgid "could not remove database directory %s\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"
msgstr "неправильное имя для записи в базе данных '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "повторяющаяся запись в базе данных '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
@@ -115,7 +116,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 +128,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"
@@ -147,77 +152,69 @@ msgstr "ошибка при чтении пакета %s: %s\n"
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 "attempt to re-register the 'local' DB\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"
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"
msgstr "не удалось разрешить \"%s\", зависимость \"%s\"\n"
#, c-format
msgid "disk"
msgstr "диск"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "ссылка '%s' некорректна\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "не удалось получить файл '%s' из %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "не удалось продолжить закачку, начинаю заново\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "не могу записать в файл '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "ошибка загрузки '%s': %s\n"
msgid "resuming download of %s not possible; starting over\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "не удалось получить файл '%s' из %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 +222,7 @@ msgstr "недостаточно памяти!"
#, c-format
msgid "unexpected system error"
msgstr "неожиданная ошибка"
msgstr "неожиданная системная ошибка"
#, c-format
msgid "insufficient privileges"
@@ -233,15 +230,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 +250,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 +270,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,67 +306,59 @@ 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"
msgstr "неверное имя файла пакета"
#, c-format
msgid "no such repository"
msgstr "нет такого репозитория"
msgid "package architecture is not valid"
msgstr "архитектура пакета недопустима"
#, c-format
msgid "could not find repository for target"
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"
@@ -376,16 +369,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"
@@ -397,7 +382,7 @@ msgstr "ошибка в libarchive"
#, c-format
msgid "download library error"
msgstr "ошибка в download library"
msgstr "ошибка в библиотеке загрузки"
#, c-format
msgid "error invoking external downloader"
@@ -409,43 +394,55 @@ msgstr "непредвиденная ошибка"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "не могу найти %s в базе данных -- пропускаю\n"
msgstr "не удалось найти %s в базе данных -- пропускается\n"
#, c-format
msgid "removing %s from target list\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 "repository '%s' not found\n"
msgstr "репозиторий '%s' не найден\n"
msgid "cannot replace %s by %s\n"
msgstr "не удалось заменить %s на %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,107 +454,154 @@ 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"
msgstr "не удалось получить некоторые файлы с %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "не удалось создать запрос на удаление\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "не удалось инициализировать запрос на удаление\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "не удалось подготовить запрос на удаление\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "не удалось совершить запрос на удаление\n"
#, c-format
msgid "could not create transaction\n"
msgstr "не удалось создать запрос\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "не удалось инициализировать запрос\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "не удалось подготовить запрос\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "не удалось совершить запрос\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "не могу удалить 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 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)"
msgstr "вызов popen не удался (%s)"
msgid "call to popen failed (%s)\n"
msgstr "вызов popen не удался (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "вызов waitpid не удался (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "не удалось корректно выполнить скрипт\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "не могу удалить 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 "could not create directory %s: %s\n"
#~ msgstr "не удалось создать директорию %s: (%s)\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "в списке целей найдены конфликтующие пакеты\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr ""
#~ "вы не можете одновременно установить конфликтующие между собой пакеты\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr ""
#~ "замещение пакетов с использованием параметров -A и -U еще не реализовано\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "вы можете заменить пакеты вручную, используя -Rd и -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "схема ссылки не определена, подразумевается HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "не удалось записать в файл '%s'\n"
#~ msgid "no such repository"
#~ msgstr "нет такого репозитория"
#~ msgid "repository '%s' not found\n"
#~ msgstr "репозиторий '%s' не найден\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "не удалось создать запрос на удаление\n"
#~ msgid "could not create transaction\n"
#~ msgstr "не удалось создать запрос\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "не удалось инициализировать запрос на удаление\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "не удалось инициализировать запрос\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "не удалось подготовить запрос на удаление\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"

518
lib/libalpm/po/sk.po Executable file
View File

@@ -0,0 +1,518 @@
# translation of sk.po to Slovak
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Jose Riha <jose1711 gmail com>, 2010.
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-07-27 22:56+0200\n"
"Last-Translator: Jozef Říha <jose1711@gmail.com>\n"
"Language-Team: Slovak\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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 zozname cieľov nahradená staršia verzia %s-%s za %s\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "vynechávam %s-%s, pretože v zozname cieľov je novšia verzia %s\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"prístupové práva adresára %s sa nezhodujú\n"
"súborový systém: %o balíček: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "rozbalenie: adresár nebol prepísaný súborom %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "rozbalenie: symbolický odkaz %s neodkazuje na adresár\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "nie je možné rozbaliť %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "nie je možné premenovať %s na %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s bol uložený ako %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "%s nie je možné nainštalovať ako %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s bol nainštalovaný ako %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "%s bol rozbalený ako %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "nie je možné zistiť aktuálny pracovný adresár\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "nastal problém pri aktualizácii %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "nastal problém pri inštalácii %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "nie je možné aktualizovať záznam databáze %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "nie je možné pridať položku '%s' do cache\n"
#, c-format
msgid "removing invalid database: %s\n"
msgstr "odstraňujem neplatnú databázu: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nepodarilo sa otvoriť %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "nie je možné odstrániť adresár databáze %s\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "nie je možné odstrániť záznam v databáze %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "neplatná názov záznamu v databáze '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "duplicitný záznam v databáze '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "poškodený záznam v databáze '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "nie je možné otvoriť súbor %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "databáza %s je nekonzistentná: nesúhlasí meno balíčka %s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "databáza %s je nekonzistentná: nesúhlasí verzia balíčka %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "nie je možné vytvoriť adresár %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "nie je možné spracovať súbor s popisom balíčka v %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "chýba meno balíčka v %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "chýba verzia balíčka v %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "chyba pri čítaní balíčka %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "chýbaju metadáta balíčka v %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "cesta k databáze nie je definovaná\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "pokus o opätovné zaregistrovanie databáze 'local'\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "zistená cyklická závislosť:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s bude odstránený po %s, na ktorom závisí\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s bude nainštalovaný pred %s, na ktorom závisí\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorujem balíček %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "bol vybraný nahradzujúci balíček (%s poskytuje %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nie je možné vyriešiť \"%s\", závislosť \"%s\"\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' je neplatná\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "chyba pri získavaní súboru '%s' z %s: %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "nie je možné pokračovať v sťahovaní %s, začínam sťahovať od začiatku\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "chyba pri zápisu do súboru '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "zlyhalo získanie súboru '%s' z %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s vyzerá byť skrátený: %jd/%jd bytov\n"
#, c-format
msgid "failed to download %s\n"
msgstr "chyba pri sťahovaní %s\n"
#, c-format
msgid "out of memory!"
msgstr "nedostatok pamäte!"
#, c-format
msgid "unexpected system error"
msgstr "neočakávaná systémová chyba"
#, c-format
msgid "insufficient privileges"
msgstr "nedostatočné oprávnenia"
#, c-format
msgid "could not find or read file"
msgstr "nie je možné nájsť alebo prečítať súbor"
#, c-format
msgid "could not find or read directory"
msgstr "nie je možné nájsť alebo prečítať adresár"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "odovzdaný chybný alebo NULL argument"
#, c-format
msgid "library not initialized"
msgstr "knižnica nebola inicializovaná"
#, c-format
msgid "library already initialized"
msgstr "knižnica je už inicializovaná"
#, c-format
msgid "unable to lock database"
msgstr "nie je možné zamknúť databázu"
#, c-format
msgid "could not open database"
msgstr "nie je možné otvoriť databázu"
#, c-format
msgid "could not create database"
msgstr "nie je možné vytvoriť databázu"
#, c-format
msgid "database not initialized"
msgstr "databáza nebola inicializovaná"
#, c-format
msgid "database already registered"
msgstr "databáza je už zaregistrovaná"
#, c-format
msgid "could not find database"
msgstr "nemožno nájsť databázu"
#, c-format
msgid "could not update database"
msgstr "nemožno aktualizovať databázu"
#, c-format
msgid "could not remove database entry"
msgstr "nie je možné odstrániť záznam v databáze"
#, c-format
msgid "invalid url for server"
msgstr "neplatná URL pre server"
#, c-format
msgid "no servers configured for repository"
msgstr "pre repozitár nie sú nastavené žiadne servery"
#, c-format
msgid "transaction already initialized"
msgstr "transakcia už bola inicializovaná"
#, c-format
msgid "transaction not initialized"
msgstr "transakcia nebola inicializovaná"
#, c-format
msgid "duplicate target"
msgstr "duplicitný cieľ"
#, c-format
msgid "transaction not prepared"
msgstr "transakcia nie je pripravená"
#, c-format
msgid "transaction aborted"
msgstr "transakcia bola zrušená"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operácia nie je kompatibilná s typom transakcie"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr "pokus o uskutočnenie transakcie v čas, kedy nie je databáza uzamknutá"
#, c-format
msgid "could not find or read package"
msgstr "nie je možné nájsť alebo prečítať balíček"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operácia bola zrušená kvôli ignorovanému balíčku"
#, c-format
msgid "invalid or corrupted package"
msgstr "neplatný alebo poškodený balíček"
#, c-format
msgid "cannot open package file"
msgstr "nie je možné otvoriť súbor balíčka"
#, c-format
msgid "cannot remove all files for package"
msgstr "nie je možné odstrániť všetky súbory balíčka"
#, c-format
msgid "package filename is not valid"
msgstr "méno súboru balíčka je neplatné"
#, c-format
msgid "package architecture is not valid"
msgstr "architektúra balíčka je neplatná"
#, c-format
msgid "could not find repository for target"
msgstr "nie je možné nájsť repozitár cieľa"
#, c-format
msgid "invalid or corrupted delta"
msgstr "neplatný alebo poškodený delta rozdiel"
#, c-format
msgid "delta patch failed"
msgstr "aplikácia delta rozdielu zlyhala"
#, c-format
msgid "could not satisfy dependencies"
msgstr "nie je možné vyriešiť závislosti"
#, c-format
msgid "conflicting dependencies"
msgstr "konfliktné závislosti"
#, c-format
msgid "conflicting files"
msgstr "konfliktné súbory"
#, c-format
msgid "failed to retrieve some files"
msgstr "chyba pri získavaní niektorých súborov"
#, c-format
msgid "invalid regular expression"
msgstr "neplatný regulárny výraz"
#, c-format
msgid "libarchive error"
msgstr "chyba knižnice libarchive"
#, c-format
msgid "download library error"
msgstr "chyba knižnice pre sťahovanie súborov"
#, c-format
msgid "error invoking external downloader"
msgstr "chyba volania externého programu pre sťahovanie súborov"
#, c-format
msgid "unexpected error"
msgstr "neočakávaná chyba"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "nie je možné nájsť %s v databáze -- preskakujem\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "'%s' odstránený zo zoznamu cieľov\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "nie je možné odstrániť súbor '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "nie je možné odstrániť záznam databáze %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "nie je možné odstrániť položku '%s' z cache\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ignorujem aktualizáciu balíčka (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorujem downgrade balíčka (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: downgradujem z verzie %s na verziu %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: lokálna verzia (%s) je novšia ako %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorujem náhradu balíčku (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "nedá sa nahradiť súbor %s súborom %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s je aktuálny -- preskakujem\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s je aktuálny -- preinštalovávam\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "downgradujem balíček %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "zistený konflikt nerozlíšiteľných balíčkov\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "'%s' odstránený zo zoznamu cieľov, pretože je v konflikte s '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "chyba pri získavaní niektorých súborov z %s\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nie je možné uskutočniť transakciu pre odstránenie\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "nie je možné uskutočniť transakciu\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "nie je možné odstrániť zamykací súbor %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "nie je možné vytvoriť dočasný adresár\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "nie je možné skopírovať dočasný súbor do %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "nie je možné odstrániť dočasný adresár %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nie je možné prepnúť sa do adresára %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "nie je možné spustiť nový proces (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "nie je možné zmeniť koreňový adresár (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "nie je možné prepnúť sa do adresára / (%s)\n"
#, c-format
msgid "call to popen failed (%s)\n"
msgstr "volanie popen skončilo s chybou (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "volanie waitpid zlyhalo (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "príkaz sa nepodarilo spustiť správne\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "neexistuje cache %s, vytváram...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "nie je možné vytvoriť cache balíčkov, použijem /tmp\n"

556
lib/libalpm/po/sv.po Normal file
View File

@@ -0,0 +1,556 @@
# Swedish translations for Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# <congacx@gmail.com>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-09-03 13:00+0200\n"
"Last-Translator: Tobias Eriksson <tobier@tobier.se>\n"
"Language-Team: Swedish\n"
"Language: \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 "ersätter den äldre versionen %s-%s med %s i mållistan\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "hoppar över %s-%s för en nyare version %s finns i mållistan\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
"filesystem: %o package: %o\n"
msgstr ""
"katalogrättigheter skiljer sig på %s\n"
"filsystem: %o paket: %o\n"
#, c-format
msgid "extract: not overwriting dir with file %s\n"
msgstr "extrahera: ersätter ej katalog med fil %s\n"
#, c-format
msgid "extract: symlink %s does not point to dir\n"
msgstr "extrahera: symbolisk länk %s pekar inte mot en katalog\n"
#, c-format
msgid "could not extract %s (%s)\n"
msgstr "kunde inte extrahera %s (%s)\n"
#, c-format
msgid "could not rename %s to %s (%s)\n"
msgstr "kunde inte döpa om %s till %s (%s)\n"
#, c-format
msgid "%s saved as %s\n"
msgstr "%s sparad som %s\n"
#, c-format
msgid "could not install %s as %s (%s)\n"
msgstr "kunde inte installera %s som %s (%s)\n"
#, c-format
msgid "%s installed as %s\n"
msgstr "%s installerad som %s\n"
#, c-format
msgid "extracting %s as %s.pacnew\n"
msgstr "extraherar %s som %s.pacnew\n"
#, c-format
msgid "could not get current working directory\n"
msgstr "kunde inte hitta nuvarande sökväg\n"
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "problem uppstod under uppgraderingen %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
msgstr "problem uppstod under installationen %s\n"
#, c-format
msgid "could not update database entry %s-%s\n"
msgstr "kunde inte uppdatera databasinlägget %s-%s\n"
#, c-format
msgid "could not add entry '%s' in cache\n"
msgstr "kunde inte lägga till '%s' i cachen\n"
#, c-format
msgid "removing invalid database: %s\n"
msgstr "tar bort ogiltig databas: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "kunde inte öppna %s: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "kunde inte ta bort databaskatalogen %s\n"
#, c-format
msgid "could not remove database %s\n"
msgstr "kunde inte ta bort databasen %s\n"
#, c-format
msgid "invalid name for database entry '%s'\n"
msgstr "ogiltigt namn för databasinlägget '%s'\n"
#, c-format
msgid "duplicated database entry '%s'\n"
msgstr "dubblerat databasinlägg '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "korrupt databasinlägg '%s'\n"
#, c-format
msgid "could not open file %s: %s\n"
msgstr "kunde inte öppna filen %s: %s\n"
#, c-format
msgid "%s database is inconsistent: name mismatch on package %s\n"
msgstr "%s databasen är inkonsekvent: ej matchande namn på paketet %s\n"
#, c-format
msgid "%s database is inconsistent: version mismatch on package %s\n"
msgstr "%s databasen är inkonsekvent: ej matchande version på paketet %s\n"
#, c-format
msgid "could not create directory %s: %s\n"
msgstr "kunde inte skapa katalogen %s: %s\n"
#, c-format
msgid "could not parse package description file in %s\n"
msgstr "kunde inte analysera paketbeskrivningen i %s\n"
#, c-format
msgid "missing package name in %s\n"
msgstr "saknar paketnamnet för %s\n"
#, c-format
msgid "missing package version in %s\n"
msgstr "saknar paketversionen för %s\n"
#, c-format
msgid "error while reading package %s: %s\n"
msgstr "fel vid läsning av paketet %s: %s\n"
#, c-format
msgid "missing package metadata in %s\n"
msgstr "saknar metadata för paketet i %s\n"
#, c-format
msgid "database path is undefined\n"
msgstr "sökväg till databasen är odefinierad\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "försöker att återregistrera den 'lokala' DB\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "beroende cykel upptäckt:\n"
#, c-format
msgid "%s will be removed after its %s dependency\n"
msgstr "%s kommer att tas bort efter dess %s beroende\n"
#, c-format
msgid "%s will be installed before its %s dependency\n"
msgstr "%s kommer installeras före dess %s beroende\n"
#, c-format
msgid "ignoring package %s-%s\n"
msgstr "ignorerar paketet %s-%s\n"
#, c-format
msgid "provider package was selected (%s provides %s)\n"
msgstr "föräldrapaket blev valt (%s tillhandahåller %s)\n"
#, c-format
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "kan inte lösa \"%s\", beroende till \"%s\", \n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' är ogiltigt\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "misslyckades hämta filen '%s' från %s : %s\n"
#, c-format
msgid "resuming download of %s not possible; starting over\n"
msgstr "kan inte återuppta nerladdning av %s, börjar om\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "fel vid skrivning till filen '%s': %s\n"
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr "misslyckades hämta filen '%s' från %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s verkar vara trunkerad: %jd/%jd bytes\n"
#, c-format
msgid "failed to download %s\n"
msgstr "misslyckades ladda ner %s\n"
#, c-format
msgid "out of memory!"
msgstr "slut på minne!"
#, c-format
msgid "unexpected system error"
msgstr "oväntat systemfel"
#, c-format
msgid "insufficient privileges"
msgstr "otillräckliga rättigheter"
#, c-format
msgid "could not find or read file"
msgstr "kunde inte hitta eller läsa filen"
#, c-format
msgid "could not find or read directory"
msgstr "kunde inte hitta eller läsa katalogen"
#, c-format
msgid "wrong or NULL argument passed"
msgstr "fel eller inga argument angivna"
#, c-format
msgid "library not initialized"
msgstr "bibliotek inte initialiserat"
#, c-format
msgid "library already initialized"
msgstr "bibliotek redan initialiserat"
#, c-format
msgid "unable to lock database"
msgstr "kunde inte låsa databas"
#, c-format
msgid "could not open database"
msgstr "kunde inte öppna databas"
#, c-format
msgid "could not create database"
msgstr "kunde inte sakapa databas"
#, c-format
msgid "database not initialized"
msgstr "databas inte initialiserad"
#, c-format
msgid "database already registered"
msgstr "databas redan registrerad"
#, c-format
msgid "could not find database"
msgstr "kunde inte hitta databas"
#, c-format
msgid "could not update database"
msgstr "kunde inte uppdatera databas"
#, c-format
msgid "could not remove database entry"
msgstr "kunde inte ta bort databasinlägg"
#, c-format
msgid "invalid url for server"
msgstr "ogilltigt url för server"
#, c-format
msgid "no servers configured for repository"
msgstr "inga servrar konfigurerade för förrådet"
#, c-format
msgid "transaction already initialized"
msgstr "överföring redan påbörjad"
#, c-format
msgid "transaction not initialized"
msgstr "överföring ej påbörjad"
#, c-format
msgid "duplicate target"
msgstr "dubbelt mål"
#, c-format
msgid "transaction not prepared"
msgstr "överföring inte förberedd"
#, c-format
msgid "transaction aborted"
msgstr "överföring avbryten"
#, c-format
msgid "operation not compatible with the transaction type"
msgstr "operation inte kompatibel med överföringstypen"
#, c-format
msgid "transaction commit attempt when database is not locked"
msgstr "överföringsförsök när databasen inte är låst"
#, c-format
msgid "could not find or read package"
msgstr "kunde inte hitta eller förbereda paket"
#, c-format
msgid "operation cancelled due to ignorepkg"
msgstr "operationen avbryten på grund av ignorepkg"
#, c-format
msgid "invalid or corrupted package"
msgstr "ogiltigt eller korrupt paket"
#, c-format
msgid "cannot open package file"
msgstr "kan inte öppna paketfil"
#, c-format
msgid "cannot remove all files for package"
msgstr "kan inte ta bort alla filer för paketet"
#, c-format
msgid "package filename is not valid"
msgstr "paketnamn är inte giltigt"
#, c-format
msgid "package architecture is not valid"
msgstr "paketets arkitektur är inte giltigt"
#, c-format
msgid "could not find repository for target"
msgstr "givet förråd finns inte"
#, c-format
msgid "invalid or corrupted delta"
msgstr "ogiltig eller korrupt delta"
#, c-format
msgid "delta patch failed"
msgstr "delta patch misslyckades"
#, c-format
msgid "could not satisfy dependencies"
msgstr "kunde inte tillfredställa beroenden"
#, c-format
msgid "conflicting dependencies"
msgstr "motstridiga beroenden"
#, c-format
msgid "conflicting files"
msgstr "motstridiga filer "
#, c-format
msgid "failed to retrieve some files"
msgstr "misslyckades att hämta några filer"
#, c-format
msgid "invalid regular expression"
msgstr "ogiltigt vanligt uttryck"
#, c-format
msgid "libarchive error"
msgstr "libarchive fel"
#, c-format
msgid "download library error"
msgstr "fel vid nerladdning av bibliotek"
#, c-format
msgid "error invoking external downloader"
msgstr "fel vid anrop av extern nerladdare"
#, c-format
msgid "unexpected error"
msgstr "oväntat fel"
#, c-format
msgid "could not find %s in database -- skipping\n"
msgstr "kunde inte hitta %s i databasen -- hoppar över\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "tar bort %s från mållistan\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "kan inte ta bort '%s': %s\n"
#, c-format
msgid "could not remove database entry %s-%s\n"
msgstr "kunde inte ta bort databasinlägget %s-%s\n"
#, c-format
msgid "could not remove entry '%s' from cache\n"
msgstr "kunde inte ta bort '%s' från cachen\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s ignorerar uppgradering av paket (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorerar nedgradering av paket (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
msgstr "%s: nedgraderar från version %s till version %s\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: lokala (%s) är nyare än %s (%s)\n"
#, c-format
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "ignorerar ersättning av paket (%s-%s => %s-%s)\n"
#, c-format
msgid "cannot replace %s by %s\n"
msgstr "kan inte ersätta %s med %s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s är senaste versionen -- hoppar över\n"
#, c-format
msgid "%s-%s is up to date -- reinstalling\n"
msgstr "%s-%s är senaste versionen -- återinstallerar\n"
#, c-format
msgid "downgrading package %s (%s => %s)\n"
msgstr "nedgraderar paketet %s (%s => %s)\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "olösliga paketkonflikter upptäckta\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "tar bort '%s' från mållistan då den står i konflikt med '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "misslyckades att hämta vissa filer från %s\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kunde inte skicka överföring för borttagning\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "kunde inte skicka överföring\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "kunde inte ta bort låsningsfil %s\n"
#, c-format
msgid "could not create temp directory\n"
msgstr "kunde inte skapa temporär katalog\n"
#, c-format
msgid "could not copy tempfile to %s (%s)\n"
msgstr "kunde inte kopiera temporär fil till %s (%s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "kunde inte ta bort tmpdir %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "kunde inte byta katalog till %s (%s)\n"
#, c-format
msgid "could not fork a new process (%s)\n"
msgstr "kunde inte förgrena en ny process (%s)\n"
#, c-format
msgid "could not change the root directory (%s)\n"
msgstr "kunde inte byta rootkatalogen (%s)\n"
#, c-format
msgid "could not change directory to / (%s)\n"
msgstr "kunde inte byta katalog till / (%s)\n"
#, c-format
msgid "call to popen failed (%s)\n"
msgstr "anrop till popen misslyckades (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "anrop till waitpid misslyckades (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "kommando misslyckades att exekveras korrekt\n"
#, c-format
msgid "no %s cache exists, creating...\n"
msgstr "ingen %s cache existerar, skapar...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "kunde inte skapa paket-cache, använder /tmp istället\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "motstridande paket hittades i mållistan\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "du kan inte installera två motstridiga paket på samma gång\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "erstätta paket med -U stödjs inte än\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "du kan ersätta paket manuellt genom att använda -Rd och -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "url schema inte specifierat, antar HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "kan inte skriva till filen '%s'\n"
#~ msgid "no such repository"
#~ msgstr "inget sådant förråd"
#~ msgid "repository '%s' not found\n"
#~ msgstr "förrådet '%s' hittades inte\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "kunde inte skapa överföring för borttagning\n"
#~ msgid "could not create transaction\n"
#~ msgstr "kunde inte skapa överföring\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "kunde inte påbörja överföring för borttagning\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "kunde inte påbörja överföring\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "kunde inte förbereda överföring för borttagning\n"

View File

@@ -1,16 +1,17 @@
# Turkish translation for libalpm.
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the libalpm package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Samed BEYRİBEY <ras0ir@eventualis.org>, 2008.
#
msgid ""
msgstr ""
"Project-Id-Version: 3.1.4-1\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: 2009-01-03 16:20+0200\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-05 00:59+0200\n"
"Last-Translator: Samed Beyribey <ras0ir@eventualis.org>\n"
"Language-Team: Turkish Arch Linux Users <tr@archlinuxtr.org>\n"
"Language-Team: Turkish Arch Linux Users <archlinux@archlinux.org.tr>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -20,24 +21,8 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "eski sürüm %s-%s hedef listesindeki %s ile değiştiriliyor\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
msgstr "%s-%s yeni sürüm %s hedef listesinde olduğundan atlanıyor\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "hedef listesinde çakışan paketler bulundu\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\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"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "paketleri -Rd ve -U kullanarak değiştirebilirsiniz\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "%s-%s yeni sürümü %s hedef listesinde olduğundan atlanıyor\n"
#, c-format
msgid ""
@@ -48,12 +33,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 +85,28 @@ 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 "removing invalid database: %s\n"
msgstr "geçersiz veritabanı siliniyor: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "%s açılamadı: %s\n"
#, c-format
msgid "could not remove database directory %s\n"
msgstr "veritabanı dizini %s silinemedi\n"
#, c-format
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 "duplicated database entry '%s'\n"
msgstr "kopya veritabanı kaydı '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
@@ -123,6 +124,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"
@@ -143,14 +148,14 @@ msgstr "%s paketi okunurken hata meydana geldi: %s\n"
msgid "missing package metadata in %s\n"
msgstr "%s içerisinde eksik paket bilgisi\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "'yerel' veritabanı tekrar kaydedilmeye çalışılıyor\n"
#, c-format
msgid "database path is undefined\n"
msgstr "veritabanı yolu belirtilmemiş\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "'yerel' veritabanı tekrar kaydedilmeye çalışılıyor\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "dolaylı bağımlılıklar bulundu:\n"
@@ -163,53 +168,45 @@ 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"
msgstr "\"%s\" paketi \"%s\" paketinin bağımlılığı olarak çözümlenemiyor\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "'%s' adresi geçersiz\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "adres şeması belirtilmemiş, http kullanılacak\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "'%s' adresi geçersiz\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "%3$s hatası nedeniyle '%1$s' dosyası %2$s adresinden alınamadı\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "indirmeye devam edilemiyor, baştan başlanıyor\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "'%s' dosyasına yazılamıyor\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "'%s' indirilirken hata oluştu: %s\n"
msgid "resuming download of %s not possible; starting over\n"
msgstr "%s için indirme işlemine devam edilemiyor, baştan başlanıyor\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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "%s dosyası %s adresinden alınamadı\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 +230,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 +242,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 +278,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 +290,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 +298,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 +306,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 +328,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ı"
@@ -344,8 +337,12 @@ msgid "package filename is not valid"
msgstr "paket dosya adı geçerli değil"
#, c-format
msgid "no such repository"
msgstr "depo bulunmuyor"
msgid "package architecture is not valid"
msgstr "paket mimarisi geçerli değil"
#, c-format
msgid "could not find repository for target"
msgstr "hedef için depo bulunamadı"
#, c-format
msgid "invalid or corrupted delta"
@@ -355,33 +352,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 +378,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"
@@ -407,6 +392,10 @@ msgstr "beklenmedik hata"
msgid "could not find %s in database -- skipping\n"
msgstr "%s veritabanında bulunamadı -- atlanıyor\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "%s hedef listesinden kaldırılıyor\n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "'%s' dosyası silinemiyor: %s\n"
@@ -419,21 +408,30 @@ msgstr "veritabanı kaydı %s-%s silinemedi\n"
msgid "could not remove entry '%s' from cache\n"
msgstr "'%s' kaydı tampondan silinemedi\n"
#, c-format
msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
msgstr "%s-%s: paket güncellemesi göz ardı ediliyor (%s-%s ile değiştirilecek)\n"
#, c-format
msgid "%s: local (%s) is newer than %s (%s)\n"
msgstr "%s: yereldeki paket (%s) %s (%s) paketinden daha güncel\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%s: paket güncellemesi göz ardı ediliyor (%s => %s)\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "'%s' deposu bulunamadı\n"
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: yerel depodaki paket (%s) %s deposundaki paketten (%s) daha güncel\n"
#, c-format
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 "%s-%s is up to date -- skipping\n"
@@ -453,44 +451,16 @@ 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"
msgstr "%s deposundan bazı dosyalar alınamadı\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "kaldırma işlemi oluşturulamıyor\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "kaldırma işlemi başlatılamadı\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "kaldırma işlemi hazırlanamadı\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kaldırma işlemi teslim edilemedi\n"
#, c-format
msgid "could not create transaction\n"
msgstr "işlem oluşturulamadı\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "işlem başlatılamadı\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "işlem hazırlanamadı\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "işlem teslim edilemedi\n"
@@ -499,10 +469,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"
@@ -511,6 +477,10 @@ 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 change directory to %s (%s)\n"
msgstr "%s dizinine geçilemedi (%s)\n"
@@ -525,33 +495,109 @@ 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)"
msgstr "popen çağrısı başarısız (%s)"
msgid "call to popen failed (%s)\n"
msgstr "popen çağrısı başarısız (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "waitpid çağrısı başarısız (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "betik düzgün çalıştırılamadı\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "geçici dizin %s kaldırılamadı\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "%s açılamadı: %s\n"
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 "conflicting packages were found in target list\n"
#~ msgstr "hedef listesinde çakışan paketler bulundu\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "çakışan iki paketi aynı anda kuramazsınız\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "-U kullanarak paket değiştirme henüz desteklenmemektedir\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "paketleri -Rd ve -U kullanarak değiştirebilirsiniz\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "adres şeması belirtilmemiş, HTTP kullanılacak\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "'%s' dosyasına yazılamıyor\n"
#~ msgid "no such repository"
#~ msgstr "depo bulunmuyor"
#~ msgid "repository '%s' not found\n"
#~ msgstr "'%s' deposu bulunamadı\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "kaldırma işlemi oluşturulamadı\n"
#~ msgid "could not create transaction\n"
#~ msgstr "işlem oluşturulamadı\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "kaldırma işlemi başlatılamadı\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "işlem başlatılamadı\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "kaldırma işlemi hazırlanamadı\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,16 +1,16 @@
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the pacman package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# Ivan Kovnatsky <sevenfourk@gmail.com>, 2008.
# Roman Kyrylych <roman@archlinux.org>, 2008, 2009.
#
# Roman Kyrylych <roman@archlinux.org>, 2008, 2009, 2010.
msgid ""
msgstr ""
"Project-Id-Version: libalpm 3.2.2\n"
"Project-Id-Version: Pacman package manager 3.3.1\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2008-08-23 10:54-0500\n"
"PO-Revision-Date: \n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-13 20:08+0300\n"
"Last-Translator: Roman Kyrylych <roman@archlinux.org>\n"
"Language-Team: http://archlinux.org.ua\n"
"Language-Team: Ukrainian (archlinux.org.ua) <>\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -22,26 +22,10 @@ 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"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"%s-%s пропускається, бо в списку цільових пакунків є новіша версія %s\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "в списку цільових пакунків були знайдені конфліктуючі пакунки\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "ви не можете одночасно встановити два пакунки, що конфліктують\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "заміна пакунків за допомогою -U поки-що не підтримується\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "ви можете власноруч замінити пакунки використавши -Rd та -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -50,14 +34,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"
@@ -88,7 +72,7 @@ msgstr "неможливо отримати поточний робочий ка
#, c-format
msgid "problem occurred while upgrading %s\n"
msgstr "з'явилась проблема при поновленні %s\n"
msgstr "з'явилась проблема при оновленні %s\n"
#, c-format
msgid "problem occurred while installing %s\n"
@@ -96,20 +80,36 @@ msgstr "з'явилась проблема при встановленні %s\n"
#, 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"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "неможливо видалити запис бази даних %s%s\n"
msgid "removing invalid database: %s\n"
msgstr "вилучення невірної бази даних: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "неможливо відкрити %s: %s\n"
#, c-format
msgid "could not remove database directory %s\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 "duplicated database entry '%s'\n"
msgstr "дублікат у базі даних '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "пошкоджений запис у базі даних '%s'\n"
@@ -126,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"
@@ -146,26 +150,30 @@ msgstr "помилка при читанні пакунку %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "бракує метаданих пакунку в %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "спроба перереєструвати базу даних 'local'\n"
#, c-format
msgid "database path is undefined\n"
msgstr "шлях до бази даних не вказано\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "спроба перереєструвати базу даних 'local'\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"
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"
@@ -174,45 +182,33 @@ msgstr "був вибраний пакунок %s, що забезпечує %s\
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 "url '%s' is invalid\n"
msgstr "посилання '%s' невірне\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "не вдалося отримати файл '%s' з %s : %s\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "неможливо продовжити завантаження, починається з початку\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "неможливо писати у файл '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "помилка при завантаженні '%s': %s\n"
msgid "resuming download of %s not possible; starting over\n"
msgstr "неможливо продовжити завантаження %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"
msgid "failed retrieving file '%s' from %s\n"
msgstr "не вдалося отримати файл '%s' з %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"
@@ -276,16 +272,20 @@ 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 "невірне посилання чи сервер"
#, c-format
msgid "no servers configured for repository"
msgstr "для репозиторія не налаштовано жодного сервера"
#, c-format
msgid "transaction already initialized"
msgstr "транзакція вже ініціалізована"
@@ -311,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"
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 "невірний чи пошкоджений пакунок"
@@ -330,25 +330,21 @@ 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"
msgstr "ім'я файлу пакунку невірне"
#, c-format
msgid "no such repository"
msgstr "немає такого репозиторію"
msgid "package architecture is not valid"
msgstr "архітектура пакунку невірна"
#, c-format
msgid "could not find repository for target"
msgstr "неможливо знайти репозиторій з пакунком"
#, c-format
msgid "invalid or corrupted delta"
@@ -358,10 +354,6 @@ msgstr "невірний чи пошкоджений дельта-патч"
msgid "delta patch failed"
msgstr "накладення дельта-патчу невдале"
#, c-format
msgid "group not found"
msgstr "група не знадена"
#, c-format
msgid "could not satisfy dependencies"
msgstr "неможливо забезпечити залежності"
@@ -375,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"
@@ -410,41 +394,53 @@ msgstr "неочікувана помилка"
msgid "could not find %s in database -- skipping\n"
msgstr "неможливо знайти %s в базі даних -- пропускається\n"
#, c-format
msgid "removing %s from target list\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 "repository '%s' not found\n"
msgstr "репозиторій '%s' не знайдено\n"
msgid "cannot replace %s by %s\n"
msgstr "неможливо замінити %s на %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"
@@ -456,43 +452,15 @@ 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"
msgstr "не вдалося отримати деякі файли з %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "неможливо створити транзакцію видалення\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "неможливо почати транзакцію видалення\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "неможливо підготувати транзакцію видалення\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "неможливо здійснити транзакцію видалення\n"
#, c-format
msgid "could not create transaction\n"
msgstr "неможливо створити транзакцію\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "неможливо почати транзакцію\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "неможливо підготувати транзакцію\n"
msgstr "неможливо здійснити транзакцію вилучення\n"
#, c-format
msgid "could not commit transaction\n"
@@ -500,12 +468,7 @@ msgstr "неможливо здійснити транзакцію\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "неможливо видалити файл блокування %s\n"
#, c-format
msgid "No /bin/sh in parent environment, aborting scriptlet\n"
msgstr ""
"В батьківському середовищі немає /bin/sh, переривання скрипту виконання\n"
msgstr "неможливо вилучити файл блокування %s\n"
#, c-format
msgid "could not create temp directory\n"
@@ -515,6 +478,10 @@ 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 change directory to %s (%s)\n"
msgstr "неможливо змінити каталог на %s (%s)\n"
@@ -532,24 +499,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "неможливо змінити каталог на / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "виклик popen невдалий (%s)"
msgid "call to popen failed (%s)\n"
msgstr "виклик popen невдалий (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "виклик waitpid невдалий (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "скрипт встановлення не зміг виконатися коректно\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "неможливо видалити тимчасовий каталог %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "неможливо відкрити %s: %s\n"
msgid "command failed to execute correctly\n"
msgstr "команда не змогла виконатися коректно\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -558,3 +517,88 @@ msgstr "кеш %s не існує, створюється...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "неможливо створити кеш пакунку, використовуватиметься /tmp\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "в списку цільових пакунків були знайдені конфліктуючі пакунки\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "ви не можете одночасно встановити два пакунки, що конфліктують\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "заміна пакунків за допомогою -U поки-що не підтримується\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "ви можете власноруч замінити пакунки використавши -Rd та -U\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "протокол посилання не вказано, вважається HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "неможливо писати у файл '%s'\n"
#~ msgid "no such repository"
#~ msgstr "немає такого репозиторію"
#~ msgid "repository '%s' not found\n"
#~ msgstr "репозиторій '%s' не знайдено\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "неможливо створити транзакцію вилучення\n"
#~ msgid "could not create transaction\n"
#~ msgstr "неможливо створити транзакцію\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "неможливо почати транзакцію вилучення\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "неможливо почати транзакцію\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "неможливо підготувати транзакцію вилучення\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,18 +1,19 @@
# Chinese/Simplified translation of Pacman package manager package.
# Copyright (C) 2008 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# Copyright (C) 2010 Pacman Development Team <pacman-dev@archlinux.org>
# This file is distributed under the same license as the pacman package manager package.
# 甘露(Lu.Gan) <rhythm.gan@gmail.com>, 2008.
#
#
#
msgid ""
msgstr ""
"Project-Id-Version: Pacman package manager 3.2.1\n"
"Project-Id-Version: Pacman package manager 3.3.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-10-28 16:20+0900\n"
"Last-Translator: Lyman Li <lymanrb@gmail.com>\n"
"POT-Creation-Date: 2010-06-04 13:36-0500\n"
"PO-Revision-Date: 2010-06-05 10:41+0700\n"
"Last-Translator: 甘露(Gan Lu) <rhythm.gan@gmail.com>\n"
"Language-Team: Chinese/Simplified <i18n-translation@lists.linux.net.cn>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -22,24 +23,8 @@ msgid "replacing older version %s-%s by %s in target list\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 "跳过 %1$s-%2$s因为较新版本的 %3$s 在目标清单中\n"
#, c-format
msgid "conflicting packages were found in the target list\n"
msgstr "目标清单中发现有冲突的软件包\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "你不能同时安装有冲突的两个软件包\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "目前尚不支持用 -U 参数替换软件包\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "你可以使用 -Rd 及 -U 来手动替换软件包\n"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr "正在跳过 %1$s-%2$s因为较新版本的 %3$s 在目标清单中\n"
#, c-format
msgid ""
@@ -49,14 +34,14 @@ msgstr ""
"目录权限不一致 %1$s\n"
"文件系统:%2$o 软件包:%3$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 "无法解压缩 %1$s (%2$s)\n"
@@ -102,13 +87,29 @@ msgid "could not add entry '%s' in cache\n"
msgstr "无法在缓存中添加记录 '%s' \n"
#, c-format
msgid "could not remove database entry %s%s\n"
msgstr "无法删除数据库记录 %1$s%2$s\n"
msgid "removing invalid database: %s\n"
msgstr "正在删除无效的数据库: %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "无法打开 %1$s: %2$s\n"
#, c-format
msgid "could not remove database directory %s\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 "duplicated database entry '%s'\n"
msgstr "重复的数据库记录 '%s'\n"
#, c-format
msgid "corrupted database entry '%s'\n"
msgstr "损坏的数据库记录 '%s'\n"
@@ -125,6 +126,10 @@ msgstr "%1$s 数据库不一致:名字和软件包中的 %2$s 不一致\n"
msgid "%s database is inconsistent: version mismatch on package %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"
@@ -145,14 +150,14 @@ msgstr "读取软件包 %1$s 发生错误: %2$s\n"
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 "attempt to re-register the 'local' DB\n"
msgstr "尝试重新登记“本地”数据库\n"
#, c-format
msgid "dependency cycle detected:\n"
msgstr "检测到依赖关系环:\n"
@@ -165,6 +170,10 @@ msgstr "%1$s 将在它 %2$s 的依赖关系之后被删除\n"
msgid "%s will be installed before its %s dependency\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 "已选定提供软件包 (%1$s 提供 %2$s)\n"
@@ -173,45 +182,33 @@ msgstr "已选定提供软件包 (%1$s 提供 %2$s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "无法解决 \"%1$s\"\"%2$s\" 的一个依赖关系\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' 无效\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "url scheme 未指定,假定为 HTTP\n"
#, c-format
msgid "disk"
msgstr "硬盘"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "url '%s' 无效\n"
#, c-format
msgid "failed retrieving file '%s' from %s : %s\n"
msgstr "无法从 %2$s : %3$s 获取文件 '%1$s'\n"
#, c-format
msgid "cannot resume download, starting over\n"
msgstr "无法恢复下载重新开始\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "无法写入文件 '%s'\n"
#, c-format
msgid "error downloading '%s': %s\n"
msgstr "下载 '%1$s' 时出错: %2$s\n"
msgid "resuming download of %s not possible; starting over\n"
msgstr "无法恢复下载 %s正在重新开始\n"
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr "写入文件 '%1$s' 时出错: %2$s\n"
#, c-format
msgid "could not chdir to %s\n"
msgstr "无法切换目录到 %s\n"
msgid "failed retrieving file '%s' from %s\n"
msgstr "无法从 %2$s 获取文件 '%1$s'\n"
#, c-format
msgid "running XferCommand: fork failed!\n"
msgstr "正在运行 XferCommandfork 失败!\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"
@@ -285,6 +282,10 @@ msgstr "无法删除数据库记录"
msgid "invalid url for server"
msgstr "无效的服务器 url"
#, c-format
msgid "no servers configured for repository"
msgstr "软件库没有配置服务器信息"
#, c-format
msgid "transaction already initialized"
msgstr "处理已初始化"
@@ -310,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"
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,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 "无法为软件包删除全部文件"
@@ -346,8 +339,12 @@ msgid "package filename is not valid"
msgstr "软件包文件名无效"
#, c-format
msgid "no such repository"
msgstr "没有该软件库"
msgid "package architecture is not valid"
msgstr "无效的软件包架构"
#, c-format
msgid "could not find repository for target"
msgstr "无法为目标找到软件库"
#, c-format
msgid "invalid or corrupted delta"
@@ -357,10 +354,6 @@ msgstr "无效的或已损坏的 delta"
msgid "delta patch failed"
msgstr "delta 补丁失败"
#, c-format
msgid "group not found"
msgstr "没有找到软件包组"
#, c-format
msgid "could not satisfy dependencies"
msgstr "无法满足依赖关系"
@@ -374,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"
@@ -409,6 +394,10 @@ msgstr "未预期的错误"
msgid "could not find %s in database -- skipping\n"
msgstr "无法在数据库中找到 %s -- 跳过\n"
#, c-format
msgid "removing %s from target list\n"
msgstr "正在从目标清单中删除 '%s' \n"
#, c-format
msgid "cannot remove file '%s': %s\n"
msgstr "无法删除文件 '%1$s': %2$s\n"
@@ -422,20 +411,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 "%1$s-%2$s:忽略软件包更新(由 %3$s-%4$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 "%1$s本地%2$s比 %3$s 的版本更新 (%4$s)\n"
#, c-format
msgid "%s: ignoring package upgrade (%s => %s)\n"
msgstr "%1$s忽略软件包更新%2$s => %3$s\n"
msgid "ignoring package replacement (%s-%s => %s-%s)\n"
msgstr "正在忽略软件包更新 (%s-%s => %s-%s)\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "没有找到软件库 '%s'\n"
msgid "cannot replace %s by %s\n"
msgstr "无法用文件 '%2$s' 替代 %1$s\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
@@ -457,42 +454,14 @@ msgstr "检测到未解决的软件包冲突\n"
msgid "removing '%s' from target list because it conflicts with '%s'\n"
msgstr "正在从目标清单中删除 '%1$s' ,因为它和 '%2$s' 冲突\n"
#, c-format
msgid "command: %s\n"
msgstr "命令:%s\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "无法从 %s 获取某些文件\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "无法生成可撤销处理\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "无法初始化可撤销处理\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "无法准备可撤销处理\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "无法交付可撤销处理\n"
#, c-format
msgid "could not create transaction\n"
msgstr "无法创建处理\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "无法初始化处理\n"
#, c-format
msgid "could not prepare transaction\n"
msgstr "无法准备处理\n"
#, c-format
msgid "could not commit transaction\n"
msgstr "无法交付处理\n"
@@ -501,10 +470,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"
@@ -513,6 +478,10 @@ msgstr "无法创建临时目录\n"
msgid "could not copy tempfile to %s (%s)\n"
msgstr "无法复制临时文件到 %1$s (%2$s)\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "无法删除临时目录 %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "无法更改目录到 %1$s (%2$s)\n"
@@ -530,24 +499,16 @@ msgid "could not change directory to / (%s)\n"
msgstr "无法切换目录到 / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "调用 popen 失败 (%s)"
msgid "call to popen failed (%s)\n"
msgstr "调用 popen 失败 (%s)\n"
#, c-format
msgid "call to waitpid failed (%s)\n"
msgstr "调用 waitpid 失败 (%s)\n"
#, c-format
msgid "scriptlet failed to execute correctly\n"
msgstr "小脚本未能被正确执行\n"
#, c-format
msgid "could not remove tmpdir %s\n"
msgstr "无法删除临时目录 %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "无法打开 %1$s: %2$s\n"
msgid "command failed to execute correctly\n"
msgstr "命令未能被正确执行\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -556,3 +517,87 @@ msgstr "没有 %s 缓存存在,正在创建...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "无法创建软件包缓存,正在使用 /tmp 代替\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "目标清单中发现有冲突的软件包\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr "你不能同时安装有冲突的两个软件包\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "目前尚不支持用 -U 参数替换软件包\n"
#~ msgid "you can replace packages manually using -Rd and -U\n"
#~ msgstr "你可以使用 -Rd 及 -U 来手动替换软件包\n"
#~ msgid "url scheme not specified, assuming HTTP\n"
#~ msgstr "url scheme 未指定,假定为 HTTP\n"
#~ msgid "cannot write to file '%s'\n"
#~ msgstr "无法写入文件 '%s'\n"
#~ msgid "no such repository"
#~ msgstr "没有该软件库"
#~ msgid "repository '%s' not found\n"
#~ msgstr "没有找到软件库 '%s'\n"
#~ msgid "could not create removal transaction\n"
#~ msgstr "无法生成可撤销处理\n"
#~ msgid "could not create transaction\n"
#~ msgstr "无法创建处理\n"
#~ msgid "could not initialize the removal transaction\n"
#~ msgstr "无法初始化可撤销处理\n"
#~ msgid "could not initialize transaction\n"
#~ msgstr "无法初始化处理\n"
#~ msgid "could not prepare removal transaction\n"
#~ msgstr "无法准备可撤销处理\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-2010 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>
@@ -46,38 +47,46 @@
#include "handle.h"
#include "alpm.h"
int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name)
int SYMEXPORT alpm_remove_target(char *target)
{
pmpkg_t *info;
pmtrans_t *trans;
pmdb_t *db_local;
alpm_list_t *p;
ALPM_LOG_FUNC;
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
/* Sanity checks */
ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -1));
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
trans = handle->trans;
db_local = handle->db_local;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(name != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
if(_alpm_pkg_find(trans->packages, name)) {
if(_alpm_pkg_find(trans->remove, target)) {
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_local, target)) != NULL) {
_alpm_log(PM_LOG_DEBUG, "adding %s in the target list\n", info->name);
trans->remove = alpm_list_add(trans->remove, _alpm_pkg_dup(info));
return(0);
}
_alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", target);
pmgrp_t *grp = alpm_db_readgrp(db_local, target);
if(grp == NULL) {
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);
}
for(p = alpm_grp_get_pkgs(grp); p; p = alpm_list_next(p)) {
pmpkg_t *pkg = alpm_list_getdata(p);
_alpm_log(PM_LOG_DEBUG, "adding %s in the target list\n", pkg->name);
trans->remove = alpm_list_add(trans->remove, _alpm_pkg_dup(pkg));
}
_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));
return(0);
}
@@ -92,10 +101,10 @@ static void remove_prepare_cascade(pmtrans_t *trans, pmdb_t *db,
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
pmpkg_t *info = _alpm_db_get_pkgfromcache(db, miss->target);
if(info) {
if(!_alpm_pkg_find(trans->packages, alpm_pkg_get_name(info))) {
_alpm_log(PM_LOG_DEBUG, "pulling %s in the targets list\n",
if(!_alpm_pkg_find(trans->remove, alpm_pkg_get_name(info))) {
_alpm_log(PM_LOG_DEBUG, "pulling %s in target list\n",
alpm_pkg_get_name(info));
trans->packages = alpm_list_add(trans->packages, _alpm_pkg_dup(info));
trans->remove = alpm_list_add(trans->remove, _alpm_pkg_dup(info));
}
} else {
_alpm_log(PM_LOG_ERROR, _("could not find %s in database -- skipping\n"),
@@ -104,7 +113,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->remove, NULL);
}
}
@@ -113,28 +122,28 @@ static void remove_prepare_keep_needed(pmtrans_t *trans, pmdb_t *db,
{
ALPM_LOG_FUNC;
/* Remove needed packages (which break dependencies) from the target list */
/* Remove needed packages (which break dependencies) from target list */
while(lp != NULL) {
alpm_list_t *i;
for(i = lp; i; i = i->next) {
pmdepmissing_t *miss = (pmdepmissing_t *)i->data;
void *vpkg;
pmpkg_t *pkg = _alpm_pkg_find(trans->packages, miss->causingpkg);
pmpkg_t *pkg = _alpm_pkg_find(trans->remove, miss->causingpkg);
if(pkg == NULL) {
continue;
}
trans->packages = alpm_list_remove(trans->packages, pkg, _alpm_pkg_cmp,
trans->remove = alpm_list_remove(trans->remove, pkg, _alpm_pkg_cmp,
&vpkg);
pkg = vpkg;
if(pkg) {
_alpm_log(PM_LOG_WARNING, "removing %s from the target-list\n",
_alpm_log(PM_LOG_WARNING, _("removing %s from target list\n"),
alpm_pkg_get_name(pkg));
_alpm_pkg_free(pkg);
}
}
alpm_list_free_inner(lp, (alpm_list_fn_free)_alpm_depmiss_free);
alpm_list_free(lp);
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->remove, NULL);
}
}
@@ -147,28 +156,23 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
/* skip all checks if we are doing this removal as part of an upgrade */
if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
return(0);
}
if((trans->flags & PM_TRANS_FLAG_RECURSE) && !(trans->flags & PM_TRANS_FLAG_CASCADE)) {
_alpm_log(PM_LOG_DEBUG, "finding removable dependencies\n");
_alpm_recursedeps(db, trans->packages, trans->flags & PM_TRANS_FLAG_RECURSEALL);
_alpm_recursedeps(db, trans->remove, trans->flags & PM_TRANS_FLAG_RECURSEALL);
}
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
EVENT(trans, PM_TRANS_EVT_CHECKDEPS_START, NULL, NULL);
_alpm_log(PM_LOG_DEBUG, "looking for unsatisfied dependencies\n");
lp = alpm_checkdeps(db, 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->remove, NULL);
if(lp != NULL) {
if(trans->flags & PM_TRANS_FLAG_CASCADE) {
remove_prepare_cascade(trans, db, lp);
} else if (trans->flags & PM_TRANS_FLAG_UNNEEDED) {
/* Remove needed packages (which would break dependencies)
* from the target list */
* from target list */
remove_prepare_keep_needed(trans, db, lp);
} else {
if(data) {
@@ -184,15 +188,15 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
/* re-order w.r.t. dependencies */
_alpm_log(PM_LOG_DEBUG, "sorting by dependencies\n");
lp = _alpm_sortbydeps(trans->packages, 1);
lp = _alpm_sortbydeps(trans->remove, 1);
/* free the old alltargs */
alpm_list_free(trans->packages);
trans->packages = lp;
alpm_list_free(trans->remove);
trans->remove = lp;
/* -Rcs == -Rc then -Rs */
if((trans->flags & PM_TRANS_FLAG_CASCADE) && (trans->flags & PM_TRANS_FLAG_RECURSE)) {
_alpm_log(PM_LOG_DEBUG, "finding removable dependencies\n");
_alpm_recursedeps(db, trans->packages, trans->flags & PM_TRANS_FLAG_RECURSEALL);
_alpm_recursedeps(db, trans->remove, trans->flags & PM_TRANS_FLAG_RECURSEALL);
}
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
@@ -202,13 +206,13 @@ int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data)
return(0);
}
static int can_remove_file(pmtrans_t *trans, const char *path)
static int can_remove_file(const char *path, alpm_list_t *skip)
{
char file[PATH_MAX+1];
snprintf(file, PATH_MAX, "%s%s", handle->root, path);
if(alpm_list_find_str(trans->skip_remove, file)) {
if(alpm_list_find_str(skip, file)) {
/* return success because we will never actually remove this file */
return(1);
}
@@ -229,29 +233,22 @@ 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, alpm_list_t *skip_remove, int nosave)
{
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, filename);
snprintf(file, PATH_MAX, "%s%s", handle->root, (char *)lp->data);
if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
/* check noupgrade */
if(alpm_list_find_str(handle->noupgrade, lp->data)) {
_alpm_log(PM_LOG_DEBUG, "Skipping removal of '%s' due to NoUpgrade\n",
file);
return;
}
/* check the remove skip list before removing the file.
* see the big comment block in db_find_fileconflicts() for an
* explanation. */
if(alpm_list_find_str(skip_remove, filename)) {
_alpm_log(PM_LOG_DEBUG, "%s is in skip_remove, skipping removal\n",
file);
return;
}
/* we want to do a lstat here, and not a _alpm_lstat.
@@ -271,36 +268,100 @@ static void unlink_file(pmpkg_t *info, alpm_list_t *lp, pmtrans_t *trans)
_alpm_log(PM_LOG_DEBUG, "removing directory %s\n", file);
}
} else {
/* check the remove skip list before removing the file.
* see the big comment block in db_find_fileconflicts() for an
* explanation. */
if(alpm_list_find_str(trans->skip_remove, file)) {
_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);
alpm_logaction("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(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));
}
}
}
int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
int _alpm_upgraderemove_package(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans)
{
alpm_list_t *skip_remove, *b;
alpm_list_t *newfiles, *lp;
alpm_list_t *files = alpm_pkg_get_files(oldpkg);
const char *pkgname = alpm_pkg_get_name(oldpkg);
ALPM_LOG_FUNC;
_alpm_log(PM_LOG_DEBUG, "removing old package first (%s-%s)\n",
oldpkg->name, oldpkg->version);
/* copy the remove skiplist over */
skip_remove =
alpm_list_join(alpm_list_strdup(trans->skip_remove),alpm_list_strdup(handle->noupgrade));
/* Add files in the NEW backup array to the skip_remove array
* so this removal operation doesn't kill them */
/* old package backup list */
alpm_list_t *filelist = alpm_pkg_get_files(newpkg);
for(b = alpm_pkg_get_backup(newpkg); b; b = b->next) {
char *backup = _alpm_backup_file(b->data);
/* safety check (fix the upgrade026 pactest) */
if(!alpm_list_find_str(filelist, backup)) {
FREE(backup);
continue;
}
_alpm_log(PM_LOG_DEBUG, "adding %s to the skip_remove array\n", backup);
skip_remove = alpm_list_add(skip_remove, backup);
}
for(lp = files; lp; lp = lp->next) {
if(!can_remove_file(lp->data, skip_remove)) {
_alpm_log(PM_LOG_DEBUG, "not removing package '%s', can't remove all files\n",
pkgname);
RET_ERR(PM_ERR_PKG_CANT_REMOVE, -1);
}
}
/* iterate through the list backwards, unlinking files */
newfiles = alpm_list_reverse(files);
for(lp = newfiles; lp; lp = alpm_list_next(lp)) {
unlink_file(oldpkg, lp->data, skip_remove, 0);
}
alpm_list_free(newfiles);
FREELIST(skip_remove);
/* remove the package from the database */
_alpm_log(PM_LOG_DEBUG, "updating database\n");
_alpm_log(PM_LOG_DEBUG, "removing database entry '%s'\n", pkgname);
if(_alpm_db_remove(handle->db_local, oldpkg) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not remove database entry %s-%s\n"),
pkgname, alpm_pkg_get_version(oldpkg));
}
/* remove the package from the cache */
if(_alpm_db_remove_pkgfromcache(handle->db_local, oldpkg) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not remove entry '%s' from cache\n"),
pkgname);
}
return(0);
}
int _alpm_remove_packages(pmtrans_t *trans, pmdb_t *db)
{
pmpkg_t *info;
alpm_list_t *targ, *lp;
@@ -311,14 +372,14 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
pkg_count = alpm_list_count(trans->packages);
pkg_count = alpm_list_count(trans->remove);
for(targ = trans->packages; targ; targ = targ->next) {
for(targ = trans->remove; targ; targ = targ->next) {
int position = 0;
char scriptlet[PATH_MAX];
alpm_list_t *files;
info = (pmpkg_t*)targ->data;
const char *pkgname = NULL;
int targcount = alpm_list_count(targ);
if(handle->trans->state == STATE_INTERRUPTED) {
return(0);
@@ -326,26 +387,23 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* get the name now so we can use it after package is removed */
pkgname = alpm_pkg_get_name(info);
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install", db->path,
pkgname, alpm_pkg_get_version(info));
snprintf(scriptlet, PATH_MAX, "%s%s-%s/install",
_alpm_db_path(db), pkgname, alpm_pkg_get_version(info));
if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
EVENT(trans, PM_TRANS_EVT_REMOVE_START, info, NULL);
_alpm_log(PM_LOG_DEBUG, "removing package %s-%s\n",
pkgname, alpm_pkg_get_version(info));
EVENT(trans, PM_TRANS_EVT_REMOVE_START, info, NULL);
_alpm_log(PM_LOG_DEBUG, "removing package %s-%s\n",
pkgname, alpm_pkg_get_version(info));
/* run the pre-remove scriptlet if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, scriptlet, "pre_remove",
alpm_pkg_get_version(info), NULL, trans);
}
/* run the pre-remove scriptlet if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, scriptlet, "pre_remove",
alpm_pkg_get_version(info), NULL, trans);
}
files = alpm_pkg_get_files(info);
if(!(trans->flags & PM_TRANS_FLAG_DBONLY)) {
alpm_list_t *files = alpm_pkg_get_files(info);
for(lp = files; lp; lp = lp->next) {
if(!can_remove_file(trans, lp->data)) {
if(!can_remove_file(lp->data, NULL)) {
_alpm_log(PM_LOG_DEBUG, "not removing package '%s', can't remove all files\n",
pkgname);
RET_ERR(PM_ERR_PKG_CANT_REMOVE, -1);
@@ -353,20 +411,24 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
}
int filenum = alpm_list_count(files);
double percent = 0.0;
alpm_list_t *newfiles;
_alpm_log(PM_LOG_DEBUG, "removing %d files\n", filenum);
/* init progress bar */
PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, info->name, 0,
pkg_count, (pkg_count - targcount + 1));
/* 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);
double percent;
unlink_file(info, lp->data, NULL, trans->flags & PM_TRANS_FLAG_NOSAVE);
/* update progress bar after each file */
percent = (double)position / (double)filenum;
PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, info->name,
(double)(percent * 100), pkg_count,
(pkg_count - alpm_list_count(targ) + 1));
(pkg_count - targcount + 1));
position++;
}
alpm_list_free(newfiles);
@@ -374,14 +436,12 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
/* set progress to 100% after we finish unlinking files */
PROGRESS(trans, PM_TRANS_PROGRESS_REMOVE_START, pkgname, 100,
pkg_count, (pkg_count - alpm_list_count(targ) + 1));
pkg_count, (pkg_count - targcount + 1));
if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
/* run the post-remove script if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, scriptlet, "post_remove",
alpm_pkg_get_version(info), NULL, trans);
}
/* run the post-remove script if it exists */
if(alpm_pkg_has_scriptlet(info) && !(trans->flags & PM_TRANS_FLAG_NOSCRIPTLET)) {
_alpm_runscriptlet(handle->root, scriptlet, "post_remove",
alpm_pkg_get_version(info), NULL, trans);
}
/* remove the package from the database */
@@ -397,17 +457,11 @@ int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db)
pkgname);
}
/* call a done event if this isn't an upgrade */
if(trans->type != PM_TRANS_TYPE_REMOVEUPGRADE) {
EVENT(trans, PM_TRANS_EVT_REMOVE_DONE, info, NULL);
}
EVENT(trans, PM_TRANS_EVT_REMOVE_DONE, info, NULL);
}
/* 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);
}
_alpm_ldconfig(handle->root);
return(0);
}

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