一個 Linux 上以 tar.gz 包裝的套件的簡單管理程式.
pacman does not strive to "do everything." It will add, remove and upgrade packages in the system, and it will allow you to query the package database for installed packages, files and owners. It also attempts to handle dependencies automatically and can download packages from a remote server.
Although the package manager itself is quite simple, the pacman tarball also comes with scripts that help automate building and installing packages. These are used extensively in the Arch Build System (ABS), used in Arch Linux.
As of version 2.0, pacman can also keep your system's packages in
sync with a master server. You can follow CURRENT and STABLE trees,
or lock yourself into a specific version. See the pacman manpage
for more info on this (--sync operation).
$ ./configure
$ make
# make install
如果你的 man 檔案放在 /usr/man 以外的目錄下, 在開始安裝編譯前, 你可能需要先修改 Makefile 內關於 MANDIR 這一行的內容來符合你的設定.
注意 : 因為 pacman 是採用靜態編譯, 你將會需要 glibc, zlib 和 libtar 的靜態函示庫.
更新紀錄 |
---|
版本 描述 ----------------------------------------------------------------------------- 2.9.5 - bug 修正: missing files after re-ordering packages wrt deps with --upgrade - 新增 "Repository" line to -Si output - patch from Tommi Rantala to fix trim() behaviour with empty or whitespace-only strings - 修正 removal order when using -Rc or -Rs 2.9.4 - 修正 a bug that was introduced from another bug 修正 :-/ 2.9.3 - 修正 a couple manpage typos - 新增 --ignore to -S operations, works just like IgnorePkg - respect IgnorePkg list when pulling in dependencies - numerous memleak fixes - some code changes to improve customizability/branding - Makefile fix for nonstandard lib search paths (Kevin Piche) - 修正 the leftover directories in /tmp - speed improvement patches from Tommi Rantala 2.9.2 - bug 修正 for 2.9.1 2.9.1 - --refresh now only downloads fresh packages lists if they've been updated (currently only works with FTP) 2.9 - Improved -Rs functionality -- pacman now tracks why a package is installed: explicitly, or as a dependency for another package. -Rs will only remove dependencies that were not explicitly installed. - 新增 compressed package size to sync DBs -- shows the total size of packages before downloading - Patch from Tommi Rantala: - Allow --info and --list together in queries - Patch from Kevin Piche: - Use list_add_sorted() with -Sg - Patch from Hegedus Marton Csaba: - Better manpage compression - 新增 checks for additional hyphens in package versions - mktemp was failing if %pmo_root%/tmp was missing -- 修正 2.8.4 - 新增 updatesync script from Jason Chu - Changed the pacman binary to be dynamically linked - Included a pacman.static binary as well - 新增 fakeroot checks when seeing if we're root - 修正 makepkg to use 'tail -n 1' instead of 'tail -1' - 新增 patch from Kevin Piche: - Cleanup db_loadpkgs(), add list_add_sorted() - 修正 a memory leak in db_find_conflicts() 2.8.3 - 修正 a little makepkg bug with bash 3.0 - 修正 resolvedeps to always prefer literals over provisios - 新增 --config option to specify an alternate config file - 新增 "Include" directive to include repositories from config files (inspired by Michael Baehr's patch) - 新增 patch from Jason Chu: - Even smarter file-conflict checking 2.8.2 - 修正 a segfault bug in file-conflict checks - Made --noconfirm actually work. Go me. 2.8.1 - 新增 a HoldPkg option in pacman.conf, for the more exploratory users who run things like "pacman -R pacman". It will ask for confirmation before removing any packages listed in the HoldPkg list - 新增 a --noconfirm switch for use with script automation - Modified dependency resolution to prefer packages explicitly requested on the cmdline instead of those pulled in by resolvedeps(). Example, if neither "xorg" nor "xfree86" is installed and "blackbox xfree86" is requested, "xfree86" will be used instead of "xorg" - 新增 patch from Jason Chu: - Smarter file-conflict checking with symlinked paths and with files that move from one package to another 2.8 - bug 修正es: - #861: file:/// urls not handled properly with XferCommand - #1003: set umask before scriptlet calls - #1027: download problems with http urls using -U/-A - #1044: segfaults when using -Rs - #863: "missing post_remove" errors with some packages - #875: detect low disk space properly - #986: makepkg -e doesn't validate files - #1010: add -j option to makepkg - #1028: make pacman -Sp runnable as non-root - 新增 pre_install and pre_upgrade scriptlet support - 新增 an "Architecture" field in the package meta-data - 新增 patch from Aurelien Foret which improves performance adding or removing packages - 新增 implementation of GNU's strverscmp function for better portability - 新增 explicit unlink() calls when --force is used, which prevents those nasty "Text file busy" errors when you force-upgrade something like pacman or glibc. 2.7.9 - 新增 the "force" option to packages, so --sysupgrade can downgrade packages when it needs to 2.7.8 - 新增 post_remove scriptlet support - 新增 -Qs option (bug #854) - a provisio does not imply conflict, to make a provisio target conflict with anything else that provides the same thing, you can now do this by specifying the provisio target as both a provides and a conflict, eg: conflicts=('x-server') provides=('x-server') - cleaned up the download progress bar a bit - 新增 %o parameter to XferCommand so wget can resume properly - 修正 a segfault in downloadfiles() (bug #787) - patches from Oliver Burnett-Hall - gensync uses a better temp dir (bug #774) - PKGDEST can be set in makepkg.conf (bug #783) - patches from Aurelien Foret - segfault fix, couple memory leaks - more sanity checks in "provides" searches - 修正 a little display bug in the progress bar - made -Qip look like -Qi - -Sc now removes OLD packages from cache, use -Scc for all 2.7.7 - 新增 an XferCommand directive that will make pacman use an external download utility like wget - 新增 a license field to package meta-data - add url support to -A and -U operations (download packages) - -Ss now searches thru provides fields - 新增 --dbonly option to -R 2.7.6 - 新增 --print-uris option - 修正 an http download bug (bug #667) - 修正 a segfault related to replaces/conflicts handling 2.7.5 - "replaces" packages were ignoring IgnorePkg in pacman.conf - 修正 another bug in conflict handling - found an out-dated reference to /usr/abs, 修正 - 新增 a --recursive option for package removal, which removes all deps of a target that aren't required by other packages 2.7.4 - 修正 a bug in conflict handling, where installing a conflicting package would fail even if the new package "provided" it - if pacman sees a newer version of itself during an upgrade, it will ask to install itself first, then be re-run to upgrade the other packages. - You can now use the --info option with --sync to display an uninstalled package's dependency info. - 新增 a sane umask before db writes - buffer overflow fix (bug #442) 2.7.3 - makepkg not longer strips files with .exe or .dll extensions - 新增 Aurelien's patch: - proxy support (no authentication yet) - HTTP/1.1 support - an improved progress bar with transfer rates and ETA - cleaned up warning output a bit 2.7.2 - Supressed "No such file" messages during stripping - Removed extra newlines in /var/log/pacman.log - 新增 a --noextract option to makepkg to skip source extraction 2.7.1 - 修正 a couple obscure segfaults - LogFiles were logging incorrect dates - 修正 - Cleaned up md5sum output in makepkg -g - 新增 (optional) colorized output messages to makepkg - Renamed the "stable" repo to "release" in pacman.conf - Renamed the "unofficial" repo to "extra" in pacman.conf 2.7 - 新增 build-time dependencies to makepkg (Jason Chu) - 新增 md5sum integrity checking to packages in --sync mode (Aurelien Foret) - Memory leak fixes (Aurelien Foret) - 新增 CARCH variable to makepkg.conf for use in PKGBUILDs - 新增 LogFile option for direct-to-file logging - 新增 -Qii handling to show modified config files - Allow --sync targets to specify an explicit repository to sync from (eg, pacman -S current/patch) 2.6.4 - Altered pacman_upgrade() to allow a package to replace itself 2.6.3 - A couple memory fixes in the new replaces code 2.6.2 - 修正 a memory cleanup bug - Aurelien's patch: - bug #159 implemented (for -S and -R) - 修正 a bug with pacman -Sg (pacman was browsing only one db to get groups) - 修正 a bug with list_merge() - 修正 some MLK (in dumppkg() and with "-Qi --orphans") - now "pacman -Sg" only displays groups (without content) whereas "pacman -Sg target1 target2" displays groups target1 and target2 with content 2.6.1 - 新增 http download support (Aurelien Foret) - Improved makepkg's --builddeps behaviour when called via makeworld - makepkg's md5 validation now occurs before source extraction - makepkg delays fakeroot entry until after option parsing - 修正 an argument-passing bug in fakeroot - Modified pacman's behaviour wrt provides -- it now allows multiple packages to be installed, even if they provide the same thing (they were treated as conflicts before) 2.6 - 新增 group handling, so one can run 'pacman -S kde' and install all files from the KDE group - 修正 a duplication bug in cascade package removal - 新增 support for virtual provisions with "provides" tags - When conflicts are encountered, pacman now offers the chance to remove the conflicting packages (provides or literals) - 新增 support for renamed/combined packages with a "replaces" tag - 新增 --nostrip option to makepkg - Improved --search to list all packages from all repos when a search term is omitted - 新增 logging support through syslog() - 新增 fakeroot support to makepkg (RomanK) - 新增 MD5sum generation/validation to makepkg (RomanK) - 修正 a progress bar bug (Aurelien Foret) - Sorted makepkg's .FILELISTs (Aurelien Foret) - Targets are now re-ordered w.r.t. dependencies when using -A/-U - Modified --search to work when called as -Sys - Modified abs to use ABS_ROOT from /etc/abs/abs.conf (Aurelien) - Other bug fixes 2.5.1 - Minor bug fixes 2.5 - 新增 an URL tag to package info - Sped up package load times by about 500% by introducing a .FILELIST into the package - Renamed the install scriptlet from ._install to .INSTALL - 新增 patch from Aurlien Foret: - Better lock handling (RW and RO) - Sorted package order in -Qi's dependency lists - 新增 a DBPath option to pacman.conf - 修正 memory leaks - 新增 the --nodeps option to -S 2.4.1 - 修正 a bug in makepkg's option parsing 2.4 - 新增 getopt-style options to makeworld - 新增 -w |
pacman uses "libtar", a library for reading/writing tar-files. This library is Copyright (c) 1998-2001 Mark D. Roth <roth@uiuc.edu>
pacman uses "ftplib", a library for sending/receiving files via FTP. This
library is copyright (c) 1996-2000 Thomas Pfau, pfau@cnj.digex.net