Hi, We discussed previously on the list ([1]) the possibility of custom (home-made) mini-repositories : an excerpt of the archive at debian-ports with the bare minimum to use an unmodified version of debootstrap.
The general opinion was that patching debootstrap for debian-ports would be better. Just for completeness, here are updated versions of the scripts 'installable.py' and 'dpo_ad_hoc.sh' that I used as an illustration. (In the following, there are patches to correct the scripts in [1] : there are no Packages.bz2 files in the regular debian archive any more) Some examples : * A mini-repository for alpha with a SCSI firmware and a bootloader could be built as : ./installable.py -a alpha -m http://ftp.de.debian.org/debian-ports \ -w some_scratch -P listep-alpha ./dpo_ad_hoc.sh -w some_scratch -a alpha \ -M http://ftp.de.debian.org/debian-ports \ -N http://ftp.de.debian.org/debian \ -l listep-alpha \ -p "aboot/1.0~pre20040408-4,aboot-base/1.0~pre20040408-4" \ -d my_repository -g -r "firmware-qlogic/0.43" To make a chroot as root : debootstrap --arch=alpha --components=main,non-free --no-check-gpg \ --include=debian-ports-archive-keyring,aboot,aboot-base,firmware-qlogic \ unstable my_chroot file:///$(readlink -f my_repository) cat > my_chroot/etc/apt/sources.list <<EOF deb http://ftp.de.debian.org/debian-ports unstable main deb http://ftp.de.debian.org/debian-ports unreleased main EOF * In the m68k archive, aptitude and aptitude-common version numbers do not match : - aptitude-common (Version: 0.6.10-1) - aptitude (Version: 0.6.8.2-1.2) (as it stood Wed Jun 4 23:13:38 UTC 2014) (In this example, package validation requires an old key from debian-ports : wget http://ftp.debian-ports.org/archive/archive_2013.key gpg --keyring ./my_keyring.gpg --no-default-keyring --import archive_2013.key gpg --keyring ./my_keyring.gpg --no-default-keyring --import /usr/share/keyrings/debian-ports-archive-keyring.gpg ) ./installable.py -a m68k -w some_scratch -P listep-m68k \ --exclude=aptitude,aptitude-common ./dpo_ad_hoc.sh -w some_scratch -a m68k -k ./my_keyring.gpg \ -l listep-m68k -p "aptitude/0.6.8.2-1.2" \ -d my_repository -g -s 20140120T071908Z "aptitude-common/0.6.8.2-1.2" The last step as root (untested) : debootstrap --arch=m68k --no-check-gpg --include=debian-ports-archive-keyring \ unstable my_chroot file:///$(readlink -f my_repository) cat > my_chroot/etc/apt/sources.list <<EOF deb http://ftp.debian-ports.org/debian unstable main deb http://ftp.debian-ports.org/debian unreleased main EOF Regards, JH Chatenet [1] : http://lists.debian.org/debian-alpha/2013/12/msg00019.html http://lists.debian.org/debian-68k/2013/12/msg00126.html PS : Please CC me, I am not on the list. PS2: at the present time, '--exclude=aptitude,aptitude-common,wget' is needed in the m68k example. PS3 : sorry for this lengthy mail - my preceding tries were rejected with <[email protected]>: host bendel.debian.org[2001:41b8:202:deb:216:36ff:fe40:4002] said: 550 5.7.1 No attachments allowed (in reply to end of DATA command) <[email protected]>: host bendel.debian.org[2001:41b8:202:deb:216:36ff:fe40:4002] said: 550 5.7.1 No attachments allowed (in reply to end of DATA command) What should be done ? --- a/installable.py 2013-12-17 08:44:51.199868340 +0200 +++ b/installable.py 2014-06-25 00:07:13.000000000 +0200 @@ -184,6 +184,8 @@ subfield_parts = subfield.split('(') package = subfield_parts[0] package = package.strip() +# ignore multiarch + package = package.split(':')[0] condition = '' if len(subfield_parts) > 1: @@ -875,7 +877,7 @@ if os.path.exists(args.workdir): print "-----> Using ",args.workdir else: - print "........Need to create ",workdir + print "........Need to create ",args.workdir os.mkdir(args.workdir) suites = ['unstable', 'unreleased'] @@ -884,13 +886,13 @@ for arch in arches: for suite in suites: dlpath=args.mirror+'/dists/'+suite+'/main'+'/binary-'+arch+'/Packages.bz2' - dstpath=pkgpath('',suite,arch) + dstpath=pkgpath(args.workdir,suite,arch) print "........Download",dlpath if dlpath[0:8]=='file:///': dlpath=dlpath[7:] shutil.copyfile(dlpath,args.workdir+'/'+dstpath) else: - os.system('wget --directory-prefix='+args.workdir+' --output-document='+dstpath+' '+dlpath) + os.system('wget --output-document='+dstpath+' '+dlpath) # unstable should be sorted through apt-sortpkgs by mini-dak on debian-ports if suite == 'unstable' and args.check_if_sorted == True and os.system('which bunzip2 > /dev/null') == 0 and os.system('which apt-sortpkgs > /dev/null') == 0: @@ -1105,7 +1107,7 @@ # Will all essential packages be installed ? if args.no_check_essential == False: - print "-----> Checking essential packages" + print "---> Checking essential packages" essential_packages = set(package[0] for package in packages_in_unstable if package[9]) essential_packages.update(package[0] for package in packages_in_unreleased if package[9]) forgotten_essential_packages = essential_packages.difference(set(required_packages)) @@ -1119,7 +1121,7 @@ # dependency check if args.no_dependency_check == False: - print "-----> Checking dependencies" + print "---> Checking dependencies" dependency_problems, breakage_problems, conflict_problems = check_all_dependencies(required_packages, base_packages, packages_in_unstable + packages_in_unreleased) @@ -1157,7 +1159,7 @@ print 'base', print ' package '+cproblem[0]+'('+cproblem[1]+') conflicts with ',cproblem[3],' - ',cproblem[4],'will be installed or provided' - print "=======> Conclusion" + print "===> Conclusion" print if precedence == 'no-unreleased' and args.no_resolve_deps == True and len(needed_in_unsorted_in_unstable) > 0: print arch,"....The installation should fail (unsorted entries in Packages files)" @@ -1165,6 +1167,7 @@ print arch,"....The installation should fail (dependency, breakage and/or conflict problems)" else: print arch,"....The installation would succeed" + print # Paths (on the server) of packages to install --- a/dpo_ad_hoc.sh 2013-12-17 08:49:17.946180686 +0200 +++ b/dpo_ad_hoc.sh 2014-06-10 23:15:22.000000000 +0200 @@ -20,6 +20,22 @@ WORKDIR="." +# ask for confirmation and exit +# argument : retcode +ask_exit() { + retcode="$1" + +# iff stdin is a terminal + if [ -t 0 ]; then + read -p "Continue anyway (y/N) ?" reply + if [ "${reply#Y}" != "$reply" -o "${reply#y}" != "$reply" ]; then + return + fi + fi + + exit "$retcode" +} + # download one file from mirror to destination # arguments : mirror file top download_one_package() { @@ -63,7 +79,7 @@ wget -x --directory-prefix="$destination" "${mirror}/dists/${suite}/$f" done for component in $component_list; do - for f in Release Packages.bz2; do + for f in Release Packages.gz; do wget -x --directory-prefix="$destination" "${mirror}/dists/${suite}/${component}/binary-${architecture}/$f" done done @@ -95,20 +111,20 @@ return $ret fi -# Packages.bz2 : check checksum +# Packages.gz : check checksum for component in $component_list; do - for packages_file in ${top}/dists/${suite}/${component}/binary-*/Packages.bz2; do + for packages_file in ${top}/dists/${suite}/${component}/binary-*/Packages.gz; do subpath="${packages_file#${top}/dists/${suite}/}" - bz2md=$(sed -n '/^SHA256:/,/^SHA512:/p' < "$release"| \ + gzmd=$(sed -n '/^SHA256:/,/^SHA512:/p' < "$release"| \ while read a b c; do \ if [ "$c" = "$subpath" ]; then echo "$a $b"; fi; \ done | head -n 1) - if [ -z "$bz2md" ]; then + if [ -z "$gzmd" ]; then echo " $packages_file not found in $release" return 1 fi - expsha256=$(echo "$bz2md" | cut -d ' ' -f 1) - expsize=$(echo "$bz2md" | cut -d ' ' -f 2) + expsha256=$(echo "$gzmd" | cut -d ' ' -f 1) + expsize=$(echo "$gzmd" | cut -d ' ' -f 2) relsha256=$(sha256sum "$packages_file" | cut -d ' ' -f 1) relsize=$(wc -c "$packages_file" | cut -d ' ' -f 1) if [ $relsize -ne $expsize ]; then @@ -167,8 +183,8 @@ top="${top%/}" for suite in $suite_list; do for component in $component_list; do - packages_file=${top}/dists/${suite}/${component}/binary-${architecture}/Packages.bz2 - bzcat "$packages_file" | awk -v package_list="$package_list" \ + packages_file=${top}/dists/${suite}/${component}/binary-${architecture}/Packages.gz + zcat "$packages_file" | awk -v package_list="$package_list" \ 'BEGIN {split(package_list,A,","); for (p in A) {split(A[p],B,"/");C[B[1]]=B[2]}} /^$/ {if (packagename in C && C[packagename] == version) print filename; packagename=""; version=""} @@ -202,8 +218,8 @@ -name '*.deb' -exec sha256sum \{} \; |sed 's/ / /' | tr '\n' ',' | sed 's/,$//') for suite in $suite_list; do for component in $component_list; do - packages_file=${top}/dists/${suite}/${component}/binary-${architecture}/Packages.bz2 - result=$(bzcat "$packages_file" | awk -v sha256_pool="$sha256_pool" \ + packages_file=${top}/dists/${suite}/${component}/binary-${architecture}/Packages.gz + result=$(zcat "$packages_file" | awk -v sha256_pool="$sha256_pool" \ 'BEGIN {split(sha256_pool,A,","); for (p in A) {split(A[p],B," ");C[B[2]]=B[1]}} /^$/ {if (filename in C) { if (C[filename] != sha256_sum) print "FAILED sha256 verification for " filename; @@ -263,15 +279,14 @@ component_list="${component_list:+${component_list} }$component" fi done - if [ -d "${destination}/pool" ]; then - for a1 in $ARCHITECTURES; do - if [ ! -d "${destination}/pool-${a1}" ]; then - mkdir -p "${destination}/pool-${a1}" - fi - cp -al ${destination}/pool/* "${destination}/pool-${a1}" - done - rm -rf "${destination}/pool" + if [ ! -d "${top}/pool" ]; then + mkdir -p "${top}/pool" fi + for a1 in $architectures; do + if [ -d "${top}/pool-${a1}" ]; then + cp -al ${top}/pool-${a1}/* "${top}/pool/" + fi + done cat > "${top}/apt-ftp-archive-packages.conf" <<EOF Dir { @@ -280,11 +295,11 @@ } ; Default { - Packages::Compress "bzip2"; + Packages::Compress "gzip"; } ; TreeDefault { - Directory "pool-\$(ARCH)/\$(SECTION)"; + Directory "pool/\$(SECTION)"; }; Tree "dists/unstable" { @@ -322,12 +337,12 @@ if [ -n "$DEBOOTSTRAP_SORT_PKGS" -a -x "$DEBOOTSTRAP_SORT_PKGS" ]; then for component in $component_list; do for architecture in $architectures; do - bunzip2 "dists/unstable/${component}/binary-${architecture}/Packages.bz2" + gunzip "dists/unstable/${component}/binary-${architecture}/Packages.gz" "$DEBOOTSTRAP_SORT_PKGS" "dists/unstable/${component}/binary-${architecture}/Packages" \ > "dists/unstable/${component}/binary-${architecture}/Packages.new" mv -f "dists/unstable/${component}/binary-${architecture}/Packages.new" \ "dists/unstable/${component}/binary-${architecture}/Packages" - bzip2 "dists/unstable/${component}/binary-${architecture}/Packages" + gzip "dists/unstable/${component}/binary-${architecture}/Packages" done done fi @@ -351,11 +366,11 @@ if [ -z "$NO_CHECK_GPG" ]; then validate_metadata "$base" "$KEYRING" "unstable unreleased" "main" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi if [ -z "$no_package_validation" ]; then validate_packages "$base" "$ARCHITECTURE" "unstable unreleased" "main" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi fi @@ -380,7 +395,7 @@ if [ -z "$NO_CHECK_GPG" ]; then validate_packages "$base" "$architecture" "$suite_list" "$component_list" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi } @@ -405,14 +420,14 @@ if [ -z "$NO_CHECK_GPG" ]; then validate_metadata "$base" "$KEYRING" "unstable unreleased" "main" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi add_files "${MIRROR_SNAPSHOT}/debian-ports/${date_snapshot}" "$package_list" "$base" "$ARCHITECTURE" "unstable unreleased" "main" if [ -z "$NO_CHECK_GPG" ]; then validate_packages "$base" "$ARCHITECTURE" "unstable unreleased" "main" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi ARCHIVES_TO_MERGE="${ARCHIVES_TO_MERGE:+${ARCHIVES_TO_MERGE} }$base" @@ -442,14 +457,14 @@ if [ -z "$NO_CHECK_GPG" ]; then validate_metadata "$base" "$DEBIAN_KEYRING" "$suite" "main contrib non-free" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi add_files "${MIRROR_SNAPSHOT}/debian/${date_snapshot}" "$package_list" "$base" "i386" "$suite" "main contrib non-free" if [ -z "$NO_CHECK_GPG" ]; then validate_packages "$base" "i386" "$suite" "main contrib non-free" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi ARCHIVES_TO_MERGE="${ARCHIVES_TO_MERGE:+${ARCHIVES_TO_MERGE} }$base" @@ -469,14 +484,14 @@ if [ -z "$NO_CHECK_GPG" ]; then validate_metadata "$base" "$DEBIAN_KEYRING" "$DEBIAN_SUITE" "main contrib non-free" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi add_files "${MIRROR_DEBIAN}" "$package_list" "$base" "i386" "$DEBIAN_SUITE" "main contrib non-free" if [ -z "$NO_CHECK_GPG" ]; then validate_packages "$base" "i386" "$DEBIAN_SUITE" "main contrib non-free" ret=$? - if [ $ret -ne 0 ]; then exit 1; fi + if [ $ret -ne 0 ]; then ask_exit 1; fi fi ARCHIVES_TO_MERGE="${ARCHIVES_TO_MERGE:+${ARCHIVES_TO_MERGE} }$base" @@ -484,7 +499,7 @@ usage() { echo "${0##*/} - usage :" - echo "${0##*/} [ options ] -l filelist [-p packages]] [-d DESTINATION [-g]]" + echo "${0##*/} [ options ] -l filelist [-p packages] [-d DESTINATION -g]" echo "${0##*/} [ options ] -b base -s snapshot1 snapshot2 ... snapshotN" echo "${0##*/} [ options ] -b base -S snapshot1 snapshot2 ... snapshotN" echo "${0##*/} [ options ] -b base [-R suite] -r packages" @@ -494,7 +509,7 @@ -w workdir : where to put all files -k keyring : a keyring to check packages from debian-ports -K keyring : a keyring to check packages from debian --a architecture : to select package from this architecture (default to alpha) +-a architecture : to select package from this architecture (defaults to alpha) -M mirror : a debian-ports mirror -N mirror : a debian mirror -n : do not verify gpg signatures @@ -505,16 +520,16 @@ -A ARCHITECTURES : architectures to considere when generating metadatas -g : generate metadatas of a debian archive (depends on apt-utils) -b base : takeover a base directory (it contains a pool directory) --s snaphot : download packages from a snapshot of debian-ports. snapshot is date packagelist, where date -is a date directory on snapshot.debian.org/archive/debian-ports/ and filelist is a comma separated +-s snapshot : download packages from a snapshot of debian-ports. snapshot is date packagelist, where date +is a date directory on snapshot.debian.org/archive/debian-ports/ and packagelist is a comma separated list of package/version to add, e.g. 20130405T202311Z "locales/2.13-38" -S snapshot : download packages from a snapshot of debian. snapshot is suite date packagelist, where suite is oldstable, stable, testing or unstable, date is a date directory on snapshot.debian.org/archive/debian/ and packagelist is a comma separated list of package/version to add. --R suite : suite (oldstable, stable, testing or unstable) for option -r (default to unstable) +-R suite : suite (oldstable, stable, testing or unstable) for option -r (defaults to unstable) -r packages : packages is a comma separated list of package/version to add (from debian), e.g. "firmware-qlogic/0.40" --m dir1 dir2 ... dirN : merge directories dir1 dir2 ... dirN (each contains a pool directory) under DESTINATION +-m dir1 dir2 ... dirN : merge directories dir1 dir2 ... dirN (each contains a 'pool' or 'pool-\${arch}' directory) under DESTINATION EOF exit 0 } README.installable : installable.py ============== The purpose of this small program is to test the archive at debian-ports (http://ftp.debian-ports.org) for installability with debootstrap. It selects the same package set that debootstrap would and looks for missing dependencies. However, there is no warranty that a working system would result from the installation. The user interface surely needs improvement - suggestions are welcome ! It depends on python (and argparse), bzip2 and apt-utils. Synopsis : -------- ./installable.py [ options ] Options : ------- * package selection strategy : -t, --no-unreleased : consider packages from suite 'unstable' for installation only. This is debootstrap behaviour unmodified. -u, --unreleased-precedence : prefer the version from suite 'unreleased' if a package is found in both suites 'unstable' and 'unreleased'. -s, --unstable-precedence : prefer the version from suite 'unstable' if a package is found in both suites 'unstable' and 'unreleased'. -o, --unreleased-if-newer : select packages from suite 'unstable'. If there is a more recent version in suite 'unreleased', select it instead. -M, --merge-unreleased : merge packages from suites 'unstable' and 'unreleased' in one list and sort it with apt-sortpkgs. -L, --ascending-versions : merge packages from suites 'unstable' and 'unreleased' in one list and sort it by ascending version number. It is believed to be the only correct scheme, and it is default. * debootstrap variant : -v, --variant : 'minbase','buildd','fakechroot','-' or nothing (default). 'scratchbox' is unsupported. * individual package selection : -e, --exclude : a comma separated list of packages to exclude from the selection. It is not allowed to exclude required packages. -i, --include : a comma separated list of packages to include in the selection. debian-ports-archive-keyring is added to this list. * what to test : -n, --no-install : do not select packages. All tests are skipped. -k, --no-dependency-check : do not look for missing dependencies. -E, --no-check-essential : do not look for unselected essential packages. -U, --no-check-unsorted : all version entry of required and important packages in Packages file should be consecutive. Skip this test. -c, --check-unreleased : flag packages with multiple versions in suite 'unreleased' or an outdated version in 'unreleased' (by comparison with the one in 'unstable'). Options -M,--merge-unreleased or -L,--ascending-versions disable the test. -O, --no-check-obsolete : do not look if newer versions of selected packages exist. Options -c,--check-unreleased or -o,--unreleased-if-newer are required for this test to be performed. -S, --check-if-sorted : the Packages file of suite 'unstable' is sorted through apt-sortpkgs. This occurs at debian-ports archive update. This test redo the sorting on the local machine, and compare the outcome with the original Packages file. * program output : -p, --print-debs : print selected package names. -P, --package-filenames : a file to store the paths of selected packages. The paths of .deb files are relative to the root of the debian-ports archive (as in the 'Filename:' fields of 'Packages' files). * other options : -m, --mirror : a mirror of debian-ports (it defaults to http://ftp.debian-ports.org/debian) -r, --no-resolve-deps : do not resolve dependencies while selecting packages (see the corresponding option of debootstrap). -w, --workdir : a directory to store downloaded files. It defaults to the currect working directory, "." -d, --no-download : do not download Packages files of suites 'unstable' and 'unreleased' from debian-ports (in case of a previous download). This option is not useful if options -M,--merge-unreleased or -L,--ascending-versions were given. README.dpo_ad_hoc : dpo_ad_hoc.sh ============= The purpose of this small program is to assemble a mini-repository with the bare minimum from debian-ports. One may then install with an unmodified version of debootstrap. Packages are taken from the debian-ports archive. One may add packages from the regular debian archive if needed (say, firmwares) or older version from snapshot.debian.org. It depends on apt-utils and bzip2. Package validation may require debian-ports-archive-keyring and debian-archive-keyring. Some examples : ------------- * Make list of package that debootstrap would install on an alpha workstation : ./installable.py -a alpha -m http://ftp.de.debian.org/debian-ports \ -w some_scratch -P listep-alpha * Package download : ./dpo_ad_hoc.sh -w some_scratch -a alpha \ -M http://ftp.de.debian.org/debian-ports \ -l listep-alpha * Add a bootloader : ./dpo_ad_hoc.sh -a alpha \ -M http://ftp.de.debian.org/debian-ports \ -b some_scratch/ftp.de.debian.org/debian-ports \ -p "aboot/1.0~pre20040408-4,aboot-base/1.0~pre20040408-4" * Add a disk controller firmware : ./dpo_ad_hoc.sh -w some_scratch -a alpha \ -N http://ftp.de.debian.org/debian \ -r "firmware-qlogic/0.43" * Build the repository : ./dpo_ad_hoc.sh -a alpha -d my_repository -g \ -m some_scratch/ftp.de.debian.org/debian-ports some_scratch/ftp.de.debian.org/debian * Everything in one step : ./dpo_ad_hoc.sh -w some_scratch -a alpha \ -M http://ftp.de.debian.org/debian-ports \ -N http://ftp.de.debian.org/debian \ -l listep-alpha \ -p "aboot/1.0~pre20040408-4,aboot-base/1.0~pre20040408-4" \ -d my_repository -g -r "firmware-qlogic/0.43" * Last, install as root : debootstrap --arch=alpha --components=main,non-free --no-check-gpg \ --include=debian-ports-archive-keyring,aboot,aboot-base,firmware-qlogic \ unstable my_chroot file:///$(readlink -f my_repository) cat > my_chroot/etc/apt/sources.list <<EOF deb http://ftp.de.debian.org/debian-ports unstable main deb http://ftp.de.debian.org/debian-ports unreleased main EOF Synopses : -------- Options -s, -S and -m are mutually exclusive. No other option may follow them on the line. ./dpo_ad_hoc.sh [ options ] ./dpo_ad_hoc.sh [ options ] -s snapshot1 snapshot2 ... snapshotN ./dpo_ad_hoc.sh [ options ] -S snapshot1 snapshot2 ... snapshotN ./dpo_ad_hoc.sh [ options ] -m dir1 dir2 ... dirN Options : ------- * packages to include : -l file_list : file file_list contains the paths of .deb files to download. The paths are relative to the root of the debian-ports archive (they begin usually with 'pool' or 'pool-${arch}' where ${arch} is an architecture hosted by debian-ports). file_list is overwritten. This option is not compatible with -b. * packages to add : -p package_list : to download packages from a debian-ports mirror. package_list is a comma separated list of elements of the form package_name/version_number, e.g. "aboot/1.0~pre20040408-4,aboot-base/1.0~pre20040408-4" -r package_list : to download packages from the regular debian archive. package_list is as in option -p, e.g. -r "firmware-qlogic/0.43". See also option -R. -s snapshot1 snapshot2 ... snapshotN : to download obsolete versions of packages from 'snapshot.debian.org' (these versions were removed from debian-ports). snapshotn is 'date' 'package_list' where 'date' is a subdirectory of http://snapshot.debian.org/archive/debian-ports/ and package_list is as in option -p, e.g. 20130405T202311Z "locales/2.13-38" This must be the last option on the command line. It is mutually exclusive with options -S and -m. -S snapshot1 snapshot2 ... snapshotN : to download obsolete versions of packages from 'snapshot.debian.org' (these versions were removed from the regular debian archive). snapshotn is 'suite' 'date' 'package_list' where 'suite' is oldstable, stable, testing or unstable, 'date' is a subdirectory of http://snapshot.debian.org/archive/debian/ and package_list is as in option -p. This must be the last option on the command line. It is mutually exclusive with options -s and -m. * build a repository : -g : generate metadata with apt-ftparchive. Option -d is required. -d DESTINATION : directory DESTINATION has 'pool' and/or 'pool-${arch}' subdirectories which contains the .deb files of the repository. Metadatas (ie Packages and Release files) are generated in DESTINATION. * architecture choice : -a arch : download packages for architecture arch. It defaults to alpha. May be used once by invocation of dpo_ad_hoc.sh. -A architectures : this is a space separated list of architectures to consider when generating metadatas, e.g. "alpha m68k". Please note that it is not possible to build a multi-architecture repository in one step : options -m and -g are needed. * package validation : -n : do not verify packages. -k keyring : a keyring to verify packages from debian-ports. It defaults to '/usr/share/keyrings/debian-ports-archive-keyring.gpg' -K keyring : a keyring to verify packages from the regular debian archive. It defaults to '/usr/share/keyrings/debian-archive-keyring.gpg'. * mirrors : -M MIRROR : MIRROR is an URI of a debian-ports mirror. It defaults to 'http://ftp.debian-ports.org/debian' -N MIRROR : MIRROR is an URI of a mirror of the regular debian archive. It defaults to 'http://ftp.us.debian.org/debian' (Obsolete versions are always fetched from 'http://snapshot.debian.org/archive' when handling options -s or -S.) * other options : -b base : to append packages to base directory created with option -l in a previous invocation of dpo_ad_hoc. base is a subdirectory, named according to the mirror in use, e.g. -b 'ftp.us.debian.org'. This option is not allowed with option -l. -m dir1 dir2 ...dirN : merge the content of directories dir1, dir2, ..., dirN in one directory DESTINATION. Option -d is required to set DESTINATION. Each directory dir1, dir2, ..., dirN should contain a 'pool' or 'pool-${arch}' subdirectory. This must be the last option on the command line. It is mutually exclusive with options -s and -S. -R suite : suite is oldstable, stable, testing or unstable. Packages downloaded with option -r are chosen in this suite. It defaults to unstable. -w workdir : downloaded files are stored in directory workdir. It defaults to the current working directory, "." -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: https://lists.debian.org/20140625220736.GA2771@debirf-dominicain

