Ⅰ targetscan怎么下载图
方法/步骤
1.先确认自己的浏览器是否支持tampermonkey,绝大部分支持插件安装的应该都支持,推荐Chrome,在应用商店下载。无法科学上网的,也可以使用其它浏览器或者离线安装。
2.下载安装好以后,安装以下脚本。可以在https://greasyfork.org/zh-CN 网站搜索“canvas 抓取”,
3.安装完以后,在需要下载canvas或svg图片的页面刷新一下,在右下方就能看见一个“自动获取图片”的按钮
4.点击它开始扫描页面包含的所有图片,然后点击批量下载,当然也可以单独下载指定图片。
5.批量下载后即可解压出来,如果图片较多,压缩时间可能稍微长一点,大部分情况都很快。
Ⅱ fork相机怎么去水印 fork叉子相机保存图片去水印教程
使用fork叉子相机p图后右上角会有fork自带水印让人神烦,fork相机怎么去水印?下面就一起来参考一下fork叉子相机保存图片去水印教程。
fork相机怎么去水印
fork叉子相机保存图片去水印教程
fork叉子相机在p图后保存时是无法去水印的,因为这毕竟是自己产品的一种推广,其实去水印的方法也有,也并没有多麻烦,使用手机自带截图功能或者用第三方图片应用截图将水印截去都行。再就是使用手机加马赛克功能将水印朦胧p去也是不错的选择,这里推荐美图秀秀手机版。
按照上面的方法就能成功将fork叉子相机自带水印去掉了,非常方便哦。
fork相机怎么去水印?fork叉子相机保存图片去水印教程就为大家介绍到这里,更多软件教程欢迎关注。
Ⅲ fork相机怎么去水印 fork叉子相机保存图片去水印教程
使用fork叉子相机p图后右上角会有fork自带水印让人神烦,fork相机怎么去水印?下面就一起来参考一下fork叉子相机保存图片去水印教程。
fork相机怎么去水印
fork叉子相机保存图片去水印教程
fork叉子相机在p图后保存时是无法去水印的,因为这毕竟是自己产品的一种推广,其实去水印的方法也有,也并没有多麻烦,使用手机自带截图功能或者用第三方图片应用截图将水印截去都行。再就是使用手机加马赛克功能将水印朦胧p去也是不错的选择,这里推荐美图秀秀手机版。
按照上面的方法就能成功将fork叉子相机自带水印去掉了,非常方便哦。
fork相机怎么去水印?fork叉子相机保存图片去水印教程就为大家介绍到这里,更多软件教程欢迎关注。
Ⅳ 百度网盘秒传链接怎么用
怎么用网络网盘下载磁力链接教程,操作方法如下。
1、首先在电脑中打开网络网盘,如下图所示。
Ⅳ 手机百度秒传链接怎么用
网络搜索【暴力猴】,点击【推荐安装】,双击【CRX】格式的文件,点击【添加】,网络搜索【Greasy Fork】,搜索【网络秒传】,点击【安装此脚本】,打开网络网盘,【脚本自动运行】,出现【秒传链接】按键即可。
电脑:win10
工具:网络网盘
插件:暴力猴
手机网络秒传链接使用方法步骤如下:
1、【网络】输入【暴力猴】。
Ⅵ fork系统调用的执行过程是怎样
(代码验证) fork确实创建了一个子进程并完全复制父进程,但是子进程是从fork后面那个指令开始执行的。
对于原因也很合逻辑,如果子进程也从main开头到尾执行所有指令,那它执行到fork指令时也必定会创建一个子子进程,如此下去这个小小的程序就可以创建无数多个进程可以把你的电脑搞瘫痪,所以fork作者肯定不会傻到这种程度fork和线程,进程的理解2011-10-11 10:09 本文分为三部分:1. 什么是fork?2. fork用途?3. fork怎么工作? 1. 什么是fork?Fork源于OS中多线程任务的需要。在传统的Unix环境下,有两个基本的操作用于创建和修改进程:函数fork( )用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝;函数族exec( )用来启动另外的进程以取代当前运行的进程。下面说一下进程和线程。进程的简单理解就是:一个进程表示的就是一个可执行程序的一次执行过程中的一个状态。一个进程,主要包含三个元素:一个可以执行的程序; --- 代码段
和该进程相关联的全部数据(包括变量,内存空间,缓冲区等等); --- 数据段
程序的执行上下文(execution context)。 --- 堆栈段 "代码段",顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用相同的代码段。"堆栈段"存放的就是子程序的返回地址、子程序的参数以及程序的局部变量。而数据段则存放程序的全局变量,常数以及动态数据分配的数据空间(比如用malloc之类的函数取得的空间)。 一般的CPU都有上述三种段寄存器,以方便操作系统的运行。这三个部分也是构成一个完整的执行序列的必要的部分。系统如果同时运行数个相同的程序,它们之间就不能使用同一个堆栈段和数据段。 操作系统对进程管理,最典型的是通过进程表完成的。进程表里再通过一个称为“程序计数器(program counter, pc)”的寄存器来完成“上下文的切换”。(实际的上下文交换需要涉及到更多的数据,和fork无关,不再多说,PC主要用于指出程序当前已经执行到哪里,是进程上下文的重要内容,换出CPU的进程要保存这个寄存器的值,换入CPU的进程,也要根据进程表中保存的本进程执行上下文信息,更新这个寄存器)。 进程表中的每一个表项,记录的是当前操作系统中一个进程的情况。对于单 CPU的情况而言,每一特定时刻只有一个进程占用 CPU,但是系统中可能同时存在多个活动的(等待执行或继续执行的)进程。
PC用于指出当前占用 CPU的进程要执行的下一条指令的位置。 当分给某个进程的 CPU时间已经用完,操作系统将该进程相关的寄存器的值,保存到该进程在进程表中对应的表项里面;把将要接替这个进程占用 CPU的那个进程的上下文,从进程表中读出,并更新相应的寄存器(这个过程称为“上下文交换(process context switch)” 下面继续说fork了。当程序执行到下面的语句:pid=fork(); 操作系统创建一个新的进程(子进程),并且在进程表中相应为它建立一个新的表项。新进程和原有进程的可执行程序是同一个程序;上下文和数据,绝大部分就是原进程(父进程)的拷贝,但它们是两个相互独立的进程!此时程序寄存器pc,在父、子进程的上下文中都声称,这个进程目前执行到fork调用即将返回(此时子进程不占有CPU,子进程的pc不是真正保存在寄存器中,而是作为进程上下文保存在进程表中的对应表项内)。问题是怎么返回。它们的返回顺序是不确定的,取决于OS内的调度。如果想明确它们的执行顺序,就得实现“同步”,或者是使用vfork()。这里假设父进程继续执行,操作系统对fork的实现,使这个调用在父进程中返回刚刚创建的子进程的pid(一个正整数),所以下面的if语句中pid<0, pid==0的两个分支都不会执行。所以一般执行fork后都会有两个输出。 2. Fork用途归结起来有两个:第一, 一个进程希望复制自身,从而父子进程能执行不同代码段。第二, 进程想执行另外一个程序归结起来说就是实现多线程。C语言多线程实现需要自己控制来实现,这个比JAVA要复杂。 3. Fork怎么工作?先看一个例子:#include <unistd.h>;#include <sys/types.h>;int main (){ pid_t pid; pid=fork(); // 1)从这里开始程序分岔,父子进程都从这一句开始执行一次 if (pid < 0) printf("error!"); else if (pid == 0) printf("child process, process id is %dn", getpid()); else // pid > 0 printf("parent process, process id is %dn",getpid());
return 0;}结果:[root@localhost yezi]# ./a.out
parent process, process id is 4285 对于上面程序段有以下几个关键点: (1)返回值的问题:正确返回:父进程中返回子进程的pid,因此> 0;子进程返回0
错误返回:-1 子进程是父进程的一个拷贝。即,子进程从父进程得到了数据段和堆栈段的拷贝,这些需要分配新的内存;而对于只读的代码段,通常使用共享内存的方式访问。父进程与子进程的不同之处在于:fork的返回值不同——父进程中的返回值为子进程的进程号,而子进程为0。只有父进程执行的getpid()才是他自己的进程号。对子进程来说,fork返回给它0,但它的pid绝对不会是0;之所以fork返回0给它,是因为它随时可以调用getpid()来获取自己的pid; (2) fork返回后,子进程和父进程都从调用fork函数的下一条语句开始执行。这也是程序中会打印两个结果的原因。 fork之后,操作系统会复制一个与父进程完全相同的子进程。不过这在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,但只有一点不同,如果fork成功,子进程中fork的返回值是0,父进程中fork的返回值是子进程的进程号,如果fork不成功,父进程会返回错误。2个进程一直同时运行,而且步调一致,在fork之后,他们分别作不同的工作,也就是分岔了。这也是fork为什么叫fork的原因。至于哪一个先运行,与操作系统的调度算法有关,而且这个问题在实际应用中并不重要,如果需要父子进程协同,可以通过原语的办法实现同步来加以解决。 为了加深理解,看下面例子:#include <stdio.h>
#include "../include/apue.h"
#include <unistd.h>int main(){pid_t a_pid, b_pid;
if((a_pid=fork())<0) // // 一定要有红色括号!! 没有的话就a_pid永远等于0,则永远不会执行父进程!!!
printf("error!");
else if(a_pid==0){printf("the first child's pid=%d\n",getpid());
printf("b\n");}else{printf("the parent's pid=%d\n",getpid());
printf("a\n");
} if((b_pid=fork())<0)
printf("error!");
else if(b_pid==0){printf("c\n");}else{printf("e\n");}return 0;} 输出的结果: (1)the first child's pid=12623bcethe parent's pid=12622ace (2)the first child's pid=12638bthe parent's pid=12637acece (3)the first child's pid=12642bthe parent's pid=12641accee 很奇妙的结果。不过理解了“子进程和父进程都从调用fork函数的下一条语句开始执行”了也不奇怪了。同是这里引入理解fork的第三点 (3) fork函数不同于其他函数,在于它可能会有两个或是多个返回值,而且是同时返回两个值。继续分析上面的例子。 理解上例的关键在于fork()的返回点在哪里。Fork()同时返回两个值。其中pid=0的这个返回值用来执行子进程的代码,而大于0的一个返回值为父进程的代码块。第一次fork调用的时候生叉分为两个进程,假设为a父进程和b子进程。他们分别各自在第二次fork调用之前打印了b和a各一次;在第一次叉分的这两个进程中都含有 if((b_pid=fork())<0) // 一定要有红色括号!! 没有的话就b_pid永远等于0{printf("error!");}else if(b_pid==0)
printf("c/n");elseprintf("e/n");
这段代码。很明显,a父进程和b子进程在这段代码中又各自独立的被叉分为两个进程。这两个进程每个进程又都打印了e,c各一次。到此,在程序中总共打印两次c,e和一次a,b。总共6个字母。
注:在第一次叉分为两个进程的时候父子进程含有完全相同的代码(第二次仍然相同),只是因为在父子进程中返回的PID的值不同,父进程代码中的PID的值大于0,子进程代码中的值等于0,从而通过if这样的分支选择语句来执行各自的任务。 当然在使用fork中还有很多细节,比如输出时,对缓冲区的不同处理会使父子进程执行过程中输出不同,以及fork后,子进程的exec和exit的一些实现细节。以后再说。
Ⅶ 秒传链接怎么用
1、【网络】输入【暴力猴】。
Ⅷ 油猴怎么用
直接在应用商店内下载油猴,打开Chrome浏览器扩展程序页面,拖拽到页面即可完成安装。打开油猴设置初学者或高级配置模式。打开网站点击地址栏右侧的油猴图标可以看到已经成功启用。
是Mozilla Firefox的一个附加组件。它让用户安装一些脚本使大部分HTML为主的网页于用户端直接改变得更方便易用。随着Greasemonkey脚本常驻于浏览器,每次随着目的网页打开而自动做修改,使得运行脚本的用户印象深刻地享受其固定便利性。
Greasemonkey可替网页加入些新功能、修正网页错误、组合来自不同网页的数据、或者数繁不及备载的其他功能。写得好的Greasemonkey脚本甚至可让其输出与被修改的页面集成得天衣无缝,像是原本网页里的一部分。
相关信息
大部分Greasemonkey使用者脚本都是自行撰写,使用对某网站专用的JavaScript代码,透过文档对象模型(DOM)接口对网页内容做操作。维护了个 Greasemonkey 数据库。该数据库描述哪个网址网页对应到哪个脚本。
当使用者加载匹配的网页,Greasemonkey便呼叫相关的脚本,而该脚本便为该页加入输出结果、删除该页的部分、或者移动碍眼的部分。Greasemonkey脚本亦能透过非网域绑定的XMLHTTP要求来查询外部HTTP资源。
Ⅸ scoop install dark安装失败
1 概述
作为一名使用 win10 的开发者,搭建开发环境往往是一件比较痛苦的事,需要从网上下载各种软件,在电脑上配置不同软件运行环境,对软件进行各种设置,不仅耗时,而且容易出现各种问题。搭建的环境还会存在下面一些问题:
安装大量程序造成路径污染。安装和卸载比较麻烦。开发环境不能迁移,重装系统或者换电脑需要重新搭建开发环境。软件版本不好控制。为了解决上面这些问题,我们可以使用 WSL+Docker+Scoop 搭建开发环境,取代通过图形界面安装软件和 VMware 安装 Linux 环境的传统方式。
WSL 是适用于 Linux 的 Windows 子系统, 可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器或 Windows 机器上。
Scoop 是 Windows 的命令行安装程序,可以让我们从命令行以最小的安装量安装程序, 它消除了安装界面和安装程序造成的路径污染,它安装和卸载软件只需一行命令就可以完成,它还可以随意切换软件的版本。
一个完整的开发环境组成:首先使用 WSL 搭建一个 Linux 环境,然后在 Linux 环境里安装 Docker 应用,使用 Docker 来安装一些常用软件,比如数据库、web 环境等,Scoop 则是在本机上安装一些开发用到的软件,比如 jdk、maven、idea 等。WSL 和 Scoop 都是比较容易备份和还原的,这两个搭建好了,我们利用备份还原可以快速在另一台机器上搭建同样的一套环境,下面是搭建环境的具体流程。
2 WSL
2.1 WSL 安装
使用 WINDOWS 键 + R,输入 winver,检查 win10 版本,确保内部版本号是 18362.1049 以上,否则更新 win10 到最新版本。
图片
2. 以管理员身份打开 PowerShell 并运行下面命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
图片
3. 重新启动计算机。
4. 下载 Linux内核更新包[1],然后安装。
5. 将 wsl2 设置为默认版本, 以管理员身份打开 PowerShell 并运行下面命令:
wsl --set-default-version 2
图片
6. 安装 Ubuntu 20.04 LTS, 打开 Microsoft Store[2],搜索 Ubuntu 20.04 LTS[3] 安装, 安装完成后打开 Ubuntu 20.04 LTS, 等候几分钟会提示设置用户名和密码,如果不设置用户名和密码直接关闭窗口则默认以 root 登录,这里我们直接关闭窗口,不设置用户名和密码。
图片
7. 然后重新打开 Ubuntu 20.04 LTS 就会进入 Ubuntu 20.04 LTS了,我们也可以在 powershell 使用 wsl 这个命令进入 Ubuntu 20.04 LTS。
2.2 WSL 配置
WSL 每次启动后,windows 都会给它分配一个随机的 IP 地址,这样是不利于我们访问 docker 里的服务的,为了解决这个问题,我们可以创建一个脚本文件 wsl2-ip.bat来给 wsl 分配一个固定的 IP,在每次启动 wsl 后用管理员权限运行这个脚本,文件内容如下:
@echo off
setlocal enabledelayedexpansion
:: set wsl2 ip
wsl -u root ip addr | findstr "192.168.169.2" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
wsl -d Ubuntu-20.04 -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
echo set wsl ip success: 192.168.169.2
)
:: set windows ip
ipconfig | findstr "192.168.169.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
echo set windows ip success: 192.168.169.1
)
pause
其中 192.168.169.2 表示 Linux 的 IP 地址, 192.168.169.1 表示主机的 IP 地址。
有时会遇到 Ubuntu 20.04 LTS 无法连接网络,这个非常重要,我们可以运行下面命令解决:
sed -i '4d' /etc/resolv.conf
sed -i '3a\nameserver 8.8.8.8' /etc/resolv.conf
sed -i '4a\nameserver 114.114.114.114' /etc/resolv.conf
2.3 Ubuntu 配置
2.3.1 替换镜像源
1. 备份 sources.list 文件,运行下面命令:
mv /etc/apt/sources.list /etc/apt/sources.list.bak
2. 创建 source.list 文件,运行下面命令:vim /etc/apt/sources.list
3. 然后在文件里添加下面内容,下面源任选其一即可。
# 清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.e.cn/ubuntu/ focal-proposed main restricted universe multiverse
# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 中科大源
deb https://mirrors.ustc.e.cn/ubuntu/ focal main restricted universe multiverse
#deb-src https://mirrors.ustc.e.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.e.cn/ubuntu/ focal-updates main restricted universe multiverse
#deb-src https://mirrors.ustc.e.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.e.cn/ubuntu/ focal-backports main restricted universe multiverse
#deb-src https://mirrors.ustc.e.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.e.cn/ubuntu/ focal-security main restricted universe multiverse
#deb-src https://mirrors.ustc.e.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.e.cn/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src https://mirrors.ustc.e.cn/ubuntu/ focal-proposed main restricted universe multiverse
#网易163源
deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse
4. 进行更新,运行下面命令:
apt update
apt upgrade -y
2.3.2 开启 systemctl
安装 daemonize 和fontconfig 软件,运行下面命令:apt install -y fontconfig daemonize
2. 运行 vim /etc/profile 命令,在末尾添加下面内容:
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi
3. 运行 vim /etc/sudoers 命令,在末尾添加下面内容:
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]*
4. 刷新 profile 文件,运行下面命令:
source /etc/profile
2.3.2 开启 ssh
设置 root 账号的密码,用作后续登陆使用,运行下面命令:passwd root
图片
2. 备份原始的 sshd_config,运行下面命令:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
3. 修改 sshd_config 文件,运行下面命令:
sed -i '15c Port 22' /etc/ssh/sshd_config
sed -i '17c ListenAddress 0.0.0.0' /etc/ssh/sshd_config
sed -i '34c PermitRootLogin yes' /etc/ssh/sshd_config
sed -i '58c PasswordAuthentication yes' /etc/ssh/sshd_config
4. 重启 sshd,运行下面命令
systemctl restart sshd
2.4 Docker 安装与配置
官方和阿里的源选择其一,建议使用阿里源,速度快。
2.4.1 官方安装
1. 卸载旧版本,运行下面命令:
apt-get remove docker docker-engine docker.io containerd runc
2. 更新 apt 软件包索引并安装软件包以允许 apt 通过 HTTPS 使用存储库,运行下面命令:
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
3. 添加 Docker 的官方 GPG 密钥,运行下面命令:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. 设置稳定的存储库,运行下面命令:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
5. 安装最新版本的 Docker Engine 和容器,运行下面命令:
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io
2.4.2 阿里源安装
卸载旧版本,运行下面命令:apt-get remove docker docker-engine docker.io containerd runc
2. 更新 apt 软件包索引并安装软件包以允许 apt 通过 HTTPS 使用存储库,运行下面命令:
apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
3. 添加 Docker 的阿里 GPG 密钥,运行下面命令:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
4. 设置稳定的存储库,运行下面命令:
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
5. 安装最新版本的 Docker Engine 和容器,运行下面命令:
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
apt-mark hold docker-ce docker-ce-cli containerd.io
2.4.3 配置镜像加速
创建 /etc/docker/daemon.json 文件,并填写以下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.e.cn/"]
}
3 Scoop
3.1 Scoop 安装
1. 以管理员权限打开 PowerShell 。
2. 自定义用户软件和全局软件安装位置,运行下面命令:
$env:SCOOP='D:\Softwares\Scoop\LocalApps'
[Environment]::SetEnvironmentVariable('SCOOP', $env:SCOOP, 'User')
$env:SCOOP_GLOBAL='D:\Softwares\Scoop\GlobalApps'
[Environment]::SetEnvironmentVariable('SCOOP_GLOBAL', $env:SCOOP_GLOBAL, 'Machine')
图片
3. 配置安全策略以及安装 Scoop,运行下面命令:
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
图片
3.2 安装失败解决方案如果发生下面错误,这是因为网络原因无法访问 GitHub。
图片
2. 访问 IP地址查询网站[4],输入raw.githubusercontent.com域名,查询对应的 IP 地址。
图片
3. 配置 C:\Windows\System32\drivers\etc\hosts文件,在修改前赋予 hosts 文件读写权限。
图片
图片
图片
4. 修改 host 文件内容如下,第一列是查询出来的ip地址,第二列是其对应的域名,中间有个空格。
图片
5. 保存后重新运行安装命令。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
3.3 Scoop 配置
安装 Scoop 运行所需要的基础软件:scoop install sudo
sudo scoop install 7zip git innounp dark -g
图片
2. 运行下面命令,检查Scoop还存在的问题,输入提示运行的命令,来解决存在的问题,如果你使用的安装路径不是我的路径,请修改命令中的软件安装位置:
scoop checkup
Add-MpPreference -ExclusionPath 'D:\Softwares\Scoop\LocalApps'
Add-MpPreference -ExclusionPath 'D:\Softwares\Scoop\GlobalApps'
Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1
图片
3. 配置软件仓库,官方软件仓库目前收录的软件很少,不足以支持我们的使用,添加下面的软件仓库,能让我们安装更多的软件:
scoop bucket add extras
scoop bucket add versions
scoop bucket add nightlies
scoop bucket add nirsoft
scoop bucket add php
scoop bucket add nerd-fonts
scoop bucket add nonportable
scoop bucket add java
scoop bucket add games
scoop bucket add jetbrains
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop bucket add Ash258 https://github.com/Ash258/Scoop-Ash258.git
scoop bucket add pleiades https://github.com/jfut/scoop-pleiades.git
scoop bucket add Scoop-Apps https://github.com/ACooper81/scoop-apps
scoop bucket add scoop-zapps https://github.com/kkzzhou/scoop-zapps
scoop bucket add lemon https://github.com/hoilc/scoop-lemon
scoop bucket add raresoft https://github.com/L-Trump/scoop-raresoft
图片
4. 如果软件仓库添加失败,还是因为网络的原因,大家可以把这些仓库 fork 到自己的码云账户下,然后再添加。
5. 使用 aria2 来加速软件的安装:
scoop install aria2 -g
scoop config aria2-max-connection-per-server 16
scoop config aria2-split 16
scoop config aria2-min-split-size 1M
如果想关闭 aria2,可以运行 scoop config aria2-enabled false命令。
3.4 Scoop 常用命令
# 搜索app
scoop search <应用名>
# 检查哪些软件有更新
scoop status
# 版本切换
scoop reset <应用名>@<版本切换>
# 禁止某app更新
scoop hold <应用名>
# 更新所有app
scoop update *
# 安装app
scoop install <应用名>
#全局安装app
scoop install -g <应用名>
#安装extras软件源下的app
scoop install extras/<应用名>
# 卸载app
scoop uninstall <应用名>
# 卸载全局安装的app
scoop uninstall -g <应用名>
4 总结
开发环境软件的安装与配置到这里就完成了,利用上面这些软件,你可以快速搭建 Java、Go、C++、Python等开发环境。
参考资料
[1]Linux内核更新包: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
[2]Microsoft Store: https://aka.ms/wslstore
[3]Ubuntu 20.04 LTS: https://www.microsoft.com/store/apps/9n6svws3rx71
[4]IP地址查询网站: https://www.ipaddress.com/