Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

How to Scoop

By: Erease
5 September 2019 at 08:00

Scoop作为Windows下的命令行包管理工具,在之前的文章里用到的非常多,最近又看了下Scoop的说明,这里简要的介绍下更新后的特性,附带一些常用的命令行工具

Github:lukesampson/scoop的README对Scoop有了大概的介绍,我初次接触到是读到了 再谈谈 Scoop 这个 Windows 下的软件包管理器

缘由

  • 安装常见命令行工具
  • 自带配置环境变量,方便配置简易的开发环境
  • 有脚本自动化执行的优势,方便快速部署(比如重装系统的时候)

需要注意的是如果Scoop安装的软件和Powershell的命令或者别名重合,Powershell的命令依然被优先使用

安装

可以使用管理员模式打开powershell运行

Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
# or shorter
iwr -useb get.scoop.sh | iex

多线程下载支持

部分软件源在Github之类的连接性不太好的地方,偶尔下载很慢而且易报错,现在Scoop推荐默认使用aria2进行多线程下载,只需要安装aira2即可开启多线程下载

scoop install aria2

添加额外的仓库

参考SpencerWoo的文章添加的软件仓库基本上够用了

scoop bucket add extras
scoop bucket add java
scoop bucket add dorado https://github.com/h404bi/dorado
  • 默认的main仓库以命令行工具为主(比如收录的cmder是个有GUI的终端软件),例如Linux常用的sed, grep, gawk,vim可以大大方便Powershell的日常使用
  • extra仓库收录的高质量的gui软件比较多,比如说googlechrome,typora,vscode
  • java仓库收录了多种多版本的JDK,结合下文的scoop reset,可以便捷的切换环境变量下的JDK
  • dorado仓库收录了相当一部分国内常用的软件如微信,网易云,besttrace,因为下载源在国内下载速度很OK

常用软件

除去上面介绍的一些,其实想得到软件都可以在Scoop中使用scoop search找下看看

$ scoop list
Installed apps:

  7zip 19.00
  chromedriver 76.0.3809.126
  cmder-full 1.3.11
  concfg 0.2019.03.09
  ffmpeg 4.1.3 #编码工具
  gawk 3.1.7
  gcc 8.1.0
  gdrive 
  git 2.21.0.windows.1
  grep 2.5.4
  innounp 0.48
  iperf3 3.1.3 #网速测试工具
  nodejs 12.5.0
  pshazz 0.2019.04.02
  R 3.6.0
  sed 4.2.1
  tesseract 4.1.0.20190314 #OCR工具
  vim 8.1.1302 
  youtube-dl 2019.05.20 #偶尔下载视频
  trafficmonitor #任务栏网速,CPU内存占用监测
  screentogif #Gif录屏软件
  ntop #类似htop的的终端下的资源监视器(但是做不到htop那么强大)
  glow #终端下的Markdown Render
  openjdk #添加java仓库后,默认安装最新版的openjdk
  openjdk9 #java9

sudo

部分命令是无法在普通模式下运行的,一般的方法是打开一个新的管理员模式的窗口,相对来说不太方便,scoop可以安装sudo来实现对单一命令的赋权

比如设置禁用eth0接口的别名

scoop alias add ethd 'sudo netsh interface set interface eth0 disabled' 'disable eth0' 

输入scoop ethd之后就会弹出用户账户控制的弹窗,提示需要管理员权限,用键盘确认就好,省去了再开一个窗口的麻烦(如果是长串命令都需要管理员权限的话还是开一个吧)

ffmpeg

只介绍常用的简单指令

录制直播

面对没有加密的m3u8直播录制,IPTV用的较多,m3u8的地址可以通过浏览器的检查工具找到

ffmpeg -i m3u8 'test.ts'  

合并音频和视频

现在越来越多的网站选择把音频和视频分开,使用IDM下载两个文件可以直接用ffmpeg做快速的合并(复制)

ffmpeg -i v.mp4 -i a.mp4 -c copy output.mkv

当然如果youtube-dl支持视频网站的话使用youtube-dl更方便

提取视频中的音轨

常用于提取BGM,不做重编码的情况

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac

-vn没有视频 -acodec copy说使用已经存在的相同的音频流

注意事项

scoop依然有许多不成熟的地方,在高可靠性要求的环境下依然是不推荐的,最经常遇到的莫非是软件安装因为网络等问题终端,安装状态会返回成功,如果需要重新安装的话需要先进行卸载

再一个就是环境变量的问题,scoop可以在安装的时候配置好一些环境变量,但是卸载却不一定会移除,这就导致一些重要的软件在Scoop卸载之后再在其他位置安装会出现环境变量错误的问题

部分高度依赖于安装目录,权限以及关联众多的软件不推荐使用scoop安装,如Chrome

使用Scoop提供的别名

Powershell的别名设置不方便,直接使用WSL的自定义别名(.bashrc)调用Windows下的程序又不能直接在Powershell中运行,直到发现Scoop可以自由的添加“环境变量”,想起来Scoop alias来设置程序运行的scoop别名

本来的用法应该是为Scoop内的操作添加别名:

# Install app
scoop alias add i 'scoop install $args[0]' 'Innstall app'
scoop alias add add 'scoop install $args[0]' 'Install app'

# Uninstall app
scoop alias add rm 'scoop uninstall $args[0]' 'Uninstall an app'
scoop alias add remove 'scoop uninstall $args[0]' 'Uninstall an app'

# List apps
scoop alias add ls 'scoop list' 'List installed apps'

# Update
scoop alias add u 'scoop update $args[0]' 'Update apps, or Scoop itself'
scoop alias add upgrade 'scoop update $args[0]' 'Update apps, or Scoop itself'

但是这个格式看起来就很自由:

比如说给WinMTRCmd添加一个scoop mtr的别名

scoop alias add mtr '~/winMTRCmd $args[0]' 'MTR tools for Win CMD'

之后使用scoop mtr [host]就可以愉快的使用mtr工具了

使用Scoop切换软件版本

这里以切换Java版本为例,例如在安装了openjdk和openjdk9之后,从默认的openjdk9切换到openjdk16

$ java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+11)
OpenJDK 64-Bit Server VM (build 9.0.4+11, mixed mode)

$ scoop reset openjdk
Resetting openjdk (16.0.1-9).
Linking ~\scoop\apps\openjdk\current => ~\scoop\apps\openjdk\16.0.1-9

$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
❌
❌