Commit graph

295 commits

Author SHA1 Message Date
e6d5d74d87
--keyring now overwrites the default apt keyring
- apt can only handle one directory and one file as keyring
 - the signed-by option is used to specify the keyrings for suites that
   are not known by apt
2019-12-03 10:16:43 +01:00
db1e7f27ad
add oldoldstable and jessie 2019-12-03 00:05:56 +01:00
2de2eb6a8c
add space between negation operator and test operator 2019-12-02 23:59:43 +01:00
394731102a
before unmounting /proc, check if /proc/sys/fs/binfmt_misc is mounted 2019-12-02 23:54:48 +01:00
d262d67877
Fix parallel xz compression... hopefully for the last time... 2019-12-02 21:17:45 +01:00
9f2ea61265
Fix parallel xz compression 2019-11-29 08:51:45 +01:00
aad36777e8
add --man option and reduce output of --help option
Printing the full man page requires the perl-doc package. To avoid this
dependency, print the less verbose output containing only the synopsis
and the option list for the --help option and print the full output
(requiring perldoc) for the --man option.
2019-11-29 08:45:13 +01:00
de8b6a457d
also run initial installation of Essential:yes with /proc, /dev and /sys mounted
In Debian Jessie, init is part of Essential:yes and thus systemd gets
installed which needs working /proc, /dev and /sys
2019-11-29 08:18:35 +01:00
3a1d5413e2
also remove /var/log/apt/eipp.log.xz 2019-11-29 07:48:44 +01:00
f5afbfaab0
don't let make_path fail if directory already existed 2019-11-21 22:56:59 +01:00
Benjamin Drung
4b82a664da
Use parallel xz compression
One of mmdebstrap benefits over deboostrap is that it is faster.
Creating a xz tarball as output will take a lot of time, since xz
consumes a lot of compute power and tar uses only one core.

Therefore use parallel xz compression since xz supports it using the -T
parameter.

Closes: #943327
Signed-off-by: Benjamin Drung <benjamin.drung@cloud.ionos.com>
2019-11-13 12:02:42 +01:00
bc423e6ab6
Add disclaimer of warranty and limitation of liability 2019-11-13 11:53:30 +01:00
a2cd0e9843
add --keyring option as a shorthand for --aptopt='Dir::Etc::Trusted... 2019-10-28 16:29:38 +01:00
6cac8e70e8
allow multiple --include options and use array instead of hash
Package order is important when calling apt. Consider this dependency
graph:

    A -> B -> C | D , E -> D | C

"apt install A E" it will install "A B C E"
"apt install E A" it will install "E D A B"
2019-10-28 15:35:36 +01:00
e12db588bd
add debug output for unknown data type 2019-10-28 14:53:03 +01:00
da4f9e4349
check whether /sbin/start-stop-daemon.REAL exists before overwriting it 2019-10-28 14:52:21 +01:00
daab09bfdd
only write /usr/sbin/policy-rc.d if /usr/sbin exists in the chroot 2019-10-28 14:51:49 +01:00
e0732140c0
make hooks work in chrootless mode 2019-10-28 14:27:37 +01:00
d36ba6b371
allow multiple --architecture options and separation by whitespace 2019-10-27 22:16:23 +01:00
7eb0851c59
only remove policy-rc.d if it exists 2019-10-23 14:00:55 +02:00
1f15f690e7
release 0.5.1 2019-10-19 23:26:10 +02:00
59472cc8fc
improve error message about arch not being executable 2019-10-19 16:25:02 +02:00
22c90c2ca6
it's possible that apt is already downloaded at the time where we want to install it 2019-10-19 16:24:58 +02:00
78358eaf9a
improve --components parsing with comma and whitespace as separator 2019-10-19 08:10:36 +02:00
9978cbddcb
turn error when --include is used with essential variant into a warning 2019-10-19 08:02:03 +02:00
86b430190f
set qemu binfmt identifier before using it to avoid uninitialized value error 2019-10-06 18:37:30 +02:00
ec1619d664
release 0.5.0 2019-10-05 21:24:47 +02:00
1f5e1483c7
add more to bugs section of man page 2019-10-05 07:51:18 +02:00
39a3915ea6
add more examples to man page 2019-10-05 07:51:05 +02:00
ad6883992a
fix mirror URIs for ubuntu 2019-10-05 07:49:15 +02:00
7a4cefaee2
only append to QEMU_LD_PREFIX if it's already set 2019-10-05 07:48:40 +02:00
b3536b98d0
export QEMU_LD_PREFIX in chrootless mode 2019-10-05 07:48:16 +02:00
d2a1029ee5
collect all diagnostics about binfmt_misc before throwing error 2019-09-27 10:18:15 +02:00
d5033dd0d1
also check for situations in which a non-native arch can be executed without emulation 2019-09-26 10:14:45 +02:00
3d3d3fe12d
Do not copy /etc/resolv.conf or /etc/hostname if the host system doesn't have them 2019-09-15 14:12:49 +02:00
3dc32b81b0
add --force-check-gpg dummy option 2019-09-14 18:25:40 +02:00
Helmut Grohne
4b440a0e01
allow messing with s-s-d in hooks
Presently, mmdebstrap fails hard if e.g. a --setup-hook removes
start-stop-daemon.REAL.
2019-09-13 23:15:18 +02:00
Helmut Grohne
ea0a6bcd89
make errors about moving s-s-d more verbose 2019-09-13 23:15:12 +02:00
Helmut Grohne
519046094e
fix error message about opening s-s-d 2019-09-13 23:15:00 +02:00
58ae0bb97d
select the right mirror for ubuntu, kali and tanglu 2019-09-10 12:46:49 +02:00
b70d8a0381
fix typo unpriviliged -> unprivileged 2019-09-04 15:47:15 +02:00
874a19050c
document that autopkgtest needs an additional entry in /etc/hosts 2019-09-04 15:45:43 +02:00
c8a3f053d7
document that the full apt syntax can be used 2019-09-04 15:45:18 +02:00
bfba0e7dce
add more debug output 2019-09-04 15:44:54 +02:00
4447769b50
when creating a tarball in chrootless mode, use root ownership 2019-09-04 13:50:25 +02:00
a921e32e6c
Do not unconditionally read standard input
mmdebstrap used to attempt reading stdin if it was not a tty. This leads
to unexpected behaviour when mmdebstrap is used through ssh without a
pseudo-terminal allocated like so:

    $ ssh remote mmdebstrap unstable /output/dir http://mirror

This will stall forever, waiting for data on standard input. Or
consider:

    $ ssh remote << END
    > somecommand
    > mmdebstrap unstable /output/dir http://mirror
    > othercommand
    END

This will make mmdebstrap read "othercommand" and everything that
follows as a sources.list entry. To prevent this unexpected behaviour,
the following ways to use mmdebstrap will not be supported anymore:

    $ mmdebstrap unstable /output/dir < sources.list
    $ mmdebstrap unstable /output/dir http://mirror < sources.list

Instead, one must now explicitly pass "-" if one wants mmdebstrap to
read from stdin:

    $ mmdebstrap unstable /output/dir - < sources.list
    $ mmdebstrap unstable /output/dir http://mirror - < sources.list
