Imported from pacman-2.4.tar.gz
This commit is contained in:
parent
185ce5454e
commit
37e13ea2d0
21 changed files with 1987 additions and 1684 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,7 +1,20 @@
|
|||
VERSION DESCRIPTION
|
||||
------------------------------------------------------------------
|
||||
2.4 - Added getopt-style options to makeworld
|
||||
- Added -w <destdir> to makepkg
|
||||
- makeworld now properly handles packages with --builddeps
|
||||
- Added patches from Aurelien Foret:
|
||||
- Cascading package removals. -Rc will remove a package and
|
||||
all packages that require it
|
||||
- Support for getopt-style options in makepkg
|
||||
- the REQUIREDBY field is now updated when a package is
|
||||
removed with --nodeps, then re-installed.
|
||||
- Avoids duplicate dependency checks with sync
|
||||
- Added a "NoPassiveFtp" option in pacman.conf
|
||||
- Improvements to the --query listings
|
||||
2.3.2 - Added patches from Aurelien Foret:
|
||||
- FTP resume feature
|
||||
- removed the hit-^C-and-delete-the-downloading-file safety
|
||||
- IgnorePkg option in pacman.conf
|
||||
- FTPAGENT setting in makepkg.conf
|
||||
- Added --cleancache option to makepkg
|
||||
|
|
20
Makefile.in
20
Makefile.in
|
@ -34,8 +34,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
|||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
|
||||
PACVER = 2.3.2
|
||||
LIBTAR_VERSION = 1.2.5
|
||||
PACVER = 2.4
|
||||
|
||||
TOPDIR = @srcdir@
|
||||
SRCDIR = $(TOPDIR)/src/
|
||||
|
@ -44,11 +43,9 @@ MANSRC = $(TOPDIR)/doc/
|
|||
SCRDIR = $(TOPDIR)/scripts/
|
||||
|
||||
CXX = @CC@
|
||||
CXXFLAGS += @CFLAGS@ -Wall -pedantic -fno-exceptions -fno-rtti \
|
||||
-D_GNU_SOURCE -DPACVER=\"$(PACVER)\" -I. \
|
||||
-Ilibtar-$(LIBTAR_VERSION)/lib -Ilibftp
|
||||
LDFLAGS += @LDFLAGS@ -static -Llibtar-$(LIBTAR_VERSION)/lib -Llibftp \
|
||||
-lftp -ltar -lz
|
||||
CXXFLAGS += @CFLAGS@ -g -Wall -pedantic -fno-exceptions -fno-rtti \
|
||||
-D_GNU_SOURCE -DPACVER=\"$(PACVER)\" -I. -Ilibftp
|
||||
LDFLAGS += @LDFLAGS@ -static -Llibftp -lftp -ltar -lz
|
||||
|
||||
SRCS = $(SRCDIR)pacman.c \
|
||||
$(SRCDIR)db.c \
|
||||
|
@ -70,7 +67,7 @@ OBJECTS = $(OBJDIR)pacman.o \
|
|||
$(OBJDIR)md5.o \
|
||||
$(OBJDIR)md5driver.o
|
||||
|
||||
all: libtar ftplib pacman vercmp convertdb man
|
||||
all: ftplib pacman vercmp convertdb man
|
||||
|
||||
pacman: $(OBJECTS)
|
||||
$(CXX) $(OBJECTS) -o $@ $(LDFLAGS)
|
||||
|
@ -96,12 +93,6 @@ dist: distclean
|
|||
ftplib:
|
||||
(cd libftp; make libftp.a)
|
||||
|
||||
libtar:
|
||||
(tar xzf libtar-$(LIBTAR_VERSION).tar.gz; \
|
||||
cd libtar-$(LIBTAR_VERSION); \
|
||||
LDFLAGS="" ./configure --disable-encap --disable-encap-install; \
|
||||
make;)
|
||||
|
||||
install: pacman vercmp convertdb man
|
||||
$(INSTALL) -D -m0755 pacman $(DESTDIR)$(BINDIR)/pacman
|
||||
$(INSTALL) -D -m0755 vercmp $(DESTDIR)$(BINDIR)/vercmp
|
||||
|
@ -120,6 +111,5 @@ clean:
|
|||
|
||||
distclean: clean
|
||||
rm -f pacman convertdb vercmp
|
||||
rm -rf libtar-$(LIBTAR_VERSION)
|
||||
|
||||
# End of file
|
||||
|
|
3
README
3
README
|
@ -2,6 +2,7 @@
|
|||
pacman - Package Management Utility
|
||||
|
||||
by Judd Vinet <jvinet@zeroflux.org>
|
||||
<http://www.archlinux.org/pacman/>
|
||||
|
||||
DESCRIPTION:
|
||||
------------
|
||||
|
@ -37,7 +38,7 @@ If your man files are located in a directory other than /usr/man, you may
|
|||
want to edit Makefile and modify the MANDIR line accordingly.
|
||||
|
||||
Note: Since pacman is compiled statically, you will need the static libraries
|
||||
for glibc and zlib.
|
||||
for libtar, glibc and zlib.
|
||||
|
||||
|
||||
BUGS:
|
||||
|
|
|
@ -41,7 +41,8 @@
|
|||
zero-length file name argument. */
|
||||
#undef HAVE_LSTAT_EMPTY_STRING_BUG
|
||||
|
||||
/* Define to 1 if your system has a working `malloc' function. */
|
||||
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
|
||||
to 0 otherwise. */
|
||||
#undef HAVE_MALLOC
|
||||
|
||||
/* Define to 1 if you have the `memmove' function. */
|
||||
|
@ -146,6 +147,9 @@
|
|||
/* Define to empty if `const' does not conform to ANSI C. */
|
||||
#undef const
|
||||
|
||||
/* Define to rpl_malloc if the replacement function should be used. */
|
||||
#undef malloc
|
||||
|
||||
/* Define to `int' if <sys/types.h> does not define. */
|
||||
#undef mode_t
|
||||
|
||||
|
|
23
configure.in
23
configure.in
|
@ -1,35 +1,46 @@
|
|||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.57)
|
||||
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
|
||||
AC_CONFIG_SRCDIR([acconfig.h])
|
||||
AC_CONFIG_SRCDIR([config.h.in])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_LN_S
|
||||
AC_PROG_MAKE_SET
|
||||
AC_PROG_CXX
|
||||
|
||||
# Checks for libraries.
|
||||
# AC_CHECK_LIB([tar], [tar_open])
|
||||
AC_CHECK_LIB([z], [gzread])
|
||||
AC_CHECK_LIB([c], [printf], , AC_MSG_ERROR([your libc is broken!]))
|
||||
AC_CHECK_LIB([tar], [tar_open], , AC_MSG_ERROR([missing libtar]))
|
||||
AC_CHECK_LIB([z], [gzread], , AC_MSG_ERROR([missing zlib]))
|
||||
|
||||
# Checks for header files.
|
||||
AC_HEADER_DIRENT
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h string.h unistd.h])
|
||||
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h unistd.h])
|
||||
|
||||
# Checks for typedefs, structures, and compiler characteristics.
|
||||
AC_C_CONST
|
||||
AC_TYPE_MODE_T
|
||||
AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
AC_TYPE_UID_T
|
||||
|
||||
# Checks for library functions.
|
||||
AC_FUNC_ALLOCA
|
||||
AC_FUNC_CLOSEDIR_VOID
|
||||
AC_FUNC_LSTAT
|
||||
AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
|
||||
AC_FUNC_MALLOC
|
||||
AC_FUNC_REALLOC
|
||||
AC_FUNC_SELECT_ARGTYPES
|
||||
AC_TYPE_SIGNAL
|
||||
AC_FUNC_STAT
|
||||
AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS([getpass memmove mkdir realpath rmdir strdup strerror strstr strverscmp])
|
||||
AC_CHECK_FUNCS([gethostbyname memmove memset mkdir realpath rmdir select socket strcasecmp strchr strdup strerror strstr strverscmp])
|
||||
|
||||
AC_CONFIG_FILES([Makefile])
|
||||
AC_OUTPUT
|
||||
|
|
|
@ -1,365 +0,0 @@
|
|||
Content-type: text/html
|
||||
|
||||
<HTML><HEAD><TITLE>Manpage of makepkg</TITLE>
|
||||
</HEAD><BODY>
|
||||
<H1>makepkg</H1>
|
||||
Section: (8)<BR>Updated: March 3, 2003<BR><A HREF="#index">Index</A>
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
||||
|
||||
<A NAME="lbAB"> </A>
|
||||
<H2>NAME</H2>
|
||||
|
||||
makepkg - package build utility
|
||||
<A NAME="lbAC"> </A>
|
||||
<H2>SYNOPSIS</H2>
|
||||
|
||||
<B>makepkg</B>
|
||||
<A NAME="lbAD"> </A>
|
||||
<H2>DESCRIPTION</H2>
|
||||
|
||||
<B>makepkg</B> will build packages for you. All it needs is
|
||||
a build-capable linux platform, wget, and some build scripts. The advantage
|
||||
to a script-based build is that you only really do the work once. Once you
|
||||
have the build script for a package, you just need to run makepkg and it
|
||||
will do the rest: download source files, check dependencies,
|
||||
configure the buildtime settings, build the package, install the package
|
||||
into a temporary root, make customizations, generate meta-info, and package
|
||||
the whole thing up for <B>pacman</B> to use.
|
||||
<P>
|
||||
<B>makeworld</B> can be used to rebuild an entire package group, or the
|
||||
entire build tree.
|
||||
<A NAME="lbAE"> </A>
|
||||
<H2>BUILD PROCESS (or How To Build Your Own Packages)</H2>
|
||||
|
||||
Start in an isolated directory (ie, it's not used for anything other
|
||||
than building this package). The build script should be called PKGBUILD
|
||||
and it should bear resemblance to the example below.
|
||||
<P>
|
||||
<B>NOTE:</B> If you have a local copy of the Arch Build System (ABS) tree
|
||||
on your computer, you can copy the PKGBUILD.proto file to your new package
|
||||
build directory and edit it from there. To acquire/sync the ABS tree, use
|
||||
the <B>abs</B> script included with pacman/makepkg.
|
||||
<P>
|
||||
<DL COMPACT>
|
||||
<DT><DT></DL>
|
||||
<A NAME="lbAF"> </A>
|
||||
<H2>PKGBUILD Example:</H2>
|
||||
|
||||
<DD>
|
||||
<DD>
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
pkgname=modutils
|
||||
pkgver=2.4.13
|
||||
pkgrel=1
|
||||
pkgdesc="Utilities for inserting and removing modules from the linux kernel"
|
||||
backup=(etc/modules.conf)
|
||||
depends=('glibc>=2.2.5' 'bash' 'zlib')
|
||||
source=(<A HREF="ftp://ftp.server.com/$pkgname-$pkgver.tar.gz">ftp://ftp.server.com/$pkgname-$pkgver.tar.gz</A> modules.conf)
|
||||
|
||||
build() {
|
||||
cd $startdir/src/$pkgname-$pkgver
|
||||
./configure --prefix=/usr
|
||||
make || return 1
|
||||
make prefix=$startdir/pkg/usr install
|
||||
# copy our custom modules.conf into the package root
|
||||
mkdir -p $startdir/pkg/etc
|
||||
cp ../modules.conf $startdir/pkg/etc
|
||||
}
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
As you can see, the setup is fairly simple. The first three lines define
|
||||
the package name and version info. They also define the final package name
|
||||
which will be of the form <I>$pkgname-$pkgver-$pkgrel.pkg.tar.gz</I>. The fourth
|
||||
line provides a brief description of the package. These four lines should
|
||||
be present in every PKGBUILD script.
|
||||
<P>
|
||||
The line with <I>backup=</I> specifies files that should be treated specially
|
||||
when removing or upgrading packages. See <B>HANDLING CONFIG FILES</B> in
|
||||
the <I>pacman</I> manpage for more information on this.
|
||||
<P>
|
||||
The sixth line lists the dependencies for this package. In order to build/run
|
||||
the package, all dependencies must be satisifed first. makepkg will check this
|
||||
before attempting to build the package.
|
||||
<P>
|
||||
Once your PKGBUILD is created, you can run <I>makepkg</I> from the build directory.
|
||||
makepkg will then check dependencies and look for the source files required to
|
||||
build. If some are missing it will attempt to download them, provided there is
|
||||
a fully-qualified URL in the <I>source</I> array.
|
||||
<P>
|
||||
The sources are then extracted into a directory called ./src and
|
||||
the <I>build</I> function is called. This is where all package configuration,
|
||||
building, and installing should be done. Any customization will likely take
|
||||
place here.
|
||||
<P>
|
||||
After a package is built, the <I>build</I> function must install the package
|
||||
files into a special package root, which can be referenced by <B>$startdir/pkg</B>
|
||||
in the <I>build</I> function. The typical way to do this is one of the following:
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
|
||||
make DESTDIR=$startdir/pkg install
|
||||
|
||||
or
|
||||
|
||||
make prefix=$startdir/pkg/usr install
|
||||
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
Notice that the "/usr" portion should be present with "prefix", but not "DESTDIR".
|
||||
<P>
|
||||
Once the package is successfully installed into the package root, <I>makepkg</I>
|
||||
will remove some directories (as per Arch Linux package guidelines; if you use
|
||||
this elsewhere, feel free to change it) like /usr/doc and /usr/info. It will
|
||||
then strip debugging info from libraries and binaries and generate a meta-info
|
||||
file. Finally, it will compress everything into a .pkg.tar.gz file and leave it
|
||||
in the directory you ran <B>makepkg</B> from.
|
||||
<P>
|
||||
At this point you should have a package file in the current directory, named
|
||||
something like name-version-release.pkg.tar.gz. Done!
|
||||
<P>
|
||||
<A NAME="lbAG"> </A>
|
||||
<H2>Install/Upgrade/Remove Scripting</H2>
|
||||
|
||||
Pacman has the ability to store and execute a package-specific script when it
|
||||
installs, removes, or upgrades a package. This allows a package to "configure
|
||||
itself" after installation and do the opposite right before it is removed.
|
||||
<P>
|
||||
The exact time the script is run varies with each operation:
|
||||
<DL COMPACT>
|
||||
<DT><B>post_install</B>
|
||||
|
||||
<DD>
|
||||
script is run right after files are installed.
|
||||
<P>
|
||||
<DT><B>post_upgrade</B>
|
||||
|
||||
<DD>
|
||||
script is run after all files have been upgraded.
|
||||
<P>
|
||||
<DT><B>pre_remove</B>
|
||||
|
||||
<DD>
|
||||
script is run right before files are removed.
|
||||
<P>
|
||||
|
||||
To use this feature, just create a file (eg, pkgname.install) and put it in
|
||||
the same directory as the PKGBUILD script. Then use the <I>install</I> directive:
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
install=pkgname.install
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
The install script does not need to be specified in the <I>source</I> array.
|
||||
<P>
|
||||
<DT><DT></DL>
|
||||
<A NAME="lbAH"> </A>
|
||||
<H2>Install scripts must follow this format:</H2>
|
||||
|
||||
<DD>
|
||||
<DD>
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
# arg 1: the new package version
|
||||
post_install() {
|
||||
#
|
||||
# do post-install stuff here
|
||||
#
|
||||
/bin/true
|
||||
}
|
||||
|
||||
# arg 1: the new package version
|
||||
# arg 2: the old package version
|
||||
post_upgrade() {
|
||||
#
|
||||
# do post-upgrade stuff here
|
||||
#
|
||||
/bin/true
|
||||
}
|
||||
|
||||
# arg 1: the old package version
|
||||
pre_remove() {
|
||||
#
|
||||
# do pre-remove stuff here
|
||||
#
|
||||
/bin/true
|
||||
}
|
||||
|
||||
op=$1
|
||||
shift
|
||||
|
||||
$op $*
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
This template is also available in your ABS tree (/usr/abs/install.proto).
|
||||
<P>
|
||||
<A NAME="lbAI"> </A>
|
||||
<H2>PKGBUILD Directives</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>pkgname</B>
|
||||
|
||||
<DD>
|
||||
The name of the package. This has be a unix-friendly name as it will be
|
||||
used in the package filename.
|
||||
<P>
|
||||
<DT><B>pkgver</B>
|
||||
|
||||
<DD>
|
||||
This is the version of the software as released from the author (eg, 2.7.1).
|
||||
<P>
|
||||
<DT><B>pkgrel</B>
|
||||
|
||||
<DD>
|
||||
This is the release number specific to Arch Linux packages.
|
||||
<P>
|
||||
<DT><B>pkgdesc</B>
|
||||
|
||||
<DD>
|
||||
This should be a brief description of the package and its functionality.
|
||||
<P>
|
||||
<DT><B>backup</B>
|
||||
|
||||
<DD>
|
||||
A space-delimited array of filenames (without a preceding slash). The
|
||||
<I>backup</I> line will be propagated to the package meta-info file for
|
||||
pacman. This will designate all files listed there to be backed up if this
|
||||
package is ever removed from a system. See <B>HANDLING CONFIG FILES</B> in
|
||||
the <I>pacman</I> manpage for more information.
|
||||
<P>
|
||||
<DT><B>install</B>
|
||||
|
||||
<DD>
|
||||
Specified a special install script that is to be included in the package.
|
||||
This file should reside in the same directory as the PKGBUILD, and will be
|
||||
copied into the package by makepkg. It does not need to be included in the
|
||||
<I>source</I> array. (eg, install=modutils.install)
|
||||
<P>
|
||||
<DT><B>depends</B>
|
||||
|
||||
<DD>
|
||||
An array of packages that this package depends on to build and run. Packages
|
||||
in this list should be surrounded with single quotes and contain at least the
|
||||
package name. They can also include a version requirement of the form
|
||||
<B>name<>version</B>, where <> is one of these three comparisons: <B>>=</B>
|
||||
(greater than equal to), <B><=</B> (less than or equal to), or <B>=</B> (equal to).
|
||||
See the PKGBUILD example above for an example of the <I>depends</I> directive.
|
||||
<P>
|
||||
<DT><B>conflicts</B>
|
||||
|
||||
<DD>
|
||||
An array of packages that will conflict with this package (ie, they cannot both
|
||||
be installed at the same time). This directive follows the same format as
|
||||
<I>depends</I> except you cannot specify versions here, only package names.
|
||||
<P>
|
||||
<DT><B>source</B>
|
||||
|
||||
<DD>
|
||||
The <I>source</I> line is an array of source files required to build the
|
||||
package. Source files must reside in the same directory as the PKGBUILD
|
||||
file, unless they have a fully-qualified URL. Then if the source file
|
||||
does not already exist in /var/cache/pacman/src, the file is downloaded
|
||||
by wget.
|
||||
<P>
|
||||
</DL>
|
||||
<A NAME="lbAJ"> </A>
|
||||
<H2>MAKEPKG OPTIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-c, --clean</B>
|
||||
|
||||
<DD>
|
||||
Clean up leftover work files/directories after a successful build.
|
||||
<DT><B>-i, --install</B>
|
||||
|
||||
<DD>
|
||||
Install/Upgrade the package after a successful build.
|
||||
<DT><B>-s, --syncdeps</B>
|
||||
|
||||
<DD>
|
||||
Install missing dependencies using pacman. When makepkg finds missing
|
||||
dependencies, it will run pacman to try and resolve them. If successful,
|
||||
pacman will download the missing packages from a package repository and
|
||||
install them for you.
|
||||
<DT><B>-b, --builddeps</B>
|
||||
|
||||
<DD>
|
||||
Build missing dependencies from source. When makepkg finds missing
|
||||
dependencies, it will look for the dependencies' PKGBUILD files under
|
||||
$ABSROOT (set in your /etc/makepkg.conf). If it finds them it will
|
||||
run another copy of makepkg to build and install the missing dependencies.
|
||||
The child makepkg calls will be made with the <B>-b</B> and <B>-i</B> options.
|
||||
<DT><B>-d, --nodeps</B>
|
||||
|
||||
<DD>
|
||||
Do not perform any dependency checks. This will let you override/ignore any
|
||||
dependencies required. There's a good chance this option will break the build
|
||||
process if all of the dependencies aren't installed.
|
||||
<DT><B>-f, --force</B>
|
||||
|
||||
<DD>
|
||||
<B>makepkg</B> will not build a package if a <I>pkgname-pkgver-pkgrel.pkg.tar.gz</I>
|
||||
file already exists in the build directory. You can override this behaviour with
|
||||
the <B>--force</B> switch.
|
||||
<P>
|
||||
</DL>
|
||||
<A NAME="lbAK"> </A>
|
||||
<H2>CONFIGURATION</H2>
|
||||
|
||||
Configuration options are stored in <I>/etc/makepkg.conf</I>. This file is parsed
|
||||
as a bash script, so you can export any special compiler flags you wish
|
||||
to use. This is helpful for building for different architectures, or with
|
||||
different optimizations.
|
||||
<P>
|
||||
<B>NOTE:</B> This does not guarantee that all package Makefiles will use
|
||||
your exported variables. Some of them are flaky...
|
||||
<A NAME="lbAL"> </A>
|
||||
<H2>SEE ALSO</H2>
|
||||
|
||||
<B>pacman</B> is the package manager that uses packages built by makepkg.
|
||||
<P>
|
||||
See the Arch Linux Documentation for package-building guidelines if you wish
|
||||
to contribute packages to the Arch Linux project.
|
||||
<A NAME="lbAM"> </A>
|
||||
<H2>AUTHOR</H2>
|
||||
|
||||
<PRE>
|
||||
Judd Vinet <<A HREF="mailto:jvinet@zeroflux.org">jvinet@zeroflux.org</A>>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
<A NAME="index"> </A><H2>Index</H2>
|
||||
<DL>
|
||||
<DT><A HREF="#lbAB">NAME</A><DD>
|
||||
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
|
||||
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
|
||||
<DT><A HREF="#lbAE">BUILD PROCESS (or How To Build Your Own Packages)</A><DD>
|
||||
<DT><A HREF="#lbAF">PKGBUILD Example:</A><DD>
|
||||
<DT><A HREF="#lbAG">Install/Upgrade/Remove Scripting</A><DD>
|
||||
<DT><A HREF="#lbAH">Install scripts must follow this format:</A><DD>
|
||||
<DT><A HREF="#lbAI">PKGBUILD Directives</A><DD>
|
||||
<DT><A HREF="#lbAJ">MAKEPKG OPTIONS</A><DD>
|
||||
<DT><A HREF="#lbAK">CONFIGURATION</A><DD>
|
||||
<DT><A HREF="#lbAL">SEE ALSO</A><DD>
|
||||
<DT><A HREF="#lbAM">AUTHOR</A><DD>
|
||||
</DL>
|
||||
<HR>
|
||||
This document was created by
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
|
||||
using the manual pages.<BR>
|
||||
Time: 17:22:11 GMT, March 04, 2003
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,8 +1,8 @@
|
|||
.TH makepkg 8 "March 3, 2003" "makepkg #VERSION#" ""
|
||||
.TH makepkg 8 "April 10, 2003" "makepkg #VERSION#" ""
|
||||
.SH NAME
|
||||
makepkg \- package build utility
|
||||
.SH SYNOPSIS
|
||||
\fBmakepkg\fP
|
||||
\fBmakepkg [options] [build_script]\fP
|
||||
.SH DESCRIPTION
|
||||
\fBmakepkg\fP will build packages for you. All it needs is
|
||||
a build-capable linux platform, wget, and some build scripts. The advantage
|
||||
|
@ -13,8 +13,8 @@ configure the buildtime settings, build the package, install the package
|
|||
into a temporary root, make customizations, generate meta-info, and package
|
||||
the whole thing up for \fBpacman\fP to use.
|
||||
|
||||
\fBmakeworld\fP can be used to rebuild an entire package group, or the
|
||||
entire build tree.
|
||||
\fBmakeworld\fP can be used to rebuild an entire package group or the
|
||||
entire build tree. See \fBmakeworld --help\fP for syntax.
|
||||
.SH BUILD PROCESS (or How To Build Your Own Packages)
|
||||
Start in an isolated directory (ie, it's not used for anything other
|
||||
than building this package). The build script should be called PKGBUILD
|
||||
|
@ -229,6 +229,9 @@ by wget.
|
|||
.B "\-c, \-\-clean"
|
||||
Clean up leftover work files/directories after a successful build.
|
||||
.TP
|
||||
.B "\-C, \-\-cleancache"
|
||||
Removes all source files from the cache directory to free up diskspace.
|
||||
.TP
|
||||
.B "\-i, \-\-install"
|
||||
Install/Upgrade the package after a successful build.
|
||||
.TP
|
||||
|
@ -254,6 +257,10 @@ process if all of the dependencies aren't installed.
|
|||
\fBmakepkg\fP will not build a package if a \fIpkgname-pkgver-pkgrel.pkg.tar.gz\fP
|
||||
file already exists in the build directory. You can override this behaviour with
|
||||
the \fB--force\fP switch.
|
||||
.TP
|
||||
.B "\-w <destdir>"
|
||||
Write the resulting package file to the directory \fI<destdir>\fP instead of the
|
||||
current working directory.
|
||||
|
||||
.SH CONFIGURATION
|
||||
Configuration options are stored in \fI/etc/makepkg.conf\fP. This file is parsed
|
||||
|
|
|
@ -1,306 +0,0 @@
|
|||
Content-type: text/html
|
||||
|
||||
<HTML><HEAD><TITLE>Manpage of pacman</TITLE>
|
||||
</HEAD><BODY>
|
||||
<H1>pacman</H1>
|
||||
Section: (8)<BR>Updated: January 20, 2003<BR><A HREF="#index">Index</A>
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
|
||||
|
||||
<A NAME="lbAB"> </A>
|
||||
<H2>NAME</H2>
|
||||
|
||||
pacman - package manager utility
|
||||
<A NAME="lbAC"> </A>
|
||||
<H2>SYNOPSIS</H2>
|
||||
|
||||
<B>pacman <operation> [options] <package> [package] ...</B>
|
||||
<A NAME="lbAD"> </A>
|
||||
<H2>DESCRIPTION</H2>
|
||||
|
||||
<B>pacman</B> is a <I>package management</I> utility that tracks installed
|
||||
packages on a linux system. It has simple dependency support and the ability
|
||||
to connect to a remote ftp server and automatically upgrade packages on
|
||||
the local system. pacman package are <I>gzipped tar</I> format.
|
||||
<A NAME="lbAE"> </A>
|
||||
<H2>OPERATIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-A, --add</B>
|
||||
|
||||
<DD>
|
||||
Add a package to the system. Package will be uncompressed
|
||||
into the installation root and the database will be updated.
|
||||
<DT><B>-R, --remove</B>
|
||||
|
||||
<DD>
|
||||
Remove a package from the system. Files belonging to the
|
||||
specified package will be deleted, and the database will
|
||||
be updated. Most configuration files will be saved with a
|
||||
<I>.pacsave</I> extension unless the <B>--nosave</B> option was
|
||||
used.
|
||||
<DT><B>-U, --upgrade</B>
|
||||
|
||||
<DD>
|
||||
Upgrade a package. This is essentially a "remove-then-add"
|
||||
process. See <B>HANDLING CONFIG FILES</B> for an explanation
|
||||
on how pacman takes care of config files.
|
||||
<DT><B>-F, --freshen</B>
|
||||
|
||||
<DD>
|
||||
This is like --upgrade except that, unlike --upgrade, this will only
|
||||
upgrade packages that are already installed on your system.
|
||||
<DT><B>-Q, --query</B>
|
||||
|
||||
<DD>
|
||||
Query the package database. This operation allows you to
|
||||
view installed packages and their files, as well as meta-info
|
||||
about individual packages (dependencies, conflicts, install date,
|
||||
build date, size). This can be run against the local package
|
||||
database or can be used on individual .tar.gz packages. See
|
||||
<B>QUERY OPTIONS</B> below.
|
||||
<DT><B>-S, --sync</B>
|
||||
|
||||
<DD>
|
||||
Synchronize packages. With this function you can install packages
|
||||
directly from the ftp servers, complete with all dependencies required
|
||||
to run the packages. For example, <B>pacman -S qt</B> will download
|
||||
qt and all the packages it depends on and install them. You could also use
|
||||
<B>pacman -Su</B> to upgrade all packages that are out of date (see below).
|
||||
<DT><B>-V, --version</B>
|
||||
|
||||
<DD>
|
||||
Display version and exit.
|
||||
<DT><B>-h, --help</B>
|
||||
|
||||
<DD>
|
||||
Display syntax for the given operation. If no operation was
|
||||
supplied then the general syntax is shown.
|
||||
</DL>
|
||||
<A NAME="lbAF"> </A>
|
||||
<H2>OPTIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-v, --verbose</B>
|
||||
|
||||
<DD>
|
||||
Output more status and error messages.
|
||||
<DT><B>-f, --force</B>
|
||||
|
||||
<DD>
|
||||
Bypass file conflict checks,, overwriting conflicting files. If the
|
||||
package that is about to be installed contains files that are already
|
||||
installed, this option will cause all those files to be overwritten.
|
||||
This option should be used with care, ideally not at all.
|
||||
<DT><B>-d, --nodeps</B>
|
||||
|
||||
<DD>
|
||||
Skips all dependency checks. Normally, pacman will always check
|
||||
a package's dependency fields to ensure that all dependencies are
|
||||
installed and there are no package conflicts in the system. This
|
||||
switch disables these checks.
|
||||
<DT><B>-n, --nosave</B>
|
||||
|
||||
<DD>
|
||||
(only used with <B>--remove</B>)
|
||||
Instructs pacman to ignore file backup designations. Normally, when
|
||||
a file is about to be <I>removed</I> from the system the database is first
|
||||
checked to see if the file should be renamed to a .pacsave extension. If
|
||||
<B>--nosave</B> is used, these designations are ignored and the files are
|
||||
removed.
|
||||
<DT><B>-r, --root <path></B>
|
||||
|
||||
<DD>
|
||||
Specify alternative installation root (default is "/"). This
|
||||
should <I>not</I> be used as a way to install software into
|
||||
e.g. /usr/local instead of /usr. Instead this should be used
|
||||
if you want to install a package on a temporary mounted partition,
|
||||
which is "owned" by another system. By using this option you not only
|
||||
specify where the software should be installed, but you also
|
||||
specify which package database to use.
|
||||
</DL>
|
||||
<A NAME="lbAG"> </A>
|
||||
<H2>SYNC OPTIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-y, --refresh</B>
|
||||
|
||||
<DD>
|
||||
Download a fresh copy of the master package list from the ftp server
|
||||
defined in <I>/etc/pacman.conf</I>. This should typically be used each
|
||||
time you use <B>--sysupgrade</B>.
|
||||
<DT><B>-u, --sysupgrade</B>
|
||||
|
||||
<DD>
|
||||
Upgrades all packages that are out of date. pacman will examine every
|
||||
package installed on the system, and if a newer package exists on the
|
||||
server it will upgrade. pacman will present a report of all packages
|
||||
it wants to upgrade and will not proceed without user confirmation.
|
||||
Dependencies are automatically resolved at this level and will be
|
||||
installed/upgraded if necessary.
|
||||
<DT><B>-s, --search <string></B>
|
||||
|
||||
<DD>
|
||||
This will search each package in the package list for names or descriptions
|
||||
that contains <string>.
|
||||
<DT><B>-w, --downloadonly</B>
|
||||
|
||||
<DD>
|
||||
Retrieve all packages from the server, but do not install/upgrade anything.
|
||||
<DT><B>-c, --clean</B>
|
||||
|
||||
<DD>
|
||||
Remove packages from the cache. When pacman downloads packages,
|
||||
it saves them in <I>/var/cache/pacman/pkg</I>. If you need to free up
|
||||
diskspace, you can remove these packages by using the --clean option.
|
||||
</DL>
|
||||
<A NAME="lbAH"> </A>
|
||||
<H2>QUERY OPTIONS</H2>
|
||||
|
||||
<DL COMPACT>
|
||||
<DT><B>-o, --owns <file></B>
|
||||
|
||||
<DD>
|
||||
Search for the package that owns <file>.
|
||||
<DT><B>-l, --list</B>
|
||||
|
||||
<DD>
|
||||
List all files owned by <package>. Multiple packages can be specified on
|
||||
the command line.
|
||||
<DT><B>-i, --info</B>
|
||||
|
||||
<DD>
|
||||
Display information on a given package. If it is used with the <B>-p</B>
|
||||
option then the .PKGINFO file will be printed.
|
||||
<DT><B>-p, --file</B>
|
||||
|
||||
<DD>
|
||||
Tells pacman that the package supplied on the command line is a
|
||||
file, not an entry in the database. Pacman will decompress the
|
||||
file and query it. This is useful with <B>--info</B> and <B>--list</B>.
|
||||
</DL>
|
||||
<A NAME="lbAI"> </A>
|
||||
<H2>HANDLING CONFIG FILES</H2>
|
||||
|
||||
pacman uses the same logic as rpm to determine action against files
|
||||
that are designated to be backed up. During an upgrade, it uses 3
|
||||
md5 hashes for each backup file to determine the required action:
|
||||
one for the original file installed, one for the new file that's about
|
||||
to be installed, and one for the actual file existing on the filesystem.
|
||||
After comparing these 3 hashes, the follow scenarios can result:
|
||||
<DL COMPACT>
|
||||
<DT>original=<B>X</B>, current=<B>X</B>, new=<B>X</B><DD>
|
||||
All three files are the same, so we win either way. Install the new file.
|
||||
<DT>original=<B>X</B>, current=<B>X</B>, new=<B>Y</B><DD>
|
||||
The current file is un-altered from the original but the new one is
|
||||
different. Since the user did not ever modify the file, and the new
|
||||
one may contain improvements/bugfixes, we install the new file.
|
||||
<DT>original=<B>X</B>, current=<B>Y</B>, new=<B>X</B><DD>
|
||||
Both package versions contain the exact same file, but the one
|
||||
on the filesystem has been modified since. In this case, we leave
|
||||
the current file in place.
|
||||
<DT>original=<B>X</B>, current=<B>Y</B>, new=<B>Y</B><DD>
|
||||
The new one is identical to the current one. Win win. Install the new file.
|
||||
<DT>original=<B>X</B>, current=<B>Y</B>, new=<B>Z</B><DD>
|
||||
All three files are different. So we install the new file, but back up the
|
||||
old one to a .pacsave extension. This way the user can move the old configuration
|
||||
file back into place if he wishes.
|
||||
</DL>
|
||||
<A NAME="lbAJ"> </A>
|
||||
<H2>CONFIGURATION</H2>
|
||||
|
||||
pacman will attempt to read <I>/etc/pacman.conf</I> each time it is invoked. This
|
||||
configuration file is divided into sections or <I>repositories</I>. Each section
|
||||
defines a package repository that pacman can use when searching for packages in
|
||||
--sync mode. The exception to this is the <I>options</I> section, which defines
|
||||
global options.
|
||||
<DL COMPACT>
|
||||
<DT></DL>
|
||||
<A NAME="lbAK"> </A>
|
||||
<H2>Example:</H2>
|
||||
|
||||
<DD>
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
[options]
|
||||
NoUpgrade = etc/passed etc/group etc/shadow
|
||||
NoUpgrade = etc/fstab
|
||||
|
||||
[current]
|
||||
Server = <A HREF="ftp://ftp.server.org/linux/archlinux/current">ftp://ftp.server.org/linux/archlinux/current</A>
|
||||
Server = <A HREF="ftp://ftp.mirror.com/arch/current">ftp://ftp.mirror.com/arch/current</A>
|
||||
|
||||
[custom]
|
||||
Server = <A HREF="local:///home/pkgs">local:///home/pkgs</A>
|
||||
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
All files listed with a <I>NoUpgrade</I> directive will never be touched during a package
|
||||
install/upgrade. This directive is only valid in the options section.
|
||||
<P>
|
||||
Each repository section defines a section name and at least one location where the packages
|
||||
can be found. The section name is defined by the string within square brackets (eg, the two
|
||||
above are 'current' and 'custom'). Locations are defined with the <I>Server</I> directive and
|
||||
follow a URL naming structure. Currently only ftp is supported for remote servers. If you
|
||||
want to use a local directory, you can specify the full path with a '<A HREF="local://'">local://'</A> prefix, as
|
||||
shown above.
|
||||
<A NAME="lbAL"> </A>
|
||||
<H2>USING YOUR OWN REPOSITORY</H2>
|
||||
|
||||
Let's say you have a bunch of custom packages in <I>/home/pkgs</I> and their respective PKGBUILD
|
||||
files are all in <I>/usr/abs/local</I>. All you need to do is generate a compressed package database
|
||||
in the <I>/home/pkgs</I> directory so pacman can find it when run with --refresh.
|
||||
<P>
|
||||
<DL COMPACT><DT><DD>
|
||||
<PRE>
|
||||
# gensync /usr/abs/local /home/pkgs/custom.db.tar.gz
|
||||
</PRE>
|
||||
|
||||
</DL>
|
||||
|
||||
<P>
|
||||
The above command will read all PKGBUILD files in /usr/abs/local and generate a compressed
|
||||
database called /home/pkgs/custom.db.tar.gz. Note that the database must be of the form
|
||||
<I>{treename}.db.tar.gz</I>, where {treename} is the name of the section defined in the
|
||||
configuration file.
|
||||
That's it! Now configure your <I>custom</I> section in the configuration file as shown in the
|
||||
config example above. Pacman will now use your package repository. If you add new packages to
|
||||
the repository, remember to re-generate the database and use pacman's --refresh option.
|
||||
<A NAME="lbAM"> </A>
|
||||
<H2>SEE ALSO</H2>
|
||||
|
||||
<B>makepkg</B> is the package-building tool that comes with pacman.
|
||||
<A NAME="lbAN"> </A>
|
||||
<H2>AUTHOR</H2>
|
||||
|
||||
<PRE>
|
||||
Judd Vinet <<A HREF="mailto:jvinet@zeroflux.org">jvinet@zeroflux.org</A>>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
|
||||
<HR>
|
||||
<A NAME="index"> </A><H2>Index</H2>
|
||||
<DL>
|
||||
<DT><A HREF="#lbAB">NAME</A><DD>
|
||||
<DT><A HREF="#lbAC">SYNOPSIS</A><DD>
|
||||
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
|
||||
<DT><A HREF="#lbAE">OPERATIONS</A><DD>
|
||||
<DT><A HREF="#lbAF">OPTIONS</A><DD>
|
||||
<DT><A HREF="#lbAG">SYNC OPTIONS</A><DD>
|
||||
<DT><A HREF="#lbAH">QUERY OPTIONS</A><DD>
|
||||
<DT><A HREF="#lbAI">HANDLING CONFIG FILES</A><DD>
|
||||
<DT><A HREF="#lbAJ">CONFIGURATION</A><DD>
|
||||
<DT><A HREF="#lbAK">Example:</A><DD>
|
||||
<DT><A HREF="#lbAL">USING YOUR OWN REPOSITORY</A><DD>
|
||||
<DT><A HREF="#lbAM">SEE ALSO</A><DD>
|
||||
<DT><A HREF="#lbAN">AUTHOR</A><DD>
|
||||
</DL>
|
||||
<HR>
|
||||
This document was created by
|
||||
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
|
||||
using the manual pages.<BR>
|
||||
Time: 17:22:16 GMT, March 04, 2003
|
||||
</BODY>
|
||||
</HTML>
|
|
@ -1,4 +1,4 @@
|
|||
.TH pacman 8 "January 20, 2003" "pacman #VERSION#" ""
|
||||
.TH pacman 8 "April 10, 2003" "pacman #VERSION#" ""
|
||||
.SH NAME
|
||||
pacman \- package manager utility
|
||||
.SH SYNOPSIS
|
||||
|
@ -76,6 +76,11 @@ checked to see if the file should be renamed to a .pacsave extension. If
|
|||
\fB--nosave\fP is used, these designations are ignored and the files are
|
||||
removed.
|
||||
.TP
|
||||
.B "\-c, \-\-cascade"
|
||||
(only used with \fB--remove\fP)
|
||||
Remove all target packages, as well as all packages that depend on one
|
||||
or more target packages. This operation is recursive.
|
||||
.TP
|
||||
.B "\-r, \-\-root <path>"
|
||||
Specify alternative installation root (default is "/"). This
|
||||
should \fInot\fP be used as a way to install software into
|
||||
|
@ -170,17 +175,28 @@ NoUpgrade = etc/passed etc/group etc/shadow
|
|||
NoUpgrade = etc/fstab
|
||||
|
||||
[current]
|
||||
Server = ftp://ftp.server.org/linux/archlinux/current
|
||||
Server = ftp://ftp.mirror.com/arch/current
|
||||
Server = ftp://ftp.archlinux.org/current
|
||||
Server = ftp://ftp.mirror.com/archlinux/current
|
||||
|
||||
[custom]
|
||||
Server = local:///home/pkgs
|
||||
|
||||
.fi
|
||||
.RE
|
||||
All files listed with a \fINoUpgrade\fP directive will never be touched during a package
|
||||
install/upgrade. This directive is only valid in the options section.
|
||||
.SH CONFIG: OPTIONS
|
||||
.TP
|
||||
.B "NoUpgrade = <file> [file] ..."
|
||||
All files listed with a \fBNoUpgrade\fP directive will never be touched during a package
|
||||
install/upgrade. \fINote:\fP do not include the leading slash when specifying files.
|
||||
.TP
|
||||
.B "IgnorePkg = <package> [package] ..."
|
||||
Instructs pacman to ignore any upgrades for this package when performing a
|
||||
\fB--sysupgrade\fP.
|
||||
.TP
|
||||
.B "NoPassiveFtp"
|
||||
Disables passive ftp connections when downloading packages. (aka Active Mode)
|
||||
|
||||
.SH CONFIG: REPOSITORIES
|
||||
Each repository section defines a section name and at least one location where the packages
|
||||
can be found. The section name is defined by the string within square brackets (eg, the two
|
||||
above are 'current' and 'custom'). Locations are defined with the \fIServer\fP directive and
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
# /etc/pacman.conf
|
||||
#
|
||||
|
||||
# See the pacman manpage for option directives
|
||||
|
||||
#
|
||||
# GENERAL OPTIONS
|
||||
# NoUpgrade: a space-delimited list of files that should never
|
||||
# be touched by pacman during an install/upgrade.
|
||||
# (note: do not include the leading slash)
|
||||
# IgnorePkg: a space-delimited list of packages that pacman should NOT
|
||||
# upgrade when doing a --sysupgrade
|
||||
#
|
||||
[options]
|
||||
NoUpgrade = etc/passwd etc/group etc/shadow
|
||||
NoUpgrade = etc/fstab etc/rc.conf etc/rc.local
|
||||
|
@ -24,6 +23,7 @@ Server = ftp://ftp.webtrek.com/pub/mirrors/archlinux/current
|
|||
Server = ftp://ftp.mpi-sb.mpg.de/pub/linux/mirror/ftp.ibiblio.org/pub/Linux/distributions/archlinux/current
|
||||
Server = ftp://ftp.oit.unc.edu/pub/Linux/distributions/archlinux/current
|
||||
Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/current
|
||||
Server = ftp://ftp.parrswood.net/Mirrors/ftp.archlinux.org/current
|
||||
Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/current
|
||||
Server = ftp://saule.mintis.lt/pub/linux/current
|
||||
Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/current
|
||||
|
@ -38,6 +38,7 @@ Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/current
|
|||
#Server = ftp://ftp.mpi-sb.mpg.de/pub/linux/mirror/ftp.ibiblio.org/pub/Linux/distributions/archlinux/stable
|
||||
#Server = ftp://ftp.oit.unc.edu/pub/Linux/distributions/archlinux/stable
|
||||
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/stable
|
||||
#Server = ftp://ftp.parrswood.net/Mirrors/ftp.archlinux.org/stable
|
||||
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/stable
|
||||
#Server = ftp://saule.mintis.lt/pub/linux/stable
|
||||
#Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/stable
|
||||
|
@ -51,6 +52,7 @@ Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/current
|
|||
#Server = ftp://ftp.mpi-sb.mpg.de/pub/linux/mirror/ftp.ibiblio.org/pub/Linux/distributions/archlinux/unofficial
|
||||
#Server = ftp://ftp.oit.unc.edu/pub/Linux/distributions/archlinux/unofficial
|
||||
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/unofficial
|
||||
#Server = ftp://ftp.parrswood.net/Mirrors/ftp.archlinux.org/unofficial
|
||||
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/unofficial
|
||||
#Server = ftp://saule.mintis.lt/pub/linux/unofficial
|
||||
#Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/unofficial
|
||||
|
@ -64,40 +66,13 @@ Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/current
|
|||
#Server = ftp://ftp.mpi-sb.mpg.de/pub/linux/mirror/ftp.ibiblio.org/pub/Linux/distributions/archlinux/unstable
|
||||
#Server = ftp://ftp.oit.unc.edu/pub/Linux/distributions/archlinux/unstable
|
||||
#Server = ftp://ftp.tu-chemnitz.de/pub/linux/sunsite.unc-mirror/distributions/archlinux/unstable
|
||||
#Server = ftp://ftp.parrswood.net/Mirrors/ftp.archlinux.org/unstable
|
||||
#Server = ftp://gd.tuwien.ac.at/opsys/linux/archlinux/unstable
|
||||
#Server = ftp://saule.mintis.lt/pub/linux/unstable
|
||||
#Server = ftp://ftp.rez-gif.supelec.fr/pub/Linux/distrib/archlinux/unstable
|
||||
|
||||
# This is a typical setup for a local package repository. To have pacman
|
||||
# resolve dependencies and install your custom packages with the --sync
|
||||
# operation, you must generate a sync db from your custom PKGBUILDs and
|
||||
# place it in the directory specified by the Server directive.
|
||||
#
|
||||
# # gensync /usr/abs/local /home/custompkgs/custom.db.tar.gz
|
||||
#
|
||||
# The sync database must be of the form {treename}.db.gz, where treename
|
||||
# is the name of the package tree (in this case, 'custom').
|
||||
#
|
||||
# Then you can activate this custom repository by uncommenting the last
|
||||
# two lines and using pacman as usual:
|
||||
#
|
||||
# # pacman -S --refresh
|
||||
# :: Synchronizing package databases...
|
||||
# current.db.tar.gz [#################################] 100% | 20K
|
||||
# custom.db.tar.gz [/home/custompkgs/ ] 100% | LOCAL
|
||||
#
|
||||
# # pacman -S my_custom_pkg
|
||||
#
|
||||
# Targets: my_custom_pkg-0.12-1
|
||||
#
|
||||
# Do you want to install/upgrade these packages? [Y/n]
|
||||
#
|
||||
# :: Retrieving packages from custom...
|
||||
# my_custom_pkg-0.12-1.pkg [/home/custompkgs/ ] 100% | LOCAL
|
||||
#
|
||||
# checking for conflicts... done.
|
||||
# installing my_custom_pkg... done.
|
||||
#
|
||||
# An example of a custom package repository. See the pacman manpage for
|
||||
# tips on creating your own repositories.
|
||||
#[custom]
|
||||
#Server = local:///home/custompkgs
|
||||
|
||||
|
|
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
myver='2.3.2'
|
||||
myver='2.4'
|
||||
|
||||
usage() {
|
||||
echo "gensync $myver"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
myver='2.3.2'
|
||||
myver='2.4'
|
||||
startdir=`pwd`
|
||||
|
||||
[ -f /etc/makepkg.conf ] && source /etc/makepkg.conf
|
||||
|
@ -46,8 +46,7 @@ checkdeps() {
|
|||
}
|
||||
|
||||
|
||||
if [ "$1" = "--help" -o "$1" = "-h" ]; then
|
||||
shift
|
||||
usage() {
|
||||
echo "makepkg version $myver"
|
||||
echo "usage: $0 [options] [build_script]"
|
||||
echo "options:"
|
||||
|
@ -58,13 +57,14 @@ if [ "$1" = "--help" -o "$1" = "-h" ]; then
|
|||
echo " -d, --nodeps Skip all dependency checks"
|
||||
echo " -i, --install Install package after successful build"
|
||||
echo " -f, --force Overwrite existing package"
|
||||
echo " -w <destdir> Write package to <destdir> instead of the working dir"
|
||||
echo " -h, --help This help"
|
||||
echo
|
||||
echo " if build_script is not specified, makepkg will look for a PKGBUILD"
|
||||
echo " file in the current directory."
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
# Options
|
||||
CLEANUP=0
|
||||
|
@ -74,35 +74,54 @@ DEP_BIN=0
|
|||
DEP_SRC=0
|
||||
NODEPS=0
|
||||
FORCE=0
|
||||
PKGDEST=$startdir
|
||||
BUILDSCRIPT="./PKGBUILD"
|
||||
|
||||
for arg in $*; do
|
||||
case $arg in
|
||||
-c|--clean)
|
||||
CLEANUP=1
|
||||
while [ "$#" -ne "0" ]; do
|
||||
case $1 in
|
||||
--clean) CLEANUP=1 ;;
|
||||
--cleancache) CLEANCACHE=1 ;;
|
||||
--syncdeps) DEP_BIN=1 ;;
|
||||
--builddeps) DEP_SRC=1 ;;
|
||||
--nodeps) NODEPS=1 ;;
|
||||
--install) INSTALL=1 ;;
|
||||
--force) FORCE=1 ;;
|
||||
--*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
-C|--cleancache)
|
||||
CLEANCACHE=1
|
||||
;;
|
||||
-s|--syncdeps)
|
||||
DEP_BIN=1
|
||||
;;
|
||||
-b|--builddeps)
|
||||
DEP_SRC=1
|
||||
;;
|
||||
-d|--nodeps)
|
||||
NODEPS=1
|
||||
;;
|
||||
-i|--install)
|
||||
INSTALL=1
|
||||
;;
|
||||
-f|--force)
|
||||
FORCE=1
|
||||
-*)
|
||||
while getopts "cCsbdifw:-" opt; do
|
||||
case $opt in
|
||||
c) CLEANUP=1 ;;
|
||||
C) CLEANCACHE=1 ;;
|
||||
s) DEP_BIN=1 ;;
|
||||
b) DEP_SRC=1 ;;
|
||||
d) NODEPS=1 ;;
|
||||
i) INSTALL=1 ;;
|
||||
f) FORCE=1 ;;
|
||||
w)
|
||||
PKGDEST=$OPTARG
|
||||
shift
|
||||
;;
|
||||
-)
|
||||
OPTIND=0
|
||||
break
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
*)
|
||||
BUILDSCRIPT=$arg
|
||||
if [ "$#" -ne "1" ]; then
|
||||
usage
|
||||
fi
|
||||
BUILDSCRIPT=$1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$CLEANCACHE" = "1" ]; then
|
||||
|
@ -132,7 +151,7 @@ if [ `echo $pkgrel | grep '-'` ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f ${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz -a "$FORCE" = "0" ]; then
|
||||
if [ -f $PKGDEST/${pkgname}-${pkgver}-${pkgrel}.pkg.tar.gz -a "$FORCE" = "0" ]; then
|
||||
msg "==> ERROR: a package has already been built. (use -f to overwrite)"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -170,7 +189,7 @@ if [ `type -p pacman` -a "$NODEPS" = "0" ]; then
|
|||
for pkgdir in $candidates; do
|
||||
if [ -f $pkgdir/PKGBUILD ]; then
|
||||
cd $pkgdir
|
||||
makepkg -i -c -b
|
||||
makepkg -i -c -b -w $PKGDEST
|
||||
if [ $? -eq 0 ]; then
|
||||
success=1
|
||||
break
|
||||
|
@ -356,9 +375,9 @@ fi
|
|||
msg "==> Compressing package..."
|
||||
cd $startdir/pkg
|
||||
if [ -f $startdir/pkg/._install ]; then
|
||||
tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO ._install * >../filelist
|
||||
tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO ._install * >../filelist
|
||||
else
|
||||
tar czvf $startdir/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO * >../filelist
|
||||
tar czvf $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz .PKGINFO * >../filelist
|
||||
fi
|
||||
|
||||
cd $startdir
|
||||
|
@ -372,7 +391,7 @@ msg "==> Finished making $pkgname ($d)"
|
|||
|
||||
if [ "$INSTALL" = "1" ]; then
|
||||
msg "==> Running pacman --upgrade"
|
||||
pacman --upgrade $pkgname-$pkgver-$pkgrel.pkg.tar.gz
|
||||
pacman --upgrade $PKGDEST/$pkgname-$pkgver-$pkgrel.pkg.tar.gz
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
toplevel=`pwd`
|
||||
version="2.3.2"
|
||||
version="2.4"
|
||||
|
||||
usage() {
|
||||
echo "makeworld version $version"
|
||||
|
@ -29,23 +29,31 @@ fi
|
|||
MAKEPKG_OPTS=
|
||||
for arg in $*; do
|
||||
case $arg in
|
||||
-c|--clean)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -c"
|
||||
--clean) MAKEPKG_OPTS="$MAKEPKG_OPTS -c" ;;
|
||||
--install) MAKEPKG_OPTS="$MAKEPKG_OPTS -i" ;;
|
||||
--syncdeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -s" ;;
|
||||
--builddeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -b" ;;
|
||||
--nodeps) MAKEPKG_OPTS="$MAKEPKG_OPTS -d" ;;
|
||||
--force) MAKEPKG_OPTS="$MAKEPKG_OPTS -f" ;;
|
||||
--*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
-i|--install)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -i"
|
||||
;;
|
||||
-s|--syncdeps)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -d"
|
||||
;;
|
||||
-b|--builddeps)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -b"
|
||||
;;
|
||||
-d|--nodeps)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -n"
|
||||
;;
|
||||
-f|--force)
|
||||
MAKEPKG_OPTS="$MAKEPKG_OPTS -f"
|
||||
-*)
|
||||
while getopts "cisbdf-" opt; do
|
||||
case $opt in
|
||||
c) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -c" ;;
|
||||
i) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -i" ;;
|
||||
s) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -s" ;;
|
||||
b) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -b" ;;
|
||||
d) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -d" ;;
|
||||
f) MAKEPKGS_OPTS="$MAKEPKGS_OPTS -f" ;;
|
||||
-)
|
||||
OPTIND=0
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
;;
|
||||
*)
|
||||
dest=$arg
|
||||
|
@ -73,13 +81,10 @@ for category in $*; do
|
|||
. PKGBUILD
|
||||
buildstatus=0
|
||||
if [ ! -f $dest/$pkgname-$pkgver-$pkgrel.pkg.tar.gz ]; then
|
||||
makepkg $MAKEPKG_OPTS 2>>$toplevel/makepkg.log
|
||||
makepkg $MAKEPKG_OPTS -w $dest 2>>$toplevel/makepkg.log
|
||||
if [ $? -gt 0 ]; then
|
||||
buildstatus=2
|
||||
else
|
||||
rm -rf pkg src
|
||||
# some packages (mozilla) have been split into multiple packages
|
||||
mv -v $pkgname-*.pkg.tar.gz $dest/
|
||||
buildstatus=1
|
||||
fi
|
||||
fi
|
||||
|
|
Binary file not shown.
|
@ -124,16 +124,13 @@ int parse_descfile(char *descfile, pkginfo_t *info, PMList **backup, int output)
|
|||
|
||||
while(!feof(fp)) {
|
||||
fgets(line, PATH_MAX, fp);
|
||||
if(output) {
|
||||
printf("%s", line);
|
||||
}
|
||||
linenum++;
|
||||
trim(line);
|
||||
if(line[0] == '#') {
|
||||
if(strlen(line) == 0 || line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
if(strlen(line) == 0) {
|
||||
continue;
|
||||
if(output) {
|
||||
printf("%s\n", line);
|
||||
}
|
||||
ptr = line;
|
||||
key = strsep(&ptr, "=");
|
||||
|
|
138
src/pacman.c
138
src/pacman.c
|
@ -53,7 +53,7 @@ char* MDFile(char *);
|
|||
*
|
||||
*/
|
||||
|
||||
/* pacman options */
|
||||
/* command line options */
|
||||
char *pmo_root = NULL;
|
||||
unsigned short pmo_op = PM_MAIN;
|
||||
unsigned short pmo_verbose = 0;
|
||||
|
@ -70,13 +70,16 @@ unsigned short pmo_q_isfile = 0;
|
|||
unsigned short pmo_q_info = 0;
|
||||
unsigned short pmo_q_list = 0;
|
||||
unsigned short pmo_q_owns = 0;
|
||||
unsigned short pmo_r_cascade = 0;
|
||||
unsigned short pmo_s_upgrade = 0;
|
||||
unsigned short pmo_s_downloadonly = 0;
|
||||
unsigned short pmo_s_sync = 0;
|
||||
unsigned short pmo_s_search = 0;
|
||||
unsigned short pmo_s_clean = 0;
|
||||
PMList *pmo_noupgrade = NULL;
|
||||
PMList *pmo_ignorepkg = NULL;
|
||||
/* configuration file options */
|
||||
PMList *pmo_noupgrade = NULL;
|
||||
PMList *pmo_ignorepkg = NULL;
|
||||
unsigned short pmo_nopassiveftp = 0;
|
||||
|
||||
|
||||
/* list of sync_t structs for sync locations */
|
||||
|
@ -776,7 +779,9 @@ int pacman_add(pacdb_t *db, PMList *targets)
|
|||
}
|
||||
printf("done.\n");
|
||||
|
||||
if(!pmo_nodeps) {
|
||||
/* No need to check deps if pacman_add was called during a sync:
|
||||
* it is already done in pacman_sync. */
|
||||
if(!pmo_nodeps && pmo_op != PM_SYNC) {
|
||||
vprint("checking dependencies...\n");
|
||||
lp = checkdeps(db, (pmo_upgrade ? PM_UPGRADE : PM_ADD), alltargs);
|
||||
if(lp) {
|
||||
|
@ -1052,13 +1057,25 @@ int pacman_add(pacdb_t *db, PMList *targets)
|
|||
} /*else*/ {
|
||||
time_t t = time(NULL);
|
||||
|
||||
/* if this is an upgrade then propagate the old package's requiredby list over to
|
||||
* the new package */
|
||||
if(pmo_upgrade && oldpkg) {
|
||||
list_free(info->requiredby);
|
||||
info->requiredby = NULL;
|
||||
for(lp = oldpkg->requiredby; lp; lp = lp->next) {
|
||||
info->requiredby = list_add(info->requiredby, strdup(lp->data));
|
||||
/* Update the requiredby field by scaning the whole database
|
||||
* looking for packages depending on the package to add */
|
||||
for(lp = pm_packages; lp; lp = lp->next) {
|
||||
pkginfo_t *tmpp = NULL;
|
||||
PMList *tmppm = NULL;
|
||||
|
||||
tmpp = db_scan(db, ((pkginfo_t*)lp->data)->name, INFRQ_DEPENDS);
|
||||
if (tmpp == NULL) {
|
||||
continue;
|
||||
}
|
||||
for(tmppm = tmpp->depends; tmppm; tmppm = tmppm->next) {
|
||||
depend_t depend;
|
||||
if(splitdep(tmppm->data, &depend)) {
|
||||
continue;
|
||||
}
|
||||
if(tmppm->data && !strcmp(depend.name, info->name)) {
|
||||
info->requiredby = list_add(info->requiredby, strdup(tmpp->name));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1156,13 +1173,50 @@ int pacman_remove(pacdb_t *db, PMList *targets)
|
|||
vprint("Checking dependencies...\n");
|
||||
lp = checkdeps(db, PM_REMOVE, alltargs);
|
||||
if(lp) {
|
||||
fprintf(stderr, "error: this will break the following dependencies:\n");
|
||||
for(j = lp; j; j = j->next) {
|
||||
depmissing_t* miss = (depmissing_t*)j->data;
|
||||
printf(" %s: is required by %s\n", miss->target, miss->depend.name);
|
||||
if(pmo_r_cascade) {
|
||||
int cols;
|
||||
while(lp) {
|
||||
for(j = lp; j; j = j->next) {
|
||||
depmissing_t* miss = (depmissing_t*)j->data;
|
||||
miss = (depmissing_t*)j->data;
|
||||
info = db_scan(db, miss->depend.name, INFRQ_ALL);
|
||||
list_add(alltargs, info);
|
||||
}
|
||||
list_free(lp);
|
||||
lp = checkdeps(db, PM_REMOVE, alltargs);
|
||||
}
|
||||
/* list targets */
|
||||
fprintf(stderr, "\nTargets: ");
|
||||
cols = 9;
|
||||
for(j = alltargs; j; j = j->next) {
|
||||
char t[PATH_MAX];
|
||||
int len;
|
||||
snprintf(t, PATH_MAX, "%s ", (char*)j->data);
|
||||
len = strlen(t);
|
||||
if(len+cols > 78) {
|
||||
cols = 9;
|
||||
fprintf(stderr, "\n%9s", " ");
|
||||
}
|
||||
fprintf(stderr, "%s", t);
|
||||
cols += len;
|
||||
}
|
||||
printf("\n");
|
||||
/* get confirmation */
|
||||
if(yesno("\nDo you want to remove these packages? [Y/n] ") == 0) {
|
||||
list_free(alltargs);
|
||||
list_free(lp);
|
||||
return(1);
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "error: this will break the following dependencies:\n");
|
||||
for(j = lp; j; j = j->next) {
|
||||
depmissing_t* miss = (depmissing_t*)j->data;
|
||||
printf(" %s: is required by %s\n", miss->target, miss->depend.name);
|
||||
}
|
||||
list_free(alltargs);
|
||||
list_free(lp);
|
||||
return(1);
|
||||
}
|
||||
list_free(lp);
|
||||
return(1);
|
||||
}
|
||||
list_free(lp);
|
||||
}
|
||||
|
@ -1286,6 +1340,8 @@ int pacman_remove(pacdb_t *db, PMList *targets)
|
|||
}
|
||||
}
|
||||
|
||||
list_free(alltargs);
|
||||
|
||||
/* run ldconfig if it exists */
|
||||
snprintf(line, PATH_MAX, "%setc/ld.so.conf", pmo_root);
|
||||
if(!stat(line, &buf)) {
|
||||
|
@ -1321,7 +1377,7 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
/* output info for a .tar.gz package */
|
||||
if(pmo_q_isfile) {
|
||||
if(package == NULL) {
|
||||
fprintf(stderr, "error: no package file was specified (-p)\n");
|
||||
fprintf(stderr, "error: no package file was specified for --file\n");
|
||||
return(1);
|
||||
}
|
||||
info = load_pkg(package, pmo_q_info);
|
||||
|
@ -1329,16 +1385,16 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
fprintf(stderr, "error: %s is not a package\n", package);
|
||||
return(1);
|
||||
}
|
||||
if(pmo_q_list) {
|
||||
if(pmo_q_info) {
|
||||
printf("\n");
|
||||
} else if(pmo_q_list) {
|
||||
for(lp = info->files; lp; lp = lp->next) {
|
||||
if(strcmp(lp->data, ".PKGINFO")) {
|
||||
printf("%s\n", (char*)lp->data);
|
||||
printf("%s %s\n", info->name, (char*)lp->data);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(!pmo_q_info) {
|
||||
printf("%s %s\n", info->name, info->version);
|
||||
}
|
||||
} else if(!pmo_q_info) {
|
||||
printf("%s %s\n", info->name, info->version);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
@ -1357,7 +1413,7 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
for(lp = info->files; lp; lp = lp->next) {
|
||||
sprintf(path, "%s%s", pmo_root, (char*)lp->data);
|
||||
if(!strcmp(path, rpath)) {
|
||||
printf("%s %s\n", info->name, info->version);
|
||||
printf("%s is owned by %s %s\n", package, info->name, info->version);
|
||||
gotcha = 1;
|
||||
}
|
||||
}
|
||||
|
@ -1365,7 +1421,7 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
if(!gotcha) {
|
||||
fprintf(stderr, "No package owns %s\n", package);
|
||||
}
|
||||
return(2);
|
||||
continue;
|
||||
} else {
|
||||
fprintf(stderr, "error: %s is not a file.\n", package);
|
||||
return(1);
|
||||
|
@ -1384,7 +1440,7 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
return(1);
|
||||
}
|
||||
for(q = info->files; q; q = q->next) {
|
||||
printf("%s%s\n", pmo_root, (char*)q->data);
|
||||
printf("%s %s%s\n", info->name, pmo_root, (char*)q->data);
|
||||
}
|
||||
} else {
|
||||
printf("%s %s\n", tmpp->name, tmpp->version);
|
||||
|
@ -1392,16 +1448,7 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
}
|
||||
} else {
|
||||
/* find a target */
|
||||
if(pmo_q_list) {
|
||||
info = db_scan(db, package, INFRQ_DESC | INFRQ_FILES);
|
||||
if(info == NULL) {
|
||||
fprintf(stderr, "Package \"%s\" was not found.\n", package);
|
||||
return(2);
|
||||
}
|
||||
for(lp = info->files; lp; lp = lp->next) {
|
||||
printf("%s%s\n", pmo_root, (char*)lp->data);
|
||||
}
|
||||
} else if(pmo_q_info) {
|
||||
if(pmo_q_info) {
|
||||
int cols;
|
||||
|
||||
info = db_scan(db, package, INFRQ_DESC | INFRQ_DEPENDS);
|
||||
|
@ -1467,6 +1514,15 @@ int pacman_query(pacdb_t *db, PMList *targets)
|
|||
}
|
||||
printf("Description : %s\n", info->desc);
|
||||
printf("\n");
|
||||
} else if(pmo_q_list) {
|
||||
info = db_scan(db, package, INFRQ_DESC | INFRQ_FILES);
|
||||
if(info == NULL) {
|
||||
fprintf(stderr, "Package \"%s\" was not found.\n", package);
|
||||
return(2);
|
||||
}
|
||||
for(lp = info->files; lp; lp = lp->next) {
|
||||
printf("%s %s%s\n", info->name, pmo_root, (char*)lp->data);
|
||||
}
|
||||
} else {
|
||||
info = db_scan(db, package, INFRQ_DESC);
|
||||
if(info == NULL) {
|
||||
|
@ -1833,20 +1889,20 @@ int splitdep(char *depstr, depend_t *depend)
|
|||
} else {
|
||||
/* no version specified - accept any */
|
||||
depend->mod = DEP_ANY;
|
||||
strcpy(depend->name, str);
|
||||
strcpy(depend->version, "");
|
||||
strncpy(depend->name, str, sizeof(depend->name));
|
||||
strncpy(depend->version, "", sizeof(depend->version));
|
||||
}
|
||||
|
||||
if(ptr == NULL) {
|
||||
return(0);
|
||||
}
|
||||
*ptr = '\0';
|
||||
strcpy(depend->name, str);
|
||||
strncpy(depend->name, str, sizeof(depend->name));
|
||||
ptr++;
|
||||
if(depend->mod != DEP_EQ) {
|
||||
ptr++;
|
||||
}
|
||||
strcpy(depend->version, ptr);
|
||||
strncpy(depend->version, ptr, sizeof(depend->version));
|
||||
FREE(str);
|
||||
return(0);
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#define _PAC_PACMAN_H
|
||||
|
||||
#ifndef PACVER
|
||||
#define PACVER "2.3.2"
|
||||
#define PACVER "2.4"
|
||||
#endif
|
||||
|
||||
#ifndef PKGDIR
|
||||
|
|
|
@ -42,6 +42,7 @@ static int offset;
|
|||
|
||||
/* pacman options */
|
||||
extern char *pmo_root;
|
||||
extern unsigned char pmo_nopassiveftp;
|
||||
|
||||
/* sync servers */
|
||||
extern PMList *pmc_syncs;
|
||||
|
@ -150,10 +151,12 @@ int downloadfiles(PMList *servers, char *localpath, PMList *files)
|
|||
sync_fnm[24] = '\0';
|
||||
|
||||
if(!server->islocal) {
|
||||
/* passive mode */
|
||||
/* TODO: make passive ftp an option */
|
||||
if(!FtpOptions(FTPLIB_CONNMODE, FTPLIB_PASSIVE, control)) {
|
||||
fprintf(stderr, "warning: failed to set passive mode\n");
|
||||
if(!pmo_nopassiveftp) {
|
||||
if(!FtpOptions(FTPLIB_CONNMODE, FTPLIB_PASSIVE, control)) {
|
||||
fprintf(stderr, "warning: failed to set passive mode\n");
|
||||
}
|
||||
} else {
|
||||
vprint("FTP passive mode not set\n");
|
||||
}
|
||||
if(!FtpSize(fn, &fsz, FTPLIB_IMAGE, control)) {
|
||||
fprintf(stderr, "warning: failed to get filesize for %s\n", fn);
|
||||
|
|
28
src/util.c
28
src/util.c
|
@ -37,6 +37,7 @@
|
|||
#include "pacsync.h"
|
||||
#include "pacman.h"
|
||||
|
||||
/* command line options */
|
||||
extern char* pmo_root;
|
||||
extern unsigned short pmo_op;
|
||||
extern unsigned short pmo_version;
|
||||
|
@ -53,13 +54,16 @@ extern unsigned short pmo_q_isfile;
|
|||
extern unsigned short pmo_q_info;
|
||||
extern unsigned short pmo_q_list;
|
||||
extern unsigned short pmo_q_owns;
|
||||
extern unsigned short pmo_r_cascade;
|
||||
extern unsigned short pmo_s_sync;
|
||||
extern unsigned short pmo_s_search;
|
||||
extern unsigned short pmo_s_clean;
|
||||
extern unsigned short pmo_s_upgrade;
|
||||
extern unsigned short pmo_s_downloadonly;
|
||||
/* configuration file options */
|
||||
extern PMList *pmo_noupgrade;
|
||||
extern PMList *pmo_ignorepkg;
|
||||
extern unsigned short pmo_nopassiveftp;
|
||||
|
||||
extern PMList *pmc_syncs;
|
||||
extern PMList *pm_targets;
|
||||
|
@ -164,6 +168,7 @@ int parseargs(int op, int argc, char **argv)
|
|||
{"sysupgrade", no_argument, 0, 'u'},
|
||||
{"downloadonly", no_argument, 0, 'w'},
|
||||
{"refresh", no_argument, 0, 'y'},
|
||||
{"cascade", no_argument, 0, 'c'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
|
@ -196,7 +201,7 @@ int parseargs(int op, int argc, char **argv)
|
|||
case 'w': pmo_s_downloadonly = 1; break;
|
||||
case 'y': pmo_s_sync = 1; break;
|
||||
case 's': pmo_s_search = 1; break;
|
||||
case 'c': pmo_s_clean = 1; break;
|
||||
case 'c': pmo_s_clean = 1; pmo_r_cascade = 1; break;
|
||||
case 'r': if(realpath(optarg, pmo_root) == NULL) {
|
||||
perror("bad root path");
|
||||
return(1);
|
||||
|
@ -249,10 +254,7 @@ int parseconfig(char *configfile)
|
|||
while(fgets(line, PATH_MAX, fp)) {
|
||||
linenum++;
|
||||
trim(line);
|
||||
if(strlen(line) == 0) {
|
||||
continue;
|
||||
}
|
||||
if(line[0] == '#') {
|
||||
if(strlen(line) == 0 || line[0] == '#') {
|
||||
continue;
|
||||
}
|
||||
if(line[0] == '[' && line[strlen(line)-1] == ']') {
|
||||
|
@ -286,12 +288,21 @@ int parseconfig(char *configfile)
|
|||
}
|
||||
ptr = line;
|
||||
key = strsep(&ptr, "=");
|
||||
if(key == NULL || ptr == NULL) {
|
||||
if(key == NULL) {
|
||||
fprintf(stderr, "config: line %d: syntax error\n", linenum);
|
||||
return(1);
|
||||
}
|
||||
trim(key);
|
||||
key = strtoupper(key);
|
||||
if(ptr == NULL) {
|
||||
if(!strcmp(key, "NOPASSIVEFTP")) {
|
||||
pmo_nopassiveftp = 1;
|
||||
vprint("config: nopassiveftp\n");
|
||||
} else {
|
||||
fprintf(stderr, "config: line %d: syntax error\n", linenum);
|
||||
return(1);
|
||||
}
|
||||
} else {
|
||||
trim(key);
|
||||
key = strtoupper(key);
|
||||
trim(ptr);
|
||||
if(!strcmp(section, "options")) {
|
||||
if(!strcmp(key, "NOUPGRADE")) {
|
||||
|
@ -517,6 +528,7 @@ void usage(int op, char *myname)
|
|||
printf("options:\n");
|
||||
printf(" -d, --nodeps skip dependency checks\n");
|
||||
printf(" -n, --nosave remove configuration files as well\n");
|
||||
printf(" -c, --cascade remove packages and all packages that depend on them\n");
|
||||
} else if(op == PM_UPGRADE) {
|
||||
if(pmo_freshen) {
|
||||
printf("usage: %s {-F --freshen} [options] <file>\n", myname);
|
||||
|
|
Loading…
Add table
Reference in a new issue