centos7更新podman到最新版

news2024/11/25 13:10:15

实验环境:centos7.7.1908

1.安装podman并查看版本

$ yum install podman -y

$ podman -v

[root@d7cb4574cd89 /]# podman -v
podman version 1.6.4 

centos7默认安装的podman版本是1.6.4,现在我们要把podman升级到最新版。

2.删除现有podman

$ yum remove -y podman

3. 添加EPEL存储库

添加用于安装开发工具的EPEL(Extra Packages for Enterprise Linux)存储库。

$ yum install -y epel-release
or
$ yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

4.安装所需的软件包

$ yum install -y "@Development Tools"
$ yum install -y curl gcc make device-mapper-devel git btrfs-progs-devel \
conmon containernetworking-plugins containers-common glib2-devel glibc-devel \
glibc-static golang-github-cpuguy83-md2man iptables libselinux-devel pkgconfig \
systemd-devel autoconf python3 python3-devel python3-pip yajl-devel libcap-devel

5.GoLang配置

$ cd /usr/local/src
$ curl -LO "https://go.dev/dl/go1.20.3.linux-amd64.tar.gz"
$ tar xzvf go1.20.3.linux-amd64.tar.gz -C /usr/local/
$ mkdir /usr/local/gopath

5.1设置Profile变量 

$ vi /etc/profile
# GoLang
export GO_HOME=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=$PATH:$GO_HOME/bin
$ source /etc/profile

6.安装conmon&runc

6.1.安装conmon

$ git clone https://github.com/containers/conmon.git /usr/local/src/conmon
$ cd /usr/local/src/conmon
$ export GOCACHE="$(mktemp -d)"
$ make -j $(nproc)
$ make install

 6.2.安装runc

$ git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc
$ cd $GOPATH/src/github.com/opencontainers/runc
$ make -j $(nproc) BUILDTAGS="selinux seccomp"
$ cp runc /usr/bin/runc

执行make -j $(nproc) BUILDTAGS="selinux seccomp"有以下报错

 

执行yum install libseccomp-devel,然后重新make -j $(nproc) BUILDTAGS="selinux seccomp"

问题解决! 然后cp runc /usr/bin/runc,最后查看版本runc -version

 7.编译库

为了编译Podman,需要下面列出的库。

Libgpg-error, Libassuan, nPth, Libgcrypt, Libksba, ntbTLS, GnuPG, GPGME

https://gnupg.org/download/index.html

虽然CentOS支持该库包,但版本较低,无法编译最新版本的Podman。

因此,需要将库编译为源代码后单独指定。

7.1 安装Libgpg-error

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.47.tar.bz2"
$ tar xjvf libgpg-error-1.47.tar.bz2
$ cd libgpg-error-1.47
$ ./configure --prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

7.2 安装Libassuan

必须将configure的gpg-error-config更改为gpgrt-config。

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.5.5.tar.bz2"
$ tar xjvf libassuan-2.5.5.tar.bz2
$ cd libassuan-2.5.5
$ sed -i 's/gpg-error-config/gpgrt-config/g' configure
$ ./configure --prefix=/usr/local/libassuan \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

 7.3 安装nPth

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/npth/npth-1.6.tar.bz2"
$ tar xjvf npth-1.6.tar.bz2
$ cd npth-1.6
$ ./configure --prefix=/usr/local/npth
$ make -j $(nproc)
$ make install

7.4 安装Libgcrypt

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.10.2.tar.bz2"
$ tar xjvf libgcrypt-1.10.2.tar.bz2
$ cd libgcrypt-1.10.2
$ ./configure --prefix=/usr/local/libgcrypt \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

在进行7.4的 ./configure之前先把7.10配置完成

配置完后执行 ./configure --prefix=/usr/local/libgcrypt --with-libgpg-error-prefix=/usr/local/libgpg-error如果出现如下问题

export PATH=$LIBGPG_ERROR_HOME/bin:$PATH

$ which gpg-error

执行完上面代码后重新执行 ./configure,就可以执行成功,生成makefile文件

之后继续执行 make -j $(nproc) 和 make install 就可以了

7.5 安装Libksba

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/libksba/libksba-1.6.3.tar.bz2"
$ tar xjvf libksba-1.6.3.tar.bz2
$ cd libksba-1.6.3
$ ./configure --prefix=/usr/local/libksba \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

7.6 安装ntbTLS

必须将configure中的–with-libksba-prefix更改为–with-ksba-prefix。

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/ntbtls/ntbtls-0.3.1.tar.bz2"
$ tar xjvf ntbtls-0.3.1.tar.bz2
$ cd ntbtls-0.3.1
$ ./configure --prefix=/usr/local/ntbtls \
--with-ksba-prefix=/usr/local/libksba \
--with-libgcrypt-prefix=/usr/local/libgcrypt \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

执行 make -j $(nproc) 会有如下错误

执行 yum install zlib-devel 后重新执行 make -j $(nproc) 即可

 7.7 安装GnuPG

必须将configure中的–with-libksba-prefix更改为–with-ksba-prefix。

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.4.0.tar.bz2"
$ tar xjvf gnupg-2.4.0.tar.bz2
$ cd gnupg-2.4.0
$ ./configure --prefix=/usr/local/gnupg \
--without-libintl-prefix \
--without-libiconv-prefix \
--with-npth-prefix=/usr/local/npth \
--with-ntbtls-prefix=/usr/local/ntbtls \
--with-ksba-prefix=/usr/local/libksba \
--with-libgcrypt-prefix=/usr/local/libgcrypt \
--with-libassuan-prefix=/usr/local/libassuan \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

7.8 安装GPGME 

$ cd /usr/local/src
$ curl -LO "https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.20.0.tar.bz2"
$ tar xjvf gpgme-1.20.0.tar.bz2
$ cd gpgme-1.20.0
$ ./configure --prefix=/usr/local/gpgme \
--with-libassuan-prefix=/usr/local/libassuan \
--with-libgpg-error-prefix=/usr/local/libgpg-error
$ make -j $(nproc)
$ make install

执行7.8./configure之前要先执行完7.9,之后再执行7.8 ./configure

执行 make -j $(nproc) 会有如下报错

$ cd /usr/local/src/gpgme-1.20.0/tests/gpg/

$ vi gpg.conf

$ comment 第5行

回到 /usr/local/src/gpgme-1.20.0目录下重新执行make -j $(nproc)

export LD_LIBRARY_PATH=/usr/local/libksba/lib:/usr/local/libgcrypt/lib:/usr/local/npth/lib:/usr/local/libgpg-error/lib

env | grep LD_LIBRARY_PATH

 缺哪个export哪个,应该是4个都缺,所以要export4个

之后重新执行 make -j $(nproc),会有如下报错

 上面错误是因为版本太低导致很多奇怪的编译错误,我们要升级gcc的版本才可以,然后重新执行make -j $(nproc)

到此还没有找到好的解决办法 

 7.9 设置PKGCONFIG

