Compare commits
No commits in common. "main" and "0.0.2" have entirely different histories.
|
@ -1,16 +0,0 @@
|
||||||
usr_mount_destination_flags="ro"
|
|
||||||
toolbox_profile_bind="--volume /etc/profile.d/toolbox.sh:/etc/profile.d/toolbox.sh:ro"
|
|
||||||
toolbox_profile_bind="--volume /usr/share/profile.d/toolbox.sh:/etc/profile.d/toolbox.sh:ro"
|
|
||||||
if echo "$usr_mount_source_flags" | grep --invert-match "ro" >/dev/null 2>&3; then
|
|
||||||
--volume "$TOOLBOX_PATH":/usr/bin/toolbox:ro \
|
|
||||||
if ! mount_bind /run/host/etc/machine-id /etc/machine-id ro; then
|
|
||||||
if ! mount_bind /run/host/var/lib/flatpak /var/lib/flatpak ro; then
|
|
||||||
if ! mount_bind /run/host/var/log/journal /var/log/journal ro; then
|
|
||||||
if strings.Contains(command.Name(), "complet") {
|
|
||||||
toolboxPathMountArg := toolboxPath + ":/usr/bin/toolbox:ro"
|
|
||||||
toolboxShMountArg := mount.source + ":" + mount.containerPath + ":ro"
|
|
||||||
{"/etc/machine-id", "/run/host/etc/machine-id", "ro"},
|
|
||||||
{"/var/lib/flatpak", "/run/host/var/lib/flatpak", "ro"},
|
|
||||||
{"/var/lib/systemd/coredump", "/run/host/var/lib/systemd/coredump", "ro"},
|
|
||||||
{"/var/log/journal", "/run/host/var/log/journal", "ro"},
|
|
||||||
" \"ro\"," +
|
|
|
@ -1,11 +0,0 @@
|
||||||
* @HarryMichal @debarshiray
|
|
||||||
/.github/workflows/arch-images.yaml @Foxboron
|
|
||||||
/.github/workflows/arch-images-pr.yaml @Foxboron
|
|
||||||
/.github/workflows/ubuntu-images.yaml @Jmennius
|
|
||||||
/.github/workflows/ubuntu-tests.yaml @Jmennius
|
|
||||||
/data/gfx/*.gif @jimmac
|
|
||||||
/images/arch @Foxboron
|
|
||||||
/images/rhel @debarshiray @olivergs
|
|
||||||
/images/ubuntu @Jmennius
|
|
||||||
/src/pkg/utils/arch.go @Foxboron
|
|
||||||
/src/pkg/utils/ubuntu.go @Jmennius
|
|
|
@ -1,54 +0,0 @@
|
||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Toolbx's bug report template
|
|
||||||
title: ''
|
|
||||||
labels: 1. Bug
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of *what the bug is*. If possible, re-run the command(s) with `--log-level debug` and put the output here.
|
|
||||||
|
|
||||||
**Steps how to reproduce the behaviour**
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
|
|
||||||
**Expected behaviour**
|
|
||||||
A clear and concise description of what you *expected to happen*.
|
|
||||||
|
|
||||||
**Actual behaviour**
|
|
||||||
A clear and concise description of what *actually happened*.
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Output of `toolbox --version` (v0.0.90+)**
|
|
||||||
e.g., `toolbox version 0.0.90`
|
|
||||||
|
|
||||||
**Toolbx package info (`rpm -q toolbox`)**
|
|
||||||
e.g., `toolbox-0.0.18-2.fc32.noarch`
|
|
||||||
|
|
||||||
**Output of `podman version`**
|
|
||||||
e.g.,
|
|
||||||
```
|
|
||||||
Version: 1.9.2
|
|
||||||
RemoteAPI Version: 1
|
|
||||||
Go Version: go1.14.2
|
|
||||||
OS/Arch: linux/amd64
|
|
||||||
```
|
|
||||||
|
|
||||||
**Podman package info (`rpm -q podman`)**
|
|
||||||
e.g., `podman-1.9.2-1.fc32.x86_64`
|
|
||||||
|
|
||||||
**Info about your OS**
|
|
||||||
e.g., Fedora Silverblue 32
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
||||||
When did the issue start occurring? After an update (what packages were updated)?
|
|
||||||
If the issue is about operating with containers/images (creating, using, deleting,..), share here what image you used. If you're unsure, share here the output of `toolbox list -i` (shows all Toolbx images on your system).
|
|
||||||
|
|
||||||
If you see an error message saying: `Error: invalid entry point PID of container <name-of-container>`, add to the ticket output of command `podman start --attach <name-of-container>`.
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Toolbx's feature request template
|
|
||||||
title: ''
|
|
||||||
labels: 1. Feature request
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here. If a different tool has the functionality you're requesting, share it here.
|
|
|
@ -1,64 +0,0 @@
|
||||||
name: "Arch Linux: Build and push arch-toolbox image"
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- images/arch/**
|
|
||||||
- .github/workflows/arch-images.yaml
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- images/arch/**
|
|
||||||
- .github/workflows/arch-images.yaml
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * MON'
|
|
||||||
|
|
||||||
env:
|
|
||||||
distro: 'arch'
|
|
||||||
platforms: 'linux/amd64'
|
|
||||||
registry: 'quay.io/toolbx'
|
|
||||||
username: 'toolbx+github'
|
|
||||||
|
|
||||||
# Prevent multiple workflow runs from racing to ensure that pushes are made
|
|
||||||
# sequentially for the main branch. Also cancel in progress workflow runs for
|
|
||||||
# pull requests only.
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-push-images:
|
|
||||||
name: Build and push the arch-toolbox image
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build container image (latest tag)
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
if: env.latest_release == matrix.release
|
|
||||||
with:
|
|
||||||
platforms: ${{ env.platforms }}
|
|
||||||
context: images/${{ env.distro }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
tags: latest
|
|
||||||
containerfiles: images/${{ env.distro }}/Containerfile
|
|
||||||
layers: false
|
|
||||||
oci: true
|
|
||||||
|
|
||||||
- name: Push to Container Registry (latest tag)
|
|
||||||
uses: redhat-actions/push-to-registry@v2
|
|
||||||
id: push-latest
|
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main'
|
|
||||||
with:
|
|
||||||
username: ${{ env.username }}
|
|
||||||
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
registry: ${{ env.registry }}
|
|
||||||
tags: latest
|
|
|
@ -1,97 +0,0 @@
|
||||||
name: "Ubuntu: Build and push ubuntu-toolbox images"
|
|
||||||
|
|
||||||
permissions: read-all
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- images/ubuntu/**
|
|
||||||
- .github/workflows/ubuntu-images.yaml
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
paths:
|
|
||||||
- images/ubuntu/**
|
|
||||||
- .github/workflows/ubuntu-images.yaml
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * MON'
|
|
||||||
|
|
||||||
env:
|
|
||||||
distro: 'ubuntu'
|
|
||||||
latest_release: '24.04'
|
|
||||||
platforms: 'linux/amd64, linux/arm64'
|
|
||||||
registry: 'quay.io/toolbx'
|
|
||||||
username: 'toolbx+github'
|
|
||||||
|
|
||||||
# Prevent multiple workflow runs from racing to ensure that pushes are made
|
|
||||||
# sequentially for the main branch. Also cancel in progress workflow runs for
|
|
||||||
# pull requests only.
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-push-images:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
release: ['18.04', '20.04', '22.04', '24.04', '24.10', '25.04']
|
|
||||||
fail-fast: false
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up QEMU for multi-arch builds
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install qemu-user-static
|
|
||||||
|
|
||||||
- name: Build container image
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
if: env.latest_release != matrix.release
|
|
||||||
with:
|
|
||||||
platforms: ${{ env.platforms }}
|
|
||||||
context: images/${{ env.distro }}/${{ matrix.release }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
tags: ${{ matrix.release }}
|
|
||||||
containerfiles: images/${{ env.distro }}/${{ matrix.release }}/Containerfile
|
|
||||||
layers: false
|
|
||||||
oci: true
|
|
||||||
|
|
||||||
- name: Build container image (latest tag)
|
|
||||||
uses: redhat-actions/buildah-build@v2
|
|
||||||
if: env.latest_release == matrix.release
|
|
||||||
with:
|
|
||||||
platforms: ${{ env.platforms }}
|
|
||||||
context: images/${{ env.distro }}/${{ matrix.release }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
tags: ${{ matrix.release }} latest
|
|
||||||
containerfiles: images/${{ env.distro }}/${{ matrix.release }}/Containerfile
|
|
||||||
layers: false
|
|
||||||
oci: true
|
|
||||||
|
|
||||||
- name: Push to Container Registry
|
|
||||||
uses: redhat-actions/push-to-registry@v2
|
|
||||||
id: push
|
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release
|
|
||||||
with:
|
|
||||||
username: ${{ env.username }}
|
|
||||||
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
registry: ${{ env.registry }}
|
|
||||||
tags: ${{ matrix.release }}
|
|
||||||
|
|
||||||
- name: Push to Container Registry (latest tag)
|
|
||||||
uses: redhat-actions/push-to-registry@v2
|
|
||||||
id: push-latest
|
|
||||||
if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release
|
|
||||||
with:
|
|
||||||
username: ${{ env.username }}
|
|
||||||
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
|
|
||||||
image: ${{ env.distro }}-toolbox
|
|
||||||
registry: ${{ env.registry }}
|
|
||||||
tags: ${{ matrix.release }} latest
|
|
|
@ -1,175 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright © 2023 – 2025 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
name: ubuntu-tests
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
schedule:
|
|
||||||
- cron: '0 0 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
ubuntu-jammy-tests:
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
path: containers/toolbox
|
|
||||||
submodules: true
|
|
||||||
|
|
||||||
- name: Install deb packages
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install \
|
|
||||||
apache2-utils \
|
|
||||||
bash-completion \
|
|
||||||
codespell \
|
|
||||||
fish \
|
|
||||||
flatpak \
|
|
||||||
gcc \
|
|
||||||
go-md2man \
|
|
||||||
golang-1.22 \
|
|
||||||
meson \
|
|
||||||
ninja-build \
|
|
||||||
openssl \
|
|
||||||
podman \
|
|
||||||
shellcheck \
|
|
||||||
skopeo \
|
|
||||||
systemd \
|
|
||||||
udisks2
|
|
||||||
|
|
||||||
- name: Ensure that 'p11-kit server' is absent
|
|
||||||
run: sudo rm /usr/libexec/p11-kit/p11-kit-server
|
|
||||||
|
|
||||||
- name: Set up PATH for Go 1.22
|
|
||||||
run: |
|
|
||||||
echo "PATH=/usr/lib/go-1.22/bin:$PATH" >> "$GITHUB_ENV"
|
|
||||||
|
|
||||||
- name: Checkout Bats
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
path: bats-core/bats-core
|
|
||||||
ref: v1.10.0
|
|
||||||
repository: bats-core/bats-core.git
|
|
||||||
submodules: true
|
|
||||||
|
|
||||||
- name: Install deb packages for Bats
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install \
|
|
||||||
bash \
|
|
||||||
parallel
|
|
||||||
|
|
||||||
- name: Install Bats
|
|
||||||
run: sudo ./install.sh /usr/local
|
|
||||||
working-directory: bats-core/bats-core
|
|
||||||
|
|
||||||
- name: Checkout shadow
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
path: shadow-maint/shadow
|
|
||||||
ref: 4.13
|
|
||||||
repository: shadow-maint/shadow.git
|
|
||||||
submodules: true
|
|
||||||
|
|
||||||
- name: Install deb packages for shadow
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install \
|
|
||||||
autoconf \
|
|
||||||
autopoint \
|
|
||||||
gettext \
|
|
||||||
libaudit-dev \
|
|
||||||
libcrypt-dev \
|
|
||||||
libpam0g-dev \
|
|
||||||
libselinux1-dev \
|
|
||||||
libsemanage-dev
|
|
||||||
|
|
||||||
- name: Set up build directory for shadow
|
|
||||||
run: |
|
|
||||||
autoreconf --force --install --verbose
|
|
||||||
./configure \
|
|
||||||
--disable-account-tools-setuid \
|
|
||||||
--disable-silent-rules \
|
|
||||||
--with-audit \
|
|
||||||
--with-libpam \
|
|
||||||
--with-selinux \
|
|
||||||
--with-yescrypt \
|
|
||||||
--without-acl \
|
|
||||||
--without-attr \
|
|
||||||
--without-su \
|
|
||||||
--without-tcb \
|
|
||||||
SHELL=/bin/sh
|
|
||||||
working-directory: shadow-maint/shadow
|
|
||||||
|
|
||||||
- name: Build shadow
|
|
||||||
run: make
|
|
||||||
working-directory: shadow-maint/shadow
|
|
||||||
|
|
||||||
- name: Install shadow
|
|
||||||
run: sudo make install
|
|
||||||
working-directory: shadow-maint/shadow
|
|
||||||
|
|
||||||
- name: Download Go modules
|
|
||||||
run: go mod download -x
|
|
||||||
working-directory: containers/toolbox/src
|
|
||||||
|
|
||||||
- name: Set up build directory
|
|
||||||
run: meson setup builddir
|
|
||||||
working-directory: containers/toolbox
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: meson compile -C builddir --verbose
|
|
||||||
working-directory: containers/toolbox
|
|
||||||
|
|
||||||
- name: Install
|
|
||||||
run: sudo meson install -C builddir
|
|
||||||
working-directory: containers/toolbox
|
|
||||||
|
|
||||||
- name: Unit tests
|
|
||||||
run: meson test -C builddir --verbose
|
|
||||||
working-directory: containers/toolbox
|
|
||||||
|
|
||||||
- name: System tests
|
|
||||||
run: |
|
|
||||||
bats --timing \
|
|
||||||
test/system/001-version.bats \
|
|
||||||
test/system/002-help.bats \
|
|
||||||
test/system/101-create.bats \
|
|
||||||
test/system/102-list.bats \
|
|
||||||
test/system/103-container.bats \
|
|
||||||
test/system/105-enter.bats \
|
|
||||||
test/system/106-rm.bats \
|
|
||||||
test/system/107-rmi.bats \
|
|
||||||
test/system/108-completion.bats \
|
|
||||||
test/system/201-ipc.bats \
|
|
||||||
test/system/203-network.bats \
|
|
||||||
test/system/210-ulimit.bats \
|
|
||||||
test/system/220-environment-variables.bats \
|
|
||||||
test/system/230-cdi.bats \
|
|
||||||
test/system/250-kerberos.bats \
|
|
||||||
test/system/270-rpm.bats \
|
|
||||||
test/system/501-create.bats \
|
|
||||||
test/system/505-enter.bats
|
|
||||||
env:
|
|
||||||
SHELL: /bin/bash
|
|
||||||
TMPDIR: /var/tmp
|
|
||||||
TOOLBX: /usr/local/bin/toolbox
|
|
||||||
working-directory: containers/toolbox
|
|
|
@ -1 +0,0 @@
|
||||||
src/toolbox
|
|
|
@ -1,6 +0,0 @@
|
||||||
[submodule "test/system/libs/bats-support"]
|
|
||||||
path = test/system/libs/bats-support
|
|
||||||
url = https://github.com/bats-core/bats-support.git
|
|
||||||
[submodule "test/system/libs/bats-assert"]
|
|
||||||
path = test/system/libs/bats-assert
|
|
||||||
url = https://github.com/bats-core/bats-assert.git
|
|
3
.mailmap
3
.mailmap
|
@ -1,3 +0,0 @@
|
||||||
<rishi@fedoraproject.org> <debarshir@gnome.org>
|
|
||||||
Mario Sebastian Chacon <the.masch@gmail.com>
|
|
||||||
Ondřej Míchal <harrymichal@seznam.cz>
|
|
189
.zuul.yaml
189
.zuul.yaml
|
@ -1,189 +0,0 @@
|
||||||
#
|
|
||||||
# Copyright © 2020 – 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
---
|
|
||||||
- job:
|
|
||||||
name: unit-test
|
|
||||||
description: Run Toolbx's unit tests declared in Meson
|
|
||||||
timeout: 1800
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-rawhide
|
|
||||||
label: cloud-fedora-rawhide
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/unit-test.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: unit-test-migration-path-for-coreos-toolbox
|
|
||||||
description: Run Toolbx's unit tests declared in Meson when built with -Dmigration_path_for_coreos_toolbox
|
|
||||||
timeout: 600
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: centos-9-stream
|
|
||||||
label: cloud-centos-9-stream
|
|
||||||
pre-run: playbooks/setup-env-migration-path-for-coreos-toolbox.yaml
|
|
||||||
run: playbooks/unit-test.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: unit-test-restricted
|
|
||||||
description: Run Toolbx's unit tests declared in Meson in a restricted build environment
|
|
||||||
timeout: 1800
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-rawhide
|
|
||||||
label: cloud-fedora-rawhide
|
|
||||||
pre-run: playbooks/setup-env-restricted.yaml
|
|
||||||
run: playbooks/unit-test.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-rawhide-commands-options
|
|
||||||
description: Run Toolbx's commands-options system tests in Fedora Rawhide
|
|
||||||
timeout: 7200
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-rawhide
|
|
||||||
label: cloud-fedora-rawhide
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-commands-options.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-rawhide-runtime-environment-arch-fedora
|
|
||||||
description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora Rawhide
|
|
||||||
timeout: 7200
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-rawhide
|
|
||||||
label: cloud-fedora-rawhide
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-arch-fedora.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-rawhide-runtime-environment-ubuntu
|
|
||||||
description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora Rawhide
|
|
||||||
timeout: 7200
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-rawhide
|
|
||||||
label: cloud-fedora-rawhide
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-ubuntu.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-42-commands-options
|
|
||||||
description: Run Toolbx's commands-options system tests in Fedora 42
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-42
|
|
||||||
label: cloud-fedora-42
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-commands-options.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-42-runtime-environment-arch-fedora
|
|
||||||
description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora 42
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-42
|
|
||||||
label: cloud-fedora-42
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-arch-fedora.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-42-runtime-environment-ubuntu
|
|
||||||
description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora 42
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-42
|
|
||||||
label: cloud-fedora-42
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-ubuntu.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-41-commands-options
|
|
||||||
description: Run Toolbx's commands-options system tests in Fedora 41
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-41
|
|
||||||
label: cloud-fedora-41
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-commands-options.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-41-runtime-environment-arch-fedora
|
|
||||||
description: Run Toolbx's (arch-fedora,runtime-environment) system tests in Fedora 41
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-41
|
|
||||||
label: cloud-fedora-41
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-arch-fedora.yaml
|
|
||||||
|
|
||||||
- job:
|
|
||||||
name: system-test-fedora-41-runtime-environment-ubuntu
|
|
||||||
description: Run Toolbx's (runtime-environment,ubuntu) system tests in Fedora 41
|
|
||||||
timeout: 6300
|
|
||||||
nodeset:
|
|
||||||
nodes:
|
|
||||||
- name: fedora-41
|
|
||||||
label: cloud-fedora-41
|
|
||||||
pre-run: playbooks/setup-env.yaml
|
|
||||||
run: playbooks/system-test-runtime-environment-ubuntu.yaml
|
|
||||||
|
|
||||||
- project:
|
|
||||||
periodic:
|
|
||||||
jobs:
|
|
||||||
- system-test-fedora-rawhide-commands-options
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-42-commands-options
|
|
||||||
- system-test-fedora-42-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-42-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-41-commands-options
|
|
||||||
- system-test-fedora-41-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-41-runtime-environment-ubuntu
|
|
||||||
check:
|
|
||||||
jobs:
|
|
||||||
- unit-test
|
|
||||||
- unit-test-migration-path-for-coreos-toolbox
|
|
||||||
- unit-test-restricted
|
|
||||||
- system-test-fedora-rawhide-commands-options
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-42-commands-options
|
|
||||||
- system-test-fedora-42-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-42-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-41-commands-options
|
|
||||||
- system-test-fedora-41-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-41-runtime-environment-ubuntu
|
|
||||||
gate:
|
|
||||||
jobs:
|
|
||||||
- unit-test
|
|
||||||
- unit-test-migration-path-for-coreos-toolbox
|
|
||||||
- unit-test-restricted
|
|
||||||
- system-test-fedora-rawhide-commands-options
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-rawhide-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-42-commands-options
|
|
||||||
- system-test-fedora-42-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-42-runtime-environment-ubuntu
|
|
||||||
- system-test-fedora-41-commands-options
|
|
||||||
- system-test-fedora-41-runtime-environment-arch-fedora
|
|
||||||
- system-test-fedora-41-runtime-environment-ubuntu
|
|
|
@ -1,3 +0,0 @@
|
||||||
## The Toolbx Project Community Code of Conduct
|
|
||||||
|
|
||||||
The Toolbx project follows the [Containers Community Code of Conduct](https://github.com/containers/common/blob/main/CODE-OF-CONDUCT.md).
|
|
164
CONTRIBUTING.md
164
CONTRIBUTING.md
|
@ -1,164 +0,0 @@
|
||||||

|
|
||||||
|
|
||||||
# Contributing to Toolbx
|
|
||||||
|
|
||||||
Thank you for wanting to contribute to Toolbx! We greatly appreciate your
|
|
||||||
interest!
|
|
||||||
|
|
||||||
# Reporting Bugs
|
|
||||||
|
|
||||||
## Before Submitting a Bug Report
|
|
||||||
|
|
||||||
- Check if your issue is already reported in our [bug tracker](https://github.com/containers/toolbox/issues)
|
|
||||||
- If the issue is already reported and is marked as **OPEN**, comment on it
|
|
||||||
and if possible and needed, share info about the issue just as if you were
|
|
||||||
submitting a new issue
|
|
||||||
- If the issue is marked as **CLOSED**, check if your version of Toolbx is
|
|
||||||
up-to-date or if there are some steps, described in the closed issue, that
|
|
||||||
you should follow. If you are still experiencing the issue, please file a
|
|
||||||
new issue
|
|
||||||
- See our [documentation](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/)
|
|
||||||
if there are some steps that could help you solve your issue
|
|
||||||
- Sometimes a bug is not reported in our bug tracker but instead people ask for
|
|
||||||
help somewhere else (e.g., chat channels). In such cases we'd like you to still report the bug and
|
|
||||||
share with us any info that could be gathered from those places
|
|
||||||
|
|
||||||
## Writing a Bug Report
|
|
||||||
|
|
||||||
Writing good bug reports is a nice way to make the job of the maintainers and
|
|
||||||
other contributors a bit easier.
|
|
||||||
|
|
||||||
When writing a bug report:
|
|
||||||
|
|
||||||
- **Use a clear and descriptive title**
|
|
||||||
- **Describe the problem** - Can you reproduce the bug reliably? What first
|
|
||||||
triggered the problem? Did it start happening after upgrading your system?
|
|
||||||
- **Provide steps how to reproduce** - It's easier for us to fix a bug if we can
|
|
||||||
reproduce it.
|
|
||||||
- **Describe the behavior you received and what you expected** - Sometimes it
|
|
||||||
may not be clear what the *right* behavior should look like.
|
|
||||||
- **Provide info about the version of used software** - What version of Toolbx
|
|
||||||
and Podman do you use?
|
|
||||||
- **Provide info about your system** - What distribution do you use? Which
|
|
||||||
desktop environment? Is it a VM or a real machine?
|
|
||||||
|
|
||||||
# Making Suggestions
|
|
||||||
|
|
||||||
Toolbx is not feature-complete and some of it's functionality is not-there-yet.
|
|
||||||
We are thankful for all suggestions and ideas but be ready that your suggestion
|
|
||||||
may be rejected.
|
|
||||||
|
|
||||||
## Before Submitting a Suggestion
|
|
||||||
|
|
||||||
- Check if your suggestion has not already been made in our [bug tracker](https://github.com/containers/toolbox/issues)
|
|
||||||
- If it has and is marked as **OPEN**, go ahead and share your own thoughts
|
|
||||||
about the topic!
|
|
||||||
- If it has and is marked as **CLOSED**, please read the ticket and depending
|
|
||||||
on whether the suggestion was accepted or not consider if it is worth
|
|
||||||
opening a new issue or not.
|
|
||||||
- Consider if the suggestion is not too out of scope of the project.
|
|
||||||
|
|
||||||
## Writing a Suggestion
|
|
||||||
|
|
||||||
When writing a suggestion:
|
|
||||||
|
|
||||||
- **Use a clear and descriptive title**
|
|
||||||
- **Describe the idea** - What parts of Toolbx does it affect? Is it a major
|
|
||||||
functionality or a minor tweak?
|
|
||||||
- **Provide step-by-step description of the suggested behavior** so that we
|
|
||||||
will understand.
|
|
||||||
- **Explain why would this idea be useful** - It sounds good to have a lot of
|
|
||||||
options but sometimes less is more. See this [article](https://ometer.com/preferences.html).
|
|
||||||
|
|
||||||
# First Contribution
|
|
||||||
|
|
||||||
Toolbx is written in [Go](https://golang.org) and uses [Meson](https://mesonbuild.com)
|
|
||||||
as it's buildsystem.
|
|
||||||
|
|
||||||
Instructions for building Toolbx from source are in our [README](https://github.com/containers/toolbox/blob/main/README.md).
|
|
||||||
|
|
||||||
> You may not need to build the project from source if your contribution is not
|
|
||||||
> related to the code of Toolbx itself (e.g., documentation, updating CI
|
|
||||||
> config, playing with image definitions,...).
|
|
||||||
|
|
||||||
Here are some ideas of what you could contribute with:
|
|
||||||
|
|
||||||
- Check our [bug tracker](https://github.com/containers/toolbox/issues)
|
|
||||||
and look for tickets marked with labels `good-first-issue` or `help-wanted`.
|
|
||||||
- Write tests - Go has [tools](https://golang.org/pkg/testing/) for writing tests.
|
|
||||||
There are also [some](https://github.com/stretchr/testify) [libraries](https://github.com/onsi/ginkgo)
|
|
||||||
used for creating even more sophisticated tests.
|
|
||||||
- Play with custom images - Toolbx currently officially works with Fedora-based
|
|
||||||
images. Ultimately there should be a wide variety of supported distro images.
|
|
||||||
You can help with testing other people's image definitions or creating your
|
|
||||||
own. **Beware**, maintainers still don't have a clear idea of how the image
|
|
||||||
infrastructure should look like.
|
|
||||||
- Write documentation - Some functions in Toolbx's code don't have comments and
|
|
||||||
it's not very clear what they do. Toolbx has it's [documentation](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/)
|
|
||||||
hosted by Fedora. It's not very large and could use some attention.
|
|
||||||
- Hack on the code and share the result - Seriously! Sometimes random ideas are
|
|
||||||
the best.
|
|
||||||
|
|
||||||
Toolbx currently does not have an infrastructure for translations. You can help
|
|
||||||
us to set it up!
|
|
||||||
|
|
||||||
# Pull Requests
|
|
||||||
|
|
||||||
All pull requests are welcome! Features, bug fixes, fixing of typos, tests,
|
|
||||||
documentation, code comments and much more.
|
|
||||||
|
|
||||||
## Creating a Pull Request
|
|
||||||
|
|
||||||
- Document well your changes - This applies to the description of your PR and to
|
|
||||||
your commit messages.
|
|
||||||
- If possible add additional test cases - If there are no tests for the part of
|
|
||||||
code you're contributing to, consider opening another PR if you want to
|
|
||||||
implement it yourself or file an issue so that somebody else can pick it up.
|
|
||||||
- Update documentation to reflect your changes - Manual pages can be found in
|
|
||||||
directory `doc`. If your changes affect Toolbx's [documentation](https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/),
|
|
||||||
consider creating a PR there (but to save yourself time, you can do it
|
|
||||||
after your changes are accepted), too.
|
|
||||||
- After creating a PR add to the bottom of all your commits a link to the PR. This helps the future maintainers find discussions around the changes.
|
|
||||||
|
|
||||||
## After Creating a Pull Request
|
|
||||||
|
|
||||||
It may take the us some time to review your changes and sometimes even longer to
|
|
||||||
actually merge them. Please, don't interpret this as an act of not appreciating
|
|
||||||
your efforts! We really appreciate them! Sometimes we may be stuck in different
|
|
||||||
parts of our lives.
|
|
||||||
|
|
||||||
If it takes us a very long time to even respond to your Pull Request, you can
|
|
||||||
try to @ping us at our communication channels (see section #Communication).
|
|
||||||
|
|
||||||
##
|
|
||||||
Toolbx has a CI (Continuous Integration) setup for running tests. Their goal is to check if your
|
|
||||||
changes don't affect adversely Toolbx's functionality. Sometimes these tests
|
|
||||||
mail fail with a false-positive. If you are not sure about the outcome of the
|
|
||||||
tests, you can try to trigger a new test run by writing a comment with text `recheck` (really just that). If the issue persists, reach out to the maintainers!
|
|
||||||
|
|
||||||
Toolbx's CI system is [Zuul](https://zuul-ci.org/) hosted at [softwarefactory](https://softwarefactory-project.io/). The CI is defined using [Ansible](https://www.ansible.com) playbooks. For more information on writing Zuul jobs see their [documentation](https://zuul-ci.org/docs/zuul/reference/user.html).
|
|
||||||
|
|
||||||
# Little Style Guide
|
|
||||||
|
|
||||||
Toolbx is written in [Go](https://golang.org) and uses its default set of tools
|
|
||||||
including `gofmt` and `golint`.
|
|
||||||
|
|
||||||
Here are some good materials to learn from about the way how to write nice and
|
|
||||||
idiomatic code in Go:
|
|
||||||
|
|
||||||
- [A Tour of Go](https://tour.golang.org/welcome)
|
|
||||||
- [How To Write Go Code](https://golang.org/doc/code.html)
|
|
||||||
- [Effective Go](https://golang.org/doc/effective_go.html)
|
|
||||||
|
|
||||||
Overall, the [Go Blog](https://blog.golang.org/) is a good place to learn more
|
|
||||||
about Go.
|
|
||||||
|
|
||||||
If you are using Visual Studio Code, there are [plugins](https://marketplace.visualstudio.com/items?itemName=golang.Go)
|
|
||||||
that include all this functionality and throw a warning if you're doing
|
|
||||||
something wrong.
|
|
||||||
|
|
||||||
# Communication
|
|
||||||
|
|
||||||
The Toolbx team hangs-out at a dedicated Matrix channel: [#toolbx:matrix.org](https://matrix.to/#/#toolbx:matrix.org).
|
|
||||||
|
|
||||||
For Fedora-specific discussions you can visit their [wiki](https://docs.fedoraproject.org/en-US/project/join/) to learn about the means to contact the community.
|
|
66
GOALS.md
66
GOALS.md
|
@ -1,66 +0,0 @@
|
||||||
<img src="data/logo/toolbox-logo-landscape.svg" alt="Toolbox logo landscape" width="800"/>
|
|
||||||
|
|
||||||
## Goals
|
|
||||||
|
|
||||||
### High Level Goals
|
|
||||||
|
|
||||||
- Provide a convenient command line interface to run containers using
|
|
||||||
[Podman](https://podman.io/)
|
|
||||||
- Support for development, debugging and system management use cases
|
|
||||||
- Support for multiple distros
|
|
||||||
- `toolbox` package in multiple distros
|
|
||||||
- `toolbox` containers for multiple distros
|
|
||||||
|
|
||||||
### Non-goals
|
|
||||||
|
|
||||||
- Supporting multiple container runtimes. Toolbx will use Podman exclusively
|
|
||||||
- Adding significant features on top of Podman
|
|
||||||
- Significant feature requests should be driven into Podman upstream
|
|
||||||
- To run containers that aren't tightly integrated with the host
|
|
||||||
- Extremely sandboxed containers quickly become specific to the user
|
|
||||||
|
|
||||||
### Developer Use Cases
|
|
||||||
|
|
||||||
- I’m a developer hacking on source code and building/testing code
|
|
||||||
- Most cases: user doesn't need root, rootless containers work fine
|
|
||||||
- Some cases: user needs root for testing
|
|
||||||
- Desktop Development:
|
|
||||||
- Developers need things like D-Bus, display, etc. to be forwarded into the
|
|
||||||
Toolbx container
|
|
||||||
- Headless Development:
|
|
||||||
- Toolbx works properly in headless environments (no display, etc)
|
|
||||||
- Need development tools like GDB, strace, etc. to work
|
|
||||||
|
|
||||||
### Debugging and System Management Use Cases
|
|
||||||
|
|
||||||
- Inspecting host processes and the kernel
|
|
||||||
- Typically need root access
|
|
||||||
- Need bpftrace, strace on host processes to work
|
|
||||||
- Ideally even do things like helping get kernel-debuginfo data for the
|
|
||||||
host kernel
|
|
||||||
- Managing system services
|
|
||||||
- `systemctl restart foo.service`
|
|
||||||
- journalctl
|
|
||||||
- Managing updates to the host
|
|
||||||
- rpm-ostree
|
|
||||||
- dnf/yum (classic systems)
|
|
||||||
|
|
||||||
### Specific environments
|
|
||||||
|
|
||||||
- Fedora Silverblue
|
|
||||||
- Silverblue comes with a subset of packages and discourages host software
|
|
||||||
changes
|
|
||||||
- Users need a Toolbx container as a working environment
|
|
||||||
- Future: use Toolbx container by default when a user opens a shell
|
|
||||||
- Fedora CoreOS
|
|
||||||
- Similar to Silverblue, but non-graphical and smaller package set
|
|
||||||
- RHEL CoreOS
|
|
||||||
- Similar to Fedora CoreOS. Based on RHEL content and the underlying
|
|
||||||
operating system for OpenShift
|
|
||||||
- Need to [use default authfile on pull](https://github.com/coreos/toolbox/pull/58/commits/413f83f7240d3c31121b557bfd55e489fad24489)
|
|
||||||
- Need to ensure compatibility with the rhel7/support-tools container
|
|
||||||
- Currently not a Toolbx image, opportunity for collaboration
|
|
||||||
- Alignment with `oc debug node/` (OpenShift)
|
|
||||||
- `oc debug node` opens a shell on a kubernetes node
|
|
||||||
- Value in having a consistent environment for both Toolbx's debugging
|
|
||||||
mode and `oc debug node`
|
|
104
NEWS
104
NEWS
|
@ -1,104 +1,22 @@
|
||||||
0.2
|
Overview of changes in 0.0.2
|
||||||
===
|
============================
|
||||||
|
|
||||||
### Security fixes
|
* Allow an 'F' or 'f' prefix when specifying the release
|
||||||
|
* Avoid a Bash-ism (ie. ==) and stick to POSIX (ie. =)
|
||||||
* Bumped the minimum github.com/go-viper/mapstructure/v2 version to 2.3.0 for
|
* Fallback to /bin/bash if $SHELL doesn't exist in the toolbox container
|
||||||
GHSA-fv92-fjc5-jj9h or GO-2025-3787
|
* Give access to the system D-Bus instance
|
||||||
* Bumped the minimum github.com/NVIDIA/nvidia-container-toolkit version to
|
* Make shm_open work
|
||||||
1.17.8 for CVE-2025-23266 and CVE-2025-23267
|
|
||||||
|
|
||||||
### Bug fixes
|
|
||||||
|
|
||||||
* Improved error handling when creating symbolic links inside the container
|
|
||||||
to initialize it
|
|
||||||
* Preserved environment variables set by a KDE session and Konsole
|
|
||||||
* Unbroke access to CA certificates in sshd(8) sessions (regression in 0.1.2)
|
|
||||||
* Unbroke overriding the HOME variable (regression in 0.0.90)
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
* Bumped the minimum Go version to 1.22
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
|
|
||||||
* Enabled the runtime environment tests for the Container Device Interface
|
|
||||||
specification and resource limits on Ubuntu 22.04
|
|
||||||
* Isolated the host's HOME from the system tests
|
|
||||||
* Unbroke the missing subordinate ID ranges (regression in Fedora Rawhide)
|
|
||||||
* Unbroke the 'toolbox run /etc' tests with Bash >= 5.3 (regression in Fedora
|
|
||||||
Rawhide)
|
|
||||||
|
|
||||||
|
|
||||||
0.1.2
|
Overview of changes in 0.0.1
|
||||||
=====
|
============================
|
||||||
|
|
||||||
### Security fixes
|
* First preview release
|
||||||
|
|
||||||
* Bumped the minimum github.com/briandowns/spinner version to 1.23.2 for
|
|
||||||
CVE-2022-29526 or GHSA-p782-xgp4-8hr8, and other bug fixes
|
|
||||||
* Bumped the minimum github.com/NVIDIA/nvidia-container-toolkit version to
|
|
||||||
1.17.4 for CVE-2024-0134 or GHSA-7jm9-xpwx-v999, CVE-2024-0135 or
|
|
||||||
GHSA-9v84-cc9j-pxr6, CVE-2024-0136 or GHSA-vcfp-63cx-4h59, CVE-2024-0137 or
|
|
||||||
GHSA-frhw-w3wm-6cw4, and CVE-2025-23359 or GHSA-4hmh-pm5p-9j7j
|
|
||||||
|
|
||||||
### Enhancements
|
|
||||||
|
|
||||||
* Added ubuntu-toolbox image definitions for Ubuntu 25.04
|
|
||||||
* Gave access to the CA certificates from the host operating system — requires
|
|
||||||
new Toolbx images and 'p11-kit server' on the host. Note that the UBI-based
|
|
||||||
images for RHEL haven't yet been updated, and this feature is currently
|
|
||||||
disabled for those containers.
|
|
||||||
|
|
||||||
### Bug fixes
|
|
||||||
|
|
||||||
* Optimized getting the runtime directory
|
|
||||||
* Replaced links to the code repository with the website
|
|
||||||
* Updated fallback release to 42 for non-fedora hosts
|
|
||||||
|
|
||||||
### Dependencies
|
|
||||||
|
|
||||||
* Added a new weak dependency on 'p11-kit server'
|
|
||||||
* Bumped the minimum github.com/NVIDIA/go-nvlib version to 0.7.1
|
|
||||||
* Bumped the minimum github.com/spf13/viper version to 1.20.1 to reduce the
|
|
||||||
number of indirect dependencies
|
|
||||||
* Bumped the minimum github.com/stretchr/testify version to 1.10.0
|
|
||||||
* Bumped the minimum Go version to 1.21
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
|
|
||||||
* Added runtime environment tests for the Kerberos and RPM configuration
|
|
||||||
* Added unit tests for utils.PathExists()
|
|
||||||
* Enabled the commands and options tests for 'list' on Arch and Ubuntu 22.04
|
|
||||||
* Enabled the system tests for 'create' and networking on Arch Linux
|
|
||||||
* Isolated the storage directory from the host's XDG_CACHE_HOME or HOME —
|
|
||||||
bumped the minimum Linux kernel version to 6.6
|
|
||||||
* Made the the commands and options tests for 'create' stricter
|
|
||||||
* Optimized the runtime environment tests by avoiding a lot of disk I/O
|
|
||||||
* Restored the generation and installation of the Bash completions on the CI
|
|
||||||
(regression from Fedora 41)
|
|
||||||
|
|
||||||
|
|
||||||
0.1.1
|
|
||||||
=====
|
|
||||||
|
|
||||||
### Security fixes
|
|
||||||
|
|
||||||
* Bumped the minimum github.com/NVIDIA/nvidia-container-toolkit version to
|
|
||||||
1.16.2 for CVE-2024-0132 or GHSA-mjjw-553x-87pq, and CVE-2024-0133 or
|
|
||||||
GHSA-f748-7hpg-88ch
|
|
||||||
|
|
||||||
### Bug fixes
|
|
||||||
|
|
||||||
* Unbroke 'enter' if the NVIDIA Persistence Daemon is used (regression in
|
|
||||||
0.0.99.6)
|
|
||||||
* Unbroke 'enter' if the proprietary NVIDIA driver is installed, but not used
|
|
||||||
(regression in 0.0.99.6)
|
|
||||||
|
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
Copyright © 2024 – 2025 Red Hat, Inc.
|
Copyright © 2018 Red Hat, Inc.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Copying and distribution of this file, with or without modification,
|
Copying and distribution of this file, with or without modification,
|
||||||
|
|
594
NEWS.old
594
NEWS.old
|
@ -1,594 +0,0 @@
|
||||||
Overview of changes in 0.1.0
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Add ubuntu-toolbox image definitions for Ubuntu 24.10
|
|
||||||
* Optimize the CI on stable Fedora nodes
|
|
||||||
* Stop updating the ubuntu-toolbox images for Ubuntu 16.04 and 18.04
|
|
||||||
* Stop using slirp4netns(1) in the system tests
|
|
||||||
* Unbreak the downstream Fedora CI
|
|
||||||
* Unbreak the ubuntu-toolbox image build for Ubuntu 24.04
|
|
||||||
* Update fallback release to 40 for non-fedora hosts
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.6
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add all the iconv converter modules for glibc to the fedora-toolbox images
|
|
||||||
* Add an extra space after the ⬢ in the PS1
|
|
||||||
* Add cracklib-dicts to the fedora-toolbox images
|
|
||||||
* Add logos to the Arch Linux and Fedora badges, and a badge for the Ubuntu
|
|
||||||
package
|
|
||||||
* Add manual pages and pacman progress bars to the arch-toolbox image
|
|
||||||
* Add toolbox image definitions for RHELs 8.8, 8.9, 9.2 and 9.3
|
|
||||||
* Add translations for gawk to the fedora-toolbox images
|
|
||||||
* Add ubuntu-toolbox image definitions for Ubuntu 24.04
|
|
||||||
* Avoid running out of storage space when running the system tests on the CI
|
|
||||||
* Bump the minimum github.com/briandowns/spinner version to 1.18.0
|
|
||||||
* Depend on github.com/go-logfmt/logfmt version 0.5.0
|
|
||||||
* Depend on github.com/NVIDIA/go-nvlib version 0.6.1
|
|
||||||
* Depend on github.com/NVIDIA/nvidia-container-toolkit version 1.16.1
|
|
||||||
* Don't unmarshal the 'podman ps' JSON twice
|
|
||||||
* Don't use use auto dependencies for shell completion scripts
|
|
||||||
* Drop one "o" and rename the project as "Toolbx"
|
|
||||||
* Enable more tests on Ubuntu 22.04 by setting the SHELL environment variable
|
|
||||||
* Enable the proprietary NVIDIA driver
|
|
||||||
* Exclude the meson.build files when installing the system tests
|
|
||||||
* Fix pacman cache removal in the arch-toolbox image
|
|
||||||
* Let 'create' use an image without a name
|
|
||||||
* Let the terminal know the active container on all host operating systems,
|
|
||||||
and not just Fedora Silverblue and Workstation
|
|
||||||
* Limit the scope of temporary files used by the system tests
|
|
||||||
* Optimize 'enter' and 'run' for both an already running container and a
|
|
||||||
container getting initialized
|
|
||||||
* Optimize the CI on Fedora nodes
|
|
||||||
* Optimize the resource limits tests
|
|
||||||
* Preserve the Konsole and xterm versions
|
|
||||||
* Require --assumeyes to pull an image when not connected to a terminal
|
|
||||||
* Retain errors from toolbox(1) without --verbose when forwarding to host
|
|
||||||
* Retain exit codes from toolbox(1) when forwarding to host
|
|
||||||
* Show the entry point's debug logs & errors in 'enter' and 'run'
|
|
||||||
* Support 64-bit LoongArch
|
|
||||||
* Synchronize the documentation with the website
|
|
||||||
* Unbreak Podman's downstream Fedora CI
|
|
||||||
* Use Buildah and Podman to build and test the arch-toolbox and ubuntu-toolbox
|
|
||||||
images
|
|
||||||
* Use the same linker flags as NVIDIA Container Toolkit, and '-z now' is
|
|
||||||
unsupported
|
|
||||||
* Work around bug in pasta(1) networks in the system tests
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.5
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add psmisc to the fedora-toolbox images
|
|
||||||
* Add several new system and unit tests, and make the existing ones stricter
|
|
||||||
* Add workaround to support configuring the user's password on some Active
|
|
||||||
Directory set-ups
|
|
||||||
* Be aware of security hardened mount points marked with 'nosuid,nodev,noexec'
|
|
||||||
* Bump the minimum Bats version to 1.7.0 to simplify running a subset of the
|
|
||||||
system tests and fix various warnings
|
|
||||||
* Bump the minimum Go requirement to 1.20
|
|
||||||
* Bump the minimum github.com/docker/go-units version to 0.5.0
|
|
||||||
* Bump the minimum golang.org/x/sys version to 0.1.0 for CVE-2022-29526 or
|
|
||||||
GHSA-p782-xgp4-8hr8
|
|
||||||
* Bump the minimum golang.org/x/text version to 0.3.8 for CVE-2022-32149 or
|
|
||||||
GHSA-69ch-w2m2-3vjp
|
|
||||||
* Bump the minimum gopkg.in/yaml.v3 version to 3.0.0 for CVE-2022-28948 or
|
|
||||||
GHSA-hp87-p4gw-j4gq
|
|
||||||
* Deprecate the --monitor-host option of 'init-container'
|
|
||||||
* Don't leak the NAME and VERSION environment variables into containers made
|
|
||||||
from the fedora-toolbox images
|
|
||||||
* Drop golang.org/x/term as a dependency
|
|
||||||
* Ensure that Toolbx containers start even if there aren't sufficient resources
|
|
||||||
for inotify(7)
|
|
||||||
* Ensure that the fedora-toolbox images retain documentation and translations
|
|
||||||
* Ensure that toolbox(1) can be built without using podman(1) and validating
|
|
||||||
subordinate IDs
|
|
||||||
* Fix DNS queries in Toolbx containers made from images with systemd-resolved,
|
|
||||||
when running on hosts that don't use it
|
|
||||||
* Handle space-separated input when asking for confirmation
|
|
||||||
* Let the terminal know the active container also on Fedora Linux Asahi Remix
|
|
||||||
* Offer built-in support for Arch Linux
|
|
||||||
* Offer built-in support for Ubuntu
|
|
||||||
* Preserve the host's environment variables for Bash's history facility inside
|
|
||||||
Toolbx containers
|
|
||||||
* Rely on podman >= 1.6.4 always being present
|
|
||||||
* Report the size of the image that will be downloaded from a registry
|
|
||||||
* Show welcome message on Fedora Sericea
|
|
||||||
* Support 64-bit RISC-V
|
|
||||||
* Update fallback release to 38 for non-fedora hosts
|
|
||||||
* Unbreak the line count checks with Bats >= 1.10.0
|
|
||||||
* Unbreak the manual page checks with GNU roff >= 1.23
|
|
||||||
* Various updates to the documentation and manuals
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.4
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add an --authfile option to 'create'
|
|
||||||
* Add a --preserve-fds option to 'run'
|
|
||||||
* Add a test that runs codespell
|
|
||||||
* Add fedora-toolbox image definition for Fedoras 37, 38 and 39
|
|
||||||
* Add several new system tests and make the existing ones stricter
|
|
||||||
* Avoid unexpected DNF behaviour with reinstalling or swapping RPMs when
|
|
||||||
building the fedora-toolbox images
|
|
||||||
* Be more strict when looking for a C compiler for building
|
|
||||||
* Call 'systemd-tmpfiles --create' when installing
|
|
||||||
* Check if subordinate ID ranges are present for also the UID, and not just
|
|
||||||
the username
|
|
||||||
* Document the toolbox.conf configuration file
|
|
||||||
* Don't create a nested pseudo-terminal device during 'run' if the standard
|
|
||||||
input and output streams are not connected to a terminal
|
|
||||||
* Don't leak ID and VARIANT_ID into the shell
|
|
||||||
* Don't unmarshal the 'podman images' JSON twice
|
|
||||||
* Enable OpenGL and Vulkan for hardware with free drivers on the
|
|
||||||
fedora-toolbox images
|
|
||||||
* Enable running non-nested display servers from a virtual terminal
|
|
||||||
* Enforce all the default 'go vet' checks on all Go sources
|
|
||||||
* Enforce gofmt on all Go sources
|
|
||||||
* Ensure that the 'distro' option is valid, instead of silently falling back
|
|
||||||
to Fedora
|
|
||||||
* Ensure that 'run' has the same container environment as 'enter'
|
|
||||||
* Ensure that the fedora-toolbox images has all the locales known to glibc,
|
|
||||||
and not just C, POSIX and C.UTF-8
|
|
||||||
* Exit 'run' with exit code of invoked command
|
|
||||||
* Fix the titles of the manuals
|
|
||||||
* Give precedence to /etc/os-release over /usr/lib/os-release in
|
|
||||||
/etc/profile.d/toolbox.sh
|
|
||||||
* Hide the Fedora-specific welcome banner on non-Fedora containers
|
|
||||||
* Improve the error messages if the 'distro' and 'release' options are invalid
|
|
||||||
* Improve the error messages for mutually exclusive options
|
|
||||||
* Improve the default image used for RHEL Toolbx containers to offer an
|
|
||||||
interactive command line experience similar to that on RHEL Workstation
|
|
||||||
* Make /etc/profile.d/toolbox.sh compatible with Z shell again
|
|
||||||
* Make sd_booted(3) work inside Toolbx containers
|
|
||||||
* Preserve the host's XDG_SESSION_CLASS environment variable inside Toolbx
|
|
||||||
containers
|
|
||||||
* Replace github.com/mattn/go-isatty and the deprecated
|
|
||||||
golang.org/x/crypto/ssh/terminal API with golang.org/x/term
|
|
||||||
* Replace jwhois with whois in the fedora-toolbox images for Fedora >= 37
|
|
||||||
* Replace the hand-written shell completion for Bash with ones generated by
|
|
||||||
Cobra that cover fish and Z shell too
|
|
||||||
* Restore more documentation removed from the base Fedora images
|
|
||||||
* Run unit tests with -Dmigration_path_for_coreos_toolbox on CentOS Stream 9 as
|
|
||||||
part of the CI
|
|
||||||
* Silence warning when running the system tests with Bats >= 1.7.0
|
|
||||||
* Support RHEL 9 Toolbx containers
|
|
||||||
* Support subordinate user and group ID ranges on enterprise set-ups
|
|
||||||
* Unbreak sorting and clearly identify copied images in 'list'
|
|
||||||
* Update fallback release to 37 for non-fedora hosts
|
|
||||||
* Update the Go dependencies with 'go get -u'
|
|
||||||
* Various updates to the documentation and manuals
|
|
||||||
* Work around Cobra 1.1.2's handling of usage functions
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.3
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add bc and iproute to the fedora-toolbox images
|
|
||||||
* Add fedora-toolbox image definition for Fedoras 35 and 36
|
|
||||||
* Add support for configuration files
|
|
||||||
* Add optional migration paths for coreos/toolbox users
|
|
||||||
* Allow overriding the path to tmpfilesdir
|
|
||||||
* Avoid RPM failures due to unexpected file owners
|
|
||||||
* Bump minimum Meson version to 0.58.0
|
|
||||||
* Ensure that binaries are run against their build-time ABI
|
|
||||||
* Expose the host's entire / in the container at /run/host
|
|
||||||
* Fix the PS1 on Z shell
|
|
||||||
* Fix wrong use of regexp.MatchString
|
|
||||||
* Give access to PC/SC smart card daemon
|
|
||||||
* Make locate(1) opt-in by default
|
|
||||||
* Make the test suite non-destructive
|
|
||||||
* Mention that private images require 'podman login'
|
|
||||||
* Remove misleading and redundant CMD from the fedora-toolbox images
|
|
||||||
* Remove the deprecated com.github.debarshiray.toolbox label from the
|
|
||||||
fedora-toolbox images, and when creating a new container
|
|
||||||
* Replace outdated logos with pixels
|
|
||||||
* Show basic help when man(1) is not available
|
|
||||||
* Show welcome message on Fedora Kinoite
|
|
||||||
* Test ImageReferenceCanBeID and ParseRelease
|
|
||||||
* Unbreak 'enter' if the shell had exited with 127
|
|
||||||
* Various additions and improvements to the test suite
|
|
||||||
* Various updates to the documentation and manuals
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.2
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add nano-default-editor to the fedora-toolbox images
|
|
||||||
* Add unit tests for pkg/shell
|
|
||||||
* Connect Go unit tests to Meson & rename CI job
|
|
||||||
* Decouple image caching from Zuul for the system tests
|
|
||||||
* Don't assume that the user's GID is the same as the UID
|
|
||||||
* Don't require /etc/machine-id in toolbox images
|
|
||||||
* Drop ShellCheck on Shell Toolbox
|
|
||||||
* Give access to systemd-resolved's Varlink socket
|
|
||||||
* Optimize 'enter' and 'run' in the non-fallback case
|
|
||||||
* Optimize the performance of 'list'
|
|
||||||
* Properly separate builddir setup & build in the Ansible playbooks
|
|
||||||
* Rename Dockerfile to Containerfile for the fedora-toolbox images
|
|
||||||
* Show test execution time for the system tests
|
|
||||||
* Support listing images without names
|
|
||||||
* Unbreak 'create' on an unlocked OSTree deployment
|
|
||||||
* Unbreak 'create' on CoreOS with read-only /boot
|
|
||||||
* Update default release to 33 for non-Fedora hosts
|
|
||||||
* Update the GitHub issue templates
|
|
||||||
* Use a regular file, not a symbolic link, for the README.md in the
|
|
||||||
fedora-toolbox images
|
|
||||||
* Fall back to $HOME when using a container if the current working directory
|
|
||||||
isn't present in it
|
|
||||||
* Various updates to the Bash completion
|
|
||||||
* Various updates to the manuals
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99.1
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Add deprecation notices to the POSIX shell implementation
|
|
||||||
* Add test for the new --distro option
|
|
||||||
* Drop the FGC namespace from the fedora-toolbox images
|
|
||||||
* Fix miscellaneous issues pointed out by https://www.shellcheck.net/
|
|
||||||
* Handle hosts with /etc/localtime as absolute symlink
|
|
||||||
* Improve README.md
|
|
||||||
* Improve the Zuul configuration
|
|
||||||
* Mount /mnt only if it is available
|
|
||||||
* Refactor the system tests, and use bats-assert and bats-support
|
|
||||||
* Test that sudo doesn't require a password
|
|
||||||
* Update the manuals
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.99
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add a --distro option to 'create', 'enter' and 'run'
|
|
||||||
* Prevent setting VTE-specific PROMPT_COMMAND without VTE
|
|
||||||
* Remove the --candidate-registry option from Bash completion and the manual
|
|
||||||
for 'create'
|
|
||||||
* Remove the deprecated reset command
|
|
||||||
* Support RHEL hosts by creating containers based on UBI
|
|
||||||
* Try to avoid 'latest' tags, when looking at RepoTags
|
|
||||||
* Update the labels used for filtering toolbox containers images
|
|
||||||
* Update the range of supported Fedora releases
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.98.1
|
|
||||||
===============================
|
|
||||||
|
|
||||||
* Pass the USER environment variable to the container
|
|
||||||
* Make /etc/profile.d/toolbox.sh compatible with Z shell again
|
|
||||||
* Update the manual to mention that the --image and --release options of
|
|
||||||
'create' can't be used together
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.98
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add nss-mdns to the fedora-toolbox images
|
|
||||||
* Correctly check validity of container name
|
|
||||||
* Don't leak all the os-release fields into the shell
|
|
||||||
* Don't rely on XDG_RUNTIME_DIR when running as root
|
|
||||||
* Give access to Avahi to resolve the .local mDNS domain
|
|
||||||
* Make coredumpctl(1) 'dump' and 'debug' work inside toolbox containers
|
|
||||||
* Make options --image and --release for 'create' mutually exclusive
|
|
||||||
* Notify the terminal about the real UID of 'toolbox enter'
|
|
||||||
* Remove periods at the end of flag descriptions
|
|
||||||
* Set XDG_RUNTIME_DIR when creating the toolbox container
|
|
||||||
* Unbreak 'enter' on hosts without a /etc/localtime
|
|
||||||
* Unbreak the system tests on Fedora 33
|
|
||||||
* Use the host's user namespace when running as root
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.97
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Allow X11 clients to run as root
|
|
||||||
* Color the output only when displaying on a terminal
|
|
||||||
* Don't rely on user D-Bus to track time zone configuration
|
|
||||||
* Enable running minikube on Silverblue
|
|
||||||
* Expose the host's /boot inside the container at /run/host
|
|
||||||
* Fix missing terminfo warning for Ubuntu containers
|
|
||||||
* Make locate(1) work inside toolbox containers
|
|
||||||
* Make pseudo-terminal devices be owned by the 'tty' group
|
|
||||||
* Rework test to check if a toolbox container started successfully
|
|
||||||
* Run a login shell when falling back to Bash during 'enter'
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.96
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Don't break GNU Readline's ctrl-p shortcut
|
|
||||||
* Enable system tests on Fedora 33
|
|
||||||
* Fix containers with missing /media possibly due to a failed RPM transaction
|
|
||||||
* Give access to the udev database
|
|
||||||
* Unbreak X11 applications with GNOME 3.38
|
|
||||||
* Update default release to 31 for non-Fedora hosts
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.95
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Try to handle configuration files that're absolute symlinks when the entry
|
|
||||||
point sets up the container
|
|
||||||
* Unbreak 'enter' on Fedora CoreOS
|
|
||||||
* Unbreak 'sudo' inside toolbox containers with Podman 2.0.5
|
|
||||||
* Warn if $TERM has no terminfo entry in the container
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.94
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add contribution guidelines
|
|
||||||
* Add fedora-toolbox image definition for Fedora 34
|
|
||||||
* Add more information to errors from creating symbolic links when setting up
|
|
||||||
the toolbox container in the entry point
|
|
||||||
* Ensure binaries built on Fedora 33 run on Fedoras 32 & 31
|
|
||||||
* Install the tests
|
|
||||||
* Make it more obvious when falling back to /bin/bash
|
|
||||||
* Document that sudo(8) should work without a password
|
|
||||||
* Mount a tmpfs at /tmp to match the host
|
|
||||||
* Update issue templates
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.93
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Ensure reproducible builds by using the -trimpath build flag
|
|
||||||
* Fix the test suite to work with the Go implementation
|
|
||||||
* Make listing of containers and images more robust against changes in the JSON
|
|
||||||
returned by Podman
|
|
||||||
* List out dependencies and installation instructions
|
|
||||||
* Re-enable highlighting of running containers
|
|
||||||
* Show the spinner only when connected to a terminal
|
|
||||||
* Speed things up by caching the Podman version at runtime
|
|
||||||
* Update hint after creating a container to use the new syntax
|
|
||||||
* Use the correct verb format for string
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.92
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Embed the version from Meson into the binary
|
|
||||||
* Make it build on aarch64
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.91
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add gvfs-client to the fedora-toolbox images
|
|
||||||
* Adjust for changes in JSON output from 'podman ps' and 'podman images' in
|
|
||||||
Podman 2.0
|
|
||||||
* Lower the Go build requirements to make it easier to build on Fedora
|
|
||||||
* Show an error if $PWD is missing inside the container
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.90
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Rewrite Toolbox in Go
|
|
||||||
* Remove support for toolbox containers created by Toolbox 0.0.9 and older
|
|
||||||
* Add option --version to show current Toolbox version
|
|
||||||
* Add options --log-level and --log-podman as possible future replacements for
|
|
||||||
--verbose and --very-verbose
|
|
||||||
* Clean up the spinner when aborted by SIGINT (or ctrl+c) and such
|
|
||||||
* Fix duplication in the output of the list command
|
|
||||||
* Mark the reset command as deprecated (replaced by 'podman system reset')
|
|
||||||
* Support specifying the name of a toolbox container as an argument to the
|
|
||||||
create and enter commands, in addition to the --container option
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.18
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Check /usr/share/profile.d when bind mounting toolbox.sh
|
|
||||||
* Mount /media only if it is available
|
|
||||||
* Set up /media and /mnt to match the host
|
|
||||||
* Unbreak 'enter' when SELinux is disabled
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.17
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add a --very-verbose or -vv option
|
|
||||||
* Deprecate all toolbox containers that don't use a reflexive entry point
|
|
||||||
* Ensure that 'run' has at least one argument for the command
|
|
||||||
* Give access to the host's systemd journal
|
|
||||||
* Wipe out the container's /sys/fs/selinux to not advertise SELinux
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.16
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add a reset command
|
|
||||||
* Document requirements for distro support
|
|
||||||
* Don't use a toolbox container until after it has been configured
|
|
||||||
* Drop the coloured heading from 'list'
|
|
||||||
* Miscellaneous fixes to Bash completion
|
|
||||||
* Remove the hidden --sudo option and the /etc/sudoers.d snippet
|
|
||||||
* Try to migrate to a supported OCI runtime if 'podman start' suggests so
|
|
||||||
* Unbreak 'run' if container lacks files that are redirected to the host
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.15
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Be forgiving of a missing /etc/profile.d/toolbox.sh in 'run'
|
|
||||||
* Don't sanity check /etc/subgid and /etc/subuid when running as root
|
|
||||||
* Install only flatpak-spawn, not the rest of flatpak-xdg-utils, in the images
|
|
||||||
* Let the terminal know the active container only on some Fedora variants
|
|
||||||
* Rely on 'podman system migrate' always being present
|
|
||||||
* Simplify code by dropping compatibility with 'podman create' < 1.4.0
|
|
||||||
* Switch to using /usr/lib/os-release instead of /etc/os-release
|
|
||||||
* Unbreak 'create' on Silverblue
|
|
||||||
* Update default release to 30 when running on non-fedora hosts
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.14
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Adjust the grep match pattern to be more specific
|
|
||||||
* Don't exit with a non-zero code from 'toolbox list -i'
|
|
||||||
* Expose a few more host locations inside the container under /run/host
|
|
||||||
* Give access to the system Flatpak directory
|
|
||||||
* Give access to the system libvirt instance
|
|
||||||
* Mount /run/media only if it is available
|
|
||||||
* Preserve the host's ulimits when creating toolbox containers
|
|
||||||
* Work around 'podman exec' resetting the terminal size to 80x24
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.13
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Drop PackageKit-command-not-found from the images
|
|
||||||
* Improve the help or usage output
|
|
||||||
* Simplify code by taking advantage of 'podman create --userns=keep-id'
|
|
||||||
* Simplify code by taking advantage of 'podman exec --workdir ...'
|
|
||||||
* Tighten the Silverblue check for the welcome message
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.12
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Create /run/.toolboxenv inside the toolbox container's entry point too
|
|
||||||
* Don't use 'podman cp' to copy toolbox.sh to old containers
|
|
||||||
* Drop the "immutable" term
|
|
||||||
* Unbreak /etc/localtime & /etc/timezone if /run/host/monitor is absent
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.11
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Allow Qt applications to work without QT_X11_NO_MITSHM
|
|
||||||
* Check if /etc/subgid and /etc/subuid have entries for the user
|
|
||||||
* Give access to the entire /dev from the host operating system
|
|
||||||
* Keep /etc/host.conf, /etc/localtime and /etc/timezone synchronized with the
|
|
||||||
host
|
|
||||||
* Notify the terminal about the current toolbox container in use
|
|
||||||
* Prevent Podman from complaining about 'podman cp --pause=true ...'
|
|
||||||
* Unbreak rendering & wrapping of commands typed at an interactive prompt
|
|
||||||
* Unbreak setting up /home as a symbolic link
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.10
|
|
||||||
=============================
|
|
||||||
|
|
||||||
* Add a run command
|
|
||||||
* Create /run/.toolboxenv in 'toolbox enter' for identification
|
|
||||||
* Drop the Buildah dependency and the user-specific customized image
|
|
||||||
* Keep /etc/hosts and /etc/resolv.conf synchronized with the host
|
|
||||||
* Migrate existing containers when Podman is updated
|
|
||||||
* Retain the PS1 across su(1) and sudo(8)
|
|
||||||
* Set the Kerberos credential cache type only if Kerberos is available
|
|
||||||
* Support column(1) from bsdmainutils
|
|
||||||
* Support 'sudo' as default sudo(8) group
|
|
||||||
* Use a magenta hexagon instead of 🔹 in the PS1
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.9
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Add Bash completion
|
|
||||||
* Allow connecting to Wayland displays other than "wayland-0"
|
|
||||||
* Ask for confirmation before downloading the base image
|
|
||||||
* Improve the onboarding experience
|
|
||||||
* Make it available inside the toolbox container
|
|
||||||
* Make 'toolbox enter' create or fall back to a container when possible
|
|
||||||
* Set TOOLBOX_CONTAINER in the environment to identify as a toolbox
|
|
||||||
* Set default release to 29 when running on non-fedora hosts
|
|
||||||
* Show welcome texts on interactive shells
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.8
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Add label for tagging, not tied to the fedora-toolbox name
|
|
||||||
* Add short variants for various options in 'create' and 'enter'
|
|
||||||
* Ensure that names of toolbox containers don't have a colon
|
|
||||||
* Enable Travis
|
|
||||||
* Fix miscellaneous issues pointed out by https://www.shellcheck.net/
|
|
||||||
* Give access to Kerberos if KCM credential caches are being used
|
|
||||||
* Improve the onboarding experience
|
|
||||||
* Reduce the sizes of the images by removing temporary files created by DNF
|
|
||||||
* Use a lighter entry point than /bin/sh
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.7
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Add fedora-toolbox image definition for Fedora 31
|
|
||||||
* Add flatpak-xdg-utils to Fedoras 29 and 30
|
|
||||||
* Add manuals
|
|
||||||
* Add rm and rmi commands
|
|
||||||
* Be more informative when creating the working container
|
|
||||||
* Clarify the error message if the toolbox container is not found
|
|
||||||
* Don't create volumes in the image for bind mounts from the host
|
|
||||||
* Fix miscellaneous issues pointed out by https://www.shellcheck.net/
|
|
||||||
* Give access to /dev/bus for control transfers from USB devices
|
|
||||||
* Give access to removable devices and other temporary mounts
|
|
||||||
* Lots of Bash-isms removed for POSIX correctness
|
|
||||||
* Make the --image flag override the base toolbox image, as documented
|
|
||||||
* Make the spinner more efficient
|
|
||||||
* Restore documentation removed from the base Fedora images
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.6
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Add a list command
|
|
||||||
* Drop the "fedora" prefix and rename the project as just "toolbox"
|
|
||||||
* Fix typos pointed out by https://www.shellcheck.net/
|
|
||||||
* Lots of Bash-isms removed for POSIX correctness
|
|
||||||
* Make --container and --image command-specific options
|
|
||||||
* Make it work inside the toolbox container itself
|
|
||||||
* Shorten the prefix for debug and error messages
|
|
||||||
* Use the host's PID namespace for the toolbox container
|
|
||||||
* Use the standard error output for error messages
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.5
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Give access to mounts under $HOME, and make autofs work
|
|
||||||
* Show a spinner when creating the toolbox
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.4
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Avoid spooky root-like behaviour for non-root interactive shells
|
|
||||||
* Give access to the FUSE kernel module
|
|
||||||
* Improve the readability of the debug output
|
|
||||||
* Set up $HOME and /home to match the host
|
|
||||||
* Try to enter the same directory inside the toolbox
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.3
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Clean up the Buildah working containers on error
|
|
||||||
* Unbreak creating the toolbox if the toolbox image already exists
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.2
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Allow an 'F' or 'f' prefix when specifying the release
|
|
||||||
* Avoid a Bash-ism (ie. ==) and stick to POSIX (ie. =)
|
|
||||||
* Fallback to /bin/bash if $SHELL doesn't exist in the toolbox container
|
|
||||||
* Give access to the system D-Bus instance
|
|
||||||
* Make shm_open work
|
|
||||||
|
|
||||||
|
|
||||||
Overview of changes in 0.0.1
|
|
||||||
============================
|
|
||||||
|
|
||||||
* First preview release
|
|
||||||
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
Copyright © 2018 – 2024 Red Hat, Inc.
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Copying and distribution of this file, with or without modification,
|
|
||||||
are permitted in any medium without royalty provided the copyright
|
|
||||||
notice and this notice are preserved.
|
|
83
README.md
83
README.md
|
@ -1,61 +1,34 @@
|
||||||

|
# Fedora Toolbox — Hacking on OSTree-based Fedoras
|
||||||
|
|
||||||
[Toolbx](https://containertoolbx.org/) is a tool for Linux, which allows the
|
[Fedora Toolbox](https://github.com/debarshiray/fedora-toolbox) is a tool that
|
||||||
use of interactive command line environments for software development and
|
offers a familiar RPM based environment for developing and debugging software
|
||||||
troubleshooting the host operating system, without having to install software
|
on locked down [OSTree](https://ostree.readthedocs.io/en/latest/) based Fedora
|
||||||
on the host. It is built on top of [Podman](https://podman.io/) and other
|
systems like [Silverblue](https://silverblue.fedoraproject.org/). Such
|
||||||
standard container technologies from [OCI](https://opencontainers.org/).
|
operating systems are shipped as *immutable* OSTree images, where it's
|
||||||
|
difficult to setup a development environment with your favorite tools, editors
|
||||||
|
and SDKs. A toolbox container solves that problem by providing a RPM based
|
||||||
|
*mutable* container. You can tweak it to your heart's content and use DNF to
|
||||||
|
install your favorite packages, all without worrying about breaking your
|
||||||
|
operating system.
|
||||||
|
|
||||||
Toolbx environments have seamless access to the user's home directory,
|
The toolbox environment is based on the `fedora-toolbox` image. This image is
|
||||||
the Wayland and X11 sockets, networking (including Avahi), removable devices
|
then customized for the current user to create a toolbox container that
|
||||||
(like USB sticks), systemd journal, SSH agent, D-Bus, ulimits, /dev and the
|
seamlessly integrates with the rest of the operating system.
|
||||||
udev database, etc..
|
|
||||||
|
|
||||||
This is particularly useful on
|
## Usage
|
||||||
[OSTree](https://ostreedev.github.io/ostree/) based operating systems like
|
|
||||||
[Fedora CoreOS](https://fedoraproject.org/coreos/) and
|
|
||||||
[Silverblue](https://fedoraproject.org/silverblue/). The intention of these
|
|
||||||
systems is to discourage installation of software on the host, and instead
|
|
||||||
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.
|
|
||||||
|
|
||||||
Toolbx solves this problem by providing a fully mutable container within
|
### Create your Fedora Toolbox container:
|
||||||
which one can install their favourite development and troubleshooting tools,
|
```
|
||||||
editors and SDKs. For example, it's possible to do `yum install ansible`
|
[user@hostname fedora-toolbox]$ ./fedora-toolbox create
|
||||||
without affecting the base operating system.
|
[user@hostname fedora-toolbox]$
|
||||||
|
```
|
||||||
|
This will create a container, and an image, called
|
||||||
|
`fedora-toolbox-<your-username>:<version-id>` that's specifically customised
|
||||||
|
for your host user.
|
||||||
|
|
||||||
However, this tool doesn't *require* using an OSTree based system. It works
|
### Enter the Toolbox:
|
||||||
equally well on Fedora Workstation and Server, and that's a useful way to
|
```
|
||||||
incrementally adopt containerization.
|
[user@hostname fedora-toolbox]$ ./fedora-toolbox enter
|
||||||
|
🔹[user@toolbox ~]$
|
||||||
|
```
|
||||||
|
|
||||||
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 Toolbx container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbx and [Linux distro support](https://containertoolbx.org/distros/).
|
|
||||||
|
|
||||||
|
|
||||||
##
|
|
||||||
|
|
||||||
[](https://star-history.com/#containers/toolbox&Date)
|
|
||||||
|
|
||||||
|
|
||||||
##
|
|
||||||
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers/toolbox)
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers%2Ftoolbox&pipeline=periodic)
|
|
||||||
|
|
||||||
[](https://www.archlinux.org/packages/extra/x86_64/toolbox/)
|
|
||||||
[](https://src.fedoraproject.org/rpms/toolbox/)
|
|
||||||
[](https://packages.ubuntu.com/noble/podman-toolbox)
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
## Security and Disclosure Information Policy for the Toolbx Project
|
|
||||||
|
|
||||||
The Toolbx Project follows the
|
|
||||||
[Security and Disclosure Information Policy](https://github.com/containers/common/blob/main/SECURITY.md)
|
|
||||||
for the Containers Projects.
|
|
|
@ -1,4 +0,0 @@
|
||||||
install_data(
|
|
||||||
'toolbox.conf',
|
|
||||||
install_dir: get_option('sysconfdir') / 'containers',
|
|
||||||
)
|
|
|
@ -1,17 +0,0 @@
|
||||||
[general]
|
|
||||||
# Create a toolbox container for a different operating system distro than the
|
|
||||||
# host. Cannot be used with 'image'.
|
|
||||||
## distro = "fedora"
|
|
||||||
|
|
||||||
# Create a toolbox container for a different operating system release than the
|
|
||||||
# host. Cannot be used with 'image'.
|
|
||||||
## release = "33"
|
|
||||||
|
|
||||||
# Change the name of the image used to create the toolbox container. This is
|
|
||||||
# useful for creating containers from custom-built images. Cannot be used with
|
|
||||||
# 'distro' or 'release'.
|
|
||||||
#
|
|
||||||
# If the name does not contain a registry, the local image storage will be
|
|
||||||
# consulted, and if it's not present there then it will be pulled from a
|
|
||||||
# suitable remote registry.
|
|
||||||
## image = "registry.fedoraproject.org/fedora-toolbox:34"
|
|
Binary file not shown.
Before Width: | Height: | Size: 4.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 32 KiB |
Binary file not shown.
Before Width: | Height: | Size: 89 KiB |
|
@ -1,2 +0,0 @@
|
||||||
subdir('config')
|
|
||||||
subdir('tmpfiles.d')
|
|
|
@ -1,4 +0,0 @@
|
||||||
install_data(
|
|
||||||
'toolbox.conf',
|
|
||||||
install_dir: tmpfilesdir,
|
|
||||||
)
|
|
|
@ -1,2 +0,0 @@
|
||||||
d /run/media 0755 root root - -
|
|
||||||
L /run/host - - - - ../
|
|
|
@ -1,39 +0,0 @@
|
||||||
go_md2man_command = [
|
|
||||||
go_md2man,
|
|
||||||
'-in', '@INPUT@',
|
|
||||||
'-out', '@OUTPUT@',
|
|
||||||
]
|
|
||||||
|
|
||||||
manuals = {
|
|
||||||
'1': [
|
|
||||||
'toolbox',
|
|
||||||
'toolbox-create',
|
|
||||||
'toolbox-enter',
|
|
||||||
'toolbox-init-container',
|
|
||||||
'toolbox-help',
|
|
||||||
'toolbox-list',
|
|
||||||
'toolbox-rm',
|
|
||||||
'toolbox-rmi',
|
|
||||||
'toolbox-run',
|
|
||||||
],
|
|
||||||
'5': [
|
|
||||||
'toolbox.conf',
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach section, pages: manuals
|
|
||||||
foreach page: pages
|
|
||||||
output = page + '.' + section
|
|
||||||
input = output + '.md'
|
|
||||||
sectiondir = 'man' + section
|
|
||||||
|
|
||||||
custom_target(
|
|
||||||
output,
|
|
||||||
command: go_md2man_command,
|
|
||||||
input: input,
|
|
||||||
install: true,
|
|
||||||
install_dir: get_option('mandir') / sectiondir,
|
|
||||||
output: output,
|
|
||||||
)
|
|
||||||
endforeach
|
|
||||||
endforeach
|
|
|
@ -1,141 +0,0 @@
|
||||||
% toolbox-create 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-create - Create a new Toolbx container
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox create** [*--authfile FILE*]
|
|
||||||
[*--distro DISTRO* | *-d DISTRO*]
|
|
||||||
[*--image NAME* | *-i NAME*]
|
|
||||||
[*--release RELEASE* | *-r RELEASE*]
|
|
||||||
[*CONTAINER*]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Creates a new Toolbx container. You can then use the `toolbox enter` command
|
|
||||||
to interact with the container at any point.
|
|
||||||
|
|
||||||
A Toolbx container is an OCI container created from an OCI image. On Fedora,
|
|
||||||
the default image is known as `fedora-toolbox:N`, where N is the release of
|
|
||||||
the host. If the image is not present locally, then it is pulled from a
|
|
||||||
well-known registry like `registry.fedoraproject.org`. Other images may be
|
|
||||||
used on other host operating systems. If the host is not recognized, then the
|
|
||||||
Fedora image will be used.
|
|
||||||
|
|
||||||
The container is created with `podman create`, and its entry point is set to
|
|
||||||
`toolbox init-container`.
|
|
||||||
|
|
||||||
By default, a Toolbx container is named after its corresponding image. If the
|
|
||||||
image had a tag, then the tag is included in the name of the container, but
|
|
||||||
it's separated by a hyphen, not a colon. A different name can be assigned by
|
|
||||||
using the CONTAINER argument.
|
|
||||||
|
|
||||||
### Container Configuration
|
|
||||||
|
|
||||||
A Toolbx container seamlessly integrates with the rest of the operating
|
|
||||||
system by providing 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..
|
|
||||||
|
|
||||||
The user ID and account details from the host is propagated into the Toolbx
|
|
||||||
container, SELinux label separation is disabled, and the host file system can
|
|
||||||
be accessed by the container at /run/host. The container has access to the
|
|
||||||
host's Kerberos credentials cache if it's configured to use KCM caches.
|
|
||||||
|
|
||||||
A Toolbx container can be identified by the `com.github.containers.toolbox`
|
|
||||||
label or the `/run/.toolboxenv` file.
|
|
||||||
|
|
||||||
The entry point of a Toolbx container is the `toolbox init-container` command
|
|
||||||
which plays a role in setting up the container, along with the options passed
|
|
||||||
to `podman create`.
|
|
||||||
|
|
||||||
### Entry Point
|
|
||||||
|
|
||||||
A key feature of Toolbx containers is their entry point, the `toolbox
|
|
||||||
init-container` command.
|
|
||||||
|
|
||||||
OCI containers are inherently immutable. Configuration options passed through
|
|
||||||
`podman create` are baked into the definition of the OCI container, and can't
|
|
||||||
be changed later. This means that changes and improvements made in newer
|
|
||||||
versions of Toolbx can't be applied to pre-existing Toolbx containers
|
|
||||||
created by older versions of Toolbx. This is avoided by using the entry point
|
|
||||||
to configure the container at runtime.
|
|
||||||
|
|
||||||
The entry point of a Toolbx container customizes the container to fit the
|
|
||||||
current user by ensuring that it has a user that matches the one on the host,
|
|
||||||
and grants it `sudo` and `root` access.
|
|
||||||
|
|
||||||
Crucial configuration files, such as `/etc/host.conf`, `/etc/hosts`,
|
|
||||||
`/etc/localtime`, `/etc/resolv.conf` and `/etc/timezone`, inside the container
|
|
||||||
are kept synchronized with the host. The entry point also bind mounts various
|
|
||||||
subsets of the host's file system hierarchy to their corresponding locations
|
|
||||||
inside the container to provide seamless integration with the host. This
|
|
||||||
includes `/run/libvirt`, `/run/systemd/journal`, `/run/udev/data`,
|
|
||||||
`/var/lib/libvirt`, `/var/lib/systemd/coredump`, `/var/log/journal` and others.
|
|
||||||
|
|
||||||
On some host operating systems, important paths like `/home`, `/media` or
|
|
||||||
`/mnt` are symbolic links to other locations. The entry point ensures that
|
|
||||||
paths inside the container match those on the host, to avoid needless
|
|
||||||
confusion.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
**--authfile** FILE
|
|
||||||
|
|
||||||
Path to a FILE with credentials for authenticating to the registry for private
|
|
||||||
images. The FILE is usually set using `podman login`, and will be used by
|
|
||||||
`podman pull` to get the image.
|
|
||||||
|
|
||||||
The default location for FILE is `$XDG_RUNTIME_DIR/containers/auth.json` and
|
|
||||||
its format is specified in `containers-auth.json(5)`.
|
|
||||||
|
|
||||||
**--distro** DISTRO, **-d** DISTRO
|
|
||||||
|
|
||||||
Create a Toolbx container for a different operating system DISTRO than the
|
|
||||||
host. Cannot be used with `--image`. Has to be coupled with `--release` unless
|
|
||||||
the selected DISTRO matches the host.
|
|
||||||
|
|
||||||
**--image** NAME, **-i** NAME
|
|
||||||
|
|
||||||
Change the NAME of the image used to create the Toolbx container. This is
|
|
||||||
useful for creating containers from custom-built images. Cannot be used with
|
|
||||||
`--distro` and `--release`.
|
|
||||||
|
|
||||||
If NAME does not contain a registry, the local image storage will be
|
|
||||||
consulted, and if it's not present there then it will be pulled from a suitable
|
|
||||||
remote registry.
|
|
||||||
|
|
||||||
**--release** RELEASE, **-r** RELEASE
|
|
||||||
|
|
||||||
Create a Toolbx container for a different operating system RELEASE than the
|
|
||||||
host. Cannot be used with `--image`.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Create the default Toolbx container matching the host OS
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox create
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create the default Toolbx container for Fedora 36
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox create --distro fedora --release f36
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create a custom Toolbx container from a custom image
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox create --image bar foo
|
|
||||||
```
|
|
||||||
|
|
||||||
### Create a custom Toolbx container from a custom image that's private
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox create --authfile ~/auth.json --image registry.example.com/bar
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `toolbox-init-container(1)`, `podman(1)`, `podman-create(1)`, `podman-login(1)`, `podman-pull(1)`, `containers-auth.json(5)`
|
|
|
@ -1,66 +0,0 @@
|
||||||
% toolbox-enter 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-enter - Enter a Toolbx container for interactive use
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox enter** [*--distro DISTRO* | *-d DISTRO*]
|
|
||||||
[*--release RELEASE* | *-r RELEASE*]
|
|
||||||
[*CONTAINER*]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Spawns an interactive shell inside a Toolbx container that was created using
|
|
||||||
the `toolbox create` command. It tries to spawn the user's default shell, but
|
|
||||||
if it's not available inside the container then it falls back to `/bin/bash`.
|
|
||||||
|
|
||||||
When invoked without any options, `toolbox enter` will try to enter the default
|
|
||||||
Toolbx container for the host, or if there's only one container available then
|
|
||||||
it will use it. On Fedora, the default container is known as
|
|
||||||
`fedora-toolbox-N`, where N is the release of the host. If there aren't any
|
|
||||||
containers, `toolbox enter` will offer to create the default one for you.
|
|
||||||
|
|
||||||
A specific container can be selected using the CONTAINER argument.
|
|
||||||
|
|
||||||
A Toolbx container is an OCI container. Therefore, `toolbox enter` is
|
|
||||||
analogous to a `podman start` followed by a `podman exec`.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--distro** DISTRO, **-d** DISTRO
|
|
||||||
|
|
||||||
Enter a Toolbx container for a different operating system DISTRO than the
|
|
||||||
host. Has to be coupled with `--release` unless the selected DISTRO matches the
|
|
||||||
host.
|
|
||||||
|
|
||||||
**--release** RELEASE, **-r** RELEASE
|
|
||||||
|
|
||||||
Enter a Toolbx container for a different operating system RELEASE than the
|
|
||||||
host.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Enter the default Toolbx container matching the host OS
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox enter
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enter the default Toolbx container for Fedora 36
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox enter --distro fedora --release f36
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enter a Toolbx container with a custom name
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox enter foo
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `toolbox-run(1)`, `podman(1)`, `podman-exec(1)`,
|
|
||||||
`podman-start(1)`
|
|
|
@ -1,35 +0,0 @@
|
||||||
% toolbox-help 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-help - Display help information about Toolbx
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox help** [*COMMAND*]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
When no COMMAND is specified, the `toolbox(1)` manual is shown. If a COMMAND
|
|
||||||
is specified, a manual page for that command is brought up.
|
|
||||||
|
|
||||||
Note that `toolbox --help ...` is identical to `toolbox help ...` because the
|
|
||||||
former is internally converted to the latter.
|
|
||||||
|
|
||||||
This page can be displayed with `toolbox help help` or `toolbox help --help`.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Show the toolbox manual
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox help
|
|
||||||
```
|
|
||||||
|
|
||||||
### Show the manual for the create command
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox help create
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`
|
|
|
@ -1,102 +0,0 @@
|
||||||
% toolbox-init-container 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-init\-container - Initialize a running container
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox init-container** *--gid GID*
|
|
||||||
*--home HOME*
|
|
||||||
*--home-link*
|
|
||||||
*--media-link*
|
|
||||||
*--mnt-link*
|
|
||||||
*--shell SHELL*
|
|
||||||
*--uid UID*
|
|
||||||
*--user USER*
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Initializes a newly created container that's running. It is primarily meant to
|
|
||||||
be used as the entry point for all Toolbx containers, and must be run inside
|
|
||||||
the container that's to be initialized. It is not expected to be directly
|
|
||||||
invoked by humans, and cannot be used on the host.
|
|
||||||
|
|
||||||
A key feature of Toolbx containers is their entry point, the `toolbox
|
|
||||||
init-container` command.
|
|
||||||
|
|
||||||
OCI containers are inherently immutable. Configuration options passed through
|
|
||||||
`podman create` are baked into the definition of the OCI container, and can't
|
|
||||||
be changed later. This means that changes and improvements made in newer
|
|
||||||
versions of Toolbx can't be applied to pre-existing Toolbx containers
|
|
||||||
created by older versions of Toolbx. This is avoided by using the entry point
|
|
||||||
to configure the container at runtime.
|
|
||||||
|
|
||||||
The entry point of a Toolbx container customizes the container to fit the
|
|
||||||
current user by ensuring that it has a user that matches the one on the host,
|
|
||||||
and grants it `sudo` and `root` access.
|
|
||||||
|
|
||||||
Crucial configuration files, such as `/etc/host.conf`, `/etc/hosts`,
|
|
||||||
`/etc/localtime`, `/etc/resolv.conf` and `/etc/timezone`, inside the container
|
|
||||||
are kept synchronized with the host. The entry point also bind mounts various
|
|
||||||
subsets of the host's file system hierarchy to their corresponding locations
|
|
||||||
inside the container to provide seamless integration with the host. This
|
|
||||||
includes `/run/libvirt`, `/run/systemd/journal`, `/run/udev/data`,
|
|
||||||
`/var/lib/libvirt`, `/var/lib/systemd/coredump`, `/var/log/journal` and others.
|
|
||||||
|
|
||||||
On some host operating systems, important paths like `/home`, `/media` or
|
|
||||||
`/mnt` are symbolic links to other locations. The entry point ensures that
|
|
||||||
paths inside the container match those on the host, to avoid needless
|
|
||||||
confusion.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--gid** GID
|
|
||||||
|
|
||||||
Pass GID as the user's numerical group ID from the host to the Toolbx
|
|
||||||
container.
|
|
||||||
|
|
||||||
**--home** HOME
|
|
||||||
|
|
||||||
Create a user inside the Toolbx container whose login directory is HOME. This
|
|
||||||
option is required.
|
|
||||||
|
|
||||||
**--home-link**
|
|
||||||
|
|
||||||
Make `/home` a symbolic link to `/var/home`.
|
|
||||||
|
|
||||||
**--media-link**
|
|
||||||
|
|
||||||
Make `/media` a symbolic link to `/run/media`.
|
|
||||||
|
|
||||||
**--mnt-link**
|
|
||||||
|
|
||||||
Make `/mnt` a symbolic link to `/var/mnt`.
|
|
||||||
|
|
||||||
**--monitor-host**
|
|
||||||
|
|
||||||
Deprecated, does nothing.
|
|
||||||
|
|
||||||
Crucial configuration files inside the Toolbx container are always kept
|
|
||||||
synchronized with their counterparts on the host, and various subsets of the
|
|
||||||
host's file system hierarchy are always bind mounted to their corresponding
|
|
||||||
locations inside the Toolbx container.
|
|
||||||
|
|
||||||
**--shell** SHELL
|
|
||||||
|
|
||||||
Create a user inside the Toolbx container whose login shell is SHELL. This
|
|
||||||
option is required.
|
|
||||||
|
|
||||||
**--uid** UID
|
|
||||||
|
|
||||||
Create a user inside the Toolbx container whose numerical user ID is UID. This
|
|
||||||
option is required.
|
|
||||||
|
|
||||||
**--user** USER
|
|
||||||
|
|
||||||
Create a user inside the Toolbx container whose login name is LOGIN. This
|
|
||||||
option is required.
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `podman(1)`, `podman-create(1)`, `podman-start(1)`
|
|
|
@ -1,48 +0,0 @@
|
||||||
% toolbox-list 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-list - List existing Toolbx containers and images
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox list** [*--containers* | *-c*] [*--images* | *-i*]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Lists existing Toolbx containers and images. These are OCI containers and
|
|
||||||
images, which can be managed directly with a tool like `podman`.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--containers, -c**
|
|
||||||
|
|
||||||
List only Toolbx containers, not images.
|
|
||||||
|
|
||||||
**--images, -i**
|
|
||||||
|
|
||||||
List only Toolbx images, not containers.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### List all existing Toolbx containers and images
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox list
|
|
||||||
```
|
|
||||||
|
|
||||||
### List existing Toolbx containers only
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox list --containers
|
|
||||||
```
|
|
||||||
|
|
||||||
### List existing Toolbx images only
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox list --images
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `podman(1)`, `podman-ps(1)`, `podman-images(1)`
|
|
|
@ -1,52 +0,0 @@
|
||||||
% toolbox-rm 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-rm - Remove one or more Toolbx containers
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox rm** [*--all* | *-a*] [*--force* | *-f*] [*CONTAINER*...]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Removes one or more Toolbx containers from the host. The container should
|
|
||||||
have been created using the `toolbox create` command.
|
|
||||||
|
|
||||||
A Toolbx container is an OCI container. Therefore, `toolbox rm` can be used
|
|
||||||
interchangeably with `podman rm`.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--all, -a**
|
|
||||||
|
|
||||||
Remove all Toolbx containers. It can be used in conjunction with `--force` as
|
|
||||||
well.
|
|
||||||
|
|
||||||
**--force, -f**
|
|
||||||
|
|
||||||
Force the removal of running and paused Toolbx containers.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Remove a Toolbx container named `fedora-toolbox-gegl:36`
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rm fedora-toolbox-gegl:36
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove all Toolbx containers, but not those that are running or paused
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rm --all
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove all Toolbx containers, including ones that are running or paused
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rm --all --force
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `podman(1)`, `podman-rm(1)`
|
|
|
@ -1,52 +0,0 @@
|
||||||
% toolbox-rmi 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-rmi - Remove one or more Toolbx images
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox rmi** [*--all* | *-a*] [*--force* | *-f*] [*IMAGE*...]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Removes one or more Toolbx images from the host. The image should have been
|
|
||||||
created using the `toolbox create` command.
|
|
||||||
|
|
||||||
A Toolbx image is an OCI image. Therefore, `toolbox rmi` can be used
|
|
||||||
interchangeably with `podman rmi`.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--all, -a**
|
|
||||||
|
|
||||||
Remove all Toolbx images. It can be used in conjunction with `--force` as well.
|
|
||||||
|
|
||||||
**--force, -f**
|
|
||||||
|
|
||||||
Force the removal of Toolbx images that are used by Toolbx containers. The
|
|
||||||
dependent containers will be removed as well.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Remove a Toolbx image named `localhost/fedora-toolbox-gegl:36`
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rmi localhost/fedora-toolbox-gegl:36
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove all Toolbx images, but not those that are used by containers
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rmi --all
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove all Toolbx images and their dependent containers
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox rmi --all --force
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `podman(1)`, `podman-rmi(1)`
|
|
|
@ -1,108 +0,0 @@
|
||||||
% toolbox-run 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox\-run - Run a command in an existing Toolbx container
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox run** [*--container NAME* | *-c NAME*]
|
|
||||||
[*--distro DISTRO* | *-d DISTRO*]
|
|
||||||
[*--preserve-fds N*]
|
|
||||||
[*--release RELEASE* | *-r RELEASE*]
|
|
||||||
[*COMMAND*]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Runs a command inside an existing Toolbx container. The container should have
|
|
||||||
been created using the `toolbox create` command.
|
|
||||||
|
|
||||||
On Fedora, the default container is known as `fedora-toolbox-N`, where N is
|
|
||||||
the release of the host. A specific container can be selected using the
|
|
||||||
`--container` option.
|
|
||||||
|
|
||||||
A Toolbx container is an OCI container. Therefore, `toolbox run` is analogous
|
|
||||||
to a `podman start` followed by a `podman exec`.
|
|
||||||
|
|
||||||
## OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--container** NAME, **-c** NAME
|
|
||||||
|
|
||||||
Run command inside a Toolbx container with the given NAME. This is useful
|
|
||||||
when there are multiple Toolbx containers created from the same image, or
|
|
||||||
entirely customized containers created from custom-built images.
|
|
||||||
|
|
||||||
**--distro** DISTRO, **-d** DISTRO
|
|
||||||
|
|
||||||
Run command inside a Toolbx container for a different operating system DISTRO
|
|
||||||
than the host. Has to be coupled with `--release` unless the selected DISTRO
|
|
||||||
matches the host system.
|
|
||||||
|
|
||||||
**--preserve-fds** N
|
|
||||||
|
|
||||||
Pass down to command N additional file descriptors (in addition to 0, 1,
|
|
||||||
2). The total number of file descriptors will be 3+N.
|
|
||||||
|
|
||||||
**--release** RELEASE, **-r** RELEASE
|
|
||||||
|
|
||||||
Run command inside a Toolbx container for a different operating system
|
|
||||||
RELEASE than the host.
|
|
||||||
|
|
||||||
## EXIT STATUS
|
|
||||||
|
|
||||||
The exit code gives information about why the command within the container
|
|
||||||
failed to run or why it exited.
|
|
||||||
|
|
||||||
**1** There was an internal error in Toolbx
|
|
||||||
|
|
||||||
**125** There was an internal error in Podman
|
|
||||||
|
|
||||||
**126** The run command could not be invoked
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run /etc; echo $?
|
|
||||||
/bin/sh: line 1: /etc: Is a directory
|
|
||||||
/bin/sh: line 1: exec: /etc: cannot execute: Is a directory
|
|
||||||
Error: failed to invoke command /etc in container fedora-toolbox-36
|
|
||||||
126
|
|
||||||
```
|
|
||||||
|
|
||||||
**127** The run command cannot be found or the working directory does not exist
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run foo; echo $?
|
|
||||||
/bin/sh: line 1: exec: foo: not found
|
|
||||||
Error: command foo not found in container fedora-toolbox-36
|
|
||||||
127
|
|
||||||
```
|
|
||||||
|
|
||||||
**Exit code** The run command exit code
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run false; echo $?
|
|
||||||
1
|
|
||||||
```
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Run ls inside the default Toolbx container matching the host OS
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run ls -la
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run emacs inside the default Toolbx container for Fedora 36
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run --distro fedora --release f36 emacs
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run uptime inside a Toolbx container with a custom name
|
|
||||||
|
|
||||||
```
|
|
||||||
$ toolbox run --container foo uptime
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `podman(1)`, `podman-exec(1)`, `podman-start(1)`
|
|
171
doc/toolbox.1.md
171
doc/toolbox.1.md
|
@ -1,171 +0,0 @@
|
||||||
% toolbox 1
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox - Tool for interactive command line environments on Linux
|
|
||||||
|
|
||||||
## SYNOPSIS
|
|
||||||
**toolbox** [*--assumeyes* | *-y*]
|
|
||||||
[*--help* | *-h*]
|
|
||||||
[*--log-level LEVEL*]
|
|
||||||
[*--log-podman*]
|
|
||||||
[*--verbose* | *-v*]
|
|
||||||
*COMMAND* [*ARGS*...]
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Toolbx is a tool for Linux, which allows the use of interactive command line
|
|
||||||
environments for software development and troubleshooting the host operating
|
|
||||||
system, without having to install software on the host. It is built on top of
|
|
||||||
Podman and other standard container technologies from OCI.
|
|
||||||
|
|
||||||
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 based operating systems like Fedora
|
|
||||||
CoreOS and Silverblue. The intention of these systems is to discourage
|
|
||||||
installation of software on the host, and instead 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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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 Toolbx environment is based on an OCI image. On Fedora this is the
|
|
||||||
`fedora-toolbox` image. This image is used to create a Toolbx container that
|
|
||||||
offers the interactive command line environment.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
## Supported operating system distributions
|
|
||||||
|
|
||||||
By default, Toolbx tries to use an image matching the host operating system
|
|
||||||
distribution for creating containers. If the host is not supported, then it
|
|
||||||
falls back to a Fedora image. Supported host operating systems are:
|
|
||||||
|
|
||||||
* Arch Linux
|
|
||||||
* Fedora
|
|
||||||
* Red Hat Enterprise Linux >= 8.5
|
|
||||||
* Ubuntu
|
|
||||||
|
|
||||||
However, it's possible to create containers for a different distribution
|
|
||||||
through the use of the `--distro` and `--release` options that are accepted by
|
|
||||||
the relevant commands, or their counterparts in the configuration file. The
|
|
||||||
`--distro` flag specifies the name of the distribution, and `--release`
|
|
||||||
specifies its version. Supported combinations are:
|
|
||||||
|
|
||||||
Distro |Release
|
|
||||||
-------|----------
|
|
||||||
arch |latest or rolling
|
|
||||||
fedora |\<release\> or f\<release\> eg., 36 or f36
|
|
||||||
rhel |\<major\>.\<minor\> eg., 8.5
|
|
||||||
ubuntu |\<YY\>.\<MM\> eg., 22.04
|
|
||||||
|
|
||||||
## USAGE
|
|
||||||
|
|
||||||
### Create a Toolbx container:
|
|
||||||
|
|
||||||
```
|
|
||||||
[user@hostname ~]$ toolbox create
|
|
||||||
Image required to create toolbox container.
|
|
||||||
Download registry.fedoraproject.org/fedora-toolbox:36 (294.1MB)? [y/N]: y
|
|
||||||
Created container: fedora-toolbox-36
|
|
||||||
Enter with: toolbox enter
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Enter the Toolbx container:
|
|
||||||
|
|
||||||
```
|
|
||||||
[user@hostname ~]$ toolbox enter
|
|
||||||
⬢[user@toolbox ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove the Toolbx container:
|
|
||||||
|
|
||||||
```
|
|
||||||
[user@hostname ~]$ toolbox rm fedora-toolbox-36
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
## GLOBAL OPTIONS ##
|
|
||||||
|
|
||||||
The following options are understood:
|
|
||||||
|
|
||||||
**--assumeyes, -y**
|
|
||||||
|
|
||||||
Automatically answer yes for all questions.
|
|
||||||
|
|
||||||
**--help, -h**
|
|
||||||
|
|
||||||
Print a synopsis of this manual and exit.
|
|
||||||
|
|
||||||
**--log-level**=*level*
|
|
||||||
|
|
||||||
Log messages above specified level: debug, info, warn, error, fatal or panic
|
|
||||||
(default: error)
|
|
||||||
|
|
||||||
**--log-podman**
|
|
||||||
|
|
||||||
Show log messages of invocations of Podman based on the logging level specified
|
|
||||||
by option **log-level**.
|
|
||||||
|
|
||||||
**--verbose, -v**
|
|
||||||
|
|
||||||
Same as `--log-level=debug`. Use `-vv` to include `--log-podman`.
|
|
||||||
|
|
||||||
## COMMANDS
|
|
||||||
|
|
||||||
Commands for working with Toolbx containers and images:
|
|
||||||
|
|
||||||
**toolbox-create(1)**
|
|
||||||
|
|
||||||
Create a new Toolbx container.
|
|
||||||
|
|
||||||
**toolbox-enter(1)**
|
|
||||||
|
|
||||||
Enter a Toolbx container for interactive use.
|
|
||||||
|
|
||||||
**toolbox-help(1)**
|
|
||||||
|
|
||||||
Display help information about Toolbx.
|
|
||||||
|
|
||||||
**toolbox-init-container(1)**
|
|
||||||
|
|
||||||
Initialize a running container.
|
|
||||||
|
|
||||||
**toolbox-list(1)**
|
|
||||||
|
|
||||||
List existing Toolbx containers and images.
|
|
||||||
|
|
||||||
**toolbox-rm(1)**
|
|
||||||
|
|
||||||
Remove one or more Toolbx containers.
|
|
||||||
|
|
||||||
**toolbox-rmi(1)**
|
|
||||||
|
|
||||||
Remove one or more Toolbx images.
|
|
||||||
|
|
||||||
**toolbox-run(1)**
|
|
||||||
|
|
||||||
Run a command in an existing Toolbx container.
|
|
||||||
|
|
||||||
## FILES ##
|
|
||||||
|
|
||||||
**toolbox.conf(5)**
|
|
||||||
|
|
||||||
Toolbx configuration file.
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`podman(1)`, https://github.com/containers/toolbox
|
|
|
@ -1,67 +0,0 @@
|
||||||
% toolbox.conf 5
|
|
||||||
|
|
||||||
## NAME
|
|
||||||
toolbox.conf - Toolbx configuration file
|
|
||||||
|
|
||||||
## DESCRIPTION
|
|
||||||
|
|
||||||
Persistently overrides the default behaviour of `toolbox(1)`. The syntax is
|
|
||||||
TOML and the names of the options match their command line counterparts.
|
|
||||||
Currently, the only supported section is *general*.
|
|
||||||
|
|
||||||
## OPTIONS
|
|
||||||
|
|
||||||
**distro** = "DISTRO"
|
|
||||||
|
|
||||||
Create a Toolbx container for a different operating system DISTRO than the
|
|
||||||
host. Cannot be used with `image`.
|
|
||||||
|
|
||||||
**image** = "NAME"
|
|
||||||
|
|
||||||
Change the NAME of the image used to create the Toolbx container. This is
|
|
||||||
useful for creating containers from custom-built images. Cannot be used with
|
|
||||||
`distro` and `release`.
|
|
||||||
|
|
||||||
If NAME does not contain a registry, the local image storage will be
|
|
||||||
consulted, and if it's not present there then it will be pulled from a suitable
|
|
||||||
remote registry.
|
|
||||||
|
|
||||||
**release** = "RELEASE"
|
|
||||||
|
|
||||||
Create a Toolbx container for a different operating system RELEASE than the
|
|
||||||
host. Cannot be used with `image`.
|
|
||||||
|
|
||||||
## FILES
|
|
||||||
|
|
||||||
The following locations are looked up in increasing order of priority:
|
|
||||||
|
|
||||||
**/etc/containers/toolbox.conf**
|
|
||||||
|
|
||||||
This is meant to be provided by the operating system distributor or the system
|
|
||||||
administrator, and affects all users on the host.
|
|
||||||
|
|
||||||
Fields specified here can be overridden by any of the files below.
|
|
||||||
|
|
||||||
**$XDG_CONFIG_HOME/containers/toolbox.conf**
|
|
||||||
|
|
||||||
This is meant for user-specific changes. Fields specified here override any of
|
|
||||||
the files above.
|
|
||||||
|
|
||||||
## EXAMPLES
|
|
||||||
|
|
||||||
### Override the default operating system distro:
|
|
||||||
```
|
|
||||||
[general]
|
|
||||||
distro = "fedora"
|
|
||||||
release = "36"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Override the default image:
|
|
||||||
```
|
|
||||||
[general]
|
|
||||||
image = "registry.fedoraproject.org/fedora-toolbox:36"
|
|
||||||
```
|
|
||||||
|
|
||||||
## SEE ALSO
|
|
||||||
|
|
||||||
`toolbox(1)`, `toolbox-create(1)`
|
|
|
@ -0,0 +1,351 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright © 2018 Red Hat, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
source /etc/os-release
|
||||||
|
release=$VERSION_ID
|
||||||
|
|
||||||
|
prefix_sudo=""
|
||||||
|
registry="registry.fedoraproject.org"
|
||||||
|
registry_candidate="candidate-registry.fedoraproject.org"
|
||||||
|
toolbox_prompt="🔹[\u@\h \W]\\$ "
|
||||||
|
|
||||||
|
|
||||||
|
is_integer()
|
||||||
|
{
|
||||||
|
[ "$1" != "" ] && [ $1 -eq $1 2>&42 ]
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
create()
|
||||||
|
(
|
||||||
|
dbus_system_bus_address="unix:path=/var/run/dbus/system_bus_socket"
|
||||||
|
tmpfs_size=$((64 * 1024 * 1024)) # 64 MiB
|
||||||
|
working_container_name="fedora-toolbox-working-container-$(uuidgen --time)"
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah inspect --type image $toolbox_image >/dev/null 2>&42; then
|
||||||
|
if ! $prefix_sudo buildah from \
|
||||||
|
--name $working_container_name \
|
||||||
|
localhost/$base_toolbox_image >/dev/null 2>&42; then
|
||||||
|
if ! $prefix_sudo buildah from \
|
||||||
|
--name $working_container_name \
|
||||||
|
$registry/$fgc/$base_toolbox_image >/dev/null 2>&42; then
|
||||||
|
echo "$0: failed to create working container"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah run $working_container_name -- useradd \
|
||||||
|
--no-create-home \
|
||||||
|
--shell $SHELL \
|
||||||
|
--uid $UID \
|
||||||
|
--groups wheel \
|
||||||
|
$USER \
|
||||||
|
>/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to create user $USER with UID $UID"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah run $working_container_name -- passwd -d $USER >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to remove password for user $USER"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah run $working_container_name -- passwd -d root >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to remove password for user root"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config --volume $HOME $working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure volume for $HOME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config --volume $XDG_RUNTIME_DIR $working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure volume for $XDG_RUNTIME_DIR"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DBUS_SYSTEM_BUS_ADDRESS" != "" ]; then
|
||||||
|
dbus_system_bus_address=$DBUS_SYSTEM_BUS_ADDRESS
|
||||||
|
fi
|
||||||
|
dbus_system_bus_path=$(echo $dbus_system_bus_address | cut --delimiter = --fields 2 2>&42)
|
||||||
|
dbus_system_bus_path=$(readlink --canonicalize $dbus_system_bus_path 2>&42)
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config \
|
||||||
|
--volume $dbus_system_bus_path \
|
||||||
|
$working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure volume for $dbus_system_bus_path"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config --volume /dev/dri $working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure volume for /dev/dri"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config --user $USER $working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure the default user as $USER"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah config --workingdir $HOME $working_container_name >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to configure the initial working directory to $HOME"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! $prefix_sudo buildah commit --rm $working_container_name $toolbox_image >/dev/null 2>&42; then
|
||||||
|
$prefix_sudo buildah rmi $working_container_name >/dev/null 2>&42
|
||||||
|
echo "$0: failed to create image $toolbox_image"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $prefix_sudo podman inspect --type container $toolbox_container >/dev/null 2>&42; then
|
||||||
|
echo "$0: container $toolbox_container already exists"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
total_ram=$(awk '( $1 == "MemTotal:" ) { print $2 }' /proc/meminfo 2>&42) # kibibytes
|
||||||
|
if is_integer $total_ram; then
|
||||||
|
tmpfs_size=$((total_ram*1024/2)) # bytes
|
||||||
|
fi
|
||||||
|
|
||||||
|
max_uid_count=65536
|
||||||
|
max_minus_uid=$((max_uid_count-UID))
|
||||||
|
uid_plus_one=$((UID+1))
|
||||||
|
|
||||||
|
if ! $prefix_sudo podman create \
|
||||||
|
--group-add wheel \
|
||||||
|
--hostname toolbox \
|
||||||
|
--interactive \
|
||||||
|
--name $toolbox_container \
|
||||||
|
--network host \
|
||||||
|
--privileged \
|
||||||
|
--security-opt label=disable \
|
||||||
|
--tmpfs /dev/shm:size=$tmpfs_size \
|
||||||
|
--tty \
|
||||||
|
--uidmap $UID:0:1 \
|
||||||
|
--uidmap 0:1:$UID \
|
||||||
|
--uidmap $uid_plus_one:$uid_plus_one:$max_minus_uid \
|
||||||
|
--volume $HOME:$HOME \
|
||||||
|
--volume $XDG_RUNTIME_DIR:$XDG_RUNTIME_DIR \
|
||||||
|
--volume $dbus_system_bus_path:$dbus_system_bus_path \
|
||||||
|
--volume /dev/dri:/dev/dri \
|
||||||
|
$toolbox_image \
|
||||||
|
/bin/sh >/dev/null 2>&42; then
|
||||||
|
echo "$0: failed to create container $toolbox_container"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
enter()
|
||||||
|
(
|
||||||
|
shell_to_exec=/bin/bash
|
||||||
|
|
||||||
|
if ! $prefix_sudo podman start $toolbox_container >/dev/null 2>&42; then
|
||||||
|
echo "$0: failed to start container $toolbox_container"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$DBUS_SYSTEM_BUS_ADDRESS" != "" ]; then
|
||||||
|
set_dbus_system_bus_address="--env DBUS_SYSTEM_BUS_ADDRESS=$DBUS_SYSTEM_BUS_ADDRESS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if $prefix_sudo podman exec $toolbox_container test -f $SHELL 2>&42; then
|
||||||
|
shell_to_exec=$SHELL
|
||||||
|
else
|
||||||
|
echo "$SHELL not found in $toolbox_container; using $shell_to_exec instead" >&42
|
||||||
|
fi
|
||||||
|
|
||||||
|
$prefix_sudo podman exec \
|
||||||
|
--env COLORTERM=$COLORTERM \
|
||||||
|
--env DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS \
|
||||||
|
$set_dbus_system_bus_address \
|
||||||
|
--env DESKTOP_SESSION=$DESKTOP_SESSION \
|
||||||
|
--env DISPLAY=$DISPLAY \
|
||||||
|
--env LANG=$LANG \
|
||||||
|
--env PS1="$toolbox_prompt" \
|
||||||
|
--env SHELL=$SHELL \
|
||||||
|
--env SSH_AUTH_SOCK=$SSH_AUTH_SOCK \
|
||||||
|
--env TERM=$TERM \
|
||||||
|
--env VTE_VERSION=$VTE_VERSION \
|
||||||
|
--env XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP \
|
||||||
|
--env XDG_DATA_DIRS=$XDG_DATA_DIRS \
|
||||||
|
--env XDG_MENU_PREFIX=$XDG_MENU_PREFIX \
|
||||||
|
--env XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \
|
||||||
|
--env XDG_SEAT=$XDG_SEAT \
|
||||||
|
--env XDG_SESSION_DESKTOP=$XDG_SESSION_DESKTOP \
|
||||||
|
--env XDG_SESSION_ID=$XDG_SESSION_ID \
|
||||||
|
--env XDG_SESSION_TYPE=$XDG_SESSION_TYPE \
|
||||||
|
--env XDG_VTNR=$XDG_VTNR \
|
||||||
|
--interactive \
|
||||||
|
--tty \
|
||||||
|
$toolbox_container \
|
||||||
|
$shell_to_exec -l 2>&42
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
exit_if_extra_operand()
|
||||||
|
{
|
||||||
|
if [ "$1" != "" ]; then
|
||||||
|
echo "$0: extra operand '$1'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exit_if_unrecognized_option()
|
||||||
|
{
|
||||||
|
echo "$0: unrecognized option '$1'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
echo "Usage: fedora-toolbox [--container <name>]"
|
||||||
|
echo " [--release <release>]"
|
||||||
|
echo " [-v | --verbose]"
|
||||||
|
echo " create [--candidate-registry]"
|
||||||
|
echo " [--image <name>]"
|
||||||
|
echo " or: fedora-toolbox [--container <name>]"
|
||||||
|
echo " [--release <release>]"
|
||||||
|
echo " [-v | --verbose]"
|
||||||
|
echo " enter"
|
||||||
|
echo " or: fedora-toolbox --help"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exec 42>/dev/null
|
||||||
|
|
||||||
|
while [[ "$1" = -* ]]; do
|
||||||
|
case $1 in
|
||||||
|
--container )
|
||||||
|
shift
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo "$0: missing argument for '--container'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
toolbox_container=$1
|
||||||
|
;;
|
||||||
|
-h | --help )
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
--release )
|
||||||
|
shift
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo "$0: missing argument for '--release'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
arg=$(echo $1 | sed 's/^F\|^f//' 2>&42)
|
||||||
|
if ! is_integer $arg; then
|
||||||
|
echo "$0: invalid argument for '--release'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ $arg -le 0 2>&42 ]; then
|
||||||
|
echo "$0: invalid argument for '--release'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
release=$arg
|
||||||
|
;;
|
||||||
|
--sudo )
|
||||||
|
prefix_sudo="sudo"
|
||||||
|
;;
|
||||||
|
-v | --verbose )
|
||||||
|
exec 42>&2
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
exit_if_unrecognized_option $1
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
fgc="f$release"
|
||||||
|
[ "$toolbox_container" = "" ] && toolbox_container="fedora-toolbox-$USER:$release"
|
||||||
|
base_toolbox_image="fedora-toolbox:$release"
|
||||||
|
toolbox_image="fedora-toolbox-$USER:$release"
|
||||||
|
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo "$0: missing command"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
op=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
case $op in
|
||||||
|
create )
|
||||||
|
while [[ "$1" = -* ]]; do
|
||||||
|
case $1 in
|
||||||
|
--candidate-registry )
|
||||||
|
registry=$registry_candidate
|
||||||
|
;;
|
||||||
|
--image )
|
||||||
|
shift
|
||||||
|
if [ "$1" = "" ]; then
|
||||||
|
echo "$0: missing argument for '--image'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
toolbox_image=$1
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
exit_if_unrecognized_option $1
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
exit_if_extra_operand $1
|
||||||
|
create
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
enter )
|
||||||
|
while [[ "$1" = -* ]]; do
|
||||||
|
case $1 in
|
||||||
|
* )
|
||||||
|
exit_if_unrecognized_option $1
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
exit_if_extra_operand $1
|
||||||
|
enter
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "$0: unrecognized command '$op'"
|
||||||
|
echo "Try '$0 --help' for more information."
|
||||||
|
exit 1
|
||||||
|
esac
|
|
@ -0,0 +1,2 @@
|
||||||
|
%wheel ALL=(root) NOPASSWD: /usr/bin/buildah
|
||||||
|
%wheel ALL=(root) NOPASSWD: /usr/bin/podman
|
|
@ -1,80 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright © 2019 – 2024 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
collect()
|
|
||||||
(
|
|
||||||
if $1; then
|
|
||||||
postfix="_toolbox"
|
|
||||||
else
|
|
||||||
postfix=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
manpages_list=""
|
|
||||||
for dir in /usr/share/man/man*/ ; do
|
|
||||||
for docs in $dir*; do
|
|
||||||
package=$(rpm -qf $docs --qf "%{NAME}\n")
|
|
||||||
if ! [[ $package = *"is not owned by any"* ]]; then
|
|
||||||
manpages_list="$manpages_list$package\n"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
mkdir -p tmp
|
|
||||||
echo -e "$manpages_list" | sort | uniq > tmp/docs_list$postfix
|
|
||||||
rpm -qa --qf "%{NAME}\n" | sort | uniq > tmp/rpm_list$postfix
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
generate()
|
|
||||||
(
|
|
||||||
diff -c tmp/rpm_list_toolbox tmp/rpm_list | grep -E "^\+" | tr -d '+ ' > tmp/missing_packages
|
|
||||||
diff -c tmp/docs_list_toolbox tmp/docs_list | grep -E "^\+" | tr -d '+ ' > tmp/missing_manpages
|
|
||||||
manpages_list=$(comm -1 -3 tmp/missing_packages tmp/missing_manpages)
|
|
||||||
manpages_final=""
|
|
||||||
while read -r line; do
|
|
||||||
if [ "$(man $line)" != "" ]; then
|
|
||||||
manpages_final="$manpages_final$line\n"
|
|
||||||
fi
|
|
||||||
done <<< "$manpages_list"
|
|
||||||
echo -e "$manpages_final" >> missing-docs
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
collect )
|
|
||||||
shift
|
|
||||||
toolbox=false
|
|
||||||
case $1 in
|
|
||||||
-t | --toolbox )
|
|
||||||
toolbox=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
collect "$toolbox"
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
generate )
|
|
||||||
generate
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
clean )
|
|
||||||
rm -rf tmp
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
exit 1
|
|
||||||
esac
|
|
|
@ -1,28 +0,0 @@
|
||||||
FROM docker.io/library/archlinux:base-devel
|
|
||||||
|
|
||||||
LABEL com.github.containers.toolbox="true" \
|
|
||||||
name="arch-toolbox" \
|
|
||||||
version="base-devel" \
|
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
|
||||||
summary="Base image for creating Arch Linux Toolbx containers" \
|
|
||||||
maintainer="Morten Linderud <foxboron@archlinux.org>"
|
|
||||||
|
|
||||||
# Install extra packages
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN pacman -Syu --needed --noconfirm - < extra-packages
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
# Enable man pages, enable progress bars
|
|
||||||
RUN sed -i -e 's/NoProgressBar/#NoProgressBar/' -e 's/NoExtract/#NoExtract/' /etc/pacman.conf
|
|
||||||
|
|
||||||
# Force reinstall of packages which have man pages (shouldn't redownload any that were just upgraded)
|
|
||||||
RUN mkdir -p /usr/share/man && pacman -Qo /usr/share/man | awk '{print $5}' | xargs pacman -S --noconfirm man-db
|
|
||||||
|
|
||||||
# Clean up cache
|
|
||||||
RUN yes | pacman -Scc
|
|
||||||
|
|
||||||
# Enable sudo permission for wheel users
|
|
||||||
RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox
|
|
||||||
|
|
||||||
# Enable the use of p11-kit-client.so to access CA certificates from the host
|
|
||||||
RUN mkdir --parents /etc/pkcs11/modules
|
|
|
@ -1,27 +0,0 @@
|
||||||
bash-completion
|
|
||||||
diffutils
|
|
||||||
flatpak-xdg-utils
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
keyutils
|
|
||||||
libp11-kit
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mlocate
|
|
||||||
mtr
|
|
||||||
nss-mdns
|
|
||||||
openssh
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
vte-common
|
|
||||||
wget
|
|
||||||
words
|
|
||||||
xorg-xauth
|
|
||||||
zip
|
|
|
@ -1,11 +1,10 @@
|
||||||
FROM registry.fedoraproject.org/fedora:28
|
FROM registry.fedoraproject.org/fedora:28
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=28
|
ENV NAME=fedora-toolbox VERSION=28
|
||||||
LABEL com.github.containers.toolbox="true" \
|
LABEL com.redhat.component="$NAME" \
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
name="$FGC/$NAME" \
|
name="$FGC/$NAME" \
|
||||||
version="$VERSION" \
|
version="$VERSION" \
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
usage="This image is meant to be used with the fedora-toolbox command" \
|
||||||
summary="Base image for creating Fedora toolbox containers" \
|
summary="Base image for creating Fedora toolbox containers" \
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
||||||
|
|
||||||
|
@ -14,14 +13,8 @@ COPY README.md /
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
RUN dnf -y swap coreutils-single coreutils-full
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
COPY extra-packages /
|
||||||
RUN dnf -y install $(<extra-packages)
|
RUN dnf -y install $(<extra-packages)
|
||||||
RUN rm /extra-packages
|
RUN rm /extra-packages
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
CMD /bin/sh
|
|
@ -2,8 +2,8 @@ bash-completion
|
||||||
bzip2
|
bzip2
|
||||||
diffutils
|
diffutils
|
||||||
dnf-plugins-core
|
dnf-plugins-core
|
||||||
findutils
|
|
||||||
fpaste
|
fpaste
|
||||||
|
findutils
|
||||||
git
|
git
|
||||||
gnupg
|
gnupg
|
||||||
gnupg2-smime
|
gnupg2-smime
|
||||||
|
@ -11,21 +11,18 @@ hostname
|
||||||
iputils
|
iputils
|
||||||
jwhois
|
jwhois
|
||||||
keyutils
|
keyutils
|
||||||
krb5-libs
|
|
||||||
less
|
less
|
||||||
lsof
|
lsof
|
||||||
man-db
|
man-db
|
||||||
man-pages
|
man-pages
|
||||||
mlocate
|
mlocate
|
||||||
mtr
|
mtr
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
openssh-clients
|
||||||
PackageKit-command-not-found
|
PackageKit-command-not-found
|
||||||
passwd
|
passwd
|
||||||
pigz
|
pigz
|
||||||
procps-ng
|
procps-ng
|
||||||
rsync
|
rsync
|
||||||
shadow-utils
|
|
||||||
sudo
|
sudo
|
||||||
tcpdump
|
tcpdump
|
||||||
time
|
time
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
chkconfig
|
|
||||||
curl
|
|
||||||
dbus
|
|
||||||
dnf
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
info
|
|
||||||
libcap
|
|
||||||
nss
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
pkgconf
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
rpm-plugin-systemd-inhibit
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,11 +1,10 @@
|
||||||
FROM registry.fedoraproject.org/fedora:29
|
FROM registry.fedoraproject.org/fedora:29
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=29
|
ENV NAME=fedora-toolbox VERSION=29
|
||||||
LABEL com.github.containers.toolbox="true" \
|
LABEL com.redhat.component="$NAME" \
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
name="$FGC/$NAME" \
|
name="$FGC/$NAME" \
|
||||||
version="$VERSION" \
|
version="$VERSION" \
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
usage="This image is meant to be used with the fedora-toolbox command" \
|
||||||
summary="Base image for creating Fedora toolbox containers" \
|
summary="Base image for creating Fedora toolbox containers" \
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
||||||
|
|
||||||
|
@ -14,14 +13,8 @@ COPY README.md /
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
RUN dnf -y swap coreutils-single coreutils-full
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
COPY extra-packages /
|
||||||
RUN dnf -y install $(<extra-packages)
|
RUN dnf -y install $(<extra-packages)
|
||||||
RUN rm /extra-packages
|
RUN rm /extra-packages
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
CMD /bin/sh
|
|
@ -2,9 +2,8 @@ bash-completion
|
||||||
bzip2
|
bzip2
|
||||||
diffutils
|
diffutils
|
||||||
dnf-plugins-core
|
dnf-plugins-core
|
||||||
findutils
|
|
||||||
flatpak-xdg-utils
|
|
||||||
fpaste
|
fpaste
|
||||||
|
findutils
|
||||||
git
|
git
|
||||||
gnupg
|
gnupg
|
||||||
gnupg2-smime
|
gnupg2-smime
|
||||||
|
@ -12,20 +11,18 @@ hostname
|
||||||
iputils
|
iputils
|
||||||
jwhois
|
jwhois
|
||||||
keyutils
|
keyutils
|
||||||
krb5-libs
|
|
||||||
less
|
less
|
||||||
lsof
|
lsof
|
||||||
man-db
|
man-db
|
||||||
man-pages
|
man-pages
|
||||||
mlocate
|
mlocate
|
||||||
mtr
|
mtr
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
openssh-clients
|
||||||
|
PackageKit-command-not-found
|
||||||
passwd
|
passwd
|
||||||
pigz
|
pigz
|
||||||
procps-ng
|
procps-ng
|
||||||
rsync
|
rsync
|
||||||
shadow-utils
|
|
||||||
sudo
|
sudo
|
||||||
tcpdump
|
tcpdump
|
||||||
time
|
time
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
chkconfig
|
|
||||||
curl
|
|
||||||
dbus-daemon
|
|
||||||
dnf
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
info
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
rpm-plugin-systemd-inhibit
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,11 +1,10 @@
|
||||||
FROM registry.fedoraproject.org/fedora:30
|
FROM registry.fedoraproject.org/fedora:30
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=30
|
ENV NAME=fedora-toolbox VERSION=30
|
||||||
LABEL com.github.containers.toolbox="true" \
|
LABEL com.redhat.component="$NAME" \
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
name="$FGC/$NAME" \
|
name="$FGC/$NAME" \
|
||||||
version="$VERSION" \
|
version="$VERSION" \
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
usage="This image is meant to be used with the fedora-toolbox command" \
|
||||||
summary="Base image for creating Fedora toolbox containers" \
|
summary="Base image for creating Fedora toolbox containers" \
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
||||||
|
|
||||||
|
@ -14,14 +13,8 @@ COPY README.md /
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
RUN dnf -y swap coreutils-single coreutils-full
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
COPY extra-packages /
|
||||||
RUN dnf -y install $(<extra-packages)
|
RUN dnf -y install $(<extra-packages)
|
||||||
RUN rm /extra-packages
|
RUN rm /extra-packages
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
CMD /bin/sh
|
|
@ -2,9 +2,8 @@ bash-completion
|
||||||
bzip2
|
bzip2
|
||||||
diffutils
|
diffutils
|
||||||
dnf-plugins-core
|
dnf-plugins-core
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
fpaste
|
||||||
|
findutils
|
||||||
git
|
git
|
||||||
gnupg
|
gnupg
|
||||||
gnupg2-smime
|
gnupg2-smime
|
||||||
|
@ -12,20 +11,18 @@ hostname
|
||||||
iputils
|
iputils
|
||||||
jwhois
|
jwhois
|
||||||
keyutils
|
keyutils
|
||||||
krb5-libs
|
|
||||||
less
|
less
|
||||||
lsof
|
lsof
|
||||||
man-db
|
man-db
|
||||||
man-pages
|
man-pages
|
||||||
mlocate
|
mlocate
|
||||||
mtr
|
mtr
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
openssh-clients
|
||||||
|
PackageKit-command-not-found
|
||||||
passwd
|
passwd
|
||||||
pigz
|
pigz
|
||||||
procps-ng
|
procps-ng
|
||||||
rsync
|
rsync
|
||||||
shadow-utils
|
|
||||||
sudo
|
sudo
|
||||||
tcpdump
|
tcpdump
|
||||||
time
|
time
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
chkconfig
|
|
||||||
curl
|
|
||||||
dbus-daemon
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
rpm-plugin-systemd-inhibit
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,27 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:31
|
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=31
|
|
||||||
LABEL com.github.containers.toolbox="true" \
|
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
name="$FGC/$NAME" \
|
|
||||||
version="$VERSION" \
|
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
|
||||||
summary="Base image for creating Fedora toolbox containers" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
|
@ -1 +0,0 @@
|
||||||
../../../README.md
|
|
|
@ -1,42 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mlocate
|
|
||||||
mtr
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,18 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
chkconfig
|
|
||||||
curl
|
|
||||||
dbus-daemon
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
rpm-plugin-systemd-inhibit
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,26 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:32
|
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=32
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
|
@ -1,163 +0,0 @@
|
||||||
<img src="data/logo/toolbox-logo-landscape.svg" alt="Toolbox logo landscape" width="800"/>
|
|
||||||
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers/toolbox)
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers%2Ftoolbox&pipeline=periodic)
|
|
||||||
|
|
||||||
[](https://www.archlinux.org/packages/community/x86_64/toolbox/)
|
|
||||||
[](https://src.fedoraproject.org/rpms/toolbox/)
|
|
||||||
|
|
||||||
[Toolbox](https://github.com/containers/toolbox) is a tool for Linux operating
|
|
||||||
systems, which allows the use of containerized command line environments. It is
|
|
||||||
built on top of [Podman](https://podman.io/) and other standard container
|
|
||||||
technologies from [OCI](https://opencontainers.org/).
|
|
||||||
|
|
||||||
This is particularly useful on
|
|
||||||
[OSTree](https://ostree.readthedocs.io/en/latest/) 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
|
|
||||||
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 install tools for debugging in the usual way.
|
|
||||||
|
|
||||||
Toolbox solves this problem by providing a fully mutable container within
|
|
||||||
which one can install their favourite development and debugging tools, editors
|
|
||||||
and SDKs. For example, it's possible to do `yum install ansible` without
|
|
||||||
affecting the base operating system.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that seamlessly integrates with the rest of the
|
|
||||||
operating system by providing access to the user's home directory, the Wayland
|
|
||||||
and X11 sockets, SSH agent, etc..
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Toolbox is installed by default on Fedora Silverblue. On other operating
|
|
||||||
systems it's just a matter of installing the `toolbox` package.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Create your toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox create
|
|
||||||
Created container: fedora-toolbox-33
|
|
||||||
Enter with: toolbox enter
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
This will create a container called `fedora-toolbox-<version-id>`.
|
|
||||||
|
|
||||||
### Enter the toolbox:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox enter
|
|
||||||
⬢[user@toolbox ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove a toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox rm fedora-toolbox-33
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies and Building
|
|
||||||
|
|
||||||
Toolbox requires at least Podman 1.4.0 to work, and uses the Meson build
|
|
||||||
system.
|
|
||||||
|
|
||||||
The following dependencies are required to build it:
|
|
||||||
- meson
|
|
||||||
- go-md2man
|
|
||||||
- systemd
|
|
||||||
- go
|
|
||||||
- ninja
|
|
||||||
|
|
||||||
The following dependencies enable various optional features:
|
|
||||||
- bash-completion
|
|
||||||
|
|
||||||
It can be built and installed as any other typical Meson-based project:
|
|
||||||
```console
|
|
||||||
[user@hostname toolbox]$ meson -Dprofile_dir=/etc/profile.d builddir
|
|
||||||
[user@hostname toolbox]$ ninja -C builddir
|
|
||||||
[user@hostname toolbox]$ sudo ninja -C builddir install
|
|
||||||
```
|
|
||||||
|
|
||||||
Toolbox is written in Go. Consult the
|
|
||||||
[src/go.mod](https://github.com/containers/toolbox/blob/main/src/go.mod) file
|
|
||||||
for a full list of all the Go dependencies.
|
|
||||||
|
|
||||||
By default, Toolbox uses Go modules and all the required Go packages are
|
|
||||||
automatically downloaded as part of the build. There's no need to worry about
|
|
||||||
the Go dependencies, unless the build environment doesn't have network access
|
|
||||||
or any such peculiarities.
|
|
||||||
|
|
||||||
## Distro support
|
|
||||||
|
|
||||||
By default, Toolbox creates the container using an
|
|
||||||
[OCI](https://www.opencontainers.org/) image called
|
|
||||||
`<ID>-toolbox:<VERSION-ID>`, where `<ID>` and `<VERSION-ID>` are taken from the
|
|
||||||
host's `/usr/lib/os-release`. For example, the default image on a Fedora 33
|
|
||||||
host would be `fedora-toolbox:33`.
|
|
||||||
|
|
||||||
This default can be overridden by the `--image` option in `toolbox create`,
|
|
||||||
but operating system distributors should provide an adequately configured
|
|
||||||
default image to ensure a smooth user experience.
|
|
||||||
|
|
||||||
## Image requirements
|
|
||||||
|
|
||||||
Toolbox customizes newly created containers in a certain way. This requires
|
|
||||||
certain tools and paths to be present and have certain characteristics inside
|
|
||||||
the OCI image.
|
|
||||||
|
|
||||||
Tools:
|
|
||||||
* `getent(1)`
|
|
||||||
* `id(1)`
|
|
||||||
* `ln(1)`
|
|
||||||
* `mkdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `passwd(1)`
|
|
||||||
* `readlink(1)`
|
|
||||||
* `rm(1)`
|
|
||||||
* `rmdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `sleep(1)`
|
|
||||||
* `test(1)`
|
|
||||||
* `touch(1)`
|
|
||||||
* `unlink(1)`
|
|
||||||
* `useradd(8)`
|
|
||||||
* `usermod(8)`
|
|
||||||
|
|
||||||
Paths:
|
|
||||||
* `/etc/host.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/hosts`: optional, if present not a bind mount
|
|
||||||
* `/etc/krb5.conf.d`: directory, not a bind mount
|
|
||||||
* `/etc/localtime`: optional, if present not a bind mount
|
|
||||||
* `/etc/resolv.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/timezone`: optional, if present not a bind mount
|
|
||||||
|
|
||||||
Toolbox enables `sudo(8)` access inside containers. The following is necessary
|
|
||||||
for that to work:
|
|
||||||
|
|
||||||
* The image should have `sudo(8)` enabled for users belonging to either the
|
|
||||||
`sudo` or `wheel` groups, and the group itself should exist. File an
|
|
||||||
[issue](https://github.com/containers/toolbox/issues/new) if you really need
|
|
||||||
support for a different group. However, it's preferable to keep this list as
|
|
||||||
short as possible.
|
|
||||||
|
|
||||||
* The image should allow empty passwords for `sudo(8)`. This can be achieved
|
|
||||||
by either adding the `nullok` option to the `PAM(8)` configuration, or by
|
|
||||||
add the `NOPASSWD` tag to the `sudoers(5)` configuration.
|
|
||||||
|
|
||||||
Since Toolbox only works with OCI images that fulfill certain requirements,
|
|
||||||
it will refuse images that aren't tagged with
|
|
||||||
`com.github.containers.toolbox="true"` and
|
|
||||||
`com.github.debarshiray.toolbox="true"` labels. These labels are meant to be
|
|
||||||
used by the maintainer of the image to indicate that they have read this
|
|
||||||
document and tested that the image works with Toolbox. You can use the
|
|
||||||
following snippet in a Dockerfile for this:
|
|
||||||
```Dockerfile
|
|
||||||
LABEL com.github.containers.toolbox="true"
|
|
||||||
```
|
|
||||||
The label `com.github.debarshiray.toolbox="true"` was used in previous versions
|
|
||||||
of toolbox but is currently deprecated.
|
|
|
@ -1,42 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mlocate
|
|
||||||
mtr
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,18 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
chkconfig
|
|
||||||
curl
|
|
||||||
dbus-daemon
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
rpm-plugin-systemd-inhibit
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,26 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:33
|
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=33
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
|
@ -1,167 +0,0 @@
|
||||||
<img src="data/logo/toolbox-logo-landscape.svg" alt="Toolbox logo landscape" width="800"/>
|
|
||||||
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers/toolbox)
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers%2Ftoolbox&pipeline=periodic)
|
|
||||||
|
|
||||||
[](https://www.archlinux.org/packages/community/x86_64/toolbox/)
|
|
||||||
[](https://src.fedoraproject.org/rpms/toolbox/)
|
|
||||||
|
|
||||||
[Toolbox](https://github.com/containers/toolbox) is a tool for Linux operating
|
|
||||||
systems, which allows the use of containerized command line environments. It is
|
|
||||||
built on top of [Podman](https://podman.io/) and other standard container
|
|
||||||
technologies from [OCI](https://opencontainers.org/).
|
|
||||||
|
|
||||||
This is particularly useful on
|
|
||||||
[OSTree](https://ostree.readthedocs.io/en/latest/) 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
|
|
||||||
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 install tools for debugging in the usual way.
|
|
||||||
|
|
||||||
Toolbox solves this problem by providing a fully mutable container within
|
|
||||||
which one can install their favourite development and debugging tools, editors
|
|
||||||
and SDKs. For example, it's possible to do `yum install ansible` without
|
|
||||||
affecting the base operating system.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that seamlessly integrates with the rest of the
|
|
||||||
operating system by providing 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..
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Toolbox is installed by default on Fedora Silverblue. On other operating
|
|
||||||
systems it's just a matter of installing the `toolbox` package.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Create your toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox create
|
|
||||||
Created container: fedora-toolbox-33
|
|
||||||
Enter with: toolbox enter
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
This will create a container called `fedora-toolbox-<version-id>`.
|
|
||||||
|
|
||||||
### Enter the toolbox:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox enter
|
|
||||||
⬢[user@toolbox ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove a toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox rm fedora-toolbox-33
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies and Building
|
|
||||||
|
|
||||||
Toolbox requires at least Podman 1.4.0 to work, and uses the Meson build
|
|
||||||
system.
|
|
||||||
|
|
||||||
The following dependencies are required to build it:
|
|
||||||
- meson
|
|
||||||
- go-md2man
|
|
||||||
- systemd
|
|
||||||
- go
|
|
||||||
- ninja
|
|
||||||
|
|
||||||
The following dependencies enable various optional features:
|
|
||||||
- bash-completion
|
|
||||||
|
|
||||||
It can be built and installed as any other typical Meson-based project:
|
|
||||||
```console
|
|
||||||
[user@hostname toolbox]$ meson -Dprofile_dir=/etc/profile.d builddir
|
|
||||||
[user@hostname toolbox]$ ninja -C builddir
|
|
||||||
[user@hostname toolbox]$ sudo ninja -C builddir install
|
|
||||||
```
|
|
||||||
|
|
||||||
Toolbox is written in Go. Consult the
|
|
||||||
[src/go.mod](https://github.com/containers/toolbox/blob/main/src/go.mod) file
|
|
||||||
for a full list of all the Go dependencies.
|
|
||||||
|
|
||||||
By default, Toolbox uses Go modules and all the required Go packages are
|
|
||||||
automatically downloaded as part of the build. There's no need to worry about
|
|
||||||
the Go dependencies, unless the build environment doesn't have network access
|
|
||||||
or any such peculiarities.
|
|
||||||
|
|
||||||
## Distro support
|
|
||||||
|
|
||||||
By default, Toolbox creates the container using an
|
|
||||||
[OCI](https://www.opencontainers.org/) image called
|
|
||||||
`<ID>-toolbox:<VERSION-ID>`, where `<ID>` and `<VERSION-ID>` are taken from the
|
|
||||||
host's `/usr/lib/os-release`. For example, the default image on a Fedora 33
|
|
||||||
host would be `fedora-toolbox:33`.
|
|
||||||
|
|
||||||
This default can be overridden by the `--image` option in `toolbox create`,
|
|
||||||
but operating system distributors should provide an adequately configured
|
|
||||||
default image to ensure a smooth user experience.
|
|
||||||
|
|
||||||
## Image requirements
|
|
||||||
|
|
||||||
Toolbox customizes newly created containers in a certain way. This requires
|
|
||||||
certain tools and paths to be present and have certain characteristics inside
|
|
||||||
the OCI image.
|
|
||||||
|
|
||||||
Tools:
|
|
||||||
* `getent(1)`
|
|
||||||
* `id(1)`
|
|
||||||
* `ln(1)`
|
|
||||||
* `mkdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `passwd(1)`
|
|
||||||
* `readlink(1)`
|
|
||||||
* `rm(1)`
|
|
||||||
* `rmdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `sleep(1)`
|
|
||||||
* `test(1)`
|
|
||||||
* `touch(1)`
|
|
||||||
* `unlink(1)`
|
|
||||||
* `useradd(8)`
|
|
||||||
* `usermod(8)`
|
|
||||||
|
|
||||||
Paths:
|
|
||||||
* `/etc/host.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/hosts`: optional, if present not a bind mount
|
|
||||||
* `/etc/krb5.conf.d`: directory, not a bind mount
|
|
||||||
* `/etc/localtime`: optional, if present not a bind mount
|
|
||||||
* `/etc/machine-id`: optional, not a bind mount
|
|
||||||
* `/etc/resolv.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/timezone`: optional, if present not a bind mount
|
|
||||||
|
|
||||||
Toolbox enables `sudo(8)` access inside containers. The following is necessary
|
|
||||||
for that to work:
|
|
||||||
|
|
||||||
* The image should have `sudo(8)` enabled for users belonging to either the
|
|
||||||
`sudo` or `wheel` groups, and the group itself should exist. File an
|
|
||||||
[issue](https://github.com/containers/toolbox/issues/new) if you really need
|
|
||||||
support for a different group. However, it's preferable to keep this list as
|
|
||||||
short as possible.
|
|
||||||
|
|
||||||
* The image should allow empty passwords for `sudo(8)`. This can be achieved
|
|
||||||
by either adding the `nullok` option to the `PAM(8)` configuration, or by
|
|
||||||
add the `NOPASSWD` tag to the `sudoers(5)` configuration.
|
|
||||||
|
|
||||||
Since Toolbox only works with OCI images that fulfill certain requirements,
|
|
||||||
it will refuse images that aren't tagged with
|
|
||||||
`com.github.containers.toolbox="true"` and
|
|
||||||
`com.github.debarshiray.toolbox="true"` labels. These labels are meant to be
|
|
||||||
used by the maintainer of the image to indicate that they have read this
|
|
||||||
document and tested that the image works with Toolbox. You can use the
|
|
||||||
following snippet in a Dockerfile for this:
|
|
||||||
```Dockerfile
|
|
||||||
LABEL com.github.containers.toolbox="true"
|
|
||||||
```
|
|
||||||
The label `com.github.debarshiray.toolbox="true"` was used in previous versions
|
|
||||||
of toolbox but is currently deprecated.
|
|
|
@ -1,45 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bc
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mlocate
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,15 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
curl
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,25 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:34
|
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=34
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
|
@ -1,167 +0,0 @@
|
||||||
<img src="data/logo/toolbox-logo-landscape.svg" alt="Toolbox logo landscape" width="800"/>
|
|
||||||
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers/toolbox)
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers%2Ftoolbox&pipeline=periodic)
|
|
||||||
|
|
||||||
[](https://www.archlinux.org/packages/community/x86_64/toolbox/)
|
|
||||||
[](https://src.fedoraproject.org/rpms/toolbox/)
|
|
||||||
|
|
||||||
[Toolbox](https://github.com/containers/toolbox) is a tool for Linux operating
|
|
||||||
systems, which allows the use of containerized command line environments. It is
|
|
||||||
built on top of [Podman](https://podman.io/) and other standard container
|
|
||||||
technologies from [OCI](https://opencontainers.org/).
|
|
||||||
|
|
||||||
This is particularly useful on
|
|
||||||
[OSTree](https://ostree.readthedocs.io/en/latest/) 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
|
|
||||||
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 install tools for debugging in the usual way.
|
|
||||||
|
|
||||||
Toolbox solves this problem by providing a fully mutable container within
|
|
||||||
which one can install their favourite development and debugging tools, editors
|
|
||||||
and SDKs. For example, it's possible to do `yum install ansible` without
|
|
||||||
affecting the base operating system.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that seamlessly integrates with the rest of the
|
|
||||||
operating system by providing 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..
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Toolbox is installed by default on Fedora Silverblue. On other operating
|
|
||||||
systems it's just a matter of installing the `toolbox` package.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Create your toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox create
|
|
||||||
Created container: fedora-toolbox-33
|
|
||||||
Enter with: toolbox enter
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
This will create a container called `fedora-toolbox-<version-id>`.
|
|
||||||
|
|
||||||
### Enter the toolbox:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox enter
|
|
||||||
⬢[user@toolbox ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove a toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox rm fedora-toolbox-33
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies and Building
|
|
||||||
|
|
||||||
Toolbox requires at least Podman 1.4.0 to work, and uses the Meson build
|
|
||||||
system.
|
|
||||||
|
|
||||||
The following dependencies are required to build it:
|
|
||||||
- meson
|
|
||||||
- go-md2man
|
|
||||||
- systemd
|
|
||||||
- go
|
|
||||||
- ninja
|
|
||||||
|
|
||||||
The following dependencies enable various optional features:
|
|
||||||
- bash-completion
|
|
||||||
|
|
||||||
It can be built and installed as any other typical Meson-based project:
|
|
||||||
```console
|
|
||||||
[user@hostname toolbox]$ meson -Dprofile_dir=/etc/profile.d builddir
|
|
||||||
[user@hostname toolbox]$ ninja -C builddir
|
|
||||||
[user@hostname toolbox]$ sudo ninja -C builddir install
|
|
||||||
```
|
|
||||||
|
|
||||||
Toolbox is written in Go. Consult the
|
|
||||||
[src/go.mod](https://github.com/containers/toolbox/blob/main/src/go.mod) file
|
|
||||||
for a full list of all the Go dependencies.
|
|
||||||
|
|
||||||
By default, Toolbox uses Go modules and all the required Go packages are
|
|
||||||
automatically downloaded as part of the build. There's no need to worry about
|
|
||||||
the Go dependencies, unless the build environment doesn't have network access
|
|
||||||
or any such peculiarities.
|
|
||||||
|
|
||||||
## Distro support
|
|
||||||
|
|
||||||
By default, Toolbox creates the container using an
|
|
||||||
[OCI](https://www.opencontainers.org/) image called
|
|
||||||
`<ID>-toolbox:<VERSION-ID>`, where `<ID>` and `<VERSION-ID>` are taken from the
|
|
||||||
host's `/usr/lib/os-release`. For example, the default image on a Fedora 33
|
|
||||||
host would be `fedora-toolbox:33`.
|
|
||||||
|
|
||||||
This default can be overridden by the `--image` option in `toolbox create`,
|
|
||||||
but operating system distributors should provide an adequately configured
|
|
||||||
default image to ensure a smooth user experience.
|
|
||||||
|
|
||||||
## Image requirements
|
|
||||||
|
|
||||||
Toolbox customizes newly created containers in a certain way. This requires
|
|
||||||
certain tools and paths to be present and have certain characteristics inside
|
|
||||||
the OCI image.
|
|
||||||
|
|
||||||
Tools:
|
|
||||||
* `getent(1)`
|
|
||||||
* `id(1)`
|
|
||||||
* `ln(1)`
|
|
||||||
* `mkdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `passwd(1)`
|
|
||||||
* `readlink(1)`
|
|
||||||
* `rm(1)`
|
|
||||||
* `rmdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `sleep(1)`
|
|
||||||
* `test(1)`
|
|
||||||
* `touch(1)`
|
|
||||||
* `unlink(1)`
|
|
||||||
* `useradd(8)`
|
|
||||||
* `usermod(8)`
|
|
||||||
|
|
||||||
Paths:
|
|
||||||
* `/etc/host.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/hosts`: optional, if present not a bind mount
|
|
||||||
* `/etc/krb5.conf.d`: directory, not a bind mount
|
|
||||||
* `/etc/localtime`: optional, if present not a bind mount
|
|
||||||
* `/etc/machine-id`: optional, not a bind mount
|
|
||||||
* `/etc/resolv.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/timezone`: optional, if present not a bind mount
|
|
||||||
|
|
||||||
Toolbox enables `sudo(8)` access inside containers. The following is necessary
|
|
||||||
for that to work:
|
|
||||||
|
|
||||||
* The image should have `sudo(8)` enabled for users belonging to either the
|
|
||||||
`sudo` or `wheel` groups, and the group itself should exist. File an
|
|
||||||
[issue](https://github.com/containers/toolbox/issues/new) if you really need
|
|
||||||
support for a different group. However, it's preferable to keep this list as
|
|
||||||
short as possible.
|
|
||||||
|
|
||||||
* The image should allow empty passwords for `sudo(8)`. This can be achieved
|
|
||||||
by either adding the `nullok` option to the `PAM(8)` configuration, or by
|
|
||||||
add the `NOPASSWD` tag to the `sudoers(5)` configuration.
|
|
||||||
|
|
||||||
Since Toolbox only works with OCI images that fulfill certain requirements,
|
|
||||||
it will refuse images that aren't tagged with
|
|
||||||
`com.github.containers.toolbox="true"` and
|
|
||||||
`com.github.debarshiray.toolbox="true"` labels. These labels are meant to be
|
|
||||||
used by the maintainer of the image to indicate that they have read this
|
|
||||||
document and tested that the image works with Toolbox. You can use the
|
|
||||||
following snippet in a Dockerfile for this:
|
|
||||||
```Dockerfile
|
|
||||||
LABEL com.github.containers.toolbox="true"
|
|
||||||
```
|
|
||||||
The label `com.github.debarshiray.toolbox="true"` was used in previous versions
|
|
||||||
of toolbox but is currently deprecated.
|
|
|
@ -1,45 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bc
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,15 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
curl
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,25 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:35
|
|
||||||
|
|
||||||
ENV NAME=fedora-toolbox VERSION=35
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
|
@ -1,167 +0,0 @@
|
||||||
<img src="data/logo/toolbox-logo-landscape.svg" alt="Toolbox logo landscape" width="800"/>
|
|
||||||
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers/toolbox)
|
|
||||||
[](https://softwarefactory-project.io/zuul/t/local/builds?project=containers%2Ftoolbox&pipeline=periodic)
|
|
||||||
|
|
||||||
[](https://www.archlinux.org/packages/community/x86_64/toolbox/)
|
|
||||||
[](https://src.fedoraproject.org/rpms/toolbox/)
|
|
||||||
|
|
||||||
[Toolbox](https://github.com/containers/toolbox) is a tool for Linux operating
|
|
||||||
systems, which allows the use of containerized command line environments. It is
|
|
||||||
built on top of [Podman](https://podman.io/) and other standard container
|
|
||||||
technologies from [OCI](https://opencontainers.org/).
|
|
||||||
|
|
||||||
This is particularly useful on
|
|
||||||
[OSTree](https://ostree.readthedocs.io/en/latest/) 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
|
|
||||||
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 install tools for debugging in the usual way.
|
|
||||||
|
|
||||||
Toolbox solves this problem by providing a fully mutable container within
|
|
||||||
which one can install their favourite development and debugging tools, editors
|
|
||||||
and SDKs. For example, it's possible to do `yum install ansible` without
|
|
||||||
affecting the base operating system.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that seamlessly integrates with the rest of the
|
|
||||||
operating system by providing 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..
|
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
Toolbox is installed by default on Fedora Silverblue. On other operating
|
|
||||||
systems it's just a matter of installing the `toolbox` package.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Create your toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox create
|
|
||||||
Created container: fedora-toolbox-33
|
|
||||||
Enter with: toolbox enter
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
This will create a container called `fedora-toolbox-<version-id>`.
|
|
||||||
|
|
||||||
### Enter the toolbox:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox enter
|
|
||||||
⬢[user@toolbox ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
### Remove a toolbox container:
|
|
||||||
```console
|
|
||||||
[user@hostname ~]$ toolbox rm fedora-toolbox-33
|
|
||||||
[user@hostname ~]$
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies and Building
|
|
||||||
|
|
||||||
Toolbox requires at least Podman 1.4.0 to work, and uses the Meson build
|
|
||||||
system.
|
|
||||||
|
|
||||||
The following dependencies are required to build it:
|
|
||||||
- meson
|
|
||||||
- go-md2man
|
|
||||||
- systemd
|
|
||||||
- go
|
|
||||||
- ninja
|
|
||||||
|
|
||||||
The following dependencies enable various optional features:
|
|
||||||
- bash-completion
|
|
||||||
|
|
||||||
It can be built and installed as any other typical Meson-based project:
|
|
||||||
```console
|
|
||||||
[user@hostname toolbox]$ meson -Dprofile_dir=/etc/profile.d builddir
|
|
||||||
[user@hostname toolbox]$ ninja -C builddir
|
|
||||||
[user@hostname toolbox]$ sudo ninja -C builddir install
|
|
||||||
```
|
|
||||||
|
|
||||||
Toolbox is written in Go. Consult the
|
|
||||||
[src/go.mod](https://github.com/containers/toolbox/blob/main/src/go.mod) file
|
|
||||||
for a full list of all the Go dependencies.
|
|
||||||
|
|
||||||
By default, Toolbox uses Go modules and all the required Go packages are
|
|
||||||
automatically downloaded as part of the build. There's no need to worry about
|
|
||||||
the Go dependencies, unless the build environment doesn't have network access
|
|
||||||
or any such peculiarities.
|
|
||||||
|
|
||||||
## Distro support
|
|
||||||
|
|
||||||
By default, Toolbox creates the container using an
|
|
||||||
[OCI](https://www.opencontainers.org/) image called
|
|
||||||
`<ID>-toolbox:<VERSION-ID>`, where `<ID>` and `<VERSION-ID>` are taken from the
|
|
||||||
host's `/usr/lib/os-release`. For example, the default image on a Fedora 33
|
|
||||||
host would be `fedora-toolbox:33`.
|
|
||||||
|
|
||||||
This default can be overridden by the `--image` option in `toolbox create`,
|
|
||||||
but operating system distributors should provide an adequately configured
|
|
||||||
default image to ensure a smooth user experience.
|
|
||||||
|
|
||||||
## Image requirements
|
|
||||||
|
|
||||||
Toolbox customizes newly created containers in a certain way. This requires
|
|
||||||
certain tools and paths to be present and have certain characteristics inside
|
|
||||||
the OCI image.
|
|
||||||
|
|
||||||
Tools:
|
|
||||||
* `getent(1)`
|
|
||||||
* `id(1)`
|
|
||||||
* `ln(1)`
|
|
||||||
* `mkdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `passwd(1)`
|
|
||||||
* `readlink(1)`
|
|
||||||
* `rm(1)`
|
|
||||||
* `rmdir(1)`: for hosts where `/home` is a symbolic link to `/var/home`
|
|
||||||
* `sleep(1)`
|
|
||||||
* `test(1)`
|
|
||||||
* `touch(1)`
|
|
||||||
* `unlink(1)`
|
|
||||||
* `useradd(8)`
|
|
||||||
* `usermod(8)`
|
|
||||||
|
|
||||||
Paths:
|
|
||||||
* `/etc/host.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/hosts`: optional, if present not a bind mount
|
|
||||||
* `/etc/krb5.conf.d`: directory, not a bind mount
|
|
||||||
* `/etc/localtime`: optional, if present not a bind mount
|
|
||||||
* `/etc/machine-id`: optional, not a bind mount
|
|
||||||
* `/etc/resolv.conf`: optional, if present not a bind mount
|
|
||||||
* `/etc/timezone`: optional, if present not a bind mount
|
|
||||||
|
|
||||||
Toolbox enables `sudo(8)` access inside containers. The following is necessary
|
|
||||||
for that to work:
|
|
||||||
|
|
||||||
* The image should have `sudo(8)` enabled for users belonging to either the
|
|
||||||
`sudo` or `wheel` groups, and the group itself should exist. File an
|
|
||||||
[issue](https://github.com/containers/toolbox/issues/new) if you really need
|
|
||||||
support for a different group. However, it's preferable to keep this list as
|
|
||||||
short as possible.
|
|
||||||
|
|
||||||
* The image should allow empty passwords for `sudo(8)`. This can be achieved
|
|
||||||
by either adding the `nullok` option to the `PAM(8)` configuration, or by
|
|
||||||
add the `NOPASSWD` tag to the `sudoers(5)` configuration.
|
|
||||||
|
|
||||||
Since Toolbox only works with OCI images that fulfill certain requirements,
|
|
||||||
it will refuse images that aren't tagged with
|
|
||||||
`com.github.containers.toolbox="true"` and
|
|
||||||
`com.github.debarshiray.toolbox="true"` labels. These labels are meant to be
|
|
||||||
used by the maintainer of the image to indicate that they have read this
|
|
||||||
document and tested that the image works with Toolbox. You can use the
|
|
||||||
following snippet in a Dockerfile for this:
|
|
||||||
```Dockerfile
|
|
||||||
LABEL com.github.containers.toolbox="true"
|
|
||||||
```
|
|
||||||
The label `com.github.debarshiray.toolbox="true"` was used in previous versions
|
|
||||||
of toolbox but is currently deprecated.
|
|
|
@ -1,48 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bc
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mesa-dri-drivers
|
|
||||||
mesa-vulkan-drivers
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
vulkan-loader
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,15 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
curl
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,44 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:36
|
|
||||||
|
|
||||||
ARG NAME=fedora-toolbox
|
|
||||||
ARG VERSION=36
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN rm /etc/rpm/macros.image-language-conf
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
RUN dnf -y upgrade
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
RUN dnf -y swap glibc-minimal-langpack glibc-all-langpacks
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
COPY ensure-files /
|
|
||||||
RUN ret_val=0; \
|
|
||||||
while read file; do \
|
|
||||||
if ! compgen -G "$file" >/dev/null; then \
|
|
||||||
echo "$file: No such file or directory" >&2; \
|
|
||||||
ret_val=1; \
|
|
||||||
break; \
|
|
||||||
fi; \
|
|
||||||
done <ensure-files; \
|
|
||||||
if [ "$ret_val" -ne 0 ]; then \
|
|
||||||
false; \
|
|
||||||
fi
|
|
||||||
RUN rm /ensure-files
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
|
@ -1,44 +0,0 @@
|
||||||
[Toolbox](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,
|
|
||||||
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
|
|
||||||
[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
|
|
||||||
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
|
|
||||||
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.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
Note that Toolbox makes no promise about security beyond what's already
|
|
||||||
available in the usual command line environment on the host that everybody is
|
|
||||||
familiar with.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbox and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,17 +0,0 @@
|
||||||
/usr/share/man/man1/bash.1*
|
|
||||||
/usr/share/man/man1/cd.1*
|
|
||||||
/usr/share/man/man1/export.1*
|
|
||||||
|
|
||||||
/usr/share/man/man1/cat.1*
|
|
||||||
/usr/share/man/man1/cp.1*
|
|
||||||
/usr/share/man/man1/ls.1*
|
|
||||||
|
|
||||||
/usr/share/man/man1/gpg2.1*
|
|
||||||
/usr/share/man/man7/gnupg2.7*
|
|
||||||
|
|
||||||
/usr/share/man/fr/man8/rpm.8*
|
|
||||||
/usr/share/man/ja/man8/rpm.8*
|
|
||||||
/usr/share/man/man8/rpm.8*
|
|
||||||
|
|
||||||
/usr/share/man/man1/kill.1*
|
|
||||||
/usr/share/man/man8/mount.8*
|
|
|
@ -1,48 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bc
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg2
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
jwhois
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mesa-dri-drivers
|
|
||||||
mesa-vulkan-drivers
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
vulkan-loader
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,20 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
coreutils-common
|
|
||||||
curl
|
|
||||||
findutils
|
|
||||||
gawk
|
|
||||||
gnupg2
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
sudo
|
|
||||||
systemd
|
|
||||||
tar
|
|
||||||
util-linux-core
|
|
|
@ -1,54 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:37
|
|
||||||
|
|
||||||
ARG NAME=fedora-toolbox
|
|
||||||
ARG VERSION=37
|
|
||||||
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" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN rm /etc/rpm/macros.image-language-conf
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
RUN dnf -y upgrade
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
RUN dnf -y swap glibc-minimal-langpack glibc-all-langpacks
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
COPY ensure-files /
|
|
||||||
RUN ret_val=0; \
|
|
||||||
while read file; do \
|
|
||||||
if ! compgen -G "$file" >/dev/null; then \
|
|
||||||
echo "$file: No such file or directory" >&2; \
|
|
||||||
ret_val=1; \
|
|
||||||
break; \
|
|
||||||
fi; \
|
|
||||||
done <ensure-files; \
|
|
||||||
if [ "$ret_val" -ne 0 ]; then \
|
|
||||||
false; \
|
|
||||||
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
|
|
|
@ -1,44 +0,0 @@
|
||||||
[Toolbox](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,
|
|
||||||
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
|
|
||||||
[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
|
|
||||||
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
|
|
||||||
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.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
Note that Toolbox makes no promise about security beyond what's already
|
|
||||||
available in the usual command line environment on the host that everybody is
|
|
||||||
familiar with.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbox and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,46 +0,0 @@
|
||||||
/usr/share/man/man1/bash.1*
|
|
||||||
/usr/share/man/man1/cd.1*
|
|
||||||
/usr/share/man/man1/export.1*
|
|
||||||
|
|
||||||
/usr/share/man/man1/cat.1*
|
|
||||||
/usr/share/man/man1/cp.1*
|
|
||||||
/usr/share/man/man1/ls.1*
|
|
||||||
|
|
||||||
/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/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/ru/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*
|
|
|
@ -1,49 +0,0 @@
|
||||||
bash-completion
|
|
||||||
bc
|
|
||||||
bzip2
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
fpaste
|
|
||||||
git
|
|
||||||
gnupg2
|
|
||||||
gnupg2-smime
|
|
||||||
gvfs-client
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mesa-dri-drivers
|
|
||||||
mesa-vulkan-drivers
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
psmisc
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
vulkan-loader
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
whois
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,91 +0,0 @@
|
||||||
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
|
|
||||||
libdb
|
|
||||||
libdnf
|
|
||||||
libeconf
|
|
||||||
libevent
|
|
||||||
libffi
|
|
||||||
libgcrypt
|
|
||||||
libgomp
|
|
||||||
libgpg-error
|
|
||||||
libidn2
|
|
||||||
libksba
|
|
||||||
libmodulemd
|
|
||||||
libpwquality
|
|
||||||
librepo
|
|
||||||
libsemanage
|
|
||||||
libsigsegv
|
|
||||||
libsolv
|
|
||||||
libssh
|
|
||||||
libtasn1
|
|
||||||
libtirpc
|
|
||||||
libunistring
|
|
||||||
libverto
|
|
||||||
libxcrypt
|
|
||||||
libxml2
|
|
||||||
libyaml
|
|
||||||
lz4-libs
|
|
||||||
mpfr
|
|
||||||
ncurses-base
|
|
||||||
nettle
|
|
||||||
openldap
|
|
||||||
openssl
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
pcre
|
|
||||||
pcre2-syntax
|
|
||||||
popt
|
|
||||||
python3
|
|
||||||
python3-gpg
|
|
||||||
python3-libs
|
|
||||||
python3-rpm
|
|
||||||
readline
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
setup
|
|
||||||
shadow-utils
|
|
||||||
sqlite-libs
|
|
||||||
sudo
|
|
||||||
systemd
|
|
||||||
systemd-libs
|
|
||||||
tar
|
|
||||||
tpm2-tss
|
|
||||||
tzdata
|
|
||||||
util-linux-core
|
|
||||||
vim-minimal
|
|
||||||
yum
|
|
||||||
zchunk-libs
|
|
||||||
zlib
|
|
|
@ -1,54 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora: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(1) command" \
|
|
||||||
summary="Image for creating Fedora Toolbx containers" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN rm /etc/rpm/macros.image-language-conf
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
RUN dnf -y upgrade
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
RUN dnf -y swap glibc-minimal-langpack glibc-all-langpacks
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
COPY ensure-files /
|
|
||||||
RUN ret_val=0; \
|
|
||||||
while read file; do \
|
|
||||||
if ! compgen -G "$file" >/dev/null; then \
|
|
||||||
echo "$file: No such file or directory" >&2; \
|
|
||||||
ret_val=1; \
|
|
||||||
break; \
|
|
||||||
fi; \
|
|
||||||
done <ensure-files; \
|
|
||||||
if [ "$ret_val" -ne 0 ]; then \
|
|
||||||
false; \
|
|
||||||
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
|
|
|
@ -1,44 +0,0 @@
|
||||||
[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/).
|
|
||||||
|
|
||||||
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://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
|
|
||||||
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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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 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 Toolbx container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbx and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,52 +0,0 @@
|
||||||
/usr/share/man/man1/bash.1*
|
|
||||||
/usr/share/man/man1/cd.1*
|
|
||||||
/usr/share/man/man1/export.1*
|
|
||||||
|
|
||||||
/usr/share/man/man1/cat.1*
|
|
||||||
/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*
|
|
|
@ -1,52 +0,0 @@
|
||||||
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
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mesa-dri-drivers
|
|
||||||
mesa-vulkan-drivers
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
psmisc
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
vulkan-loader
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
whois
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,92 +0,0 @@
|
||||||
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
|
|
|
@ -1,54 +0,0 @@
|
||||||
FROM registry.fedoraproject.org/fedora:39
|
|
||||||
|
|
||||||
ARG NAME=fedora-toolbox
|
|
||||||
ARG VERSION=39
|
|
||||||
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(1) command" \
|
|
||||||
summary="Image for creating Fedora Toolbx containers" \
|
|
||||||
maintainer="Debarshi Ray <rishi@fedoraproject.org>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN rm /etc/rpm/macros.image-language-conf
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
|
|
||||||
RUN dnf -y upgrade
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
RUN dnf -y swap glibc-minimal-langpack glibc-all-langpacks
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
COPY ensure-files /
|
|
||||||
RUN ret_val=0; \
|
|
||||||
while read file; do \
|
|
||||||
if ! compgen -G "$file" >/dev/null; then \
|
|
||||||
echo "$file: No such file or directory" >&2; \
|
|
||||||
ret_val=1; \
|
|
||||||
break; \
|
|
||||||
fi; \
|
|
||||||
done <ensure-files; \
|
|
||||||
if [ "$ret_val" -ne 0 ]; then \
|
|
||||||
false; \
|
|
||||||
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
|
|
|
@ -1,44 +0,0 @@
|
||||||
[Toolbx](https://containertoolbx.org/) is a tool for Linux, which allows the
|
|
||||||
use of interactive command line environments for software 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/).
|
|
||||||
|
|
||||||
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://ostreedev.github.io/ostree/) based operating systems like
|
|
||||||
[Fedora CoreOS](https://fedoraproject.org/coreos/) and
|
|
||||||
[Silverblue](https://fedoraproject.org/silverblue/). The intention of these
|
|
||||||
systems is to discourage installation of software on the host, and instead
|
|
||||||
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.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
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 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 Toolbx container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbx and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,51 +0,0 @@
|
||||||
/usr/share/man/man1/bash.1*
|
|
||||||
/usr/share/man/man1/cd.1*
|
|
||||||
/usr/share/man/man1/export.1*
|
|
||||||
|
|
||||||
/usr/share/man/man1/cat.1*
|
|
||||||
/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/man8/rpm.8*
|
|
||||||
/usr/share/man/man8/rpm2cpio.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*
|
|
|
@ -1,52 +0,0 @@
|
||||||
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
|
|
||||||
keyutils
|
|
||||||
krb5-libs
|
|
||||||
less
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
mesa-dri-drivers
|
|
||||||
mesa-vulkan-drivers
|
|
||||||
mtr
|
|
||||||
nano-default-editor
|
|
||||||
nss-mdns
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
procps-ng
|
|
||||||
psmisc
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
tcpdump
|
|
||||||
time
|
|
||||||
traceroute
|
|
||||||
tree
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
vulkan-loader
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
whois
|
|
||||||
words
|
|
||||||
xorg-x11-xauth
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,90 +0,0 @@
|
||||||
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
|
|
||||||
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
|
|
||||||
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
|
|
|
@ -1,28 +0,0 @@
|
||||||
FROM registry.access.redhat.com/ubi8:8.5
|
|
||||||
|
|
||||||
ENV NAME=toolbox-container VERSION=8.5
|
|
||||||
LABEL com.github.containers.toolbox="true" \
|
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" \
|
|
||||||
name="$NAME" \
|
|
||||||
version="$VERSION" \
|
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
|
||||||
summary="Base image for creating UBI toolbox containers" \
|
|
||||||
maintainer="Oliver Gutiérrez <ogutierrez@redhat.com>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
|
@ -1,44 +0,0 @@
|
||||||
[Toolbox](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,
|
|
||||||
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
|
|
||||||
[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
|
|
||||||
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
|
|
||||||
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.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
Note that Toolbox makes no promise about security beyond what's already
|
|
||||||
available in the usual command line environment on the host that everybody is
|
|
||||||
familiar with.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbox and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,45 +0,0 @@
|
||||||
alternatives
|
|
||||||
avahi-libs
|
|
||||||
bzip2
|
|
||||||
coreutils-common
|
|
||||||
dejavu-sans-fonts
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
git
|
|
||||||
glibc-all-langpacks
|
|
||||||
gnupg2-smime
|
|
||||||
hostname
|
|
||||||
iputils
|
|
||||||
jansson
|
|
||||||
langpacks-en
|
|
||||||
less
|
|
||||||
libevent
|
|
||||||
libgomp
|
|
||||||
libICE
|
|
||||||
libpkgconf
|
|
||||||
libSM
|
|
||||||
libX11
|
|
||||||
libX11-common
|
|
||||||
libXau
|
|
||||||
libxcb
|
|
||||||
libXext
|
|
||||||
libXmu
|
|
||||||
libXt
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
openssh-clients
|
|
||||||
pigz
|
|
||||||
pkgconf
|
|
||||||
pkgconf-m4
|
|
||||||
pkgconf-pkg-config
|
|
||||||
procps-ng
|
|
||||||
qrencode-libs
|
|
||||||
rsync
|
|
||||||
sudo
|
|
||||||
systemd-rpm-macros
|
|
||||||
time
|
|
||||||
unzip
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,14 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
curl
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,28 +0,0 @@
|
||||||
FROM registry.access.redhat.com/ubi8:8.6
|
|
||||||
|
|
||||||
ENV NAME=toolbox-container VERSION=8.6
|
|
||||||
LABEL com.github.containers.toolbox="true" \
|
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" \
|
|
||||||
name="$NAME" \
|
|
||||||
version="$VERSION" \
|
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
|
||||||
summary="Base image for creating UBI toolbox containers" \
|
|
||||||
maintainer="Oliver Gutiérrez <ogutierrez@redhat.com>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
|
@ -1,44 +0,0 @@
|
||||||
[Toolbox](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,
|
|
||||||
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
|
|
||||||
[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
|
|
||||||
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
|
|
||||||
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.
|
|
||||||
|
|
||||||
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/)
|
|
||||||
image. On Fedora this is the `fedora-toolbox` image. This image is used to
|
|
||||||
create a toolbox container that offers the interactive command line
|
|
||||||
environment.
|
|
||||||
|
|
||||||
Note that Toolbox makes no promise about security beyond what's already
|
|
||||||
available in the usual command line environment on the host that everybody is
|
|
||||||
familiar with.
|
|
||||||
|
|
||||||
|
|
||||||
## Installation & Use
|
|
||||||
|
|
||||||
See our guides on
|
|
||||||
[installing & getting started](https://containertoolbx.org/install/) with
|
|
||||||
Toolbox and [Linux distro support](https://containertoolbx.org/distros/).
|
|
|
@ -1,50 +0,0 @@
|
||||||
alternatives
|
|
||||||
bzip2
|
|
||||||
dejavu-sans-fonts
|
|
||||||
diffutils
|
|
||||||
dnf-plugins-core
|
|
||||||
findutils
|
|
||||||
flatpak-spawn
|
|
||||||
git
|
|
||||||
glibc-all-langpacks
|
|
||||||
gnupg2-smime
|
|
||||||
hostname
|
|
||||||
iproute
|
|
||||||
iputils
|
|
||||||
jansson
|
|
||||||
krb5-libs
|
|
||||||
langpacks-en
|
|
||||||
less
|
|
||||||
libevent
|
|
||||||
libgomp
|
|
||||||
libICE
|
|
||||||
libpkgconf
|
|
||||||
libSM
|
|
||||||
libX11
|
|
||||||
libX11-common
|
|
||||||
libXau
|
|
||||||
libxcb
|
|
||||||
libXext
|
|
||||||
libXmu
|
|
||||||
libXt
|
|
||||||
lsof
|
|
||||||
man-db
|
|
||||||
openssh-clients
|
|
||||||
passwd
|
|
||||||
pigz
|
|
||||||
pkgconf
|
|
||||||
pkgconf-m4
|
|
||||||
pkgconf-pkg-config
|
|
||||||
procps-ng
|
|
||||||
qrencode-libs
|
|
||||||
rsync
|
|
||||||
shadow-utils
|
|
||||||
sudo
|
|
||||||
time
|
|
||||||
unzip
|
|
||||||
util-linux
|
|
||||||
vte-profile
|
|
||||||
wget
|
|
||||||
which
|
|
||||||
xz
|
|
||||||
zip
|
|
|
@ -1,14 +0,0 @@
|
||||||
acl
|
|
||||||
bash
|
|
||||||
curl
|
|
||||||
gawk
|
|
||||||
grep
|
|
||||||
gzip
|
|
||||||
libcap
|
|
||||||
p11-kit
|
|
||||||
pam
|
|
||||||
python3
|
|
||||||
rpm
|
|
||||||
sed
|
|
||||||
systemd
|
|
||||||
tar
|
|
|
@ -1,28 +0,0 @@
|
||||||
FROM registry.access.redhat.com/ubi8:8.7
|
|
||||||
|
|
||||||
ENV NAME=toolbox-container VERSION=8.7
|
|
||||||
LABEL com.github.containers.toolbox="true" \
|
|
||||||
com.redhat.component="$NAME" \
|
|
||||||
com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" \
|
|
||||||
name="$NAME" \
|
|
||||||
version="$VERSION" \
|
|
||||||
usage="This image is meant to be used with the toolbox command" \
|
|
||||||
summary="Base image for creating UBI toolbox containers" \
|
|
||||||
maintainer="Oliver Gutiérrez <ogutierrez@redhat.com>"
|
|
||||||
|
|
||||||
COPY README.md /
|
|
||||||
|
|
||||||
RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf
|
|
||||||
RUN dnf -y swap coreutils-single coreutils-full
|
|
||||||
|
|
||||||
COPY missing-docs /
|
|
||||||
RUN dnf -y reinstall $(<missing-docs)
|
|
||||||
RUN rm /missing-docs
|
|
||||||
|
|
||||||
COPY extra-packages /
|
|
||||||
RUN dnf -y install $(<extra-packages)
|
|
||||||
RUN rm /extra-packages
|
|
||||||
|
|
||||||
RUN dnf clean all
|
|
||||||
|
|
||||||
CMD /bin/sh
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue