如何列出我的盒子上安装的所有专有(许可证字段) snap 包?

如何列出我的盒子上安装的所有专有(许可证字段) snap 包?

snap安装后sudo snap install [package],如何列出我的机器上所有具有专有许可证的软件包?为了决定什么是开源,什么不是我喜欢的Debian 自由软件指南

例如spotify

Details for Spotify
License
    Proprietary

答案1

获取所有 snap 包:

snap list

获取详细信息(包括许可证):

snap info <package name>

因此

for p in $(snap list | awk 'NR > 1 { print $1 }') ; do
    snap info $p | grep license
done

会列出每个 snap 的许可证,然后您可以随意过滤。现在,license我拥有的几个 snap 中的参数是unset。除了snapd,它有GPL-3.0,而不是GPL-3.0+显示的。这里

因此,显然,要获得每个快照的实际许可证,您必须编写一个脚本来从 检索信息https://snapcraft.io/<package name>,或者更好的是从snap info <package name> | grep store-url(可能在所有情况下都一样,但我不敢打赌)。没什么大不了的,但可能也不是预料之中的。

添加脚本正如@Xosrov 评论的那样

#!/usr/bin/env bash

for i in $(snap list | awk 'NR > 1 {print $1}') ; do
  url="https://snapcraft.io/${i}"
  echo "${url}"
  site=$(curl -s "${url}")
  for j in $site ; do
    res=$(echo "$j" | awk -F'>' '$0~"data-live=\"license"{print $2}')
    if [ -n "$res" ] ; then
      echo "License for ${i}: ${res:0:$((${#string}-4))}"
      break
    fi
  done
done

相关内容