$ mkdir /usr/local/pkgconfig
$ cd /usr/local/pkgconfig
$ ln -s /usr/local/gpgme/lib/pkgconfig/* ./
$ ln -s /usr/local/ntbtls/lib/pkgconfig/* ./
$ ln -s /usr/local/libksba/lib/pkgconfig/* ./
$ ln -s /usr/local/libgcrypt/lib/pkgconfig/* ./
$ ln -s /usr/local/libassuan/lib/pkgconfig/* ./
$ ln -s /usr/local/libgpg-error/lib/pkgconfig/* ./

 7.10 Profile变量设置

$ vi /etc/profile
# PKGCONFIG
export PKG_CONFIG_PATH=/usr/local/pkgconfig

 

# Libgpg-error
# Libgpg-error
export LIBGPG_ERROR_HOME=/usr/local/libgpg-error
export PATH=$PATH:$LIBGPG_ERROR_HOME/bin

# Libassuan
export LIBASSUAN_HOME=/usr/local/libassuan
export PATH=$PATH:$LIBASSUAN_HOME/bin

# nPth
export NPTH_HOME=/usr/local/npth
export PATH=$PATH:$NPTH_HOME/bin

# Libgcrypt
export LIBGCRYPT_HOME=/usr/local/libgcrypt
export PATH=$PATH:$LIBGCRYPT_HOME/bin

# Libksba
export LIBKSBA_HOME=/usr/local/libksba
export PATH=$PATH:$LIBKSBA_HOME/bin

# ntbTLS
export NTBTLS_HOME=/usr/local/ntbtls
export PATH=$PATH:$NTBTLS_HOME/bin

# GnuPG
export GNUPG_HOME=/usr/local/gnupg
export PATH=$PATH:$GNUPG_HOME/bin

# GPGME
export GPGME_HOME=/usr/local/gpgme
export PATH=$PATH:$GPGME_HOME/bin

$ source /etc/profile

 8 Podman安装

$ cd /usr/local/src
$ PODMAN_VER_TAG="v4.6.1"
$ wget https://github.com/containers/podman/archive/refs/tags/${PODMAN_VER_TAG}.tar.gz
$ tar xzvf ${PODMAN_VER_TAG}.tar.gz
$ cd ${PODMAN_VER_TAG}
$ make -j $(nproc) BUILDTAGS="selinux seccomp"
$ make install PREFIX=/usr

cd /usr/local/src
PODMAN_VER_TAG="v4.6.1"
wget https://github.com/containers/podman/archive/refs/tags/v4.6.1.tar.gz
tar xzvf v4.6.1.tar.gz
cd podman-4.6.1
make -j $(nproc) BUILDTAGS="selinux seccomp"
make install PREFIX=/usr

如果执行wget https://github.com/containers/podman/archive/refs/tags/v4.6.1.tar.gz,github连接不上可以通过wget https://kgithub.com/containers/podman/archive/refs/tags/v4.6.1.tar.gz下载,但是我试了一下从镜像中下载的好像不行,所以尽量还是从github下载

[root@9f7fa3629178 podman-4.6.1]# make -j $(nproc) BUILDTAGS="selinux seccomp"
fatal: Not a git repository (or any of the parent directories): .git
Podman is being compiled without the systemd build tag.         Install libsystemd on Ubuntu or systemd-devel on rpm based      distro for journald support.
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
         \
        -ldflags ' -X github.com/containers/podman/v4/libpod/define.buildInfo=1694420421 -X github.com/containers/podman/v4/libpod/config._installPrefix=/usr/local -X github.com/containers/podman/v4/libpod/config._etcDir=/etc -X github.com/containers/podman/v4/pkg/systemd/quadlet._binDir=/usr/local/bin -X github.com/containers/common/pkg/config.additionalHelperBinariesDir= ' \
        -tags "selinux seccomp" \
        -o bin/podman ./cmd/podman
mkdir -p bin
CGO_ENABLED=1 \
        go build \
         \
        -o bin/rootlessport ./cmd/rootlessport
fatal: Not a git repository (or any of the parent directories): .git
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
         \
        -ldflags ' -X github.com/containers/podman/v4/libpod/define.buildInfo=1694420421 -X github.com/containers/podman/v4/libpod/config._installPrefix=/usr/local -X github.com/containers/podman/v4/libpod/config._etcDir=/etc -X github.com/containers/podman/v4/pkg/systemd/quadlet._binDir=/usr/local/bin -X github.com/containers/common/pkg/config.additionalHelperBinariesDir= ' \
        -tags "selinux seccomp" \
        -o bin/quadlet ./cmd/quadlet
hack/markdown-preprocess
if [ ! -x "/bin/go-md2man" ]; then \
        make -C test/tools build/go-md2man ; \
fi
mkdir -p docs/build/man
hack/markdown-preprocess
hack/markdown-preprocess
fatal: Not a git repository (or any of the parent directories): .git
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build \
         \
        -ldflags ' -X github.com/containers/podman/v4/libpod/define.buildInfo=1694420440 -X github.com/containers/podman/v4/libpod/config._installPrefix=/usr/local -X github.com/containers/podman/v4/libpod/config._etcDir=/etc -X github.com/containers/podman/v4/pkg/systemd/quadlet._binDir=/usr/local/bin -X github.com/containers/common/pkg/config.additionalHelperBinariesDir= ' \
        -tags "remote exclude_graphdriver_btrfs btrfs_noversion exclude_graphdriver_devicemapper containers_image_openpgp" \
        -o bin/podman-remote ./cmd/podman
if [ ! -f bin/podmansh ]; then ln -s podman bin/podmansh; fi

 [root@9f7fa3629178 podman-4.6.1]# make install PREFIX=/usr
install  -d -m 755 /usr/bin
install  -m 755 bin/podman /usr/bin/podman
ln -sf podman /usr/bin/podmansh
test -z "" || chcon --verbose --reference=/usr/bin/podman bin/podman
install  -d -m 755 /usr/libexec/podman
install  -m 755 bin/rootlessport /usr/libexec/podman/rootlessport
test -z "" || chcon --verbose --reference=/usr/libexec/podman/rootlessport bin/rootlessport
install  -m 755 bin/quadlet /usr/libexec/podman/quadlet
install  -d -m 755 /usr/lib/systemd/system-generators
ln -sfr /usr/libexec/podman/quadlet /usr/lib/systemd/system-generators/podman-system-generator
install  -d -m 755 /usr/lib/systemd/user-generators
ln -sfr /usr/libexec/podman/quadlet /usr/lib/systemd/user-generators/podman-user-generator
install  -m 755 -d /usr/lib/tmpfiles.d
install  -m 644 contrib/tmpfile/podman.conf /usr/lib/tmpfiles.d/podman.conf
install  -d -m 755 /usr/bin
install  -m 755 bin/podman-remote \
        /usr/bin/podman-remote
test "linux" != "windows" || \
        install -m 755 bin/win-sshproxy.exe /usr/bin
test "linux" != "windows" || \
        install -m 755 bin/gvproxy.exe /usr/bin
test "linux" != "darwin" || \
        install -m 755 bin/podman-mac-helper /usr/bin
test -z "" || \
        chcon --verbose --reference=/usr/bin/podman-remote \
        bin/podman-remote
install  -d -m 755 /usr/share/man/man1
install  -d -m 755 /usr/share/man/man5
install  -m 644 docs/build/man/podman-attach.1 docs/build/man/podman-auto-update.1 docs/build/man/podman-build.1 docs/build/man/podman-commit.1 docs/build/man/podman-completion.1 docs/build/man/podman-container-checkpoint.1 docs/build/man/podman-container-cleanup.1 docs/build/man/podman-container-clone.1 docs/build/man/podman-container-diff.1 docs/build/man/podman-container-exists.1 docs/build/man/podman-container-inspect.1 docs/build/man/podman-container-prune.1 docs/build/man/podman-container-restore.1 docs/build/man/podman-container-runlabel.1 docs/build/man/podman-container.1 docs/build/man/podman-cp.1 docs/build/man/podman-create.1 docs/build/man/podman-diff.1 docs/build/man/podman-events.1 docs/build/man/podman-exec.1 docs/build/man/podman-export.1 docs/build/man/podman-generate-spec.1 docs/build/man/podman-generate-systemd.1 docs/build/man/podman-generate.1 docs/build/man/podman-healthcheck-run.1 docs/build/man/podman-healthcheck.1 docs/build/man/podman-history.1 docs/build/man/podman-image-diff.1 docs/build/man/podman-image-exists.1 docs/build/man/podman-image-inspect.1 docs/build/man/podman-image-mount.1 docs/build/man/podman-image-prune.1 docs/build/man/podman-image-scp.1 docs/build/man/podman-image-sign.1 docs/build/man/podman-image-tree.1 docs/build/man/podman-image-trust.1 docs/build/man/podman-image-unmount.1 docs/build/man/podman-image.1 docs/build/man/podman-images.1 docs/build/man/podman-import.1 docs/build/man/podman-info.1 docs/build/man/podman-init.1 docs/build/man/podman-inspect.1 docs/build/man/podman-kill.1 docs/build/man/podman-kube-apply.1 docs/build/man/podman-kube-down.1 docs/build/man/podman-kube-generate.1 docs/build/man/podman-kube-play.1 docs/build/man/podman-kube.1 docs/build/man/podman-load.1 docs/build/man/podman-login.1 docs/build/man/podman-logout.1 docs/build/man/podman-logs.1 docs/build/man/podman-machine-info.1 docs/build/man/podman-machine-init.1 docs/build/man/podman-machine-inspect.1 docs/build/man/podman-machine-list.1 docs/build/man/podman-machine-os-apply.1 docs/build/man/podman-machine-os.1 docs/build/man/podman-machine-rm.1 docs/build/man/podman-machine-set.1 docs/build/man/podman-machine-ssh.1 docs/build/man/podman-machine-start.1 docs/build/man/podman-machine-stop.1 docs/build/man/podman-machine.1 docs/build/man/podman-manifest-add.1 docs/build/man/podman-manifest-annotate.1 docs/build/man/podman-manifest-create.1 docs/build/man/podman-manifest-exists.1 docs/build/man/podman-manifest-inspect.1 docs/build/man/podman-manifest-push.1 docs/build/man/podman-manifest-remove.1 docs/build/man/podman-manifest-rm.1 docs/build/man/podman-manifest.1 docs/build/man/podman-mount.1 docs/build/man/podman-network-connect.1 docs/build/man/podman-network-create.1 docs/build/man/podman-network-disconnect.1 docs/build/man/podman-network-exists.1 docs/build/man/podman-network-inspect.1 docs/build/man/podman-network-ls.1 docs/build/man/podman-network-prune.1 docs/build/man/podman-network-reload.1 docs/build/man/podman-network-rm.1 docs/build/man/podman-network-update.1 docs/build/man/podman-network.1 docs/build/man/podman-pause.1 docs/build/man/podman-pod-clone.1 docs/build/man/podman-pod-create.1 docs/build/man/podman-pod-exists.1 docs/build/man/podman-pod-inspect.1 docs/build/man/podman-pod-kill.1 docs/build/man/podman-pod-logs.1 docs/build/man/podman-pod-pause.1 docs/build/man/podman-pod-prune.1 docs/build/man/podman-pod-ps.1 docs/build/man/podman-pod-restart.1 docs/build/man/podman-pod-rm.1 docs/build/man/podman-pod-start.1 docs/build/man/podman-pod-stats.1 docs/build/man/podman-pod-stop.1 docs/build/man/podman-pod-top.1 docs/build/man/podman-pod-unpause.1 docs/build/man/podman-pod.1 docs/build/man/podman-port.1 docs/build/man/podman-ps.1 docs/build/man/podman-pull.1 docs/build/man/podman-push.1 docs/build/man/podman-remote.1 docs/build/man/podman-rename.1 docs/build/man/podman-restart.1 docs/build/man/podman-rm.1 docs/build/man/podman-rmi.1 docs/build/man/podman-run.1 docs/build/man/podman-save.1 docs/build/man/podman-search.1 docs/build/man/podman-secret-create.1 docs/build/man/podman-secret-exists.1 docs/build/man/podman-secret-inspect.1 docs/build/man/podman-secret-ls.1 docs/build/man/podman-secret-rm.1 docs/build/man/podman-secret.1 docs/build/man/podman-start.1 docs/build/man/podman-stats.1 docs/build/man/podman-stop.1 docs/build/man/podman-system-connection-add.1 docs/build/man/podman-system-connection-default.1 docs/build/man/podman-system-connection-list.1 docs/build/man/podman-system-connection-remove.1 docs/build/man/podman-system-connection-rename.1 docs/build/man/podman-system-connection.1 docs/build/man/podman-system-df.1 docs/build/man/podman-system-migrate.1 docs/build/man/podman-system-prune.1 docs/build/man/podman-system-renumber.1 docs/build/man/podman-system-reset.1 docs/build/man/podman-system-service.1 docs/build/man/podman-system.1 docs/build/man/podman-tag.1 docs/build/man/podman-top.1 docs/build/man/podman-unmount.1 docs/build/man/podman-unpause.1 docs/build/man/podman-unshare.1 docs/build/man/podman-untag.1 docs/build/man/podman-update.1 docs/build/man/podman-version.1 docs/build/man/podman-volume-create.1 docs/build/man/podman-volume-exists.1 docs/build/man/podman-volume-export.1 docs/build/man/podman-volume-import.1 docs/build/man/podman-volume-inspect.1 docs/build/man/podman-volume-ls.1 docs/build/man/podman-volume-mount.1 docs/build/man/podman-volume-prune.1 docs/build/man/podman-volume-reload.1 docs/build/man/podman-volume-rm.1 docs/build/man/podman-volume-unmount.1 docs/build/man/podman-volume.1 docs/build/man/podman-wait.1 docs/build/man/podman.1 docs/build/man/podmansh.1 /usr/share/man/man1
install  -m 644 docs/source/markdown/links/*1 /usr/share/man/man1
install  -m 644 docs/build/man/podman-systemd.unit.5 /usr/share/man/man5
install  -m 644 docs/source/markdown/links/*5 /usr/share/man/man5
sed -e 's;@@PODMAN@@;/usr/bin/podman;g' contrib/systemd/auto-update/podman-auto-update.service.in >contrib/systemd/auto-update/podman-auto-update.service.tmp.$ \
        && mv -f contrib/systemd/auto-update/podman-auto-update.service.tmp.$ contrib/systemd/auto-update/podman-auto-update.service
sed -e 's;@@PODMAN@@;/usr/bin/podman;g' contrib/systemd/system/podman.service.in >contrib/systemd/system/podman.service.tmp.$ \
        && mv -f contrib/systemd/system/podman.service.tmp.$ contrib/systemd/system/podman.service
sed -e 's;@@PODMAN@@;/usr/bin/podman;g' contrib/systemd/system/podman-restart.service.in >contrib/systemd/system/podman-restart.service.tmp.$ \
        && mv -f contrib/systemd/system/podman-restart.service.tmp.$ contrib/systemd/system/podman-restart.service
sed -e 's;@@PODMAN@@;/usr/bin/podman;g' contrib/systemd/system/podman-kube@.service.in >contrib/systemd/system/podman-kube@.service.tmp.$ \
        && mv -f contrib/systemd/system/podman-kube@.service.tmp.$ contrib/systemd/system/podman-kube@.service
sed -e 's;@@PODMAN@@;/usr/bin/podman;g' contrib/systemd/system/podman-clean-transient.service.in >contrib/systemd/system/podman-clean-transient.service.tmp.$ \
        && mv -f contrib/systemd/system/podman-clean-transient.service.tmp.$ contrib/systemd/system/podman-clean-transient.service
install  -m 755 -d /usr/lib/systemd/system  /usr/lib/systemd/user
# User services
install  -m 644 contrib/systemd/auto-update/podman-auto-update.service /usr/lib/systemd/user/podman-auto-update.service
install  -m 644 contrib/systemd/auto-update/podman-auto-update.timer /usr/lib/systemd/user/podman-auto-update.timer
install  -m 644 contrib/systemd/system/podman.socket /usr/lib/systemd/user/podman.socket
install  -m 644 contrib/systemd/system/podman.service /usr/lib/systemd/user/podman.service
install  -m 644 contrib/systemd/system/podman-restart.service /usr/lib/systemd/user/podman-restart.service
install  -m 644 contrib/systemd/system/podman-kube@.service /usr/lib/systemd/user/podman-kube@.service
# System services
install  -m 644 contrib/systemd/auto-update/podman-auto-update.service /usr/lib/systemd/system/podman-auto-update.service
install  -m 644 contrib/systemd/auto-update/podman-auto-update.timer /usr/lib/systemd/system/podman-auto-update.timer
install  -m 644 contrib/systemd/system/podman.socket /usr/lib/systemd/system/podman.socket
install  -m 644 contrib/systemd/system/podman.service /usr/lib/systemd/system/podman.service
install  -m 644 contrib/systemd/system/podman-restart.service /usr/lib/systemd/system/podman-restart.service
install  -m 644 contrib/systemd/system/podman-kube@.service /usr/lib/systemd/system/podman-kube@.service
install  -m 644 contrib/systemd/system/podman-clean-transient.service /usr/lib/systemd/system/podman-clean-transient.service
rm -f contrib/systemd/auto-update/podman-auto-update.service contrib/systemd/system/podman.service contrib/systemd/system/podman-restart.service contrib/systemd/system/podman-kube@.service contrib/systemd/system/podman-clean-transient.service

直接在centos7.7下安装podman4.6.1还是有问题存在,目前没有找到很好的解决办法,不过可以先在centos7.9下安装podman4.6.1,再copy到centos7.7下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1009499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言编程题(三)整型和浮点型混合运算

C语言——整型和浮点型混合运算_int与float的混合计算__好好学习的博客-CSDN博客 请写出165.25(10进制)使用float型存储在计算机中的形式。 在计算机中,浮点数使用IEEE 754标准来表示。根据IEEE 754标准,32位的单精度浮点数(float类型&#…

软件流程图怎么画?详细画法看这里

软件流程图怎么画?软件流程图是软件开发过程中必不可少的一环,可以帮助开发人员更好地理解和规划软件开发的流程。在制作软件流程图的时候,我们可以使用一些制作工具。下面就给大家介绍一款好用的绘制工具。 我们可以使用【迅捷画图】来进行流…

28.Xaml ContexMenu控件---->右键菜单

1.运行效果 2.运行源码 a.Xaml源码 <Window x:Class="testView.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic…

anaconda,cuda,torch,lightning的安装

本博客仅作为初学者参考使用&#xff0c;汇总了多位大牛的博客&#xff0c;如有侵权请联系我删除 anaconda,cuda,torch,lightning的安装 1、Anaconda2、cuda3、pytorch4、lightning5、解决pip执行后导致C盘空间变小问题 1、Anaconda 作用&#xff1a; 1、可创建python包的虚拟…

RabbitMQ —— 初窥门径

前言 RabbitMQ作为当下主流的消息中间件之一&#xff0c;无疑是我们Java后端开发技术成长路线的重要一环&#xff0c;在这篇文章中荔枝将会梳理入门RabbitMQ的知识&#xff0c;文章涉及RabbitMQ的基本概念及其环境配置&#xff0c;荔枝的RabbitMQ是在Docker上部署的&#xff0c…

基于Gradio/Stable Diffusion/Midjourney的AIGC自动图像绘画生成软件 - Fooocus

0.参考 本项目&#xff1a;GitHub - lllyasviel/Fooocus: Focus on prompting and generating 作者&#xff1a;Lvmin Zhang lllyasviel 另一杰作 ContorlNet https://github.com/lllyasviel/ControlNet 模型&#xff1a;https://huggingface.co/stabilityai/stable-diffus…

基于人体呼出气体的电子鼻系统的设计与实现

基于人体呼出气体的电子鼻系统的设计与实现 摘要 电子鼻技术是通过模式识别技术对传感器采集的人体呼出气体进行分类训练的方法。本文研究实现的电子鼻系统包括下面几个部分:首先搭建以Arduino为控制核心的气路采集装置&#xff0c;包括MOS传感器和双阀储气袋构建的传感器阵列和…

探索数据结构:从基础到高级

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 数据结构是计算机科学和…

MiniMeters for Mac - 独立音频计量软件,创意音乐的最佳伙伴

MiniMeters for Mac是一款专为Mac用户设计的音频计量软件&#xff0c;它提供了一套功能强大、直观易用的工具&#xff0c;帮助你更好地理解和处理音频。这款软件不仅具备高度的专业性&#xff0c;同时也极具创新性&#xff0c;它的出现将彻底改变你对音频处理的认知。 .安装&a…

macOS 中 聚焦搜索 的使用教程

macOS中的聚焦搜索是一个强大的工具&#xff0c;它可以帮助你快速找到文件、应用程序、联系人、电子邮件、互联网搜索结果等。 下面是macOS中聚焦搜索的使用教程&#xff1a; 1.打开聚焦搜索&#xff1a; 使用键盘快捷键&#xff1a;按下键盘上的Command键和空格键&#xff0…

线性表(顺序表、链表、栈、队列)总结梳理

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…

提高项目团队执行力的6大注意事项

项目执行力的强弱直接影响项目的进度和时间安排&#xff0c;项目执行力高的团队通常能够更好地分配任务、协同合作和解决问题。这可以大幅提高工作效率&#xff0c;避免重复劳动和资源浪费。而执行力低的项目团队&#xff0c;往往难以按时完成任务无法及时发现和应对风险&#…

无涯教程-JavaScript - TYPE函数

描述 TYPE函数接收一个值,并返回一个表示指定值的数据类型的整数。当另一个函数的行为取决于特定单元格中值的类型时,请使用TYPE。 语法 TYPE (value) 争论 Argument描述Required/OptionalValue 值或对包含您想知道其类型的值的单元格的引用。 数据类型可以是数字,文本,逻辑…

C语言编程题(四)有符号数与无符号数相加

#include "stdio.h"int main() {unsigned int a6;int b-20;(ab>6)?printf(">6"):printf("<6"); } 要计算-20的补码&#xff0c;需要先找到它的二进制表示形式&#xff0c;然后将其转换为补码。首先&#xff0c;将20转换为二进制&…

Python 网络请求模块 urllib 、requests详解

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 Python 给人的印象是抓取网页非常方便&#xff0c;提供这种生产力的&#xff0c;主要依靠的就是 urllib、requests这两个模块。 话不多说&#xff0c;直接开搞&#xff0c;如果有什么疑惑/资料需要的可以点击文章末尾名片领取…

专业招投标书翻译怎样做比较好

在全球经济贸易一体化不断深入的时代&#xff0c;招投标作为国际通用的新型贸易方式&#xff0c;受到了大量中外企业的青睐。根据国际惯例&#xff0c;与招标采购活动有关的一切文件资料&#xff0c;均须使用英文编制。即使允许使用非英文语言编制&#xff0c;也必须随附一份英…

PMP是智商税吗?为啥这么多人考?

PMP到底是不是智商税&#xff1f; &#xff30;&#xff2d;&#xff30;证书图样 “PMP证书是智商税&#xff0c;报名费这么贵&#xff0c;考了又没啥用” “又不像软考能评职称&#xff0c;地方补贴待遇好&#xff01;考了干嘛&#xff1f;” “考了就能年薪50W&#xff1…

自研一个简易版本的OkHTTP

一,背景 为了彻底搞明白okhttp原理&#xff0c;仿照okhttp自研一个 二&#xff0c;思路 业务上没发出一个request&#xff0c;使用AsyncCall包装起来&#xff0c;然后在网络分发器的作用下&#xff0c;执行具体的每一个Call,这些具体的Call会经过层层的拦截器&#xff0c;最终…

【工具使用】STM32CubeMX-DMA配置(ADC+DMA 和 UART+DMA)

一、概述 无论是新手还是大佬&#xff0c;基于STM32单片机的开发&#xff0c;使用STM32CubeMX都是可以极大提升开发效率的&#xff0c;并且其界面化的开发&#xff0c;也大大降低了新手对STM32单片机的开发门槛。     本文主要讲述STM32芯片的DMA的配置及其相关知识。 二、…

离散制造企业如何打造MES管理系统

在当今制造业中&#xff0c;MES生产管理系统越来越受到关注&#xff0c;但在实际应用中也遇到了一些问题。本文分析了离散制造业和流程生产行业的MES应用现状&#xff0c;指出了这两个行业在部署MES管理系统时存在差异的原因&#xff0c;并探讨了如何在离散制造业提升生产效率&…