2019-08-28 00:53:04 +02:00
1219a65723
add /var/lib/dpkg/arch in chrootless mode when chroot architecture differs 2019-08-26 18:25:21 +02:00
Helmut Grohne
4f2e655ad5
Only attempt removing qemu-user-static for root or unshare mode 2019-08-26 16:34:35 +02:00
2d2cdfbbc3
create /var/lib/dpkg/cmethopt for dselect (see #930788) 2019-08-21 14:57:54 +02:00
68d7ec15bd
fix docs: fakechroot is tried before proot in auto mode 2019-07-24 16:47:47 +02:00
da489c6a53
Only error out on W: and Err: lines, on "apt-get update"
Otherwise, maintainer scripts that output W: or Err: lines will break
package installation on "apt-get install".
2019-04-30 00:07:35 +02:00
c734a59f86
chdir to parent of root before remove_tree to prevent 'cannot stat initial working directory' of File::Path 2019-04-25 08:56:42 +02:00
ca37c4e89e
chmod 0755 on qemu-user-static binary 2019-04-25 08:54:31 +02:00
14d3a4e30f
add Dir::State::Status to apt config for apt << 1.3 2019-04-25 08:51:42 +02:00
dd5214a8c8
chdir() before 'apt-get update' to accomodate for apt << 1.5 (Debian bug #860738) 2019-04-25 08:49:28 +02:00
b2d5a45932
cleanup auxfiles *after* running apt-get update or otherwise it will be re-created 2019-04-23 13:28:55 +02:00
19fdb4914d
coverage.sh: auto generate package list for aspcud instead of hardcoding it 2019-03-27 11:44:45 +01:00
454dd9fa3e
Annotate examples with a description of their effect 2019-03-25 14:50:41 +01:00
a69a2d39b8
also re-exec under fakechroot if fakechroot is picked in 'auto' mode 2019-03-25 14:35:38 +01:00
3e8a251e1f
fix EDSP output for external solvers so that apt doesn't mark itself as Essential:yes 2019-03-25 14:31:45 +01:00
6a51d410ec
do not skip package installation in 'custom' variant 2019-03-25 14:27:34 +01:00
6d774a3d92
release 0.4.1 2019-03-01 12:56:57 +01:00
016cac22f8
add note about dpkg config bug 2019-03-01 12:53:16 +01:00
52b1a9dc6e
instead of touching a file, test if /var/lib/apt/lists/partial is readable to decide about apt sandboxing 2019-03-01 01:05:32 +01:00
473bc354ae
only set apt Dir config option instead of setting apt directories individually 2019-02-28 12:22:42 +01:00
e1a41fac94
print errno when unlink fails 2019-02-28 12:20:42 +01:00
920877fa2a
disable apt sandboxing if the chroot directory is not accessible by the _apt user 2019-02-28 11:54:03 +01:00
d0f0283120
do not cleanup apt and dpkg lock files to not set bad precedence 2019-02-28 00:20:00 +01:00
e3219a5c8f
release 0.4.0 2019-02-23 13:25:56 +01:00
48e34852a2
clean /var/lib/apt/lists/auxfiles so that apt older than 1.6 has no problem with the chroot 2019-02-23 13:22:44 +01:00
a91a825e67
add --version option 2019-02-23 08:55:31 +01:00
d73b8396ac
print the used temporary directory as info message 2019-02-23 08:50:02 +01:00
e06f2e9c57
the mmdebstrap command name has to be written in bold 2019-02-23 08:49:19 +01:00
1b8ad8400b
add --logfile option 2019-02-23 08:43:15 +01:00
1fe5da3d56
Better documentation of example showing mmdebstrap with sources.list on stdin 2019-02-20 18:18:31 +01:00
6e61c1a183
document the behaviour if --quiet, --silent, --verbose or --debug are passed at the same time 2019-02-20 18:17:00 +01:00
db415fe4f4
add short options for --quiet, --silent, --verbose and --debug 2019-02-20 18:02:55 +01:00
fffd74afc2
explicitly configure Getopt::Long 2019-02-20 18:00:52 +01:00
0b058c7db1
add --setup-hook, --essential-hook and rename --customize to --customize-hook 2019-02-20 13:32:49 +01:00
89718d367e
test no-op options and print info message when they are used 2019-02-15 12:42:46 +01:00
5115ca87c3
don't unset environment variables in @chrootcmd so that hooks still have access to them 2019-02-15 11:40:06 +01:00
3f15f66892
fix example for vmdb2 replacement 2019-02-15 11:36:40 +01:00
548130867b
do not run another apt-get pass with custom variant 2019-02-15 11:32:44 +01:00
bde4c795ef
document that security mirrors are only implicitly added if no mirror was specified 2019-01-24 12:39:01 +01:00
b9e78796b2
prefer fakechroot to proot in auto mode because the latter produces wrong ownership 2019-01-24 12:37:44 +01:00
a3afe24fc0
Instead of using gzip compression support, run compressor ourselves
- otherwise ./dev tar cannot be concatenated with the rest
 - test compressor early
 - better document the TARGET option
2019-01-24 12:32:46 +01:00
84b0b5061b
start sanitizing the environment with chroot() and don't pass on TMPDIR 2019-01-20 10:46:19 +01:00
6f8bb8c977
since copy() is using syswrite(), we must flush the filehandle before calling it 2019-01-20 10:46:16 +01:00
982f8e982c
add --quiet and --debug switches and debug/verbose/info/warning/error functions 2019-01-20 10:39:01 +01:00
58a3069495
add mmdebstrap prefix to temporary directory name 2019-01-14 22:24:33 +01:00
765f5b91e9
call apt with Dpkg::Use-Pty=false to enable immediate termination upon SIGINT and prevent it from messing up the terminal with tcsetattr() 2019-01-14 22:23:02 +01:00
be1af15489
use common function for run_dpkg_progress and run_apt_progress 2019-01-13 22:04:25 +01:00
7f58c4596a
handle INT, HUB, PIPE and TERM signals, wait for child processes and clean up mounts 2019-01-13 10:17:46 +01:00
0345d30ae6
run_*_progress: fix error message when exec() failed 2019-01-12 00:48:40 +01:00
a3f69f8874
add undocumented --customize option 2019-01-08 11:28:27 +01:00
d66a5a7d74
Several formatting improvements to POD 2019-01-08 11:27:56 +01:00
e0ea1e6d65
add FIXME option to also support Debian derivatives 2019-01-08 11:26:24 +01:00
fa836c01f7
refer to #898446 when warning about unprivileged_userns_clone 2019-01-08 11:23:39 +01:00
e0b107453d
add another example --aptopt to man page 2019-01-07 13:19:38 +01:00
25bec4d5e1
add --merged-usr and --no-merged-usr no-op options for debootstrap compatibility 2019-01-07 13:18:59 +01:00
418b42746e
create an empty /var/lib/dpkg/available as otherwise dpkg fails on package removal 2019-01-07 13:16:51 +01:00
1e0b4cb3b0
now that fakechroot and proot are fixed, add support for for variants beyond essential and apt 2019-01-01 14:28:56 +01:00
29550acb88
add --interactive=never to rm call to avoid prompts for removal of write protected files in proot mode 2018-12-30 17:18:27 +01:00
e6ce901be4
run several binfmt checks before using qemu-user mode 2018-12-28 07:19:24 +01:00
4a2bf62931
add --resolve-deps no-op option for sbuild-createchroot compatibility 2018-12-28 07:19:23 +01:00
3f29fa461a
don't die if output cannot be written to tarball and instead check error condition early 2018-12-28 07:19:23 +01:00
f4263ebd74
add --verbose option that prints apt and dpkg output instead of progress bars 2018-12-28 07:19:23 +01:00
61ad8a8e45
update --help output for --aptopt using single quotes to avoid escaping of double quotes 2018-12-28 07:19:23 +01:00
97d273aaf6
disable merged usr 2018-12-07 00:17:10 +01:00
f101057e1b
add qemu TODO item 2018-12-06 17:15:56 +01:00
b0979d1d6b
add verbose mode to test_unshare() so that it can report what went wrong 2018-12-05 08:06:26 +01:00
3ffc8ea35f
add FIXME comment about binfmt_misc support 2018-12-05 08:05:32 +01:00
4ef1eda200
append to $PATH instead of replacing its content 2018-11-23 17:30:32 +01:00
972b207508
implement 'extract' variant 2018-11-21 00:21:47 +01:00
16d2a4a8d9
allow empty lost+found directory in target directory 2018-11-21 00:21:46 +01:00
1730a17286
add two code comments 2018-11-21 00:21:46 +01:00
2949691591
When packaging the tarball with proot, exclude /host-rootfs 2018-11-21 00:21:46 +01:00
1890e22b14
do not make the default mirror for the native arch only. The sane expectation is, that the default mirror is for any architecture. 2018-11-21 00:21:46 +01:00
cc7dddb1b3
re-installing packages with dpkg also requires --force-depends because dpkg doesn't consider Pre-Depends 2018-11-21 00:21:46 +01:00
a9765a3ad2
fix Apt::Architectures architecture list 2018-11-21 00:21:46 +01:00
7948894159
dereference array foreignarchs before iterating 2018-11-02 17:24:28 +01:00
4c9d2bd3d7
add sanity check for fakechroot/proot renameat2 bug 2018-10-24 02:41:43 +02:00
b8c63f8797
check the mode earlier so that we can re-exec under fakechroot earlier 2018-10-23 18:04:34 +02:00
70c1468453
in fakechroot mode, do not create symlinks to non-existing /proc 2018-10-23 18:04:34 +02:00
a5866a347c
add --qemu option to proot when creating tar of foreign arch chroot 2018-10-23 18:04:33 +02:00
174d54f933
for simplicity, always use our own /dev tar entries 2018-10-23 18:04:33 +02:00
7534a7607f
Add chrootless mode and extract and custom variants 2018-10-23 15:29:20 +02:00
07f0e53081
Add POD section for environment variables 2018-10-23 15:29:20 +02:00
a6d6ad4d0d
Add more markup to POD 2018-10-23 15:29:20 +02:00
2d6703add0
fix tar call in proot mode (avoid extra entry for /dev and error message about non-existant working directory) 2018-10-23 15:29:20 +02:00
5498f61ce5
apt does not support double quotes in paths 2018-10-23 15:29:20 +02:00
27f10e2300
fix error string (apt is part of the required variant) 2018-10-23 15:29:19 +02:00
1409405af7
always clean apt from the outside in case there is no apt inside the chroot 2018-10-23 15:29:19 +02:00
61ff05566a
as a defensive measure, in conditionals for variant and mode, always check for unknown variant/mode
That way, when adding new variants or modes, we have to consciously
choose which branch is to be taken instead of accidentally taking the
default branch.
2018-10-23 15:29:19 +02:00
12fc63385b
skip /dev in directory creation 2018-10-23 15:29:19 +02:00
145bfe5233
symlinks must also be created with havemknod 2018-10-23 15:29:19 +02:00
b0efc9aa86
also conditionally only act on symlinks if havemknod is false 2018-10-23 15:29:19 +02:00
3c48bce2b2
don't set /usr/bin/env in FAKECHROOT_CMD_SUBST 2018-10-23 15:29:19 +02:00
7a25de31db
Don't rely on Architecture field in indextargets output because it's only filled for non-flat mirrors 2018-10-23 15:29:18 +02:00
bdbe12fec8
don't set Apt::Get::Download-Only in the default apt config but do it explicitly in each apt call 2018-10-23 15:29:18 +02:00
191bc47f2c
make sure that apt puts its logs into the chroot 2018-10-23 15:29:18 +02:00
11633c7278
don't clean auxfiles anymore 2018-10-23 15:29:18 +02:00
7412d5fbce
also unmount in unshare mode to prevent wrong directory permissions of mount targets 2018-10-08 11:26:31 +02:00
ac8084cb42
only unmount device nodes and directories with --no-mtab in unshare mode 2018-10-08 11:25:39 +02:00
594a37d093
add comment about mounting sys with rbind in unshare mode 2018-10-08 11:24:29 +02:00
c6099857e2
do not chmod symlinks because that will change the target of the symlink and not the symlink itself 2018-10-03 09:22:18 +02:00
d634095da1
Skip the loop if nothing was created so that chmod later doesn't fail 2018-10-03 09:21:12 +02:00
eeb1ba4e11
add comment explaining the situation with *-archive-keyring packages 2018-10-03 09:21:12 +02:00
ab96341957
die if chmod fails 2018-10-03 09:19:28 +02:00
f2a3f23acf
Fix havemknod test
"last" only exits the innermost block, thus we need a label. Since
blocks are semantically the same as loops that only execute once, we
also replace the while() with a single block.
2018-10-03 07:29:50 +02:00