Arch-Linux
使用 arch/pacman 時,如何查詢軟體包的許可證?
是否可以只在 Arch Linux 中安裝免費軟體包?或者也許在安裝之前查詢一個包的許可證?我想你可以用它
-Q
來搜尋特定許可證的文本,但這似乎有點過頭了。
您可以
expac
使用 alpm 數據工具$$ extra $$. 例如,要在儲存庫中搜尋 Apache 許可軟體:
expac -Ss '%L - %n' '^Apache'
注意:expac 對目標進行完整搜尋,因此可能需要額外的過濾。
不過,最終,如果您只想要免費軟體,您會想要Parabola Linux,它是基於 Arch 的,但是是一個單獨的發行版。
使用/或/ pacman 命令的
-i
/--info
選項時包含許可證。沒有必要按照 jasonwryan 的建議安裝另一款軟體。-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 <allan@archlinux.org> 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