Ubuntu 22.04 离线安装软件包
在使用最小化安装时,默认是不带有vim 或者nano编辑器的,如果你的环境不能上外网就需要离线安装。
首先你需要先找一台可以上网的ubuntu系统(虚拟机搭建也行),下载所有的依赖包,然后上传到需要安装的服务器上手动安装。
我已经使用sudo -i 切换到了root用户
如下示例:
root@localhost:/opt# mkdir Package
root@localhost:/opt# cd Package/
下载软件包
root@localhost:/opt/Package# apt-get download vim
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 vim amd64 2:8.2.3995-1ubuntu2.20 [1729 kB]
Fetched 1729 kB in 1s (1555 kB/s)
查看vim所有依赖包
如果在下载软件包过程中报错:
couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
时,这是因为在下载软件包的时候使用_apt 权限不足所以切换到root用户下载了。saz
root@localhost:/opt/Package# apt-cache depends vim
vimDepends: vim-commonDepends: vim-runtimeDepends: libacl1Depends: libc6Depends: libgpm2Depends: libpython3.10Depends: libselinux1Depends: libsodium23Depends: libtinfo6Suggests: <ctags>exuberant-ctagsuniversal-ctagsSuggests: vim-docSuggests: vim-scripts
- Depends 的必要下
- Suggests 建议下载
到这里只需要把所有依赖的包都下载到本地,然后打包到需要安装的服务器上,dpkg -i *.deb
即可安装
这种适合安装一个或者少个软件,如果要一次性安装多个软件就会有点不方便,下面介绍一次性安装多个软件以及依赖。
root@localhost:~# mkdir Package
root@localhost:~# cd Package
sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <packagename> | grep "^\w" | sort -u)
- apt-get download 仅仅下载软件包
apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances <packagename> | grep "^\w" | sort -u
-
<packagename> 指明你要下载的软件包,可以有多个
-
apt-cache depends 列出软件包的依赖关系
例如:root@localhost:~# apt-cache depends net-tools net-toolsDepends: libc6Depends: libselinux1
-
--recurse 递归显示所有依赖项,把依赖的依赖也显示出来
例如:消息过多这里只展示一部分
root@localhost:~# apt-cache depends net-tools --recurse | head net-toolsDepends: libc6Depends: libselinux1 libc6Depends: libgcc-s1Depends: libcrypt1Breaks: busyboxBreaks: fakerootBreaks: <hurd>Breaks: ioquake3
-
--no-recommends: 排除推荐依赖;推荐依赖不是软件包运行所必需的,但通常建议安装以获得更好的用户体验。
-
--no-suggests:排除建议依赖;建议依赖是那些APT认为可能对用户有用的软件包,但不是必需的。
内容过多不展示
-
--no-conflicts:不显示与给定软件包冲突的软件包信息。
-
--no-breaks:不显示会与给定软件包产生破坏性更新的软件包信息。
-
--no-replaces:不显示被给定软件包替换的软件包信息。
-
--no-enhances:不显示增强依赖。增强依赖是指那些可以提升软件包功能,但不是必需的软件包
root@localhost:~# apt-cache depends net-tools --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances net-toolsDepends: libc6Depends: libselinux1 libc6Depends: libgcc-s1Depends: libcrypt1 libselinux1Depends: libc6Depends: libpcre2-8-0 libgcc-s1Depends: gcc-12-baseDepends: libc6 libcrypt1Depends: libc6 libpcre2-8-0Depends: libc6 gcc-12-base
-
grep “^\w”: 这个管道命令将过滤输出,只保留以单词字符(字母、数字、下划线)开头的行,即忽略空行或以非单词字符开头的行
获得的内容如下:root@localhost:~# apt-cache depends net-tools --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances | grep "^\w" net-tools libc6 libselinux1 libgcc-s1 libcrypt1 libpcre2-8-0 gcc-12-base
-
sort -u: 排序后并去重
最后得到所有的依赖包:root@localhost:~# apt-cache depends net-tools --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances | grep "^\w" | sort -u gcc-12-base libc6 libcrypt1 libgcc-s1 libpcre2-8-0 libselinux1 net-tools
将所有的依赖包作为参数给到 apt-get download 去下载
root@localhost:/opt/Package# apt-get download $(apt-cache depends net-tools --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances | grep "^\w" | sort -u)
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 libcrypt1 amd64 1:4.4.27-1 [82.0 kB]
Get:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 libselinux1 amd64 3.3-1build2 [74.6 kB]
Get:3 http://cn.archive.ubuntu.com/ubuntu jammy/main amd64 net-tools amd64 1.60+git20181103.0eebece-1ubuntu5 [204 kB]
Get:4 http://cn.archive.ubuntu.com/ubuntu jammy-updates/main amd64 gcc-12-base amd64 12.3.0-1ubuntu1~22.04 [20.1 kB]
Get:5 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 libc6 amd64 2.35-0ubuntu3.8 [3235 kB]
Get:6 http://cn.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgcc-s1 amd64 12.3.0-1ubuntu1~22.04 [53.9 kB]
Get:7 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 libpcre2-8-0 amd64 10.39-3ubuntu0.1 [221 kB]
Fetched 3891 kB in 2s (1986 kB/s)
W: Download is performed unsandboxed as root as file '/opt/Package/libcrypt1_1%3a4.4.27-1_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)
使用dpkg-scanpackages给当前的所有软件包建立依赖关系,生成本地软件包目录,以便在本地使用apt-get 安装
sudo apt-get install dpkg-dev # 提前安装dpkg-dev
创建archives目录将生成的依赖关系打包到archives目录下
一定要写成Packages.gz,不然不识别会报错
如果dpkg-scanpackages命令只是输出waring和info信息不用管,只要不报错就行
root@localhost:/opt/Package# mkdir archives
root@localhost:/opt/Package# dpkg-scanpackages ./ | gzip > ./archives/Packages.gz
dpkg-scanpackages: info: Wrote 7 entries to output Packages file.
root@localhost:/opt/Package# ls archives/
Packages.gz
打包Package整个目录
root@localhost:/opt/Package# tar -zcvf ../Package.tar.gz ../Package
root@localhost:/opt/Package# ls ../
Package Package.tar.gz
将打包好的文件放到需要安装的服务器上解压,这里到放到 /tmp 目录下
root@localhost:/tmp# ls -1
Package.tar.gz
Package/
备份/etc/apt/sources.list文件,并重启编辑它。
root@localhost:/tmp# mv /etc/apt/sources.list /etc/apt/sources.list.bak
root@localhost:/tmp# echo "deb [trusted=yes] file:///tmp/Package/ archives/" > /etc/apt/sources.list
- archives 软件源名称
- /tmp/Package/ 软件包路径
更新软件源
root@localhost:/tmp# apt-get update
Get:1 file:/tmp/Package archives/ InRelease
Ign:1 file:/tmp/Package archives/ InRelease
Get:2 file:/tmp/Package archives/ Release
Ign:2 file:/tmp/Package archives/ Release
Get:3 file:/tmp/Package archives/ Packages
Ign:3 file:/tmp/Package archives/ Packages
Get:4 file:/tmp/Package archives/ Translation-en
Ign:4 file:/tmp/Package archives/ Translation-en
Get:3 file:/tmp/Package archives/ Packages
Ign:3 file:/tmp/Package archives/ Packages
Get:4 file:/tmp/Package archives/ Translation-en
Ign:4 file:/tmp/Package archives/ Translation-en
Get:3 file:/tmp/Package archives/ Packages
Ign:3 file:/tmp/Package archives/ Packages
Get:4 file:/tmp/Package archives/ Translation-en
Ign:4 file:/tmp/Package archives/ Translation-en
Get:3 file:/tmp/Package archives/ Packages [3358 B]
Get:4 file:/tmp/Package archives/ Translation-en
Err:4 file:/tmp/Package archives/ Translation-enFile not found - /tmp/Package/archives/en.gz (2: No such file or directory)
Get:4 file:/tmp/Package archives/ Translation-en
Err:4 file:/tmp/Package archives/ Translation-enFile not found - /tmp/Package/archives/en.lz4 (2: No such file or directory)
Get:4 file:/tmp/Package archives/ Translation-en
Err:4 file:/tmp/Package archives/ Translation-enFile not found - /tmp/Package/archives/en.zst (2: No such file or directory)
Get:4 file:/tmp/Package archives/ Translation-en
Ign:4 file:/tmp/Package archives/ Translation-en
Reading package lists... Done
安装net-tools
root@localhost:/tmp# apt-get install net-tools
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:net-tools
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/204 kB of archives.
After this operation, 819 kB of additional disk space will be used.
Get:1 file:/tmp/Package archives/ net-tools 1.60+git20181103.0eebece-1ubuntu5 [204 kB]
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package net-tools.
(Reading database ... 64334 files and directories currently installed.)
Preparing to unpack .../net-tools_1.60+git20181103.0eebece-1ubuntu5_amd64.deb ...
Unpacking net-tools (1.60+git20181103.0eebece-1ubuntu5) ...
Setting up net-tools (1.60+git20181103.0eebece-1ubuntu5) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Scanning processes...
Scanning linux images...Running kernel seems to be up-to-date.No services need to be restarted.No containers need to be restarted.No user sessions are running outdated binaries.No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@localhost:/tmp# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 929/sshd: zjh@pts/0
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 682/systemd-resolve
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 765/sshd: /usr/sbin
tcp6 0 0 ::1:6010 :::* LISTEN 929/sshd: zjh@pts/0
tcp6 0 0 :::22 :::* LISTEN 765/sshd: /usr/sbin
到这里就安装成功了
同时安装多个软件包测试
还是一样的步骤
root@localhost:/opt/Package# apt-get download $(apt-cache depends vim nginx haproxy --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances | grep "^\w" | sort -u)
同时下载 vim nginx haproxy 的软件包以及依赖
生成依赖关系:
root@localhost:/opt/Package# dpkg-scanpackages ./ | gzip > ./archives/Packages.gz
打包整个目录:
root@localhost:/opt/Package# tar -zcvf ../Package.tar.gz ../Package
将压缩包上传到需要下载的服务器上解压
我的路径在/opt/Package
root@localhost:/opt/Package# pwd
/opt/Package
root@localhost:/opt/Package# ls
adduser_3.118ubuntu5_all.deb libgssapi-krb5-2_1.19.2-2ubuntu0.4_amd64.deb libsemanage2_3.3-1build2_amd64.deb
archives libicu70_70.1-2_amd64.deb libsepol2_3.3-1build1_amd64.deb
cdebconf_0.261ubuntu1_amd64.deb libjbig0_2.1-3.1ubuntu0.22.04.1_amd64.deb libslang2_2.3.2-5build4_amd64.deb
coreutils_8.32-4.1ubuntu1.2_amd64.deb libjpeg-turbo8_2.1.2-0ubuntu1_amd64.deb libsodium23_1.0.18-1build2_amd64.deb
debconf_1.5.79ubuntu1_all.deb libjpeg8_8c-2ubuntu10_amd64.deb libsqlite3-0_3.37.2-2ubuntu0.3_amd64.deb
dpkg_1.21.1ubuntu2.3_amd64.deb libk5crypto3_1.19.2-2ubuntu0.4_amd64.deb libssl3_3.0.2-0ubuntu1.18_amd64.deb
fontconfig-config_2.13.1-4.2ubuntu5_all.deb libkeyutils1_1.6.1-2ubuntu3_amd64.deb libstdc++6_12.3.0-1ubuntu1~22.04_amd64.deb
fonts-croscore_20201225-1build1_all.deb libkrb5-3_1.19.2-2ubuntu0.4_amd64.deb libsystemd0_249.11-0ubuntu3.12_amd64.deb
fonts-dejavu-core_2.37-2build1_all.deb libkrb5support0_1.19.2-2ubuntu0.4_amd64.deb libtextwrap1_0.1-15build1_amd64.deb
fonts-freefont-otf_20120503-10build1_all.deb liblua5.3-0_5.3.6-1build1_amd64.deb libtiff5_4.3.0-6ubuntu0.10_amd64.deb
fonts-freefont-ttf_20120503-10build1_all.deb liblz4-1_1.9.3-2build2_amd64.deb libtinfo6_6.3-2ubuntu0.1_amd64.deb
fonts-liberation2_2.1.5-1_all.deb liblzma5_5.2.5-2ubuntu1_amd64.deb libtirpc-common_1.3.2-2ubuntu0.1_all.deb
fonts-liberation_1%3a1.07.4-11_all.deb libmaxminddb0_1.5.2-1build2_amd64.deb libtirpc3_1.3.2-2ubuntu0.1_amd64.deb
fonts-texgyre_20180621-3.1_all.deb libmd0_1.0.4-1build1_amd64.deb libuuid1_2.37.2-4ubuntu3.4_amd64.deb
fonts-urw-base35_20200910-1_all.deb libmnl0_1.0.4-3build2_amd64.deb libwebp7_1.2.2-2ubuntu0.22.04.2_amd64.deb
gcc-12-base_12.3.0-1ubuntu1~22.04_amd64.deb libmpdec3_2.5.1-2build2_amd64.deb libx11-6_2%3a1.7.5-1ubuntu0.3_amd64.deb
haproxy_2.4.24-0ubuntu0.22.04.1_amd64.deb libncursesw6_6.3-2ubuntu0.1_amd64.deb libx11-data_2%3a1.7.5-1ubuntu0.3_all.deb
init-system-helpers_1.62_all.deb libnewt0.52_0.52.21-5ubuntu2_amd64.deb libxau6_1%3a1.0.9-1build5_amd64.deb
install-info_6.8-4build1_amd64.deb libnginx-mod-http-auth-pam_1.18.0-6ubuntu14.5_amd64.deb libxcb1_1.14-3ubuntu3_amd64.deb
iproute2_5.15.0-1ubuntu2_amd64.deb libnginx-mod-http-cache-purge_1.18.0-6ubuntu14.5_amd64.deb libxdmcp6_1%3a1.1.3-0ubuntu5_amd64.deb
libacl1_2.3.1-1_amd64.deb libnginx-mod-http-dav-ext_1.18.0-6ubuntu14.5_amd64.deb libxml2_2.9.13+dfsg-1ubuntu0.4_amd64.deb
libattr1_1%3a2.5.1-1build1_amd64.deb libnginx-mod-http-echo_1.18.0-6ubuntu14.5_amd64.deb libxpm4_1%3a3.5.12-1ubuntu0.22.04.2_amd64.deb
libaudit-common_1%3a3.0.7-1build1_all.deb libnginx-mod-http-fancyindex_1.18.0-6ubuntu14.5_amd64.deb libxslt1.1_1.1.34-4ubuntu0.22.04.1_amd64.deb
libaudit1_1%3a3.0.7-1build1_amd64.deb libnginx-mod-http-geoip2_1.18.0-6ubuntu14.5_amd64.deb libxtables12_1.8.7-1ubuntu5.2_amd64.deb
libbpf0_1%3a0.5.0-1ubuntu22.04.1_amd64.deb libnginx-mod-http-geoip_1.18.0-6ubuntu14.5_amd64.deb libzstd1_1.4.8+dfsg-3build1_amd64.deb
libbrotli1_1.0.9-2build6_amd64.deb libnginx-mod-http-headers-more-filter_1.18.0-6ubuntu14.5_amd64.deb lsb-base_11.1.0ubuntu4_all.deb
libbsd0_0.11.5-1_amd64.deb libnginx-mod-http-image-filter_1.18.0-6ubuntu14.5_amd64.deb mailcap_3.70+nmu1ubuntu1_all.deb
libbz2-1.0_1.0.8-5build1_amd64.deb libnginx-mod-http-perl_1.18.0-6ubuntu14.5_amd64.deb media-types_7.0.0_all.deb
libc6_2.35-0ubuntu3.8_amd64.deb libnginx-mod-http-subs-filter_1.18.0-6ubuntu14.5_amd64.deb mime-support_3.66_all.deb
libcap-ng0_0.7.9-2.2build3_amd64.deb libnginx-mod-http-uploadprogress_1.18.0-6ubuntu14.5_amd64.deb nginx-common_1.18.0-6ubuntu14.5_all.deb
libcap2-bin_1%3a2.44-1ubuntu0.22.04.1_amd64.deb libnginx-mod-http-upstream-fair_1.18.0-6ubuntu14.5_amd64.deb nginx-core_1.18.0-6ubuntu14.5_amd64.deb
libcap2_1%3a2.44-1ubuntu0.22.04.1_amd64.deb libnginx-mod-http-xslt-filter_1.18.0-6ubuntu14.5_amd64.deb nginx-extras_1.18.0-6ubuntu14.5_amd64.deb
libcom-err2_1.46.5-2ubuntu1.2_amd64.deb libnginx-mod-mail_1.18.0-6ubuntu14.5_amd64.deb nginx-full_1.18.0-6ubuntu14.5_amd64.deb
libcrypt1_1%3a4.4.27-1_amd64.deb libnginx-mod-nchan_1.18.0-6ubuntu14.5_amd64.deb nginx-light_1.18.0-6ubuntu14.5_amd64.deb
libdb5.3_5.3.28+dfsg1-0.8ubuntu3_amd64.deb libnginx-mod-stream-geoip2_1.18.0-6ubuntu14.5_amd64.deb nginx_1.18.0-6ubuntu14.5_amd64.deb
libdebian-installer4_0.122ubuntu3_amd64.deb libnginx-mod-stream-geoip_1.18.0-6ubuntu14.5_amd64.deb passwd_1%3a4.8.1-2ubuntu2.2_amd64.deb
libdeflate0_1.10-2_amd64.deb libnginx-mod-stream_1.18.0-6ubuntu14.5_amd64.deb perl-base_5.34.0-3ubuntu1.3_amd64.deb
libelf1_0.186-1build1_amd64.deb libnsl2_1.3.0-2build2_amd64.deb perl-modules-5.34_5.34.0-3ubuntu1.3_all.deb
libexpat1_2.4.7-1ubuntu0.4_amd64.deb libpam-modules-bin_1.4.0-11ubuntu2.4_amd64.deb perl_5.34.0-3ubuntu1.3_amd64.deb
libffi8_3.4.2-4_amd64.deb libpam-modules_1.4.0-11ubuntu2.4_amd64.deb readline-common_8.1.2-1_all.deb
libfontconfig1_2.13.1-4.2ubuntu5_amd64.deb libpam0g_1.4.0-11ubuntu2.4_amd64.deb sensible-utils_0.0.17_all.deb
libfreetype6_2.11.1+dfsg-1ubuntu0.2_amd64.deb libpcre2-8-0_10.39-3ubuntu0.1_amd64.deb tar_1.34+dfsg-1ubuntu0.1.22.04.2_amd64.deb
libgcc-s1_12.3.0-1ubuntu1~22.04_amd64.deb libpcre3_2%3a8.39-13ubuntu0.22.04.1_amd64.deb ttf-bitstream-vera_1.10-8.2_all.deb
libgcrypt20_1.9.4-3ubuntu3_amd64.deb libperl5.34_5.34.0-3ubuntu1.3_amd64.deb ucf_3.0043_all.deb
libgd3_2.3.0-2ubuntu2.3_amd64.deb libpng16-16_1.6.37-3build5_amd64.deb vim-common_2%3a8.2.3995-1ubuntu2.21_all.deb
libgdbm-compat4_1.23-1_amd64.deb libpython3.10-minimal_3.10.12-1~22.04.7_amd64.deb vim-runtime_2%3a8.2.3995-1ubuntu2.21_all.deb
libgdbm6_1.23-1_amd64.deb libpython3.10-stdlib_3.10.12-1~22.04.7_amd64.deb vim_2%3a8.2.3995-1ubuntu2.21_amd64.deb
libgeoip1_1.6.12-8_amd64.deb libpython3.10_3.10.12-1~22.04.7_amd64.deb xxd_2%3a8.2.3995-1ubuntu2.21_amd64.deb
libgmp10_2%3a6.2.1+dfsg-3ubuntu1_amd64.deb libreadline8_8.1.2-1_amd64.deb zlib1g_1%3a1.2.11.dfsg-2ubuntu9.2_amd64.deb
libgpg-error0_1.43-3_amd64.deb libselinux1_3.3-1build2_amd64.deb
libgpm2_1.20.7-10build1_amd64.deb libsemanage-common_3.3-1build2_all.deb
配置本地源:
root@localhost:/opt/Package# echo "deb [trusted=yes] file:///opt/Package archives/" > /etc/apt/sources.list
更新本地源,并安装 vim nginx haproxy软件
root@localhost:/opt/Package# apt-get update
root@localhost:/opt/Package# echo "deb [trusted=yes] file:///opt/Package archives/" > /etc/apt/sources.list
root@localhost:/opt/Package# apt-get install vim nginx haproxy -y
查看已安装的软件
root@localhost:/opt/Package# dpkg -l | grep -E 'nginx|vim|haproxy'
ii haproxy 2.4.24-0ubuntu0.22.04.1 amd64 fast and reliable load balancing reverse proxy
ii libnginx-mod-http-geoip2 1.18.0-6ubuntu14.5 amd64 GeoIP2 HTTP module for Nginx
ii libnginx-mod-http-image-filter 1.18.0-6ubuntu14.5 amd64 HTTP image filter module for Nginx
ii libnginx-mod-http-xslt-filter 1.18.0-6ubuntu14.5 amd64 XSLT Transformation module for Nginx
ii libnginx-mod-mail 1.18.0-6ubuntu14.5 amd64 Mail module for Nginx
ii libnginx-mod-stream 1.18.0-6ubuntu14.5 amd64 Stream module for Nginx
ii libnginx-mod-stream-geoip2 1.18.0-6ubuntu14.5 amd64 GeoIP2 Stream module for Nginx
ii nginx 1.18.0-6ubuntu14.5 amd64 small, powerful, scalable web/proxy server
ii nginx-common 1.18.0-6ubuntu14.5 all small, powerful, scalable web/proxy server - common files
ii nginx-core 1.18.0-6ubuntu14.5 amd64 nginx web/proxy server (standard version)
ii vim 2:8.2.3995-1ubuntu2.21 amd64 Vi IMproved - enhanced vi editor
ii vim-common 2:8.2.3995-1ubuntu2.21 all Vi IMproved - Common files
ii vim-runtime 2:8.2.3995-1ubuntu2.21 all Vi IMproved - Runtime files
相关文章:
Ubuntu 22.04 离线安装软件包
在使用最小化安装时,默认是不带有vim 或者nano编辑器的,如果你的环境不能上外网就需要离线安装。 首先你需要先找一台可以上网的ubuntu系统(虚拟机搭建也行),下载所有的依赖包,然后上传到需要安装的服务器…...
网络安全——浅谈HTTP协议
HTTP请求 HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。 HTTP请求由状态行、请求头、请求正文三部分组成: 状态行:包括请求方式Method、资源路径URL、协议版本Version;请求头:包括一些访问的域名、…...
鸿蒙开发-在ArkTS中制作音乐播放器
音频播放功能实现 导入音频播放相关模块 首先需要从ohos.multimedia.audio模块中导入必要的类和接口用于音频播放。例如: import audio from ohos.multimedia.audio;创建音频播放器实例并设置播放源 可以通过audio.createAudioPlayer()方法创建一个音频播放器实…...
Rust学习笔记_03——元组
Rust学习笔记_01——基础 Rust学习笔记_02——数组 Rust学习笔记_03——元组 文章目录 Rust学习笔记_03——元组元组1. 定义元祖2. 访问元组中的元素3. 元组的解构4. 元组不可遍历和切片5. 元组作为函数返回值6. 单元元组7. 代码演示 元组 在Rust编程语言中,元组&a…...
LabVIEW内燃机气道试验台测控系统
基于LabVIEW软件开发的内燃机气道试验台测控系统主要应用于内燃机气道的性能测试和数据分析,通过高精度的测控技术,有效提升内燃机的测试精度和数据处理能力。 项目背景 随着内燃机技术的发展,对其气道性能的精准测量需求日益增加。该系统通…...
git 本地同步远端分支
一、关联远程仓库 本地仓库关联远端仓库 git remote add origin https://github.com/user/repository.git 二、获取远程分支信息 获取远程仓库的最新分支信息 git fetch origin 三、创建或切换到本地分支以跟踪远程分支 1. 创建分支 创建分支并关联到远端分支 git bra…...
用Pycharm安装manim
由于版本和工具的差异,manim的安装方式不尽相同。本文用Pycharm来安装manim. 一、准备工作:安装相应版本的python、pycharm和ffmpeg. 此处提供一种安装ffmpeg的方式 下载地址:FFmpeg 下载后,解压到指定目录。 配置环境变量&am…...
#渗透测试#红蓝攻防#HW#漏洞挖掘#漏洞复现01-笑脸漏洞(vsftpd)
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
vue3项目中使用星火API
在node环境epxress中使用讯飞ai接口进行二次封装,通过ai对话回复提取,获得ai提取的文章摘要 本文章只是简单使用,更复杂功能比如调用星火API制作对话机器人可以查看文档,对于初次使用星火AI接口或许有帮助 讯飞星火大模型API-大模…...
digit_eye开发记录(3): C语言读取MNIST数据集
在前两篇,我们解读了 MNIST 数据集的 IDX 文件格式,并分别用 C 和 Python 做了 读取 MNIST 数据集的实现。 基于 C 的代码稍长,基于 Python 的代码则明显更短,然而它们的共同特点是:依赖了外部库: 基于 C …...
【linux】(23)对象存储服务-MinIo
MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API。 Docker安装MinIo 前提条件 确保您的系统已经安装了 Docker。如果还没有安装 Docker,可以参考 Docker 官方文档进行安装。 1. 拉取 MinIO Docker 镜像 首先,从 Docker Hub 拉取 Mi…...
如何使用Python解析从淘宝API接口获取到的JSON数据?
基本的 JSON 解析 当从淘宝 API 接口获取到数据后(假设数据存储在变量response_data中),首先要判断数据类型是否为 JSON。如果是,就可以使用 Python 内置的json模块进行解析。示例代码如下: import json # 假设respon…...
C# 2024年Visual Studio实用插件集合
在2024年,Visual Studio作为.NET开发者的首选IDE,其插件生态不断壮大,为开发者提供了更高效、便捷的开发体验。本文将介绍一些实用的Visual Studio插件,特别是针对C#开发者,帮助提升开发效率和代码质量。 1. GitHub C…...
Matlab Simulink HDL Coder开发流程(一)— 创建HDL兼容的Simulink模型
创建HDL兼容的Simulink模型 一、使用Balnk DUT模板二、从HDL Coder库中选择模块三、为DUT开发算法/功能四、为设计创建Testbench五、仿真验证设计功能六、Simulink模型生成HDL代码 这个例子说明了如何创建一个用于生成HDL代码的Simulink模型。要创建兼容HDL代码生成的MATLAB算法…...
详解Qt pdf 之QPdfSelection 选择文本类
文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类,用于表示在 PDF 文档中被选中的…...
docker中redis查看key、删除key
查看docker启动的进程 docker ps这个命令会列出所有正在运行的容器,包括容器的 ID、镜像名称、创建时间、状态、端口映射和名称 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1a2b3c4d5e6…...
【MySQL — 数据库基础】MySQL的安装与配置 & 数据库简单介绍
数据库基础 本节目标 掌握关系型数据库,数据库的作用掌握在Windows和Linux系统下安装MySQL数据库了解客户端工具的基本使用和SQL分类了解MySQL架构和存储引擎 1. 数据库的安装与配置 1.1 确认MYSQL版本 处理无法在 cmd 中使用 mysql 命令的情况&a…...
ehr系统建设方案,人力资源功能模块主要分为哪些,hrm平台实际案例源码,springboot人力资源系统,vue,JAVA语言hr系统(源码)
eHR人力资源管理系统:功能强大的人力资源管理工具 随着企业规模的不断扩大和业务需求的多样化,传统的人力资源管理模式已无法满足现代企业的需求。eHR人力资源管理系统作为一种先进的管理工具,能够为企业提供高效、准确、实时的人力资源管理。…...
【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞
1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库,攻击者就可以利用此漏洞来劫持用户浏览器,进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…...
flink学习(12)——checkPoint
如何设置checkPoint package com.bigdata.day06;/** * 1、需要三句话 * 2、设置完checkPoint后若程序出现异常,会一直重启 * 3、此时是自动进行checkPoint保存 * 4、注意:此时如果有checkpoint ,是不会出现异常的,需要将checkpoint的代码关…...
【iOS】《Effective Objective-C 2.0》阅读笔记(一)
文章目录 前言了解OC语言的起源在类的头文件中尽量少引入其他头文件多用字面量语法,少用与之等价的方法字面量数值字面量数组字面量字典 多用类型常量,少用#define预处理指令用枚举法表示状态、选项、状态码 总结 前言 最近开始阅读一些iOS开发的相关书籍…...
LVS 负载均衡面试题及参考答案
目录 什么是 LVS 负载均衡?它的主要作用是什么? 为什么要使用 LVS 进行负载均衡? LVS 有哪些组成部分? 简述 LVS 的架构。 LVS 中有哪两种典型的架构?请简要说明它们的特点。 LVS 的工作原理是怎样的?简述 LVS 的工作原理。 解释 LVS 中的虚拟服务器(VS)概念。 …...
北京科博会 天云数据CEO雷涛谈人工智能技术服务数字资产建设
7月13日,第二十六届中国北京国际科技产业博览会(简称北京科博会)在国家会议中心开幕。本届科博会年度主题为“实施创新驱动发展战略 增强高质量发展动能”。会上,天云数据CEO雷涛发表《人工智能技术服务数字资产建设》主题演讲。 近期非常引人注目的事件…...
【Python运维】容器管理新手入门:使用Python的docker-py库实现Docker容器管理与监控
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着容器技术的广泛应用,Docker已经成为开发和运维中的标准工具之一。使用Python语言管理Docker容器,不仅可以自动化繁琐的容器操作,还能…...
小程序解决大问题-物流系统磁盘爆满问题处理
晚上七点,煤矿调运的物流调度系统突然磁盘报名导致服务崩溃。系统用的是微服务,没有详细操作说明,也不敢动,运煤车辆排起了长队,只能联系厂家处理。好在经过30多分钟的处理,服务终于启动,系统运…...
计算机网络基础篇
TCP/IP网络模型 TCP/IP网络模型的作用就是给数据包进行层层封装,帮助数据包能够正确的找到对应的设备接受数据。 一个URL所经历的全部过程 URL所经历的全部过程: HTTP -> DNS ->协议栈-TCP->IP->MAC->网卡->交换机->路由器->服…...
32 从前序与中序遍历序列构造二叉树
32 从前序与中序遍历序列构造二叉树 32.1 从前序与中序遍历序列构造二叉树解决方案 class Solution { public:TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {return buildTreeHelper(preorder, inorder, 0, 0, inorder.size() - 1)…...
D82【python 接口自动化学习】- pytest基础用法
day82 pytest初体验 学习日期:20241128 学习目标:pytest基础用法 -- pytest初体验 学习笔记: 文件命名规范 py测试文件必须以test_开头(或_test结尾)测试方法必须以test开头测试类必须以Test开头,并且…...
在开发环境中,前端(手机端),后端(电脑端),那么应该如何设置iisExpress
首先,要想手机端应用能成功请求后端,两个设备至少需在同一个局域网内,且IP地址互通; 因为ajax是http(s)://IP地址端口号的方式请求,但是iisExpress默认是localhost如何解决,并没有IP地址,所以手…...
磁盘/系统空间占满导致黑屏死机无法开机的解决办法
文章目录 起因具体操作1.重启虚拟机,一直按CtrlShitf进入GRUP界面2.选“Ubuntu高级选项”并回车选择第二个,recovery mode![请添加图片描述](https://i-blog.csdnimg.cn/direct/201f9784c203406d802d24b39dc2d4a3.png)3.4.命令查看磁盘情况5.查找和删除文…...
兰州网站seo收费标准/如何获取网站的seo
【导语】无忧考网高考频道根据广东省教育考试院公布的《广东省2021年普通高考英语听说考试成绩发布有关事宜的通知》了解到,广东湛江2021年高考英语听说考试成绩查询入口已于4月28日上午11:00起开通,考生可通过以下方式查询成绩。具体如下:一…...
wordpress 模板路径/网络营销发展方案策划书
uni-app是一款强大的前端框架,它除了pc端其他都可以实现,打包原生app。手机h5页面,微信小程序, 但是有一个问题就是本生的app和微信小程序是有一定的区别的,因为app有标题栏,返回键,而微信小程…...
营销型网站建设策划书/优化人员配置
Digispark(ATTINY85) 微型开发板驱动安装与开发环境配置教程 文章目录Digispark(ATTINY85) 微型开发板驱动安装与开发环境配置教程参考链接:前言:配置步骤:参考链接: Digispark(ATTINY85) 微型开发板驱动安装与开发环境配置教程 …...
网站举报网/电话营销外包公司
本文用于记录一个人肉运维的奋起之路系统层面系统组件:1、nginx(单点或负载)2、memcached(只能单点)3、rabbitmq(单点)4、php5、mysql(主从)6、mongodb(主从&…...
项目建设管理 公司 网站/seo搜索引擎优化平台
2017-03-02在南方铝业(中国)有限公司精整车间1#纵剪机列上,开卷张力是由气动抱闸控制的,通过压在开卷机铝卷材上的随动小压轮随着卷径的减小而下降,从而控制刹车气压使摩擦转矩正比于卷径,保持张力恒定。机列线速度的调…...
哪里有人收费做网站/让顾客心动的句子
到这里、 我们封装了XMPP 登录、 注册、 好友列表获取、 好友状态获取、 信息的收发、 应该去测试一下了 、 我这里把最简单的测试办法扔到这里、 大家可以看一下 。 1 //2 // ADViewController.m3 // ADXMPP_BE4 //5 // Created by Dylan on 14-10-8.6 // Copyright (c) 2…...