是否可以只安装自由的Arch Linux 中的软件包?或者也许在安装之前查询软件包的许可证?我想您可以用来-Q
搜索特定许可证的文本,但这似乎有些过头了。
答案1
您可以使用expac
[extra] 中的 alpm 数据工具来完成此操作。例如,要在存储库中搜索 Apache 许可的软件:
expac -Ss '%L - %n' '^Apache'
注意:expac 对目标进行完整搜索,因此可能需要额外的过滤。
但最终,如果您只想要免费软件,那么您想要抛物线Linux,它是基于 Arch 的,但是是一个单独的发行版。
答案2
当使用/或/ pacman 命令的-i
/选项时,会包含许可证。没有必要按照 jasonwryan 的建议安装另一个软件。--info
-Q
--query
-S
--sync
以下是 的一些结果示例pacman -Si glibc
:
Name : glibc
Version : 2.33-4
Description : GNU C Library
Architecture : x86_64
URL : https://www.gnu.org/software/libc
Licenses : GPL LGPL
Groups : None
Provides : None
Depends On : linux-api-headers>=4.10 tzdata filesystem
Optional Deps : gd: for memusagestat
Conflicts With : None
Replaces : None
Download Size : 9.84 MiB
Installed Size : 46.04 MiB
Packager : Allan McRae <[email protected]>
Build Date : Sat 13 Feb 2021 04:39:21 PM EST
Validated By : MD5 Sum SHA-256 Sum Signature
现在我们可以将输出通过管道传输到 sed 并将其设为 bash 脚本:
#!/bin/bash
pacman -Si "$@" | sed -E -n 's/Licenses\s*?:\s+(.+)/\1/p'
# "$@" | pass through arguments (same as $1 $2 $3 ...)
# sed | stream editor
# -E | extended (better) regex
# -n | disable default printing of all lines
# s/ | substitution command
# Licenses | literal string "Licenses"
# \s* | zero or more whitespace characters
# : | literal character ":"
# \s+ | one or more whitespace characters
# (.+) | capture rest of line after non-whitespace
# /\1 | replace with first capture group (.+)
# /p | re-enable printing, but only for matches
示例输出pacman-license glibc curl ffmpeg
(已添加注释):
GPL LGPL # glibc
MIT # curl
GPL3 # ffmpeg