1
0
forked from mirrors/pacman

Compare commits

...

385 Commits

Author SHA1 Message Date
Dan McGee
a97e28205a Update 3.4.3 release date
Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-22 10:07:46 -06:00
Dan McGee
76735e6519 Copy new backend translation over from frontend translation
Since it is the same string. Done with some bash looping and sed magic.

    for src in po/*.po; do
        echo $src
        newtrans=$(grep -A1 "msgid.*$1" $src | tail -n1)
        newtrans=${newtrans//\\/\\\\}
        echo "$newtrans"
        fname=${src##*/}
        dest=lib/libalpm/po/$fname
        sed -i -e "/msgid.*$1/{N; s/msgstr.*$/$newtrans/}" $dest
    done

Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-21 11:04:52 -06:00
Dan McGee
85d0111da8 3.4.3 release preparation
Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-21 10:36:51 -06:00
Dan McGee
30f53cfe8d Fix double read issue in maint releases
This is essentially a backport/cherry-pick of commit 33240e87b9 from
master, but has to be done by hand because the DB format has diverged. Read
more in the commit message used there, which follows.

Due to the way we funk around with package data loading, we had a condition
where the filelist got doubled up because it was loaded twice.

Packages are originally loaded with INFRQ_BASE. In an upgrade/sync, the
package is checked for file conflicts next, leaving us in an "INFRQ_BASE |
INFRQ_FILES" state. Later, when committing a single package, we have an
explicit call to _alpm_local_db_read() with INFRQ_ALL as the level. Because
the package's level did not match this, we skipped over our previous "does
the incoming level match where I'm at" shortcut, and continued to load
things again, because of a lack of fine-grained checking for each of DESC,
FILES, and INSTALL.

The end result is we loaded the filelist twice, causing our remove logic to
iterate twice over the installed files, spewing a bunch of "cannot find file
X" messages.

Fix the problem by doing a bit more bitmasking logic throughout the load
method, and also fix the sanity check at the beginning of the function- this
should *only* be used for local packages as opposed to the "not a package"
check that was there before.

Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-12 09:17:22 -06:00
Dan McGee
cae2bdafec pactest: build the filelist using a set()
This will prevent duplicates, which we had plenty of once I made a few tests
that had a list of files greater than the normal two. The previous logic was
not working quite right.

Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit 0d4dd09993)
2011-01-12 09:11:10 -06:00
Dan McGee
8e30a46adb Make debug config messages consistent in capitalization
Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-11 23:16:52 -06:00
Dan McGee
9e8af82c97 Back out anticipated epoch changes
After all the debate as to what to do on maint, we are going to end up just
incorporating epoch into the version string, so we don't need this separate
field at all. Revert commit 5c8083baa4 and also kill the force flag we were
recording here as well.

Signed-off-by: Dan McGee <dan@archlinux.org>
2011-01-11 23:15:44 -06:00
Jakob Gruber
6ddc115c7f Respect Ignore{Pkg,Group} for group members
Fixes FS#19854.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-30 09:35:03 -06:00
Jakob Gruber
df360b791d Move group code to separate function
This makes the following commits more readable.
No logic was changed in this commit.

Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-30 09:35:03 -06:00
Jakob Gruber
58ee249c86 Tests: Sync group which includes ignored pkgs
* FS#19854 (--ignore is ignored with groups)

* http://www.archlinux.org/pipermail/pacman-dev/2009-June/008847.html
  (operation aborts when a package from a group is ignored/and user chooses
  not to install it)

If a group member is ignored, we expect
a) a question whether to install
b) after saying 'no' to a), the ignored member not to be installed
c) all other group members to be installed
d) pacman to execute successfully

Signed-off-by: Dan McGee <dan@archlinux.org>
(cherry picked from commit 9d0b33fd33)
2010-12-30 09:35:03 -06:00
Dan McGee
e0d327462c doc: add website zip to clean files
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-29 20:06:40 -06:00
Dan McGee
c002567d96 Various documentation updates
Signed-off-by: Dan McGee <dan@archlinux.org>
2010-12-29 19:07:30 -06:00
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
369 changed files with 25944 additions and 8458 deletions

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>

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:

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
@@ -15,12 +15,12 @@ pkgdatadir = ${datadir}/${PACKAGE}
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

92
NEWS
View File

@@ -1,5 +1,97 @@
VERSION DESCRIPTION
-----------------------------------------------------------------------------
3.4.3 - fix attempted double remove of all files issue during upgrades
- respect IgnorePkg/IgnoreGroup for group members (FS#19854)
- back out epoch changes; 3.5.X will handle them differently
3.4.2 - fix progress bar display with empty packages
- make pactest testsuite Python 2.7 compatible
- write epoch values in preparation for 3.5.X releases
- fix null pointer dereference in architecture check (FS#21668)
- 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

View File

@@ -3,9 +3,9 @@
# see 'man PKGBUILD'. NOTE: Please fill out the license field for your package!
# If it is unknown, then please put 'unknown'.
# Contributor: Your Name <youremail@domain.com>
# Maintainer: Your Name <youremail@domain.com>
pkgname=('pkg1' 'pkg2')
pkgbase=""
pkgbase=BASE
pkgver=VERSION
pkgrel=1
pkgdesc=""
@@ -21,6 +21,7 @@ replaces=()
backup=()
options=()
install=
changelog=
source=($pkgbase-$pkgver.tar.gz)
noextract=()
md5sums=() #generate with 'makepkg -g'
@@ -28,12 +29,15 @@ md5sums=() #generate with 'makepkg -g'
build() {
cd "$srcdir/$pkgbase-$pkgver"
./configure --prefix=/usr
make || return 1
make
}
package_pkg1() {
# options and directives that can be overridden
pkgver=
pkgrel=
pkgdesc=""
arch=()
license=()
groups=()
depends=()
@@ -44,6 +48,7 @@ package_pkg1() {
backup=()
options=()
install=
changelog=
cd "$srcdir/$pkgbase-$pkgver"
make DESTDIR="$pkgdir/" install-pkg1

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
}

34
README
View File

@@ -57,7 +57,6 @@ library is initialized.
* 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.
* 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.
@@ -296,3 +295,36 @@ API CHANGES BETWEEN 3.2 AND 3.3
- 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,10 +10,14 @@ 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>
Greek (el):
Christos Nouskas <nouskas@gmail.com>
British English (en_GB):
Jeff Bailes <thepizzaking@gmail.com>
Spanish (es):
@@ -28,6 +32,8 @@ Italian (it):
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>
@@ -43,6 +49,8 @@ Russian (ru):
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

@@ -18,11 +18,11 @@ rm -f scripts/{Makefile.in,Makefile}
rm -f etc/{Makefile.in,Makefile}
rm -f etc/pacman.d/{Makefile.in,Makefile}
rm -f etc/abs/{Makefile.in,Makefile}
rm -f pactest{,/tests}/{Makefile.in,Makefile}
rm -f test/{pacman,util}{,/tests}/{Makefile.in,Makefile}
rm -f contrib/{Makefile.in,Makefile}
rm -f doc/{Makefile.in,Makefile}
rm -f pactest/*.pyc
rm -f test/pacman/*.pyc
rm -f doc/html/*.html
rm -f doc/man3/*.3

View File

@@ -41,13 +41,13 @@ AC_PREREQ(2.60)
# Bugfix releases:
# pacman_version_micro += 1
m4_define([lib_current], [4])
m4_define([lib_revision], [0])
m4_define([lib_current], [5])
m4_define([lib_revision], [3])
m4_define([lib_age], [0])
m4_define([pacman_version_major], [3])
m4_define([pacman_version_minor], [3])
m4_define([pacman_version_micro], [0])
m4_define([pacman_version_minor], [4])
m4_define([pacman_version_micro], [3])
m4_define([pacman_version],
[pacman_version_major.pacman_version_minor.pacman_version_micro])
@@ -126,7 +126,7 @@ AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
AC_CHECK_PROGS([PYTHON], [python2.6 python2.5 python], [false])
AC_CHECK_PROGS([PYTHON], [python2.7 python2.6 python2.5 python2 python], [false])
# find installed gettext
AM_GNU_GETTEXT([external])
@@ -143,14 +143,19 @@ if test "x$internaldownload" = "xyes" ; then
AC_DEFINE([INTERNAL_DOWNLOAD], , [Use internal download library])
# Check for a download library if it was actually requested
AC_CHECK_LIB([fetch], [fetchParseURL], ,
AC_MSG_ERROR([libfetch is needed to compile with internal download support]) )
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
@@ -179,11 +184,14 @@ 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*)
@@ -192,15 +200,22 @@ case "${host_os}" in
;;
darwin*)
host_os_darwin=yes
SIZECMD="/usr/bin/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)
@@ -247,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])
@@ -284,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
@@ -334,8 +355,9 @@ scripts/Makefile
doc/Makefile
etc/Makefile
po/Makefile.in
pactest/Makefile
pactest/tests/Makefile
test/pacman/Makefile
test/pacman/tests/Makefile
test/util/Makefile
contrib/Makefile
Makefile
])
@@ -375,7 +397,7 @@ ${PACKAGE_NAME}:
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,13 +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

@@ -34,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,365 +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" ;;
check) mod="${mod}k" ;;
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 \
-k --check \
-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-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
# 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-2006 Judd Vinet <jvinet@zeroflux.org>.\n\n\
This is free software; see the source for copying conditions.\n\
There is NO WARRANTY, to the extent permitted by law.\n"
}
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

@@ -18,19 +18,23 @@
#
diffprog=${DIFFPROG:-vimdiff}
diffsearchpath=${DIFFSEARCHPATH:-/etc}
locate=0
usage() {
echo "pacdiff : a simple pacnew/pacorig/pacsave updater"
echo "Usage : pacdiff [-l]"
echo "The -l/--locate flag makes pacdiff use locate rather than find"
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 /etc/ \( -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave \) -print0
find $diffsearchpath \( -name \*.pacnew -o -name \*.pacorig -o -name \*.pacsave \) -print0
fi
}

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
@@ -120,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 : \
@@ -295,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 ;;

1
doc/.gitignore vendored
View File

@@ -10,3 +10,4 @@ repo-remove.8
*.html
*.xml
man3
website.tar.gz

View File

@@ -26,7 +26,8 @@ HTML_MANPAGES = \
HTML_OTHER = \
index.html \
submitting-patches.html \
translation-help.html
translation-help.html \
HACKING.html
HTML_DOCS = \
$(HTML_MANPAGES) \
@@ -51,7 +52,7 @@ EXTRA_DIST = \
$(DOXYGEN_MANS)
# Files that should be removed, but which Automake does not know.
MOSTLYCLEANFILES = *.xml $(ASCIIDOC_MANS) $(HTML_DOCS) repo-remove.8
MOSTLYCLEANFILES = *.xml $(ASCIIDOC_MANS) $(HTML_DOCS) repo-remove.8 website.tar.gz
# Ensure manpages are fresh when building a dist tarball
dist-hook:
@@ -79,29 +80,46 @@ 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
%.html: %.txt
asciidoc $(ASCIIDOC_OPTS) -a linkcss $*.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

View File

@@ -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.
@@ -79,6 +80,12 @@ similar to `$_basekernver`.
be copied into the package by makepkg. It does not need to be included
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
must either reside in the same directory as the PKGBUILD file, or be a
@@ -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
@@ -144,7 +152,7 @@ name. The syntax is: `source=('filename::url')`.
base functionality, but may be necessary to make full use of the contents
of this package. optdepends are currently for informational purposes only
and are not utilized by pacman during dependency resolution. The format
should be similar to the following:
for specifying optdepends is:
optdepends=('fakeroot: for makepkg usage as normal user')
@@ -226,10 +234,12 @@ name. The syntax is: `source=('filename::url')`.
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
@@ -253,31 +263,35 @@ the build function.
package() Function
------------------
An optional package() function can be specified in addition to the build() function.
This function is run immediately after the build() function. When specified in
combination with the fakeroot BUILDENV option in linkman:makepkg.conf[5], fakeroot
usage will be limited to running the packaging stage. The build() function will be
run as the user calling makepkg.
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.
makepkg supports building multiple packages from a single PKGBUILD. This is
achieved by assigning an array of package names to the `pkgname` directive.
Each split package uses a corresponding packaging function with name
`package_foo()`, where `foo` is the name of the split package.
All options and directives for the split packages default to the global values given
within the PKGBUILD. However, some of these can be overridden within each split
package's packaging function. The following variables can be overridden: `pkgdesc`,
`license`, `groups`, `depends`, `optdepends`, `provides`, `conflicts`, `replaces`,
`backup`, `options` and `install`.
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.
element in the `pkgname` array is used. The variable is not allowed to
begin with a hyphen.
Install/Upgrade/Remove Scripting
--------------------------------
@@ -317,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

@@ -47,11 +47,11 @@ configuration files dealing with pacman.
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.
link:http://projects.archlinux.org/pacman.git/[Git 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]
link:http://projects.archlinux.org/pacman.git/tree/NEWS[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.
@@ -62,6 +62,14 @@ Releases
`------------`-------
Date Version
---------------------
2011-01-22 v3.4.3
2010-12-29 v3.4.2
2010-09-03 v3.4.1
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
@@ -106,8 +114,8 @@ 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].
link:http://mailman.archlinux.org/mailman/listinfo/pacman-dev/[Subscribe] or
link:http://mailman.archlinux.org/pipermail/pacman-dev/[view the archives].
Source Code
~~~~~~~~~~~
@@ -122,7 +130,8 @@ The current development tree can be fetched with the following command:
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].
link:http://projects.archlinux.org/pacman.git/[cgit]. HTTP/HTTPS URLs are also
available for cloning purposes; these URLs are listed at the above page.
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
@@ -138,17 +147,17 @@ 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
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].
link:http://projects.archlinux.org/[code 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
* link:http://projects.archlinux.org/abs.git/[abs] - ABS (Arch Build System), scripts to download & use the Arch Linux PKGBUILD tree
* link:http://projects.archlinux.org/dbscripts.git/[dbscripts] - scripts used by Arch Linux to manage the main package repositories
* link:http://projects.archlinux.org/devtools.git/[devtools] - tools to assist in packaging and dependency checking
* link:http://projects.archlinux.org/namcap.git/[namcap] - a package analysis utility written in python
* link:http://projects.archlinux.org/srcpac.git/[srcpac] - a bash build-from-source pacman wrapper
Bugs
----
@@ -157,7 +166,7 @@ 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
You can also post a bug to the Arch Linux bug tracker
link:http://bugs.archlinux.org/index.php?project=3[Flyspray]. Be sure to file
bugs under the Pacman project.
@@ -185,7 +194,7 @@ Pacman/libalpm frontends:
Copyright
---------
pacman is Copyright (C) 2006-2009 Pacman Development Team
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.

View File

@@ -81,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.
@@ -142,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
@@ -161,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

@@ -135,6 +135,18 @@ Options
affects both generation and checking. The current valid options are:
`md5`, `sha1`, `sha256`, `sha384`, and `sha512`.
**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)
@@ -171,6 +183,11 @@ Options
in the current directory. Many people like to keep all source files in
a central location for easy cleanup, so this path can be set here.
**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.

View File

@@ -28,6 +28,12 @@ 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
@@ -82,9 +88,11 @@ to determine which packages need upgrading. This behavior operates as follows:
"bash>=3.2"`.
*-U, \--upgrade*::
Upgrade or add package(s) to the system. Either a URL or file path can be
specified. This is a ``remove-then-add'' process. See <<HCF,Handling Config
Files>> for an explanation on how pacman takes care of config files.
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.
@@ -166,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]]
-------------------
@@ -253,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*::
@@ -296,18 +317,14 @@ 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. (This is useful when
pacman's output is processed in a script.) Search will only show package
@@ -330,7 +347,9 @@ linkman:pacman.conf[5].
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.
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
@@ -357,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

@@ -86,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
@@ -95,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.
@@ -108,9 +120,6 @@ 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, and the new files will be installed with a
@@ -176,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

@@ -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' \

View File

@@ -26,7 +26,7 @@ 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"
@@ -72,6 +72,12 @@ OPTIONS=(strip docs libtool emptydirs zipman purge)
#-- File integrity checks to use. Valid: md5, sha1, sha256, sha384, sha512
INTEGRITY_CHECK=(md5)
#-- 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)
@@ -91,6 +97,8 @@ PURGE_TARGETS=(usr/{,share}/info/dir .packlist *.pod)
#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>"

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,7 @@
/*
* add.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -50,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);
@@ -72,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);
@@ -90,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);
@@ -99,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(_alpm_db_get_pkgcache(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, trans->packages, NULL);
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)
@@ -291,13 +132,13 @@ 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);
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);
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
@@ -358,7 +199,7 @@ static int extract_single_file(struct archive *archive,
/* case 12: existing dir, ignore it */
if(lsbuf.st_mode != entrymode) {
/* if filesystem perms are different than pkg perms, warn user */
int mask = 07777;
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);
@@ -642,8 +483,11 @@ 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);
@@ -691,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;
}
}
@@ -858,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;
@@ -868,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);
}

