diff --git a/Dockerfile b/Dockerfile index f0c6372..c860a7d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,13 @@ FROM registry.fedoraproject.org/fedora:38 -ENV NAME=fedora-toolbox VERSION=38 +ARG NAME=fedora-toolbox +ARG VERSION=38 LABEL com.github.containers.toolbox="true" \ com.redhat.component="$NAME" \ name="$NAME" \ version="$VERSION" \ - usage="This image is meant to be used with the toolbox command" \ - summary="Base image for creating Fedora toolbox containers" \ + usage="This image is meant to be used with the toolbox(1) command" \ + summary="Image for creating Fedora Toolbx containers" \ maintainer="Debarshi Ray " COPY README.md / @@ -40,4 +41,14 @@ RUN ret_val=0; \ fi RUN rm /ensure-files +RUN broken_packages="$(rpm --all --query --state --queryformat "PACKAGE: %{NAME}\n" \ + | sed --quiet --regexp-extended '/PACKAGE: /{s/PACKAGE: // ; h ; b }; /^not installed/ { g; p }' \ + | uniq \ + | sort)"; \ + if [ "$broken_packages" != "" ]; then \ + echo "Packages with missing files:" >&2; \ + echo "$broken_packages" >&2; \ + false; \ + fi + RUN dnf clean all diff --git a/README.md b/README.md index 6f9943b..feb1d78 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ -[Toolbox](https://containertoolbx.org/) is a tool for Linux, which allows the +[Toolbx](https://containertoolbx.org/) is a tool for Linux, which allows the use of interactive command line environments for development and troubleshooting the host operating system, without having to install software on the host. It is built on top of [Podman](https://podman.io/) and other standard container technologies from [OCI](https://opencontainers.org/). -Toolbox environments have seamless access to the user's home directory, +Toolbx environments have seamless access to the user's home directory, the Wayland and X11 sockets, networking (including Avahi), removable devices (like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the udev database, etc.. This is particularly useful on -[OSTree](https://ostree.readthedocs.io/en/latest/) based operating systems like +[OSTree](https://ostreedev.github.io/ostree/) based operating systems like [Fedora CoreOS](https://coreos.fedoraproject.org/) and [Silverblue](https://silverblue.fedoraproject.org/). The intention of these systems is to discourage installation of software on the host, and instead @@ -18,7 +18,7 @@ install software as (or in) containers — they mostly don't even have package managers like DNF or YUM. This makes it difficult to set up a development environment or troubleshoot the operating system in the usual way. -Toolbox solves this problem by providing a fully mutable container within +Toolbx solves this problem by providing a fully mutable container within which one can install their favourite development and troubleshooting tools, editors and SDKs. For example, it's possible to do `yum install ansible` without affecting the base operating system. @@ -27,12 +27,12 @@ However, this tool doesn't *require* using an OSTree based system. It works equally well on Fedora Workstation and Server, and that's a useful way to incrementally adopt containerization. -The toolbox environment is based on an [OCI](https://www.opencontainers.org/) +The Toolbx environment is based on an [OCI](https://www.opencontainers.org/) image. On Fedora this is the `fedora-toolbox` image. This image is used to -create a toolbox container that offers the interactive command line +create a Toolbx container that offers the interactive command line environment. -Note that Toolbox makes no promise about security beyond what's already +Note that Toolbx makes no promise about security beyond what's already available in the usual command line environment on the host that everybody is familiar with. @@ -41,4 +41,4 @@ familiar with. See our guides on [installing & getting started](https://containertoolbx.org/install/) with -Toolbox and [Linux distro support](https://containertoolbx.org/distros/). +Toolbx and [Linux distro support](https://containertoolbx.org/distros/). diff --git a/ensure-files b/ensure-files index 9693d36..b62de92 100644 --- a/ensure-files +++ b/ensure-files @@ -6,12 +6,47 @@ /usr/share/man/man1/cp.1* /usr/share/man/man1/ls.1* +/usr/share/cracklib/cracklib-small.pwd* +/usr/share/cracklib/pw_dict.pwd* + +/usr/share/man/man8/dnf.8* +/usr/share/man/man5/dnf.conf.5* + +/usr/share/locale/de/LC_MESSAGES/elfutils.mo +/usr/share/locale/ja/LC_MESSAGES/elfutils.mo + +/usr/share/locale/fr/LC_MESSAGES/gawk.mo +/usr/share/locale/ko/LC_MESSAGES/gawk.mo + /usr/share/man/man1/gpg2.1* /usr/share/man/man7/gnupg2.7* +/usr/share/info/nettle.info* + +/usr/share/locale/fr/LC_MESSAGES/popt.mo +/usr/share/locale/ja/LC_MESSAGES/popt.mo + +/usr/share/man/fr/man1/pstree.1* +/usr/share/man/ko/man1/pstree.1* +/usr/share/man/man1/pstree.1* + +/usr/share/info/history.info* + /usr/share/man/fr/man8/rpm.8* /usr/share/man/ja/man8/rpm.8* /usr/share/man/man8/rpm.8* +/usr/share/man/fr/man8/useradd.8* +/usr/share/man/ja/man8/useradd.8* +/usr/share/man/man8/useradd.8* + +/usr/share/man/man1/cal.1.* +/usr/share/man/man1/getopt.1* +/usr/share/man/man1/hexdump.1* + /usr/share/man/man1/kill.1* /usr/share/man/man8/mount.8* + +/usr/share/man/fr/man1/xz.1* +/usr/share/man/ko/man1/xz.1* +/usr/share/man/man1/xz.1* diff --git a/extra-packages b/extra-packages index f6cf387..488124f 100644 --- a/extra-packages +++ b/extra-packages @@ -1,19 +1,21 @@ bash-completion bc bzip2 +cracklib-dicts diffutils dnf-plugins-core findutils flatpak-spawn fpaste +gawk-all-langpacks git +glibc-gconv-extra gnupg2 gnupg2-smime gvfs-client hostname iproute iputils -whois keyutils krb5-libs less @@ -29,6 +31,7 @@ openssh-clients passwd pigz procps-ng +psmisc rsync shadow-utils sudo @@ -42,6 +45,7 @@ vte-profile vulkan-loader wget which +whois words xorg-x11-xauth xz diff --git a/missing-docs b/missing-docs index b06fdc3..abb7256 100644 --- a/missing-docs +++ b/missing-docs @@ -1,20 +1,92 @@ acl +alternatives +audit-libs +authselect +authselect-libs bash +ca-certificates coreutils-common +cracklib +crypto-policies curl +cyrus-sasl-lib +dnf +dnf-data +elfutils-libelf +expat +file-libs +filesystem findutils gawk +glib2 +gmp gnupg2 +gnutls +gpgme grep gzip +ima-evm-utils +keyutils-libs +krb5-libs +libarchive +libassuan +libblkid libcap +libcap-ng +libcomps +libdb +libdnf +libeconf +libevent +libffi +libgcrypt +libgomp +libgpg-error +libidn2 +libksba +libmodulemd +libpwquality +librepo +libsemanage +libsigsegv +libsolv +libssh +libtasn1 +libtirpc +libunistring +libunistring1.0 +libverto +libxcrypt +libxml2 +libyaml +lz4-libs +mpfr +ncurses-base +nettle +openldap openssl p11-kit pam +pcre2-syntax +popt python3 +python3-libs +python3-rpm +readline rpm +rpm-sequoia sed +setup +shadow-utils +sqlite-libs sudo systemd +systemd-libs tar +tpm2-tss +tzdata util-linux-core +vim-minimal +yum +zchunk-libs +zlib