View File

@@ -1,7 +1,7 @@
/*
* add.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -24,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,7 @@
/*
* alpm.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -71,6 +71,7 @@ int SYMEXPORT alpm_release(void)
}
_alpm_handle_free(handle);
handle = NULL;
return(0);
}

View File

@@ -1,7 +1,7 @@
/*
* alpm.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -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);
@@ -86,14 +86,12 @@ typedef void (*alpm_cb_totaldl)(off_t total);
/** A callback for downloading files
* @param url the URL of the file to be downloaded
* @param localpath the directory to which the file should be downloaded
* @param mtimeold the modification time of the file previously downloaded
* @param mtimenew the modification time of the newly downloaded file.
* This should be set by the callback.
* @return 0 on success, 1 if the modification times are identical, -1 on
* @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,
time_t mtimeold, time_t *mtimenew);
int force);
/*
* Options
@@ -128,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);
@@ -151,13 +149,24 @@ 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);
unsigned short alpm_option_get_nopassiveftp();
void alpm_option_set_nopassiveftp(unsigned short nopasv);
void alpm_option_set_usedelta(unsigned short usedelta);
const char *alpm_option_get_arch();
void alpm_option_set_arch(const char *arch);
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
*/
@@ -181,6 +190,7 @@ 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_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
@@ -188,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);
@@ -224,17 +228,17 @@ alpm_list_t *alpm_pkg_get_deltas(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_replaces(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_files(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_backup(pmpkg_t *pkg);
alpm_list_t *alpm_pkg_get_removes(pmpkg_t *pkg);
pmdb_t *alpm_pkg_get_db(pmpkg_t *pkg);
void *alpm_pkg_changelog_open(pmpkg_t *pkg);
size_t alpm_pkg_changelog_read(void *ptr, size_t size,
const pmpkg_t *pkg, const void *fp);
/*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
@@ -262,34 +266,27 @@ pmpkg_t *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync);
* 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,
/* 0x1000 flag can go here */
PM_TRANS_FLAG_NEEDED = 0x2000,
PM_TRANS_FLAG_ALLEXPLICIT = 0x4000,
PM_TRANS_FLAG_UNNEEDED = 0x8000,
PM_TRANS_FLAG_RECURSEALL = 0x10000,
PM_TRANS_FLAG_NOLOCK = 0x20000
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;
/**
@@ -376,12 +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,
PM_TRANS_CONV_REMOVE_PKGS = 0x20,
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 */
@@ -402,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(int enable_downgrade);
int alpm_trans_addtarget(char *target);
int alpm_trans_prepare(alpm_list_t **data);
int alpm_trans_commit(alpm_list_t **data);
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
*/
@@ -441,6 +442,7 @@ 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);
@@ -509,6 +511,7 @@ enum _pmerrno_t {
PM_ERR_PKG_OPEN,
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,

View File

@@ -1,7 +1,7 @@
/*
* alpm_list.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -309,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;
@@ -615,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
@@ -643,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
@@ -658,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,7 @@
/*
* alpm_list.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -78,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,7 +1,7 @@
/*
* backup.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.org>
* 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>
@@ -33,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;
@@ -65,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);
}
@@ -95,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,7 @@
/*
* backup.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

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,76 +51,10 @@
#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)
{
FILE *fp;
char *file;
time_t ret = 0;
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);
}
}
fclose(fp);
free(file);
return(ret);
}
/*
* writes the dbpath/.lastupdate file with the value in time
*/
static int setlastupdate(const pmdb_t *db, time_t time)
{
FILE *fp;
char *file;
int ret = 0;
ALPM_LOG_FUNC;
if(db == NULL || time == 0) {
return(-1);
}
/* db->path + '.lastupdate' + NULL */
MALLOC(file, strlen(db->path) + 12, RET_ERR(PM_ERR_MEMORY, ret));
sprintf(file, "%s.lastupdate", db->path);
if((fp = fopen(file, "w")) == NULL) {
free(file);
return(-1);
}
if(fprintf(fp, "%ju", (uintmax_t)time) <= 0) {
ret = -1;
}
fclose(fp);
free(file);
return(ret);
}
static int checkdbdir(pmdb_t *db)
{
struct stat buf;
char *path = db->path;
const char *path = _alpm_db_path(db);
if(stat(path, &buf) != 0) {
_alpm_log(PM_LOG_DEBUG, "database dir '%s' does not exist, creating it\n",
@@ -125,7 +63,7 @@ static int checkdbdir(pmdb_t *db)
RET_ERR(PM_ERR_SYSTEM, -1);
}
} else if(!S_ISDIR(buf.st_mode)) {
_alpm_log(PM_LOG_WARNING, "removing bogus database: %s\n", path);
_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);
}
@@ -133,6 +71,103 @@ static int checkdbdir(pmdb_t *db)
return(0);
}
/* create list of directories in db */
static int dirlist_from_tar(const char *archive, alpm_list_t **dirlist)
{
struct archive *_archive;
struct archive_entry *entry;
if((_archive = archive_read_new()) == NULL)
RET_ERR(PM_ERR_LIBARCHIVE, -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);
}
while(archive_read_next_header(_archive, &entry) == ARCHIVE_OK) {
const struct stat *st;
const char *entryname; /* the name of the file in the archive */
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);
}
}
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);
}
*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
@@ -148,7 +183,7 @@ static int checkdbdir(pmdb_t *db)
* pmdb_t *db;
* int result;
* db = alpm_list_getdata(alpm_option_get_syncdbs());
* if(alpm_trans_init(PM_TRANS_TYPE_SYNC, 0, NULL, NULL, NULL) == 0) {
* if(alpm_trans_init(0, NULL, NULL, NULL) == 0) {
* result = alpm_db_update(0, db);
* alpm_trans_release();
*
@@ -174,10 +209,10 @@ static int checkdbdir(pmdb_t *db)
int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
{
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;
@@ -191,72 +226,82 @@ 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);
} else {
/* remove the old dir */
if(_alpm_rmrf(db->path) != 0) {
}
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));
}
/* 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 */
checkdbdir(db);
ret = _alpm_unpack(dbfilepath, db->path, NULL);
} else {
/* 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);
}
@@ -306,13 +351,15 @@ 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));
dbdir = opendir(db->path);
dbpath = _alpm_db_path(db);
dbdir = opendir(dbpath);
if(dbdir == NULL) {
return(0);
}
@@ -324,7 +371,7 @@ 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;
}
@@ -342,14 +389,23 @@ 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;
}
pkg->origin = PKG_FROM_CACHE;
pkg->origin_data.db = db;
/* 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);
_alpm_pkg_free(pkg);
continue;
}
pkg->origin = PKG_FROM_CACHE;
pkg->origin_data.db = db;
/* add to the collection */
_alpm_log(PM_LOG_FUNCTION, "adding '%s' to package cache for db '%s'\n",
pkg->name, db->treename);
@@ -367,10 +423,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);
}
@@ -379,6 +437,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;
@@ -403,14 +462,14 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
* & result: 00000100
* == to inforeq? nope, we need to load more info. */
if((info->infolevel & inforeq) == inforeq) {
/* already loaded this info, do nothing */
/* already loaded all of this info, do nothing */
return(0);
}
_alpm_log(PM_LOG_FUNCTION, "loading package data for %s : level=0x%x\n",
info->name, inforeq);
/* clear out 'line', to be certain - and to make valgrind happy */
memset(line, 0, 513);
memset(line, 0, sline+1);
pkgpath = get_pkgpath(db, info);
@@ -422,7 +481,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
/* DESC */
if(inforeq & INFRQ_DESC) {
if(inforeq & INFRQ_DESC && !(info->infolevel & INFRQ_DESC)) {
snprintf(path, PATH_MAX, "%sdesc", pkgpath);
if((fp = fopen(path, "r")) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
@@ -434,7 +493,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) {
@@ -442,7 +501,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) {
@@ -450,44 +509,44 @@ 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 in case of failure */
setlocale(LC_TIME, "C");
@@ -498,12 +557,12 @@ 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 in case of failure */
setlocale(LC_TIME, "C");
@@ -514,12 +573,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));
@@ -529,7 +588,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));
@@ -540,19 +599,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);
@@ -566,7 +625,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
/* FILES */
if(inforeq & INFRQ_FILES) {
if(inforeq & INFRQ_FILES && !(info->infolevel & INFRQ_FILES)) {
snprintf(path, PATH_MAX, "%sfiles", pkgpath);
if((fp = fopen(path, "r")) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
@@ -575,13 +634,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);
@@ -593,7 +652,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
/* DEPENDS */
if(inforeq & INFRQ_DEPENDS) {
if(inforeq & INFRQ_DEPENDS && !(info->infolevel & INFRQ_DEPENDS)) {
snprintf(path, PATH_MAX, "%sdepends", pkgpath);
if((fp = fopen(path, "r")) == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not open file %s: %s\n"), path, strerror(errno));
@@ -603,24 +662,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);
@@ -632,14 +691,14 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
/* DELTAS */
if(inforeq & INFRQ_DELTAS) {
if(inforeq & INFRQ_DELTAS && !(info->infolevel & INFRQ_DELTAS)) {
snprintf(path, PATH_MAX, "%sdeltas", pkgpath);
if((fp = fopen(path, "r"))) {
while(!feof(fp)) {
fgets(line, 255, fp);
_alpm_strtrim(line);
if(strcmp(line, "%DELTAS%") == 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);
@@ -653,7 +712,7 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq)
}
/* INSTALL */
if(inforeq & INFRQ_SCRIPTLET) {
if(inforeq & INFRQ_SCRIPTLET && !(info->infolevel & INFRQ_SCRIPTLET)) {
snprintf(path, PATH_MAX, "%sinstall", pkgpath);
if(access(path, F_OK) == 0) {
info->scriptlet = 1;
@@ -753,9 +812,6 @@ 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->url) {
fprintf(fp, "%%URL%%\n"
@@ -774,11 +830,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"

View File

@@ -1,7 +1,7 @@
/*
* be_package.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -75,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")) {
@@ -82,7 +84,7 @@ 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 */
setlocale(LC_TIME, "C");
@@ -112,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);
@@ -130,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;
@@ -267,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,7 @@
/*
* cache.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* cache.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* conflict.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -41,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;
@@ -51,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);
}
@@ -59,6 +60,7 @@ void _alpm_conflict_free(pmconflict_t *conflict)
{
FREE(conflict->package2);
FREE(conflict->package1);
FREE(conflict->reason);
FREE(conflict);
}
@@ -69,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);
}
@@ -122,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 {
@@ -168,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);
}
}
}
@@ -405,7 +408,7 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans,
ALPM_LOG_FUNC;
if(db == NULL || upgrade == NULL) {
if(db == NULL || upgrade == NULL || trans == NULL) {
return(NULL);
}
@@ -513,7 +516,7 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmdb_t *db, pmtrans_t *trans,
/* 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));
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;
}
@@ -578,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,7 @@
/*
* conflict.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -27,6 +27,7 @@
struct __pmconflict_t {
char *package1;
char *package2;
char *reason;
};
struct __pmfileconflict_t {
@@ -36,7 +37,7 @@ 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);

View File

@@ -1,7 +1,7 @@
/*
* db.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -321,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);
}
@@ -347,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;
@@ -440,7 +506,6 @@ alpm_list_t *_alpm_db_search(pmdb_t *db, const alpm_list_t *needles)
pmdb_t *_alpm_db_register_local(void)
{
pmdb_t *db;
const char *dbpath;
ALPM_LOG_FUNC;
@@ -451,13 +516,7 @@ pmdb_t *_alpm_db_register_local(void)
_alpm_log(PM_LOG_DEBUG, "registering local database\n");
dbpath = alpm_option_get_dbpath();
if(!dbpath) {
_alpm_log(PM_LOG_ERROR, _("database path is undefined\n"));
RET_ERR(PM_ERR_DB_OPEN, NULL);
}
db = _alpm_db_new(dbpath, "local");
db = _alpm_db_new("local", 1);
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
}
@@ -469,8 +528,6 @@ pmdb_t *_alpm_db_register_local(void)
pmdb_t *_alpm_db_register_sync(const char *treename)
{
pmdb_t *db;
const char *dbpath;
char path[PATH_MAX];
alpm_list_t *i;
ALPM_LOG_FUNC;
@@ -485,15 +542,7 @@ pmdb_t *_alpm_db_register_sync(const char *treename)
_alpm_log(PM_LOG_DEBUG, "registering sync database '%s'\n", treename);
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/", dbpath);
db = _alpm_db_new(path, treename);
db = _alpm_db_new(treename, 0);
if(db == NULL) {
RET_ERR(PM_ERR_DB_CREATE, NULL);
}

View File

@@ -1,7 +1,7 @@
/*
* db.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -28,30 +28,33 @@
/* 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;
unsigned short pkgcache_loaded;
/* 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;
unsigned short grpcache_loaded;
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);

View File

@@ -1,7 +1,7 @@
/*
* delta.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -71,34 +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_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);
v->data = vdelta;
vertices = alpm_list_add(vertices, v);
}
@@ -119,7 +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) {
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);
}
}
@@ -128,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, 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) {
@@ -165,9 +176,14 @@ 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;
@@ -181,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);
@@ -219,9 +234,10 @@ off_t _alpm_shortest_delta_path(alpm_list_t *deltas,
_alpm_log(PM_LOG_DEBUG, "started delta shortest-path search for '%s'\n", to);
vertices = delta_graph_init(deltas);
bestsize = delta_vert(vertices, to, &bestpath);
vertices = graph_init(deltas, 0);
graph_init_size(vertices);
dijkstra(vertices);
bestsize = shortest_path(vertices, to, &bestpath);
_alpm_log(PM_LOG_DEBUG, "delta shortest-path search complete : '%jd'\n", (intmax_t)bestsize);
@@ -232,6 +248,45 @@ 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:
@@ -282,7 +337,7 @@ pmdelta_t *_alpm_delta_parse(char *line)
tmp2 = tmp;
STRDUP(delta->to, tmp2, RET_ERR(PM_ERR_MEMORY, NULL));
_alpm_log(PM_LOG_DEBUG, "delta : %s %s '%lld'\n", delta->from, delta->to, (long long)delta->delta_size);
_alpm_log(PM_LOG_DEBUG, "delta : %s %s '%jd'\n", delta->from, delta->to, (intmax_t)delta->delta_size);
return(delta);
}

View File

@@ -1,7 +1,7 @@
/*
* delta.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* deps.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -578,7 +578,7 @@ pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs,
/* Computes resolvable dependencies for a given package and adds that package
* and those resolvable dependencies to a list.
*
* @param local is the local database
* @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
@@ -594,7 +594,7 @@ pmpkg_t *_alpm_resolvedep(pmdepend_t *dep, alpm_list_t *dbs,
* 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, pmpkg_t *pkg,
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)
{
@@ -605,10 +605,6 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *pkg,
ALPM_LOG_FUNC;
if(local == NULL || dbs_sync == NULL) {
return(-1);
}
if(_alpm_pkg_find(*packages, pkg->name) != NULL) {
return(0);
}
@@ -624,7 +620,7 @@ int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *pkg,
for(i = alpm_list_last(*packages); i; i = i->next) {
pmpkg_t *tpkg = i->data;
targ = alpm_list_add(NULL, tpkg);
deps = alpm_checkdeps(_alpm_db_get_pkgcache(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;

View File

@@ -1,7 +1,7 @@
/*
* deps.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -49,7 +49,7 @@ 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, int prompt);
int _alpm_resolvedeps(pmdb_t *local, alpm_list_t *dbs_sync, pmpkg_t *pkg,
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);

View File

@@ -1,7 +1,7 @@
/*
* download.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -25,6 +25,9 @@
#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 */
@@ -59,7 +62,7 @@ static char *get_filename(const char *url) {
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);
@@ -69,127 +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);
}
/* 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 = fetchParseURL(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) {
fetchIO *dlf = NULL;
FILE *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 sigaction new_action, old_action;
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"));
/* libfetch does not reset the error code */
fetchLastErrCode = 0;
/* 10s timeout - TODO make a config option */
fetchTimeout = 10000;
/* 10s timeout */
fetchTimeout = 10;
/* ignore any SIGPIPE signals- these may occur if our FTP socket dies or
* something along those lines. Store the old signal handler first. */
new_action.sa_handler = SIG_IGN;
sigemptyset(&new_action.sa_mask);
sigaction(SIGPIPE, NULL, &old_action);
sigaction(SIGPIPE, &new_action, NULL);
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 = fetchXGet(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(fetchLastErrCode != 0 || dlf == NULL) {
const char *host = _("disk");
if(strcmp(SCHEME_FILE, fileurl->scheme) != 0) {
host = fileurl->host;
}
/* 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, fetchLastErrString);
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);
@@ -197,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;
}
@@ -209,15 +248,15 @@ static int download_internal(const char *url, const char *localpath,
}
while((nread = fetchIO_read(dlf, buffer, PM_DLBUF_LEN)) > 0) {
check_stop();
size_t nwritten = 0;
while(nwritten < nread) {
nwritten += fwrite(buffer, 1, (nread - nwritten), localf);
if(ferror(localf)) {
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
destfile, strerror(errno));
ret = -1;
goto cleanup;
}
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;
}
dl_thisfile += nread;
@@ -227,8 +266,17 @@ static int download_internal(const char *url, const char *localpath,
}
/* 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_LIBFETCH;
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;
@@ -243,36 +291,60 @@ static int download_internal(const char *url, const char *localpath,
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;
cleanup:
/* restore any existing SIGPIPE signal handler */
sigaction(SIGPIPE, &old_action, NULL);
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) {
fetchIO_close(dlf);
}
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(const char *url, const char *localpath,
time_t mtimeold, time_t *mtimenew) {
int force) {
if(handle->fetchcb == NULL) {
#if defined(INTERNAL_DOWNLOAD)
return(download_internal(url, localpath, mtimeold, mtimenew));
return(download_internal(url, localpath, force));
#else
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
#endif
} else {
int ret = handle->fetchcb(url, localpath, mtimeold, mtimenew);
int ret = handle->fetchcb(url, localpath, force);
if(ret == -1) {
RET_ERR(PM_ERR_EXTERNAL_DOWNLOAD, -1);
}
@@ -282,19 +354,15 @@ static int download(const char *url, const char *localpath,
/*
* 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;
@@ -304,14 +372,14 @@ int _alpm_download_single_file(const char *filename,
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;
@@ -330,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++;
}
}
@@ -357,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,7 @@
/*
* dload.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -25,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,7 @@
/*
* error.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -117,8 +117,10 @@ const char SYMEXPORT *alpm_strerror(int err)
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");

View File

@@ -1,7 +1,7 @@
/*
* graph.h - helpful graph structure and setup/teardown methods
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* group.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* group.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* handle.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -79,6 +79,7 @@ void _alpm_handle_free(pmhandle_t *handle)
FREELIST(handle->cachedirs);
FREE(handle->logfile);
FREE(handle->lockfile);
FREE(handle->arch);
FREELIST(handle->dbs_sync);
FREELIST(handle->noupgrade);
FREELIST(handle->noextract);
@@ -168,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;
@@ -213,13 +214,22 @@ alpm_list_t SYMEXPORT *alpm_option_get_ignoregrps()
return handle->ignoregrp;
}
unsigned short SYMEXPORT alpm_option_get_nopassiveftp()
const char SYMEXPORT *alpm_option_get_arch()
{
if (handle == NULL) {
pm_errno = PM_ERR_HANDLE_NULL;
return NULL;
}
return handle->arch;
}
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()
@@ -436,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;
}
@@ -529,12 +539,13 @@ int SYMEXPORT alpm_option_remove_ignoregrp(const char *grp)
return(0);
}
void SYMEXPORT alpm_option_set_nopassiveftp(unsigned short nopasv)
void SYMEXPORT alpm_option_set_arch(const char *arch)
{
handle->nopassiveftp = nopasv;
if(handle->arch) FREE(handle->arch);
if(arch) handle->arch = strdup(arch);
}
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,7 @@
/*
* handle.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -57,9 +57,9 @@ typedef struct _pmhandle_t {
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 */
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,7 @@
/*
* log.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

View File

@@ -1,7 +1,7 @@
/*
* log.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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

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>

View File

@@ -1,7 +1,7 @@
/*
* package.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -295,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;
@@ -423,13 +423,6 @@ alpm_list_t SYMEXPORT *alpm_pkg_get_backup(pmpkg_t *pkg)
return pkg->backup;
}
alpm_list_t SYMEXPORT *alpm_pkg_get_removes(pmpkg_t *pkg)
{
ASSERT(pkg != NULL, return(NULL));
return(pkg->removes);
}
pmdb_t SYMEXPORT *alpm_pkg_get_db(pmpkg_t *pkg)
{
/* Sanity checks */
@@ -466,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);
@@ -480,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) {
@@ -548,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;
@@ -563,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
@@ -572,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)
@@ -858,7 +704,11 @@ void _alpm_pkg_free(pmpkg_t *pkg)
FREE(pkg);
}
/* Free transaction specific fields */
/* 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;
@@ -867,6 +717,11 @@ void _alpm_pkg_free_trans(pmpkg_t *pkg)
return;
}
if(pkg->origin == PKG_FROM_FILE) {
_alpm_pkg_free(pkg);
return;
}
alpm_list_free(pkg->removes);
pkg->removes = NULL;
}
@@ -894,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*
@@ -913,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,7 @@
/*
* package.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -49,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;

View File

@@ -1,16 +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

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

@@ -0,0 +1,567 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "s'ometrà l'objectiu: %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,16 +1,16 @@
# 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 14:14+0200\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\n"
"PO-Revision-Date: 2010-06-05 12:56+0200\n"
"Last-Translator: Vojtěch Gondžala <vojtech.gondzala@gmail.com>\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"
@@ -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"
@@ -101,6 +85,18 @@ msgstr "nelze aktualizovat záznam databáze %s-%s\n"
msgid "could not add entry '%s' in cache\n"
msgstr "nelze přidat položku '%s' do cache\n"
#, c-format
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"
@@ -109,6 +105,10 @@ msgstr "nelze odstranit záznam v databázi %s\n"
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"
@@ -149,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"
@@ -181,34 +181,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "selhalo získání souboru '%s' z %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s se zdá být zkrácen: %jd/%jd bytů\n"
@@ -342,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"
@@ -393,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"
@@ -429,10 +433,6 @@ msgstr "ignoruje se náhrada balíčku (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "nelze nahradit soubor %s souborem %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repositář '%s' nebyl nalezen\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s je aktuální -- vynechat\n"
@@ -445,6 +445,10 @@ msgstr "%s-%s je aktuální -- přeinstalovat\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "ponížení verze balíčku %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "přeskakuje se cíl: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "zjištěn konflikt nerozlišitelných balíčků\n"
@@ -457,26 +461,6 @@ msgstr "'%s' odstraněn ze seznamu cílů, protože je konfliktní s '%s'\n"
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 create transaction\n"
msgstr "nelze vytvořit transakci\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nelze inicializovat transakci pro odstranění\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nelze inicializovat transakci\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nelze připravit transakci pro odstranění\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nelze provést transakci pro odstranění\n"
@@ -501,10 +485,6 @@ msgstr "nelze zkopírovat dočasný soubor do %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "nelze odstranit dočasný adresář %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nelze otevřít %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nelze změnit adresář na %s (%s)\n"
@@ -522,8 +502,8 @@ 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"
@@ -541,6 +521,45 @@ msgstr "neexistuje cache %s, vytváří se...\n"
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"

View File

@@ -1,7 +1,7 @@
# 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.
@@ -9,12 +9,13 @@
# 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 16:09+0100\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 ""
@@ -107,6 +91,18 @@ msgstr "Konnte Datenbankeintrag %s-%s nicht aktualisieren\n"
msgid "could not add entry '%s' in cache\n"
msgstr "Konnte Eintrag '%s' nicht zum Pufferspeicher hinzufügen\n"
#, c-format
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"
@@ -115,6 +111,10 @@ msgstr "Konnte Datenbank %s nicht entfernen\n"
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"
@@ -159,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"
@@ -191,34 +191,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "Konnte Datei '%s' nicht von %s übertragen\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s scheint verstümmelt zu sein: %jd/%jd Byte\n"
@@ -353,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"
@@ -404,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"
@@ -440,10 +444,6 @@ msgstr "Ignoriere Paket-Ersetzung (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "Kann %s nicht durch %s ersetzen\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "Repositorium '%s' nicht gefunden\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s ist aktuell -- Überspringe\n"
@@ -456,6 +456,10 @@ msgstr "%s-%s ist aktuell -- Reinstalliere\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "Downgrade des Paketes %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "Überspringe das Ziel: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "Nicht lösbare Paketkonflikte gefunden\n"
@@ -468,26 +472,6 @@ msgstr "Entferne '%s' aus der Ziel-Liste, da es mit '%s' in Konflikt steht\n"
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 create transaction\n"
msgstr "Konnte den Vorgang nicht erstellen\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "Konnte den Lösch-Vorgang nicht beginnen\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "Konnte den Vorgang nicht beginnen\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht vorbereiten\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "Konnte Lösch-Vorgang nicht durchführen\n"
@@ -512,10 +496,6 @@ msgstr "Konnte temporäre Datei nicht nach %s kopieren (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "Konnte temporäres Verzeichnis %s nicht entfernen\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "Konnte Datei %s nicht öffnen: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "Konnte nicht zu Verzeichnis %s wechseln (%s)\n"
@@ -533,8 +513,8 @@ 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"

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

@@ -0,0 +1,567 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "παράλειψη στόχου: %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.
#
# 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-30 18:37+1000\n"
"Last-Translator: Jeff Bailes <thepizzaking@gmail.com>\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 ""
@@ -100,6 +84,18 @@ msgstr "could not update database entry %s-%s\n"
msgid "could not add entry '%s' in cache\n"
msgstr "could not add entry '%s' in cache\n"
#, c-format
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"
@@ -108,6 +104,10 @@ msgstr "could not remove database %s\n"
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"
@@ -148,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"
@@ -180,34 +180,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "failed retrieving file '%s' from %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s appears to be truncated: %jd/%jd bytes\n"
@@ -341,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"
@@ -392,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"
@@ -428,10 +432,6 @@ msgstr "ignoring package replacement (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "cannot replace %s by %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repository '%s' not found\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s is up to date -- skipping\n"
@@ -444,6 +444,10 @@ msgstr "%s-%s is up to date -- reinstalling\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "downgrading package %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "skipping target: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "unresolvable package conflicts detected\n"
@@ -456,26 +460,6 @@ msgstr "removing '%s' from target list because it conflicts with '%s'\n"
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 create transaction\n"
msgstr "could not create transaction\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "could not initialise the removal transaction\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "could not initialise transaction\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "could not prepare removal transaction\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "could not commit removal transaction\n"
@@ -500,10 +484,6 @@ msgstr "could not copy tempfile to %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "could not remove tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "could not open %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "could not change directory to %s (%s)\n"
@@ -521,8 +501,8 @@ 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"
@@ -539,48 +519,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"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "error downloading '%s': %s\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "could not chdir to %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "running XferCommand: fork failed!\n"
#~ msgid "could not commit transaction"
#~ msgstr "could not commit transaction"
#~ msgid "could not download all files"
#~ msgstr "could not download all files"
#~ msgid "cannot load package data"
#~ msgstr "cannot load package data"
#~ msgid "package not installed or lesser version"
#~ msgstr "package not installed or lesser version"
#~ msgid "group not found"
#~ msgstr "group not found"
#~ msgid "user aborted the operation"
#~ msgstr "user aborted the operation"
#~ msgid "internal error"
#~ msgstr "internal error"
#~ msgid "not confirmed"
#~ msgstr "not confirmed"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgstr "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgid "command: %s\n"
#~ msgstr "command: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "could not prepare transaction\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "No /bin/sh in parent environment, aborting scriptlet\n"

View File

@@ -1,21 +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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 11:51+0200\n"
"Last-Translator: Juan Pablo González Tognarelli <juan.gonzalez."
"tognarelli@gmail.com>\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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.3\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#, c-format
@@ -23,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 ""
@@ -105,6 +91,19 @@ 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 "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"
@@ -113,6 +112,10 @@ msgstr "no se pudo quitar la base de datos %s\n"
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"
@@ -124,14 +127,14 @@ 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"
@@ -157,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"
@@ -189,34 +192,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "falló al obtener archivo '%s' desde %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
@@ -247,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"
@@ -351,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"
@@ -360,7 +363,7 @@ msgstr "invalido o diferencial corrupto"
#, c-format
msgid "delta patch failed"
msgstr "parche delta fallado"
msgstr "parche diferencial fallado"
#, c-format
msgid "could not satisfy dependencies"
@@ -402,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"
@@ -438,10 +446,6 @@ msgstr "ignorando el reemplazo del paquete (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "no se pudo reemplazar el archivo %s por %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repositorio '%s' no encontrado\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s esta al día -- saltando\n"
@@ -454,6 +458,10 @@ msgstr "%s-%s esta al día -- re-instalando\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "decrementando la versión del paquete %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "saltando el objetivo: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "se han detectado paquetes con conflictos no resueltos\n"
@@ -461,33 +469,13 @@ 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"
"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 create transaction\n"
msgstr "no se pudo crear la operación\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "no se pudo iniciar la operación de eliminación\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "no se pudo iniciar la operación\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "no se pudo preparar la operación de eliminación\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "no se pudo enviar la operación de eliminación\n"
@@ -512,10 +500,6 @@ msgstr "no se pudo copiar el archivo temporal a %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "no se pudo eliminar el directorio temporal %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "no se pudo abrir %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "no se pudo cambiar el directorio a %s (%s)\n"
@@ -532,9 +516,10 @@ 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"
@@ -551,3 +536,45 @@ msgstr "no existe la cache %s, creando...\n"
#, c-format
msgid "couldn't create package cache, using /tmp instead\n"
msgstr "no se pudo crear la cache de paquetes, usando /tmp en su lugar\n"
# , 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 14:01+0200\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -104,6 +88,18 @@ msgstr "la mise à jour l'entrée de base de données %s-%s a échoué\n"
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 "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"
@@ -112,6 +108,10 @@ msgstr "la suppression de la base de données %s a échoué\n"
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"
@@ -152,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"
@@ -184,34 +184,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "échec de récupération du fichier '%s' depuis %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s est apparemment tronqué: %jd/%jd bytes\n"
@@ -324,7 +320,7 @@ msgstr ""
#, 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"
@@ -347,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"
@@ -398,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"
@@ -434,10 +438,6 @@ msgstr "ignore le remplacement du paquet (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "le remplacement de %s par %s est impossible\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "dépôt '%s' non trouvé\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s est à jour -- ignoré\n"
@@ -450,6 +450,10 @@ msgstr "%s-%s est à jour -- réinstalle\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "retourne à la version antérieure du paquet %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "omission de la cible: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "un conflit de paquets impossible à résoudre a été détecté\n"
@@ -462,26 +466,6 @@ msgstr "supprime '%s' de la liste de cible car il est en conflit avec '%s'\n"
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 create transaction\n"
msgstr "la création de la transaction a échoué\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "l'initialisation de la transaction de suppression a échoué\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "l'initialisation de la transaction a échoué\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "la préparation de la transaction de suppression a échoué\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "appliquer la transaction de suppression a échoué\n"
@@ -506,10 +490,6 @@ msgstr "la copie du fichier temporaire vers %s a échoué (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "la suppression du répertoire temporaire %s a échoué\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "l'ouverture de %s: %s a échoué\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "changer de répertoire vers %s a échoué (%s)\n"
@@ -527,8 +507,8 @@ 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 "l'appel de popen a échoué (%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"

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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2007-03-14 13:45+0100\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -101,17 +86,33 @@ msgstr "nem sikerült a(z) %s-%s adatbázisbejegyzés frissítése\n"
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 "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 %s adatbázis-bejegyzés eltávolítása\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"
@@ -149,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"
@@ -181,34 +182,30 @@ 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"
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 "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 "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "úgy tűnik, hogy %s csonka: %jd/%jd bájt\n"
@@ -342,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"
@@ -393,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"
@@ -429,10 +434,6 @@ msgstr "csomag-lecserélés kihagyása (%s-%s => %s-%s)\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 "repository '%s' not found\n"
msgstr "a(z) '%s' repó nem található\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "a(z) %s-%s naprakész -- kihagyás\n"
@@ -445,6 +446,10 @@ msgstr "a(z) %s-%s naprakész -- újratelepítés\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "visszatérés egy régebbi %s verzióhoz (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "cél kihagyása: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "feloldhatatlan csomagütközéseket találtam\n"
@@ -457,26 +462,6 @@ msgstr "'%s' kihagyása, mert ütközik a következővel: '%s'\n"
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 create transaction\n"
msgstr "nem sikerült létrehozni a tranzakciót\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nem sikerült inicializálni az eltávolító tranzakciót\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nem sikerült inicializálni a tranzakciót\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nem sikerült előkészíteni az eltávolító tranzakciót\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nem sikerült végrehajtani az eltávolító tranzakciót\n"
@@ -501,10 +486,6 @@ msgstr "nem sikerült az ideiglenes fájlt ide másolni: %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "nem sikerült eltávolítani a %s ideiglenes könyvtárat\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nem sikerült megnyitni a %s fájlt: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nem sikerült a könyvtárváltás ide: %s (%s)\n"
@@ -522,8 +503,8 @@ 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"

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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 15:00+0200\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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,27 +24,11 @@ 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"
msgid "skipping %s-%s because newer version %s is in target list\n"
msgstr ""
"ignoro %s-%s perché la nuova versione %s è già presente nella lista dei "
"ignoro %s-%s perché la nuova versione %s è 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"
msgstr "puoi sostituire manualmente i pacchetti, usando le opzioni -Rd e -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -104,6 +89,18 @@ msgstr "impossibile aggiornare la voce %s-%s nel database\n"
msgid "could not add entry '%s' in cache\n"
msgstr "impossible includere la voce '%s' nella cache\n"
#, c-format
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"
@@ -112,6 +109,10 @@ msgstr "impossibile rimuovere il database %s\n"
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"
@@ -155,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"
@@ -187,34 +188,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "impossibile scaricare il pacchetto '%s' da %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s sembra essere incompleto: %jd/%jd byte\n"
@@ -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"
@@ -399,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"
@@ -436,10 +441,6 @@ msgstr "sto ignorando la sostituzione del pacchetto (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "impossibile sostituire %s con %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "impossibile trovare il repository '%s'\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s è aggiornato, sarà ignorato\n"
@@ -451,8 +452,12 @@ 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 "skipping target: %s\n"
msgstr "sto ignorando il pacchetto: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
@@ -467,26 +472,6 @@ msgstr ""
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 create transaction\n"
msgstr "impossibile avviare l'operazione\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "impossibile inizializzare l'operazione di rimozione\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "impossibile inizializzare l'operazione\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "impossibile preparare l'operazione di rimozione\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "impossibile eseguire l'operazione di rimozione\n"
@@ -511,10 +496,6 @@ msgstr "impossibile copiare il file temporaneo in %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "impossibile rimuovere la directory temporanea %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "impossibile aprire %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "impossibile spostarsi nella directory %s (%s)\n"
@@ -532,8 +513,8 @@ 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"

View File

@@ -1,16 +1,17 @@
# Kazakh translations for Pacman package manager package.
# Copyright (C) 2007 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the Pacman package manager package.
# 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.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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 19:05+0600\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -21,27 +22,9 @@ 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"
"%s-%s өткізіледі, өйткені жаңа %s нұсқасы мақсаттар тізімінде бар болып тұр\n"
#, c-format
msgid ""
@@ -69,7 +52,7 @@ msgstr "%s атын жаңа %s атына ауыстыру мүмкін еме
#, 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"
@@ -103,6 +86,18 @@ msgstr "дерекқорда жазбаны жаңарту мүмкін емес
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"
@@ -111,6 +106,10 @@ msgstr "%s дерекқорын өшіру мүмкін емес\n"
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"
@@ -151,14 +150,14 @@ 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"
@@ -183,37 +182,33 @@ msgstr "тандалған %s дестесі %s ұсынады\n"
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"
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"
msgstr "%s қысқартылған сияқты: %jd/%jd байт\n"
#, c-format
msgid "failed to download %s\n"
@@ -245,11 +240,11 @@ msgstr "аргумент қате не нөлдік болып тұр"
#, c-format
msgid "library not initialized"
msgstr "library іске қосылмады"
msgstr "жинақ іске қосылмады"
#, c-format
msgid "library already initialized"
msgstr "library іске қосылған болып тұр"
msgstr "жинақ іске қосылған болып тұр"
#, c-format
msgid "unable to lock database"
@@ -261,7 +256,7 @@ msgstr "дерекқорды ашу мүмкін емес"
#, c-format
msgid "could not create database"
msgstr "дерекқорды құру мүмкін емес"
msgstr "дерекқорды жасау мүмкін емес"
#, c-format
msgid "database not initialized"
@@ -344,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"
@@ -395,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 " '%s' файлын өшіру мүмкін емес: %s\n"
@@ -431,10 +434,6 @@ msgstr "дестені алмастыруды елемеу (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "%s жаңа %s нұсқасымен алмастыру мүмкін емес\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "'%s' репозиторийі табылмады\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s ескірмеді -- өткізіледі\n"
@@ -447,9 +446,13 @@ msgstr "%s-%s ескірмеді -- қайта орнатылады\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "дестенің нұсқасын төмендету %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "мақсатты аттап өту: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "шешілмейтін дестелер ерегісі табылды\n"
msgstr "дестелердің шешілмейтін ерегісі табылды\n"
#, c-format
msgid "removing '%s' from target list because it conflicts with '%s'\n"
@@ -460,26 +463,6 @@ msgstr ""
msgid "failed to retrieve some files from %s\n"
msgstr "%s адресінен кейбір файлдарды алу мүмкін емес\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "өшіруге сұранымды құру мүмкін емес\n"
#, c-format
msgid "could not create transaction\n"
msgstr "сұранымды жасау мүмкін емес\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "өшіруге сұранымды іске қосу мүмкін емес\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "сұранымды іске қосу мүмкін емес\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "өшіруге сұранымды дайындау мүмкін емес\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "өшіруге сұранымды орындау мүмкін емес\n"
@@ -502,11 +485,7 @@ msgstr "уақытша файлды %s ішіне көшіру мүмкін ем
#, 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"
msgstr "%s уақытша бумасын өшіру мүмкін емес\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
@@ -514,7 +493,7 @@ 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"
@@ -525,8 +504,8 @@ 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"
@@ -544,6 +523,46 @@ msgstr "%s кэші жоқ болып тұр, құрылады...\n"
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"

View File

@@ -8,10 +8,11 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: pacman-dev@archlinux.org\n"
"POT-Creation-Date: 2009-07-27 21:15-0500\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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
@@ -98,6 +83,18 @@ msgstr ""
msgid "could not add entry '%s' in cache\n"
msgstr ""
#, c-format
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 ""
@@ -106,6 +103,10 @@ msgstr ""
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 ""
@@ -147,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
@@ -178,34 +179,30 @@ 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"
msgid "resuming download of %s not possible; starting over\n"
msgstr ""
#, c-format
msgid "error writing to file '%s': %s\n"
msgstr ""
#, c-format
msgid "failed retrieving file '%s' from %s\n"
msgstr ""
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr ""
@@ -339,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
@@ -390,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 ""
@@ -426,10 +431,6 @@ msgstr ""
msgid "cannot replace %s by %s\n"
msgstr ""
#, c-format
msgid "repository '%s' not found\n"
msgstr ""
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr ""
@@ -442,6 +443,10 @@ msgstr ""
msgid "downgrading package %s (%s => %s)\n"
msgstr ""
#, c-format
msgid "skipping target: %s\n"
msgstr ""
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr ""
@@ -454,26 +459,6 @@ msgstr ""
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 create transaction\n"
msgstr ""
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr ""
#, c-format
msgid "could not initialize transaction\n"
msgstr ""
#, c-format
msgid "could not prepare removal transaction\n"
msgstr ""
#, c-format
msgid "could not commit removal transaction\n"
msgstr ""
@@ -498,10 +483,6 @@ msgstr ""
msgid "could not remove tmpdir %s\n"
msgstr ""
#, c-format
msgid "could not open %s: %s\n"
msgstr ""
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr ""
@@ -519,7 +500,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

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

@@ -0,0 +1,560 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "hopper over mål: %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-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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 10:39+0100\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 ""
@@ -107,6 +88,18 @@ msgstr "nie udało się zaktualizować pozycji bazy danych %s-%s\n"
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 "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"
@@ -115,6 +108,10 @@ msgstr "nie można usunąć bazy danych %s\n"
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"
@@ -155,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"
@@ -187,34 +184,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "nie udało się pobrać pliku '%s' z %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s wygląda, jakby został obcięty %jd/%jd bajtów\n"
@@ -348,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"
@@ -361,7 +358,7 @@ msgstr "Łatanie pakietem przyrostowym nie powiodło się"
#, 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"
@@ -400,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"
@@ -436,10 +437,6 @@ msgstr "ignorowanie zastępowania pakietu (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "nie udało się zastąpić %s przez %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repozytorium '%s' nie zostało znalezione\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s jest w najnowszej wersji -- pomijanie\n"
@@ -452,6 +449,10 @@ msgstr "%s-%s jest w najnowszej wersji -- ponowne instalowanie\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "dezaktualizowanie pakietu %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "Pomijam cel: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "odkryto nierozwiązywalne konflikty pakietów\n"
@@ -464,26 +465,6 @@ msgstr "usuwanie '%s' z listy celów ponieważ konfliktuje z '%s'\n"
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 create transaction\n"
msgstr "nie udało się stworzyć tranzakcji\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nie udało się zainicjować tranzakcji usuwania\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nie udało się zainicjować tranzakcji\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nie udało się przygotować tranzakcji usuwania\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nie udało się wykonać tranzakcji usuwania\n"
@@ -508,10 +489,6 @@ msgstr "nie udało się skopiować pliku tymczasowego do %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "nie udało się usunąć katalogu tymczasowego %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nie udało się otworzyć %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nie udało się zmienić katalogu na %s (%s)\n"
@@ -529,8 +506,8 @@ 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"
@@ -549,48 +526,13 @@ msgid "couldn't create package cache, using /tmp instead\n"
msgstr ""
"nie udało się stworzyć pamięci podręcznej pakietu, używanie /tmp w zamian\n"
#~ msgid "error downloading '%s': %s\n"
#~ msgstr "błąd podczas pobierania '%s': %s\n"
#~ msgid "conflicting packages were found in target list\n"
#~ msgstr "konfliktujące pakiety zostały znalezione na liście celów\n"
#~ msgid "could not chdir to %s\n"
#~ msgstr "nie udało się zmienić katalogu na / %s\n"
#~ msgid "running XferCommand: fork failed!\n"
#~ msgstr "uruchamianie XferCommand: klonowanie nieudane!\n"
#~ msgid "could not commit transaction"
#~ msgstr "nie udało się wykonać tranzakcji"
#~ msgid "could not download all files"
#~ msgstr "nie udało się pobrać wszystkich plików"
#~ msgid "cannot load package data"
#~ msgstr "nie udało się załadować danych pakietu"
#~ msgid "package not installed or lesser version"
#~ msgstr "pakiet nie zainstalowany lub zainstalowany w niższej wersji"
#~ msgid "group not found"
#~ msgstr "grupa nie została odnaleziona"
#~ msgid "user aborted the operation"
#~ msgstr "użytkownik zaniechał operacji"
#~ msgid "internal error"
#~ msgstr "błąd wewnętrzny"
#~ msgid "not confirmed"
#~ msgstr "nie potwierdzono"
#~ msgid "%s-%s: ignoring package upgrade (to be replaced by %s-%s)\n"
#~ msgid "you cannot install two conflicting packages at the same time\n"
#~ msgstr ""
#~ "%s-%s: ignorowanie aktualizowania pakietu (do zastąpienia przez %s-%s)\n"
#~ "nie możesz mieć zainstalowanych dwóch konfliktujących ze sobą pakietów w "
#~ "tym samym czasie\n"
#~ msgid "command: %s\n"
#~ msgstr "komenda: %s\n"
#~ msgid "could not prepare transaction\n"
#~ msgstr "nie udało się przygotować tranzakcji\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Brak /bin/sh w środowisku, przerywanie wykonywania skryptu\n"
#~ msgid "replacing packages with -U is not supported yet\n"
#~ msgstr "zastępowanie pakietów za pomocą -U nie jest już wspierane\n"

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

@@ -0,0 +1,619 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "ignorar alvo: %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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-28 23:17-0300\n"
"Last-Translator: Armando M. Baratti <ambaratti.listas@gmail.com.br>\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 ""
@@ -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"
@@ -111,6 +94,18 @@ msgstr "não foi possível atualizar a entrada na base de dados %s-%s\n"
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 "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"
@@ -119,9 +114,13 @@ msgstr "não foi possível remover a base de dados %s\n"
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 da 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,7 @@ 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"
@@ -160,14 +159,14 @@ msgstr "erro ao ler o pacote %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "faltando metadados 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"
#, 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"
@@ -192,34 +191,30 @@ 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 retomar o download, reiniciando\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "não foi possível escrever no arquivo '%s'\n"
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 "failed retrieving file '%s' from %s\n"
msgstr "falha ao obter arquivo '%s' de %s\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s parece estar truncado: %jd/%jd bytes\n"
@@ -294,7 +289,7 @@ 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"
@@ -346,15 +341,19 @@ msgstr "não foi possível abrir arquivo do pacote"
#, 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"
@@ -394,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"
@@ -404,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"
@@ -422,7 +425,7 @@ msgstr "%s: ignorando atualização do pacote (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
msgstr "%s: ignorando retorno de versão do pacote (%s => %s)\n"
msgstr "%s: ignorando downgrade do pacote (%s => %s)\n"
#, c-format
msgid "%s: downgrading from version %s to version %s\n"
@@ -440,10 +443,6 @@ msgstr "ignorando substituição do pacote (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "não foi possível substituir %s por %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "repositório '%s' não encontrado\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s está atualizado -- pulando\n"
@@ -456,6 +455,10 @@ msgstr "%s-%s está atualizado -- reinstalando\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "fazendo downgrade do pacote %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "pulando alvo: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "conflito de pacotes não solucionável detectado\n"
@@ -468,26 +471,6 @@ msgstr "removendo '%s' da lista de pacotes porque ele conflita com '%s'\n"
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 create transaction\n"
msgstr "não foi possível criar a transação\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "não foi possível inicializar a transação de remoção\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "não foi possível inicializar a transação\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "não foi possível preparar a transação de remoção\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "não foi possível efetuar a transação de remoção\n"
@@ -512,13 +495,9 @@ msgstr "não foi possível copiar arquivo temporário para %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "não foi possível remover o diretório temporário %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "não foi possível abrir %s : %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "não foi possível mudar diretório para %s (%s)\n"
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"
@@ -533,8 +512,8 @@ 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"
@@ -542,7 +521,7 @@ msgstr "chamada para waitpid falhou (%s)\n"
#, c-format
msgid "command failed to execute correctly\n"
msgstr "o comando falhou em executar corretamente\n"
msgstr "comando não executado corretamente\n"
#, c-format
msgid "no %s cache exists, creating...\n"
@@ -552,6 +531,48 @@ msgstr "cache %s não existe, criando...\n"
msgid "couldn't create package cache, using /tmp instead\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"

View File

@@ -1,16 +1,17 @@
# libalpm Romanian translation.
# Copyright (C) 2009 Judd Vinet <jvinet@zeroflux.org>
# This file is distributed under the same license as the 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.
# Volodia Macovei <blog@volodia.ro>, 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-06-28 14:30+0700\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -21,26 +22,10 @@ msgid "replacing older version %s-%s by %s in target list\n"
msgstr "se înlocuieşte versiunea veche %s-%s cu %s în lista ţintă\n"
#, c-format
msgid "skipping %s-%s because newer version %s is in the target list\n"
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 "conflicting packages were found in the target list\n"
msgstr "s-au găsit pachete în conflict în lista ţintă\n"
#, c-format
msgid "you cannot install two conflicting packages at the same time\n"
msgstr "nu puteţi instala două pachete aflate în conflict în acelaşi timp\n"
#, c-format
msgid "replacing packages with -U is not supported yet\n"
msgstr "înlocuirea pachetelor cu -U nu este suportată încă\n"
#, c-format
msgid "you can replace packages manually using -Rd and -U\n"
msgstr "puteţi înlocui manual pachetele folosind -Rd şi -U\n"
#, c-format
msgid ""
"directory permissions differ on %s\n"
@@ -101,6 +86,18 @@ msgstr "nu se poate actualiza intrarea în baza de date %s-%s\n"
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"
@@ -109,6 +106,10 @@ msgstr "nu poate fi eliminată baza de date %s\n"
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"
@@ -125,8 +126,8 @@ msgstr ""
#, 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"
"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"
@@ -152,14 +153,14 @@ msgstr "eroare la citirea pachetului %s: %s\n"
msgid "missing package metadata in %s\n"
msgstr "lipsă metadata pentru pachet în %s\n"
#, c-format
msgid "attempt to re-register the 'local' DB\n"
msgstr "încercare de a reînregistra 'local' DB\n"
#, c-format
msgid "database path is undefined\n"
msgstr "calea bazei de date este nedefinită\n"
#, c-format
msgid "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"
@@ -184,34 +185,30 @@ msgstr "pachetul furnizor a fost selectat (%s furnizează %s)\n"
msgid "cannot resolve \"%s\", a dependency of \"%s\"\n"
msgstr "nu se poate rezolva \"%s\", o dependenţă a \"%s\"\n"
#, c-format
msgid "url '%s' is invalid\n"
msgstr "URL '%s' este nevalid\n"
#, c-format
msgid "url scheme not specified, assuming HTTP\n"
msgstr "schemă URL nespecificată, se presupune HTTP\n"
#, c-format
msgid "disk"
msgstr "disk"
#, c-format
msgid "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 "cannot resume download, starting over\n"
msgstr "nu se poate relua descărcare, se începe peste\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "nu se poate scrie în fişierul '%s'\n"
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"
@@ -345,8 +342,12 @@ msgid "package filename is not valid"
msgstr "numele de fişier pachet este nevalid"
#, c-format
msgid "no such repository"
msgstr "nu există astfel de depozit"
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"
@@ -396,6 +397,10 @@ msgstr "eroare neaşteptată"
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"
@@ -432,10 +437,6 @@ msgstr "se ignoră înlocuirea pachetului (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "nu poate fi înlocuit %s de %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "depozit '%s' negăsit\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s este actualizat -- se trece peste\n"
@@ -448,6 +449,10 @@ msgstr "%s-%s este actualizat -- se reinstalează\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "se declasează pachetul %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "se sare peste ținta: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "au fost detectate conflicte nerezolvabile în pachet\n"
@@ -460,26 +465,6 @@ msgstr "se elimină '%s' din lista ţintă deoarece este în conflict cu '%s'\n"
msgid "failed to retrieve some files from %s\n"
msgstr "eşec în refacerea unor fişiere din %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "nu poate fi creată tranzacţia de eliminare\n"
#, c-format
msgid "could not create transaction\n"
msgstr "nu poate fi creată tranzacţia\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "nu poate fi iniţializată tranzacţia de eliminare\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "nu poate fi iniţializată tranzacţia\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "nu poate fi pregătită tranzacţia de eliminare\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "nu poate fi efectuată tranzacţia de eliminare\n"
@@ -504,10 +489,6 @@ msgstr "nu se poate copia tempfile la %s (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "nu poate fi eliminat tmpdir %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "nu se poate deschide %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "nu poate fi schimbat directorul la %s (%s)\n"
@@ -525,8 +506,8 @@ msgid "could not change directory to / (%s)\n"
msgstr "nu poate fi schimbat directorul la / (%s)\n"
#, c-format
msgid "call to popen failed (%s)"
msgstr "cererea către popen a eşuat (%s)"
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"
@@ -543,3 +524,42 @@ 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,48 +1,31 @@
# 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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 20:29+0300\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -103,6 +86,18 @@ msgstr "не удалось обновить в базе данных запис
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"
@@ -111,6 +106,10 @@ msgstr "не удалось удалить базу данных %s\n"
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"
@@ -153,14 +152,14 @@ 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"
@@ -185,34 +184,30 @@ msgstr "выбран пакет %s, предоставляющий %s\n"
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"
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"
@@ -346,8 +341,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"
@@ -397,6 +396,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 "не удалось удалить файл '%s': %s\n"
@@ -433,10 +436,6 @@ msgstr "пропускается замена пакета (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "не удалось заменить %s на %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "репозиторий '%s' не найден\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s не устарел -- пропускается\n"
@@ -449,6 +448,10 @@ msgstr "%s-%s не устарел -- переустанавливается\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "откат версии пакета %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "пропуск цели: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "обнаружен неразрешимый конфликт пакетов\n"
@@ -461,26 +464,6 @@ msgstr "удаление '%s' из списка целей, поскольку
msgid "failed to retrieve some files from %s\n"
msgstr "не удалось получить некоторые файлы с %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "не удалось создать запрос на удаление\n"
#, c-format
msgid "could not create transaction\n"
msgstr "не удалось создать запрос\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "не удалось инициализировать запрос на удаление\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "не удалось инициализировать запрос\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "не удалось подготовить запрос на удаление\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "не удалось совершить запрос на удаление\n"
@@ -505,10 +488,6 @@ msgstr "не удалось скопировать временный файл
msgid "could not remove tmpdir %s\n"
msgstr "не удалось удалить временный каталог %s\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "не удалось открыть %s: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "не удалось изменить каталог на %s (%s)\n"
@@ -526,8 +505,8 @@ 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"
@@ -545,6 +524,47 @@ msgstr "кэш %s не существует, создается...\n"
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"
@@ -588,4 +608,4 @@ msgstr "не удалось создать кэш пакетов, будет и
#~ msgstr "не удалось подготовить запрос\n"
#~ msgid "No /bin/sh in parent environment, aborting scriptlet\n"
#~ msgstr "Нету /bin/sh в родительском окружении, отмена скрипта\n"
#~ msgstr "Нет /bin/sh в родительском окружении, отмена скрипта\n"

522
lib/libalpm/po/sk.po Normal file
View File

@@ -0,0 +1,522 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "preskakujem cieľ: %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"

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

@@ -0,0 +1,560 @@
# 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: 2011-01-21 10:47-0600\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 "skipping target: %s\n"
msgstr "hoppar över målet: %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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-29 03:26+0200\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 "-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 ""
@@ -99,6 +84,18 @@ msgstr "%s-%s veritabanı kaydı güncellenemedi\n"
msgid "could not add entry '%s' in cache\n"
msgstr "'%s' kaydı tampona eklenemedi\n"
#, c-format
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"
@@ -107,6 +104,10 @@ msgstr "veritabanı kaldırılamıyor %s\n"
msgid "invalid name for database entry '%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"
msgstr "bozuk veritabanı kaydı '%s'\n"
@@ -147,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"
@@ -179,34 +180,30 @@ msgstr "sağlayan paket seçildi ( %s %s paketini sağlıyor)\n"
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 "indirme işlemine devam edilemiyor, baştan başlanıyor\n"
#, c-format
msgid "cannot write to file '%s'\n"
msgstr "'%s' dosyasına yazılamıyor\n"
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 "failed retrieving file '%s' from %s\n"
msgstr "%s dosyası %s adresinden alınamadı\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s eksik görünüyor: %jd/%jd bayt\n"
@@ -340,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"
@@ -391,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"
@@ -428,10 +433,6 @@ msgstr "paket değiştirme işlemi göz ardı ediliyor (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "%s ile %s değiştirilemiyor\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "'%s' deposu bulunamadı\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s güncel -- atlanıyor\n"
@@ -444,6 +445,10 @@ msgstr "%s-%s güncel -- yeniden kuruluyor\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "%s paketi eski sürümüne çevriliyor (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "hedef atlanıyor: %s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "çözülemeyen paket çakışmaları bulundu\n"
@@ -456,26 +461,6 @@ msgstr "'%s' hedef listesindeki '%s' ile çakıştığı için kaldırıldı\n"
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şturulamadı\n"
#, c-format
msgid "could not create transaction\n"
msgstr "işlem oluşturulamadı\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "kaldırma işlemi başlatılamadı\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "işlem başlatılamadı\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "kaldırma işlemi hazırlanamadı\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "kaldırma işlemi teslim edilemedi\n"
@@ -500,10 +485,6 @@ msgstr "geçici dosya %s üzerine kopyalanamadı (%s)\n"
msgid "could not remove tmpdir %s\n"
msgstr "geçici dizin %s kaldırılamadı\n"
#, c-format
msgid "could not open %s: %s\n"
msgstr "%s açılamadı: %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "%s dizinine geçilemedi (%s)\n"
@@ -521,8 +502,8 @@ msgid "could not change directory to / (%s)\n"
msgstr "/ dizinine geçilemedi (%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"
@@ -540,6 +521,45 @@ msgstr "%s önbelleği yok, oluşturuluyor...\n"
msgid "couldn't create package cache, using /tmp instead\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"

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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: \n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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"
@@ -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 "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"
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"
@@ -150,21 +150,21 @@ 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"
@@ -182,34 +182,30 @@ 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"
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"
@@ -276,11 +272,11 @@ 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"
@@ -336,15 +332,19 @@ 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"
@@ -394,21 +394,25 @@ 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: ignoring package upgrade (%s => %s)\n"
msgstr "%s: ігнорування поновлення пакунку (%s => %s)\n"
msgstr "%s: ігнорування оновлення пакунку (%s => %s)\n"
#, c-format
msgid "%s: ignoring package downgrade (%s => %s)\n"
@@ -430,57 +434,37 @@ msgstr "ігнорування заміни пакунка (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "неможливо замінити %s на %s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "репозиторій '%s' не знайдено\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%s-%s не потребує поновлення -- пропускається\n"
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"
msgstr "пониження версії пакунку %s (%s => %s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "пропуск пакунка: %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"
msgstr "вилучення '%s' з списку пакунків, бо він конфліктує з '%s'\n"
#, c-format
msgid "failed to retrieve some files from %s\n"
msgstr "не вдалося отримати деякі файли з %s\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "неможливо створити транзакцію видалення\n"
#, c-format
msgid "could not create transaction\n"
msgstr "неможливо створити транзакцію\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "неможливо почати транзакцію видалення\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "неможливо почати транзакцію\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "неможливо підготувати транзакцію видалення\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "неможливо здійснити транзакцію видалення\n"
msgstr "неможливо здійснити транзакцію вилучення\n"
#, c-format
msgid "could not commit transaction\n"
@@ -488,7 +472,7 @@ msgstr "неможливо здійснити транзакцію\n"
#, c-format
msgid "could not remove lock file %s\n"
msgstr "неможливо видалити файл блокування %s\n"
msgstr "неможливо вилучити файл блокування %s\n"
#, c-format
msgid "could not create temp directory\n"
@@ -500,11 +484,7 @@ msgstr "неможливо скопіювати тимчасовий файл д
#, 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"
msgstr "неможливо вилучити тимчасовий каталог %s\n"
#, c-format
msgid "could not change directory to %s (%s)\n"
@@ -523,8 +503,8 @@ 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"
@@ -542,6 +522,45 @@ msgstr "кеш %s не існує, створюється...\n"
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"

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: 2009-07-27 21:15-0500\n"
"PO-Revision-Date: 2009-07-30 20:39+0700\n"
"POT-Creation-Date: 2011-01-21 10:47-0600\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 ""
@@ -101,6 +86,18 @@ msgstr "无法更新数据库记录 %1$s-%2$s\n"
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 "无法打开 %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"
@@ -109,6 +106,10 @@ msgstr "无法删除数据库 %s\n"
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"
@@ -149,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"
@@ -181,34 +182,30 @@ 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"
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 "failed retrieving file '%s' from %s\n"
msgstr "无法从 %2$s 获取文件 '%1$s'\n"
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
msgstr "%s 可缩小:%jd/%jd bytes\n"
@@ -287,7 +284,7 @@ msgstr "无效的服务器 url"
#, c-format
msgid "no servers configured for repository"
msgstr "软件库没有配置服务器信息"
msgstr "软件库没有配置服务器信息"
#, c-format
msgid "transaction already initialized"
@@ -342,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"
@@ -393,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"
@@ -429,10 +434,6 @@ msgstr "正在忽略软件包更新 (%s-%s => %s-%s)\n"
msgid "cannot replace %s by %s\n"
msgstr "无法用文件 '%2$s' 替代 %1$s\n"
#, c-format
msgid "repository '%s' not found\n"
msgstr "没有找到软件库 '%s'\n"
#, c-format
msgid "%s-%s is up to date -- skipping\n"
msgstr "%1$s-%2$s 已经为最新 -- 跳过\n"
@@ -445,6 +446,10 @@ msgstr "%1$s-%2$s 已经为最新 -- 重新安装\n"
msgid "downgrading package %s (%s => %s)\n"
msgstr "正在降级软件包 %1$s (%2$s => %3$s)\n"
#, c-format
msgid "skipping target: %s\n"
msgstr "正在跳过软件包:%s\n"
#, c-format
msgid "unresolvable package conflicts detected\n"
msgstr "检测到未解决的软件包冲突\n"
@@ -457,26 +462,6 @@ msgstr "正在从目标清单中删除 '%1$s' ,因为它和 '%2$s' 冲突\n"
msgid "failed to retrieve some files from %s\n"
msgstr "无法从 %s 获取某些文件\n"
#, c-format
msgid "could not create removal transaction\n"
msgstr "无法生成可撤销处理\n"
#, c-format
msgid "could not create transaction\n"
msgstr "无法创建处理\n"
#, c-format
msgid "could not initialize the removal transaction\n"
msgstr "无法初始化可撤销处理\n"
#, c-format
msgid "could not initialize transaction\n"
msgstr "无法初始化处理\n"
#, c-format
msgid "could not prepare removal transaction\n"
msgstr "无法准备可撤销处理\n"
#, c-format
msgid "could not commit removal transaction\n"
msgstr "无法交付可撤销处理\n"
@@ -501,10 +486,6 @@ msgstr "无法复制临时文件到 %1$s (%2$s)\n"
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"
#, c-format
msgid "could not change directory to %s (%s)\n"
msgstr "无法更改目录到 %1$s (%2$s)\n"
@@ -522,8 +503,8 @@ 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"
@@ -541,6 +522,45 @@ msgstr "没有 %s 缓存存在,正在创建...\n"
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"

View File

@@ -1,7 +1,7 @@
/*
* remove.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -47,35 +47,45 @@
#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;
const char *targ;
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));
targ = strchr(name, '/');
if(targ && strncmp(name, "local", 5) == 0) {
targ++;
} else {
targ = name;
}
if(_alpm_pkg_find(trans->packages, targ)) {
if(_alpm_pkg_find(trans->remove, target)) {
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}
if((info = _alpm_db_get_pkgfromcache(db, targ)) == NULL) {
_alpm_log(PM_LOG_DEBUG, "could not find %s in database\n", targ);
RET_ERR(PM_ERR_PKG_NOT_FOUND, -1);
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, "adding %s in the targets list\n", info->name);
trans->packages = alpm_list_add(trans->packages, _alpm_pkg_dup(info));
_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);
}
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));
}
return(0);
}
@@ -91,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"),
@@ -103,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(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->remove, NULL);
}
}
@@ -112,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(_alpm_db_get_pkgcache(db), 1, trans->packages, NULL);
lp = alpm_checkdeps(_alpm_db_get_pkgcache(db), 1, trans->remove, NULL);
}
}
@@ -146,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(_alpm_db_get_pkgcache(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) {
@@ -183,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)) {
@@ -201,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);
}
@@ -228,7 +233,7 @@ 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, char *filename, pmtrans_t *trans)
static void unlink_file(pmpkg_t *info, char *filename, alpm_list_t *skip_remove, int nosave)
{
struct stat buf;
char file[PATH_MAX+1];
@@ -237,13 +242,13 @@ static void unlink_file(pmpkg_t *info, char *filename, pmtrans_t *trans)
snprintf(file, PATH_MAX, "%s%s", handle->root, filename);
if(trans->type == PM_TRANS_TYPE_REMOVEUPGRADE) {
/* check noupgrade */
if(alpm_list_find_str(handle->noupgrade, filename)) {
_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.
@@ -263,19 +268,10 @@ static void unlink_file(pmpkg_t *info, char *filename, 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;
}
/* if the file needs backup and has been modified, back it up to .pacsave */
char *pkghash = _alpm_needbackup(filename, alpm_pkg_get_backup(info));
if(pkghash) {
if(trans->flags & PM_TRANS_FLAG_NOSAVE) {
if(nosave) {
_alpm_log(PM_LOG_DEBUG, "transaction is set to NOSAVE, not backing up '%s'\n", file);
FREE(pkghash);
} else {
@@ -303,7 +299,69 @@ static void unlink_file(pmpkg_t *info, char *filename, pmtrans_t *trans)
}
}
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;
@@ -314,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);
@@ -329,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);
@@ -356,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->data, 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);
@@ -377,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 */
@@ -400,16 +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_ldconfig(handle->root);
}
_alpm_ldconfig(handle->root);
return(0);
}

View File

@@ -1,7 +1,7 @@
/*
* remove.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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
@@ -24,9 +24,10 @@
#include "alpm_list.h"
#include "trans.h"
int _alpm_remove_loadtarget(pmtrans_t *trans, pmdb_t *db, char *name);
int _alpm_remove_prepare(pmtrans_t *trans, pmdb_t *db, alpm_list_t **data);
int _alpm_remove_commit(pmtrans_t *trans, pmdb_t *db);
int _alpm_remove_packages(pmtrans_t *trans, pmdb_t *db);
int _alpm_upgraderemove_package(pmpkg_t *oldpkg, pmpkg_t *newpkg, pmtrans_t *trans);
#endif /* _ALPM_REMOVE_H */

View File

@@ -1,7 +1,7 @@
/*
* sync.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -43,11 +43,13 @@
#include "deps.h"
#include "conflict.h"
#include "trans.h"
#include "add.h"
#include "util.h"
#include "handle.h"
#include "alpm.h"
#include "dload.h"
#include "delta.h"
#include "remove.h"
/** Check for new version of pkg in sync repos
* (only the first occurrence is considered in sync)
@@ -80,17 +82,30 @@ pmpkg_t SYMEXPORT *alpm_sync_newversion(pmpkg_t *pkg, alpm_list_t *dbs_sync)
return(NULL);
}
int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, int enable_downgrade)
/** Search for packages to upgrade and add them to the transaction.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_sync_sysupgrade(int enable_downgrade)
{
alpm_list_t *i, *j, *k;
pmtrans_t *trans;
pmdb_t *db_local;
alpm_list_t *dbs_sync;
ALPM_LOG_FUNC;
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
trans = handle->trans;
db_local = handle->db_local;
dbs_sync = handle->dbs_sync;
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
_alpm_log(PM_LOG_DEBUG, "checking for package upgrades\n");
for(i = _alpm_db_get_pkgcache(db_local); i; i = i->next) {
pmpkg_t *lpkg = i->data;
if(_alpm_pkg_find(trans->packages, lpkg->name)) {
if(_alpm_pkg_find(trans->add, lpkg->name)) {
_alpm_log(PM_LOG_DEBUG, "%s is already in the target list -- skipping\n", lpkg->name);
continue;
}
@@ -113,7 +128,7 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
} else {
_alpm_log(PM_LOG_DEBUG, "adding package %s-%s to the transaction targets\n",
spkg->name, spkg->version);
trans->packages = alpm_list_add(trans->packages, spkg);
trans->add = alpm_list_add(trans->add, spkg);
}
} else if(cmp < 0) {
if(enable_downgrade) {
@@ -124,7 +139,7 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
} else {
_alpm_log(PM_LOG_WARNING, _("%s: downgrading from version %s to version %s\n"),
lpkg->name, lpkg->version, spkg->version);
trans->packages = alpm_list_add(trans->packages, spkg);
trans->add = alpm_list_add(trans->add, spkg);
}
} else {
_alpm_log(PM_LOG_WARNING, _("%s: local (%s) is newer than %s (%s)\n"),
@@ -152,7 +167,7 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
}
/* If spkg is already in the target list, we append lpkg to spkg's removes list */
pmpkg_t *tpkg = _alpm_pkg_find(trans->packages, spkg->name);
pmpkg_t *tpkg = _alpm_pkg_find(trans->add, spkg->name);
if(tpkg) {
/* sanity check, multiple repos can contain spkg->name */
if(tpkg->origin_data.db != sdb) {
@@ -173,7 +188,7 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
spkg->removes = alpm_list_add(NULL, lpkg);
_alpm_log(PM_LOG_DEBUG, "adding package %s-%s to the transaction targets\n",
spkg->name, spkg->version);
trans->packages = alpm_list_add(trans->packages, spkg);
trans->add = alpm_list_add(trans->add, spkg);
}
}
}
@@ -187,57 +202,18 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
return(0);
}
int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, char *name)
static int sync_pkg(pmpkg_t *spkg, alpm_list_t *pkg_list)
{
char *targline;
char *targ;
alpm_list_t *j;
pmpkg_t *local, *spkg;
pmdepend_t *dep; /* provisions and dependencies are also allowed */
pmtrans_t *trans;
pmdb_t *db_local;
pmpkg_t *local;
ALPM_LOG_FUNC;
ASSERT(db_local != NULL, RET_ERR(PM_ERR_DB_NULL, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(name != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
trans = handle->trans;
db_local = handle->db_local;
STRDUP(targline, name, RET_ERR(PM_ERR_MEMORY, -1));
targ = strchr(targline, '/');
if(targ) {
/* we are looking for a package in a specific database */
alpm_list_t *dbs = NULL;
*targ = '\0';
targ++;
_alpm_log(PM_LOG_DEBUG, "searching for target '%s' in repo '%s'\n", targ, targline);
for(j = dbs_sync; j; j = j->next) {
pmdb_t *db = j->data;
if(strcmp(db->treename, targline) == 0) {
dbs = alpm_list_add(NULL, db);
break;
}
}
if(dbs == NULL) {
_alpm_log(PM_LOG_ERROR, _("repository '%s' not found\n"), targline);
FREE(targline);
RET_ERR(PM_ERR_PKG_REPO_NOT_FOUND, -1);
}
dep = _alpm_splitdep(targ);
spkg = _alpm_resolvedep(dep, dbs, NULL, 1);
_alpm_dep_free(dep);
alpm_list_free(dbs);
} else {
dep = _alpm_splitdep(targline);
spkg = _alpm_resolvedep(dep, dbs_sync, NULL, 1);
_alpm_dep_free(dep);
}
FREE(targline);
if(spkg == NULL) {
/* pm_errno is set by _alpm_resolvedep */
return(-1);
}
if(_alpm_pkg_find(trans->packages, alpm_pkg_get_name(spkg))) {
if(_alpm_pkg_find(pkg_list, alpm_pkg_get_name(spkg))) {
RET_ERR(PM_ERR_TRANS_DUP_TARGET, -1);
}
@@ -267,11 +243,138 @@ int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sy
spkg->reason = PM_PKG_REASON_EXPLICIT;
_alpm_log(PM_LOG_DEBUG, "adding package %s-%s to the transaction targets\n",
alpm_pkg_get_name(spkg), alpm_pkg_get_version(spkg));
trans->packages = alpm_list_add(trans->packages, spkg);
trans->add = alpm_list_add(trans->add, spkg);
return(0);
}
static int sync_group(alpm_list_t *dbs_sync, const char *target)
{
alpm_list_t *i, *j;
alpm_list_t *known_pkgs = NULL;
pmgrp_t *grp;
int found = 0;
ALPM_LOG_FUNC;
_alpm_log(PM_LOG_DEBUG, "%s package not found, searching for group...\n", target);
for(i = dbs_sync; i; i = i->next) {
pmdb_t *db = i->data;
grp = alpm_db_readgrp(db, target);
if(grp) {
found = 1;
for(j = alpm_grp_get_pkgs(grp); j; j = j->next) {
pmpkg_t *pkg = j->data;
/* check if group member is ignored */
if(_alpm_pkg_should_ignore(pkg)) {
int install = 0;
QUESTION(handle->trans, PM_TRANS_CONV_INSTALL_IGNOREPKG, pkg,
NULL, NULL, &install);
if(install == 0) {
_alpm_log(PM_LOG_WARNING, _("skipping target: %s\n"), alpm_pkg_get_name(pkg));
continue;
}
}
if(sync_pkg(pkg, known_pkgs) == -1) {
if(pm_errno == PM_ERR_TRANS_DUP_TARGET || pm_errno == PM_ERR_PKG_IGNORED) {
/* just skip duplicate or ignored targets */
continue;
} else {
alpm_list_free(known_pkgs);
return(-1);
}
}
known_pkgs = alpm_list_add(known_pkgs, pkg);
}
}
}
alpm_list_free(known_pkgs);
if(!found) {
/* pass through any 'found but ignored' errors */
if(pm_errno != PM_ERR_PKG_IGNORED) {
pm_errno = PM_ERR_PKG_NOT_FOUND;
}
return(-1);
}
return(0);
}
static int sync_target(alpm_list_t *dbs_sync, const char *target)
{
pmpkg_t *spkg;
pmdepend_t *dep; /* provisions and dependencies are also allowed */
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));
dep = _alpm_splitdep(target);
spkg = _alpm_resolvedep(dep, dbs_sync, NULL, 1);
_alpm_dep_free(dep);
if(spkg != NULL) {
return(sync_pkg(spkg, handle->trans->add));
}
return(sync_group(dbs_sync, target));
}
/** Add a sync target to the transaction.
* @param target the name of the sync target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_sync_dbtarget(char *dbname, char *target)
{
alpm_list_t *i;
alpm_list_t *dbs_sync;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
dbs_sync = handle->dbs_sync;
/* we are looking for a package in a specific database */
alpm_list_t *dbs = NULL;
_alpm_log(PM_LOG_DEBUG, "searching for target '%s' in repo '%s'\n", target, dbname);
for(i = dbs_sync; i; i = i->next) {
pmdb_t *db = i->data;
if(strcmp(db->treename, dbname) == 0) {
dbs = alpm_list_add(NULL, db);
break;
}
}
if(dbs == NULL) {
RET_ERR(PM_ERR_PKG_REPO_NOT_FOUND, -1);
}
int ret = sync_target(dbs, target);
alpm_list_free(dbs);
return(ret);
}
/** Add a sync target to the transaction.
* @param target the name of the sync target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_sync_target(char *target)
{
alpm_list_t *dbs_sync;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
dbs_sync = handle->dbs_sync;
return(sync_target(dbs_sync,target));
}
/** Compute the size of the files that will be downloaded to install a
* package.
* @param newpkg the new package to upgrade to
@@ -282,6 +385,12 @@ static int compute_download_size(pmpkg_t *newpkg)
char *fpath;
off_t size = 0;
if(newpkg->origin == PKG_FROM_FILE) {
newpkg->infolevel |= INFRQ_DSIZE;
newpkg->download_size = 0;
return(0);
}
fname = alpm_pkg_get_filename(newpkg);
ASSERT(fname != NULL, RET_ERR(PM_ERR_PKG_INVALID_NAME, -1));
fpath = _alpm_filecache_find(fname);
@@ -314,6 +423,7 @@ static int compute_download_size(pmpkg_t *newpkg)
_alpm_log(PM_LOG_DEBUG, "setting download size %jd for pkg %s\n",
(intmax_t)size, alpm_pkg_get_name(newpkg));
newpkg->infolevel |= INFRQ_DSIZE;
newpkg->download_size = size;
return(0);
}
@@ -321,10 +431,9 @@ static int compute_download_size(pmpkg_t *newpkg)
int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **data)
{
alpm_list_t *deps = NULL;
alpm_list_t *preferred = NULL;
alpm_list_t *unresolvable = NULL;
alpm_list_t *remove = NULL; /* allow checkdeps usage with trans->packages */
alpm_list_t *i, *j;
alpm_list_t *remove = NULL;
int ret = 0;
ALPM_LOG_FUNC;
@@ -344,32 +453,33 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL);
_alpm_log(PM_LOG_DEBUG, "resolving target's dependencies\n");
/* build remove list and preferred list for resolvedeps */
for(i = trans->packages; i; i = i->next) {
/* build remove list for resolvedeps */
for(i = trans->add; i; i = i->next) {
pmpkg_t *spkg = i->data;
for(j = spkg->removes; j; j = j->next) {
remove = alpm_list_add(remove, j->data);
}
preferred = alpm_list_add(preferred, spkg);
}
/* Compute the fake local database for resolvedeps (partial fix for the phonon/qt issue) */
alpm_list_t *localpkgs = alpm_list_diff(_alpm_db_get_pkgcache(db_local), trans->add, _alpm_pkg_cmp);
/* Resolve packages in the transaction one at a time, in addtion
building up a list of packages which could not be resolved. */
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
pmpkg_t *pkg = i->data;
if(_alpm_resolvedeps(db_local, dbs_sync, pkg, preferred,
if(_alpm_resolvedeps(localpkgs, dbs_sync, pkg, trans->add,
&resolved, remove, data) == -1) {
unresolvable = alpm_list_add(unresolvable, pkg);
}
/* Else, [resolved] now additionally contains [pkg] and all of its
dependencies not already on the list */
}
alpm_list_free(preferred);
alpm_list_free(localpkgs);
/* If there were unresolvable top-level packages, prompt the user to
see if they'd like to ignore them rather than failing the sync */
if(unresolvable != NULL) {
unresolvable = alpm_list_remove_dupes(unresolvable);
int remove_unresolvable = 0;
QUESTION(handle->trans, PM_TRANS_CONV_REMOVE_PKGS, unresolvable,
NULL, NULL, &remove_unresolvable);
@@ -392,21 +502,21 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
}
}
/* Unresolvable packages will be removed from the target list, so
we free the transaction specific fields */
alpm_list_free_inner(unresolvable, (alpm_list_fn_free)_alpm_pkg_free_trans);
/* Set DEPEND reason for pulled packages */
for(i = resolved; i; i = i->next) {
pmpkg_t *pkg = i->data;
if(!_alpm_pkg_find(trans->packages, pkg->name)) {
if(!_alpm_pkg_find(trans->add, pkg->name)) {
pkg->reason = PM_PKG_REASON_DEPEND;
}
}
/* Unresolvable packages will be removed from the target list, so
we free the transaction specific fields */
alpm_list_free_inner(unresolvable, (alpm_list_fn_free)_alpm_pkg_free_trans);
/* re-order w.r.t. dependencies */
alpm_list_free(trans->packages);
trans->packages = _alpm_sortbydeps(resolved, 0);
alpm_list_free(trans->add);
trans->add = _alpm_sortbydeps(resolved, 0);
alpm_list_free(resolved);
EVENT(trans, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL);
@@ -420,15 +530,15 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
/* 1. check for conflicts in the target list */
_alpm_log(PM_LOG_DEBUG, "check targets vs targets\n");
deps = _alpm_innerconflicts(trans->packages);
deps = _alpm_innerconflicts(trans->add);
for(i = deps; i; i = i->next) {
pmconflict_t *conflict = i->data;
pmpkg_t *rsync, *sync, *sync1, *sync2;
/* have we already removed one of the conflicting targets? */
sync1 = _alpm_pkg_find(trans->packages, conflict->package1);
sync2 = _alpm_pkg_find(trans->packages, conflict->package2);
sync1 = _alpm_pkg_find(trans->add, conflict->package1);
sync2 = _alpm_pkg_find(trans->add, conflict->package2);
if(!sync1 || !sync2) {
continue;
}
@@ -468,8 +578,8 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
_alpm_log(PM_LOG_WARNING,
_("removing '%s' from target list because it conflicts with '%s'\n"),
rsync->name, sync->name);
trans->add = alpm_list_remove(trans->add, rsync, _alpm_pkg_cmp, NULL);
_alpm_pkg_free_trans(rsync); /* rsync is not transaction target anymore */
trans->packages = alpm_list_remove(trans->packages, rsync, _alpm_pkg_cmp, NULL);
continue;
}
@@ -479,7 +589,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
/* 2. we check for target vs db conflicts (and resolve)*/
_alpm_log(PM_LOG_DEBUG, "check targets vs db and db vs targets\n");
deps = _alpm_outerconflicts(db_local, trans->packages);
deps = _alpm_outerconflicts(db_local, trans->add);
for(i = deps; i; i = i->next) {
pmconflict_t *conflict = i->data;
@@ -487,7 +597,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
/* if conflict->package2 (the local package) is not elected for removal,
we ask the user */
int found = 0;
for(j = trans->packages; j && !found; j = j->next) {
for(j = trans->add; j && !found; j = j->next) {
pmpkg_t *spkg = j->data;
if(_alpm_pkg_find(spkg->removes, conflict->package2)) {
found = 1;
@@ -500,11 +610,11 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
_alpm_log(PM_LOG_DEBUG, "package '%s' conflicts with '%s'\n",
conflict->package1, conflict->package2);
pmpkg_t *sync = _alpm_pkg_find(trans->packages, conflict->package1);
pmpkg_t *sync = _alpm_pkg_find(trans->add, conflict->package1);
pmpkg_t *local = _alpm_db_get_pkgfromcache(db_local, conflict->package2);
int doremove = 0;
QUESTION(trans, PM_TRANS_CONV_CONFLICT_PKG, conflict->package1,
conflict->package2, NULL, &doremove);
conflict->package2, conflict->reason, &doremove);
if(doremove) {
/* append to the removes list */
_alpm_log(PM_LOG_DEBUG, "electing '%s' for removal\n", conflict->package2);
@@ -529,19 +639,17 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
alpm_list_free(deps);
}
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
/* rebuild remove list */
alpm_list_free(remove);
remove = NULL;
for(i = trans->packages; i; i = i->next) {
pmpkg_t *spkg = i->data;
for(j = spkg->removes; j; j = j->next) {
remove = alpm_list_add(remove, j->data);
}
/* Build trans->remove list */
for(i = trans->add; i; i = i->next) {
pmpkg_t *spkg = i->data;
for(j = spkg->removes; j; j = j->next) {
trans->remove = alpm_list_add(trans->remove, _alpm_pkg_dup(j->data));
}
}
if(!(trans->flags & PM_TRANS_FLAG_NODEPS)) {
_alpm_log(PM_LOG_DEBUG, "checking dependencies\n");
deps = alpm_checkdeps(_alpm_db_get_pkgcache(db_local), 1, remove, trans->packages);
deps = alpm_checkdeps(_alpm_db_get_pkgcache(db_local), 1, trans->remove, trans->add);
if(deps) {
pm_errno = PM_ERR_UNSATISFIED_DEPS;
ret = -1;
@@ -554,7 +662,7 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
goto cleanup;
}
}
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
/* update download size field */
pmpkg_t *spkg = i->data;
if(compute_download_size(spkg) != 0) {
@@ -564,8 +672,8 @@ int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync
}
cleanup:
alpm_list_free(remove);
alpm_list_free(unresolvable);
alpm_list_free(remove);
return(ret);
}
@@ -577,6 +685,9 @@ cleanup:
*/
off_t SYMEXPORT alpm_pkg_download_size(pmpkg_t *newpkg)
{
if(!(newpkg->infolevel & INFRQ_DSIZE)) {
compute_download_size(newpkg);
}
return(newpkg->download_size);
}
@@ -601,7 +712,7 @@ static int apply_deltas(pmtrans_t *trans)
int ret = 0;
const char *cachedir = _alpm_filecache_setup();
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
pmpkg_t *spkg = i->data;
alpm_list_t *delta_path = spkg->delta_path;
alpm_list_t *dlts = NULL;
@@ -614,7 +725,7 @@ static int apply_deltas(pmtrans_t *trans)
pmdelta_t *d = dlts->data;
char *delta, *from, *to;
char command[PATH_MAX];
int len = 0;
size_t len = 0;
delta = _alpm_filecache_find(d->delta);
/* the initial package might be in a different cachedir */
@@ -711,7 +822,6 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
{
alpm_list_t *i, *j, *files = NULL;
alpm_list_t *deltas = NULL;
pmtrans_t *tr_remove = NULL, *tr_upgrade = NULL;
int replaces = 0;
int errors = 0;
const char *cachedir = NULL;
@@ -730,7 +840,7 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
if(handle->totaldlcb) {
off_t total_size = (off_t)0;
/* sum up the download size for each package and store total */
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
pmpkg_t *spkg = i->data;
total_size += spkg->download_size;
}
@@ -741,11 +851,10 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
for(i = handle->dbs_sync; i; i = i->next) {
pmdb_t *current = i->data;
for(j = trans->packages; j; j = j->next) {
for(j = trans->add; j; j = j->next) {
pmpkg_t *spkg = j->data;
pmdb_t *dbs = spkg->origin_data.db;
if(current == dbs) {
if(spkg->origin == PKG_FROM_CACHE && current == spkg->origin_data.db) {
const char *fname = NULL;
fname = alpm_pkg_get_filename(spkg);
@@ -780,7 +889,9 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
if(files) {
EVENT(trans, PM_TRANS_EVT_RETRIEVE_START, current->treename, NULL);
if(_alpm_download_files(files, current->servers, cachedir)) {
errors = _alpm_download_files(files, current->servers, cachedir);
if (errors) {
_alpm_log(PM_LOG_WARNING, _("failed to retrieve some files from %s\n"),
current->treename);
if(pm_errno == 0) {
@@ -792,6 +903,12 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
}
}
for(j = trans->add; j; j = j->next) {
pmpkg_t *pkg = j->data;
pkg->infolevel &= ~INFRQ_DSIZE;
pkg->download_size = 0;
}
/* clear out value to let callback know we are done */
if(handle->totaldlcb) {
handle->totaldlcb(0);
@@ -835,15 +952,36 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
EVENT(trans, PM_TRANS_EVT_INTEGRITY_START, NULL, NULL);
errors = 0;
for(i = trans->packages; i; i = i->next) {
for(i = trans->add; i; i = i->next) {
pmpkg_t *spkg = i->data;
if(spkg->origin == PKG_FROM_FILE) {
continue; /* pkg_load() has been already called, this package is valid */
}
const char *filename = alpm_pkg_get_filename(spkg);
const char *md5sum = alpm_pkg_get_md5sum(spkg);
if(test_md5sum(trans, filename, md5sum) != 0) {
errors++;
*data = alpm_list_add(*data, strdup(filename));
continue;
}
/* load the package file and replace pkgcache entry with it in the target list */
/* TODO: alpm_pkg_get_db() will not work on this target anymore */
_alpm_log(PM_LOG_DEBUG, "replacing pkgcache entry with package file for target %s\n", spkg->name);
char *filepath = _alpm_filecache_find(filename);
pmpkg_t *pkgfile;
if(alpm_pkg_load(filepath, 1, &pkgfile) != 0) {
_alpm_pkg_free(pkgfile);
errors++;
*data = alpm_list_add(*data, strdup(filename));
FREE(filepath);
continue;
}
FREE(filepath);
pkgfile->reason = spkg->reason; /* copy over install reason */
i->data = pkgfile;
_alpm_pkg_free_trans(spkg); /* spkg has been removed from the target list */
}
if(errors) {
pm_errno = PM_ERR_PKG_INVALID;
@@ -851,76 +989,21 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
}
EVENT(trans, PM_TRANS_EVT_INTEGRITY_DONE, NULL, NULL);
if(trans->flags & PM_TRANS_FLAG_DOWNLOADONLY) {
return(0);
ret = 0;
goto error;
}
trans->state = STATE_COMMITING;
/* Create remove and upgrade transactions */
tr_remove = _alpm_trans_new();
if(tr_remove == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not create removal transaction\n"));
goto error;
}
tr_upgrade = _alpm_trans_new();
if(tr_upgrade == NULL) {
_alpm_log(PM_LOG_ERROR, _("could not create transaction\n"));
goto error;
}
if(_alpm_trans_init(tr_remove, PM_TRANS_TYPE_REMOVE, PM_TRANS_FLAG_NODEPS, NULL, NULL, NULL) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not initialize the removal transaction\n"));
goto error;
}
if(_alpm_trans_init(tr_upgrade, PM_TRANS_TYPE_UPGRADE, trans->flags, trans->cb_event, trans->cb_conv, trans->cb_progress) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not initialize transaction\n"));
goto error;
}
/* adding targets */
for(i = trans->packages; i; i = i->next) {
pmpkg_t *spkg = i->data;
alpm_list_t *j;
/* remove transaction */
for(j = spkg->removes; j; j = j->next) {
pmpkg_t *pkg = j->data;
if(!_alpm_pkg_find(tr_remove->packages, pkg->name)) {
if(_alpm_trans_addtarget(tr_remove, pkg->name) == -1) {
goto error;
}
replaces++;
}
}
/* upgrade transaction */
const char *fname;
char *fpath;
fname = alpm_pkg_get_filename(spkg);
if(fname == NULL) {
goto error;
}
/* Loop through the cache dirs until we find a matching file */
fpath = _alpm_filecache_find(fname);
if(_alpm_trans_addtarget(tr_upgrade, fpath) == -1) {
FREE(fpath);
goto error;
}
FREE(fpath);
/* using alpm_list_last() is ok because addtarget() adds the new target at the
* end of the tr->packages list */
pmpkg_t *ipkg = alpm_list_last(tr_upgrade->packages)->data;
ipkg->reason = spkg->reason;
}
replaces = alpm_list_count(trans->remove);
/* fileconflict check */
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");
alpm_list_t *conflict = _alpm_db_find_fileconflicts(db_local, tr_upgrade,
tr_upgrade->packages, tr_remove->packages);
alpm_list_t *conflict = _alpm_db_find_fileconflicts(db_local, trans,
trans->add, trans->remove);
if(conflict) {
pm_errno = PM_ERR_FILE_CONFLICTS;
if(data) {
@@ -938,14 +1021,8 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
/* remove conflicting and to-be-replaced packages */
if(replaces) {
_alpm_log(PM_LOG_DEBUG, "removing conflicting and to-be-replaced packages\n");
if(_alpm_trans_prepare(tr_remove, data) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not prepare removal transaction\n"));
goto error;
}
/* we want the frontend to be aware of commit details */
tr_remove->cb_event = trans->cb_event;
tr_remove->cb_progress = trans->cb_progress;
if(_alpm_trans_commit(tr_remove, NULL) == -1) {
if(_alpm_remove_packages(trans, handle->db_local) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not commit removal transaction\n"));
goto error;
}
@@ -953,8 +1030,7 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
/* install targets */
_alpm_log(PM_LOG_DEBUG, "installing packages\n");
/* add_prepare is not needed */
if(_alpm_trans_commit(tr_upgrade, NULL) == -1) {
if(_alpm_upgrade_packages(trans, handle->db_local) == -1) {
_alpm_log(PM_LOG_ERROR, _("could not commit transaction\n"));
goto error;
}
@@ -963,8 +1039,6 @@ int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data)
error:
FREELIST(files);
alpm_list_free(deltas);
_alpm_trans_free(tr_remove);
_alpm_trans_free(tr_upgrade);
return(ret);
}

View File

@@ -1,7 +1,7 @@
/*
* sync.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -24,9 +24,6 @@
#include "alpm.h"
int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, int enable_downgrade);
int _alpm_sync_addtarget(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, char *name);
int _alpm_sync_prepare(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_sync, alpm_list_t **data);
int _alpm_sync_commit(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t **data);

View File

@@ -1,7 +1,7 @@
/*
* trans.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -52,17 +52,18 @@
*/
/** Initialize the transaction.
* @param type type of the transaction
* @param flags flags of the transaction (like nodeps, etc)
* @param event event callback function pointer
* @param conv question callback function pointer
* @param progress progress callback function pointer
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
int SYMEXPORT alpm_trans_init(pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress)
{
pmtrans_t *trans;
ALPM_LOG_FUNC;
/* Sanity checks */
@@ -78,52 +79,45 @@ int SYMEXPORT alpm_trans_init(pmtranstype_t type, pmtransflag_t flags,
}
}
handle->trans = _alpm_trans_new();
if(handle->trans == NULL) {
trans = _alpm_trans_new();
if(trans == NULL) {
RET_ERR(PM_ERR_MEMORY, -1);
}
return(_alpm_trans_init(handle->trans, type, flags, event, conv, progress));
trans->flags = flags;
trans->cb_event = event;
trans->cb_conv = conv;
trans->cb_progress = progress;
trans->state = STATE_INITIALIZED;
handle->trans = trans;
return(0);
}
/** Search for packages to upgrade and add them to the transaction.
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_trans_sysupgrade(int enable_downgrade)
static alpm_list_t *check_arch(alpm_list_t *pkgs)
{
pmtrans_t *trans;
alpm_list_t *i;
alpm_list_t *invalid = NULL;
ALPM_LOG_FUNC;
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->type == PM_TRANS_TYPE_SYNC, RET_ERR(PM_ERR_TRANS_TYPE, -1));
return(_alpm_sync_sysupgrade(trans, handle->db_local, handle->dbs_sync, enable_downgrade));
}
/** Add a target to the transaction.
* @param target the name of the target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int SYMEXPORT alpm_trans_addtarget(char *target)
{
pmtrans_t *trans;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
ASSERT(target != NULL && strlen(target) != 0, RET_ERR(PM_ERR_WRONG_ARGS, -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));
return(_alpm_trans_addtarget(trans, target));
const char *arch = alpm_option_get_arch();
if(!arch) {
return(NULL);
}
for(i = pkgs; i; i = i->next) {
pmpkg_t *pkg = i->data;
const char *pkgarch = alpm_pkg_get_arch(pkg);
if(pkgarch && strcmp(pkgarch, arch) && strcmp(pkgarch, "any")) {
char *string;
const char *pkgname = alpm_pkg_get_name(pkg);
const char *pkgver = alpm_pkg_get_version(pkg);
size_t len = strlen(pkgname) + strlen(pkgver) + strlen(pkgarch) + 3;
MALLOC(string, len, RET_ERR(PM_ERR_MEMORY, invalid));
sprintf(string, "%s-%s-%s", pkgname, pkgver, pkgarch);
invalid = alpm_list_add(invalid, string);
}
}
return(invalid);
}
/** Prepare a transaction.
@@ -133,16 +127,47 @@ int SYMEXPORT alpm_trans_addtarget(char *target)
*/
int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
{
pmtrans_t *trans;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
ASSERT(data != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
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));
trans = handle->trans;
return(_alpm_trans_prepare(handle->trans, data));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_INITIALIZED, RET_ERR(PM_ERR_TRANS_NOT_INITIALIZED, -1));
/* If there's nothing to do, return without complaining */
if(trans->add == NULL && trans->remove == NULL) {
return(0);
}
alpm_list_t *invalid = check_arch(trans->add);
if(invalid) {
if(data) {
*data = invalid;
}
RET_ERR(PM_ERR_PKG_INVALID_ARCH, -1);
}
if(trans->add == NULL) {
if(_alpm_remove_prepare(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_remove_prepare() */
return(-1);
}
} else {
if(_alpm_sync_prepare(trans, handle->db_local, handle->dbs_sync, data) == -1) {
/* pm_errno is set by _alpm_sync_prepare() */
return(-1);
}
}
trans->state = STATE_PREPARED;
return(0);
}
/** Commit a transaction.
@@ -152,17 +177,42 @@ int SYMEXPORT alpm_trans_prepare(alpm_list_t **data)
*/
int SYMEXPORT alpm_trans_commit(alpm_list_t **data)
{
pmtrans_t *trans;
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(handle != NULL, RET_ERR(PM_ERR_HANDLE_NULL, -1));
ASSERT(handle->trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(handle->trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
trans = handle->trans;
ASSERT(!(handle->trans->flags & PM_TRANS_FLAG_NOLOCK), RET_ERR(PM_ERR_TRANS_NOT_LOCKED, -1));
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state == STATE_PREPARED, RET_ERR(PM_ERR_TRANS_NOT_PREPARED, -1));
return(_alpm_trans_commit(handle->trans, data));
ASSERT(!(trans->flags & PM_TRANS_FLAG_NOLOCK), RET_ERR(PM_ERR_TRANS_NOT_LOCKED, -1));
/* If there's nothing to do, return without complaining */
if(trans->add == NULL && trans->remove == NULL) {
return(0);
}
trans->state = STATE_COMMITING;
if(trans->add == NULL) {
if(_alpm_remove_packages(trans, handle->db_local) == -1) {
/* pm_errno is set by _alpm_remove_commit() */
return(-1);
}
} else {
if(_alpm_sync_commit(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_sync_commit() */
return(-1);
}
}
trans->state = STATE_COMMITED;
return(0);
}
/** Interrupt a transaction.
@@ -203,7 +253,7 @@ int SYMEXPORT alpm_trans_release()
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(trans->state != STATE_IDLE, RET_ERR(PM_ERR_TRANS_NULL, -1));
unsigned int nolock_flag = trans->flags & PM_TRANS_FLAG_NOLOCK;
int nolock_flag = trans->flags & PM_TRANS_FLAG_NOLOCK;
_alpm_trans_free(trans);
handle->trans = NULL;
@@ -211,7 +261,10 @@ int SYMEXPORT alpm_trans_release()
/* unlock db */
if(!nolock_flag) {
if(handle->lckfd != -1) {
while(close(handle->lckfd) == -1 && errno == EINTR);
int fd;
do {
fd = close(handle->lckfd);
} while(fd == -1 && errno == EINTR);
handle->lckfd = -1;
}
if(_alpm_lckrm()) {
@@ -247,12 +300,10 @@ void _alpm_trans_free(pmtrans_t *trans)
return;
}
if(trans->type == PM_TRANS_TYPE_SYNC) {
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free_trans);
} else {
alpm_list_free_inner(trans->packages, (alpm_list_fn_free)_alpm_pkg_free);
}
alpm_list_free(trans->packages);
alpm_list_free_inner(trans->add, (alpm_list_fn_free)_alpm_pkg_free_trans);
alpm_list_free(trans->add);
alpm_list_free_inner(trans->remove, (alpm_list_fn_free)_alpm_pkg_free);
alpm_list_free(trans->remove);
FREELIST(trans->skip_add);
FREELIST(trans->skip_remove);
@@ -260,150 +311,6 @@ void _alpm_trans_free(pmtrans_t *trans)
FREE(trans);
}
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress)
{
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
trans->type = type;
trans->flags = flags;
trans->cb_event = event;
trans->cb_conv = conv;
trans->cb_progress = progress;
trans->state = STATE_INITIALIZED;
return(0);
}
/** Add a target to the transaction.
* @param trans the current transaction
* @param target the name of the target to add
* @return 0 on success, -1 on error (pm_errno is set accordingly)
*/
int _alpm_trans_addtarget(pmtrans_t *trans, char *target)
{
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
ASSERT(target != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1));
switch(trans->type) {
case PM_TRANS_TYPE_UPGRADE:
if(_alpm_add_loadtarget(trans, handle->db_local, target) == -1) {
/* pm_errno is set by _alpm_add_loadtarget() */
return(-1);
}
break;
case PM_TRANS_TYPE_REMOVE:
case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_loadtarget(trans, handle->db_local, target) == -1) {
/* pm_errno is set by _alpm_remove_loadtarget() */
return(-1);
}
break;
case PM_TRANS_TYPE_SYNC:
if(_alpm_sync_addtarget(trans, handle->db_local, handle->dbs_sync, target) == -1) {
/* pm_errno is set by _alpm_sync_loadtarget() */
return(-1);
}
break;
}
return(0);
}
int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data)
{
if(data) {
*data = NULL;
}
ALPM_LOG_FUNC;
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
/* If there's nothing to do, return without complaining */
if(trans->packages == NULL) {
return(0);
}
switch(trans->type) {
case PM_TRANS_TYPE_UPGRADE:
if(_alpm_add_prepare(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_add_prepare() */
return(-1);
}
break;
case PM_TRANS_TYPE_REMOVE:
case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_prepare(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_remove_prepare() */
return(-1);
}
break;
case PM_TRANS_TYPE_SYNC:
if(_alpm_sync_prepare(trans, handle->db_local, handle->dbs_sync, data) == -1) {
/* pm_errno is set by _alpm_sync_prepare() */
return(-1);
}
break;
}
trans->state = STATE_PREPARED;
return(0);
}
int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data)
{
ALPM_LOG_FUNC;
if(data!=NULL)
*data = NULL;
/* Sanity checks */
ASSERT(trans != NULL, RET_ERR(PM_ERR_TRANS_NULL, -1));
/* If there's nothing to do, return without complaining */
if(trans->packages == NULL) {
return(0);
}
trans->state = STATE_COMMITING;
switch(trans->type) {
case PM_TRANS_TYPE_UPGRADE:
if(_alpm_add_commit(trans, handle->db_local) == -1) {
/* pm_errno is set by _alpm_add_commit() */
return(-1);
}
break;
case PM_TRANS_TYPE_REMOVE:
case PM_TRANS_TYPE_REMOVEUPGRADE:
if(_alpm_remove_commit(trans, handle->db_local) == -1) {
/* pm_errno is set by _alpm_remove_commit() */
return(-1);
}
break;
case PM_TRANS_TYPE_SYNC:
if(_alpm_sync_commit(trans, handle->db_local, data) == -1) {
/* pm_errno is set by _alpm_sync_commit() */
return(-1);
}
break;
}
trans->state = STATE_COMMITED;
return(0);
}
/* A cheap grep for text files, returns 1 if a substring
* was found in the text file fn, 0 if it wasn't
*/
@@ -416,7 +323,8 @@ static int grep(const char *fn, const char *needle)
}
while(!feof(fp)) {
char line[1024];
fgets(line, 1024, fp);
int sline = sizeof(line)-1;
fgets(line, sline, fp);
if(feof(fp)) {
continue;
}
@@ -464,7 +372,7 @@ int _alpm_runscriptlet(const char *root, const char *installfn,
/* either extract or copy the scriptlet */
snprintf(scriptfn, PATH_MAX, "%s/.INSTALL", tmpdir);
if(!strcmp(script, "pre_upgrade") || !strcmp(script, "pre_install")) {
if(_alpm_unpack(installfn, tmpdir, ".INSTALL")) {
if(_alpm_unpack_single(installfn, tmpdir, ".INSTALL")) {
retval = 1;
}
} else {
@@ -503,16 +411,7 @@ cleanup:
return(retval);
}
pmtranstype_t SYMEXPORT alpm_trans_get_type()
{
/* Sanity checks */
ASSERT(handle != NULL, return(-1));
ASSERT(handle->trans != NULL, return(-1));
return handle->trans->type;
}
unsigned int SYMEXPORT alpm_trans_get_flags()
int SYMEXPORT alpm_trans_get_flags()
{
/* Sanity checks */
ASSERT(handle != NULL, return(-1));
@@ -521,12 +420,21 @@ unsigned int SYMEXPORT alpm_trans_get_flags()
return handle->trans->flags;
}
alpm_list_t SYMEXPORT * alpm_trans_get_pkgs()
alpm_list_t SYMEXPORT * alpm_trans_get_add()
{
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(handle->trans != NULL, return(NULL));
return handle->trans->packages;
return handle->trans->add;
}
alpm_list_t SYMEXPORT * alpm_trans_get_remove()
{
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(handle->trans != NULL, return(NULL));
return handle->trans->remove;
}
/* vim: set ts=2 sw=2 noet: */

View File

@@ -1,7 +1,7 @@
/*
* trans.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -37,10 +37,10 @@ typedef enum _pmtransstate_t {
/* 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 *) */
alpm_list_t *skip_add; /* list of (char *) */
alpm_list_t *skip_remove; /* list of (char *) */
alpm_trans_cb_event cb_event;
@@ -69,12 +69,9 @@ do { \
pmtrans_t *_alpm_trans_new(void);
void _alpm_trans_free(pmtrans_t *trans);
int _alpm_trans_init(pmtrans_t *trans, pmtranstype_t type, pmtransflag_t flags,
int _alpm_trans_init(pmtrans_t *trans, pmtransflag_t flags,
alpm_trans_cb_event event, alpm_trans_cb_conv conv,
alpm_trans_cb_progress progress);
int _alpm_trans_addtarget(pmtrans_t *trans, char *target);
int _alpm_trans_prepare(pmtrans_t *trans, alpm_list_t **data);
int _alpm_trans_commit(pmtrans_t *trans, alpm_list_t **data);
int _alpm_runscriptlet(const char *root, const char *installfn,
const char *script, const char *ver,
const char *oldver, pmtrans_t *trans);

View File

@@ -1,7 +1,7 @@
/*
* util.c
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -175,7 +175,7 @@ char *_alpm_strtrim(char *str)
return(str);
}
while(isspace((int)*pch)) {
while(isspace((unsigned char)*pch)) {
pch++;
}
if(pch != str) {
@@ -188,7 +188,7 @@ char *_alpm_strtrim(char *str)
}
pch = (str + (strlen(str) - 1));
while(isspace((int)*pch)) {
while(isspace((unsigned char)*pch)) {
pch--;
}
*++pch = '\0';
@@ -196,57 +196,11 @@ char *_alpm_strtrim(char *str)
return(str);
}
/* Helper function for _alpm_strreplace */
static void _strnadd(char **str, const char *append, unsigned int count)
{
if(*str) {
*str = realloc(*str, strlen(*str) + count + 1);
} else {
*str = calloc(count + 1, sizeof(char));
}
strncat(*str, append, count);
}
/* Replace all occurances of 'needle' with 'replace' in 'str', returning
* a new string (must be free'd) */
char *_alpm_strreplace(const char *str, const char *needle, const char *replace)
{
const char *p, *q;
p = q = str;
char *newstr = NULL;
unsigned int needlesz = strlen(needle),
replacesz = strlen(replace);
while (1) {
q = strstr(p, needle);
if(!q) { /* not found */
if(*p) {
/* add the rest of 'p' */
_strnadd(&newstr, p, strlen(p));
}
break;
} else { /* found match */
if(q > p){
/* add chars between this occurance and last occurance, if any */
_strnadd(&newstr, p, q - p);
}
_strnadd(&newstr, replace, replacesz);
p = q + needlesz;
}
}
return newstr;
}
/* Create a lock file */
int _alpm_lckmk()
{
int fd;
pid_t pid;
char *dir, *ptr, *spid = NULL;
char *dir, *ptr;
const char *file = alpm_option_get_lockfile();
/* create the dir of the lockfile first */
@@ -258,16 +212,15 @@ int _alpm_lckmk()
_alpm_makepath(dir);
FREE(dir);
while((fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000)) == -1
&& errno == EINTR);
do {
fd = open(file, O_WRONLY | O_CREAT | O_EXCL, 0000);
} while (fd == -1 && errno == EINTR);
if(fd > 0) {
pid = getpid();
size_t len = snprintf(spid, 0, "%ld\n", (long)pid) + 1;
spid = malloc(len);
snprintf(spid, len, "%ld\n", (long)pid);
while(write(fd, (void *)spid, len) == -1 && errno == EINTR);
FILE *f = fdopen(fd, "w");
fprintf(f, "%ld\n", (long)getpid());
fflush(f);
fsync(fd);
free(spid);
fclose(f);
return(fd);
}
return(-1);
@@ -286,14 +239,38 @@ int _alpm_lckrm()
/* Compression functions */
/**
* @brief Unpack a specific file or all files in an archive.
* @brief Unpack a specific file in an archive.
*
* @param archive the archive to unpack
* @param prefix where to extract the files
* @param fn a file within the archive to unpack or NULL for all
* @param fn a file within the archive to unpack
* @return 0 on success, 1 on failure
*/
int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
int _alpm_unpack_single(const char *archive, const char *prefix, const char *fn)
{
alpm_list_t *list = NULL;
int ret = 0;
if(fn == NULL) {
return(1);
}
list = alpm_list_add(list, (void *)fn);
ret = _alpm_unpack(archive, prefix, list, 1);
alpm_list_free(list);
return(ret);
}
/**
* @brief Unpack a list of files in an archive.
*
* @param archive the archive to unpack
* @param prefix where to extract the files
* @param list a list of files within the archive to unpack or
* NULL for all
* @param breakfirst break after the first entry found
*
* @return 0 on success, 1 on failure
*/
int _alpm_unpack(const char *archive, const char *prefix, alpm_list_t *list, int breakfirst)
{
int ret = 0;
mode_t oldmask;
@@ -339,21 +316,31 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
st = archive_entry_stat(entry);
entryname = archive_entry_pathname(entry);
if(S_ISREG(st->st_mode)) {
archive_entry_set_perm(entry, 0644);
} else if(S_ISDIR(st->st_mode)) {
archive_entry_set_perm(entry, 0755);
}
/* If a specific file was requested skip entries that don't match. */
if (fn && strcmp(fn, entryname)) {
_alpm_log(PM_LOG_DEBUG, "skipping: %s\n", entryname);
if (archive_read_data_skip(_archive) != ARCHIVE_OK) {
ret = 1;
goto cleanup;
/* If specific files were requested, skip entries that don't match. */
if(list) {
char *prefix = strdup(entryname);
char *p = strstr(prefix,"/");
if(p) {
*(p+1) = '\0';
}
char *found = alpm_list_find_str(list, prefix);
free(prefix);
if(!found) {
if (archive_read_data_skip(_archive) != ARCHIVE_OK) {
ret = 1;
goto cleanup;
}
continue;
} else {
_alpm_log(PM_LOG_DEBUG, "extracting: %s\n", entryname);
}
continue;
}
/* Extract the archive entry. */
@@ -369,7 +356,7 @@ int _alpm_unpack(const char *archive, const char *prefix, const char *fn)
goto cleanup;
}
if(fn) {
if(breakfirst) {
break;
}
}
@@ -404,7 +391,8 @@ int _alpm_rmrf(const char *path)
}
}
} else {
if((dirp = opendir(path)) == (DIR *)-1) {
dirp = opendir(path);
if(!dirp) {
return(1);
}
for(dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
@@ -425,8 +413,7 @@ int _alpm_rmrf(const char *path)
return(0);
}
int _alpm_logaction(unsigned short usesyslog, FILE *f,
const char *fmt, va_list args)
int _alpm_logaction(int usesyslog, FILE *f, const char *fmt, va_list args)
{
int ret = 0;
@@ -509,7 +496,7 @@ int _alpm_run_chroot(const char *root, const char *cmd)
umask(0022);
pipe = popen(cmd, "r");
if(!pipe) {
_alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)"),
_alpm_log(PM_LOG_ERROR, _("call to popen failed (%s)\n"),
strerror(errno));
exit(1);
}
@@ -526,7 +513,9 @@ int _alpm_run_chroot(const char *root, const char *cmd)
/* this code runs for the parent only (wait on the child) */
pid_t retpid;
int status;
while((retpid = waitpid(pid, &status, 0)) == -1 && errno == EINTR);
do {
retpid = waitpid(pid, &status, 0);
} while(retpid == -1 && errno == EINTR);
if(retpid == -1) {
_alpm_log(PM_LOG_ERROR, _("call to waitpid failed (%s)\n"),
strerror(errno));
@@ -562,7 +551,7 @@ int _alpm_ldconfig(const char *root)
if(access(line, F_OK) == 0) {
snprintf(line, PATH_MAX, "%ssbin/ldconfig", root);
if(access(line, X_OK) == 0) {
_alpm_run_chroot(root, "ldconfig");
_alpm_run_chroot(root, "/sbin/ldconfig");
}
}

View File

@@ -1,7 +1,7 @@
/*
* util.h
*
* Copyright (c) 2006-2009 Pacman Development Team <pacman-dev@archlinux.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>
@@ -26,6 +26,8 @@
#include "config.h"
#include "alpm_list.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
@@ -60,12 +62,12 @@ int _alpm_makepath(const char *path);
int _alpm_makepath_mode(const char *path, mode_t mode);
int _alpm_copyfile(const char *src, const char *dest);
char *_alpm_strtrim(char *str);
char *_alpm_strreplace(const char *str, const char *needle, const char *replace);
int _alpm_lckmk();
int _alpm_lckrm();
int _alpm_unpack(const char *archive, const char *prefix, const char *fn);
int _alpm_unpack_single(const char *archive, const char *prefix, const char *fn);
int _alpm_unpack(const char *archive, const char *prefix, alpm_list_t *list, int breakfirst);
int _alpm_rmrf(const char *path);
int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, va_list args);
int _alpm_logaction(int usesyslog, FILE *f, const char *fmt, va_list args);
int _alpm_run_chroot(const char *root, const char *cmd);
int _alpm_ldconfig(const char *root);
int _alpm_str_cmp(const void *s1, const void *s2);

195
lib/libalpm/version.c Normal file
View File

@@ -0,0 +1,195 @@
/*
* Copyright (c) 2006-2010 Pacman Development Team <pacman-dev@archlinux.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <string.h>
#include <ctype.h>
/* libalpm */
#include "util.h"
/** 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;
/* 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);
}
/* vim: set ts=2 sw=2 noet: */

View File

@@ -1,16 +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

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