คุณจะพบใบอนุญาตสำหรับทุกสิ่งที่ติดตั้งในระบบของคุณได้อย่างไร


18

ฉันต้องการเขียนสคริปต์ที่ให้สิทธิ์ใช้งานซอฟต์แวร์ทุกชุดที่ติดตั้งในระบบของฉัน

ใช้dpkg --get-selectionsฉันสามารถรับรายการทุกอย่างที่ติดตั้ง อย่างไรก็ตามฉันไม่เห็นวิธีรับข้อมูลสิทธิ์การใช้งานสำหรับแต่ละแพ็คเกจ ตัวอย่างเช่นฉันสามารถใช้aptitude showเพื่อรับคุณสมบัติของแต่ละแพ็คเกจ แต่ไม่รวมถึงสิทธิ์ใช้งาน:

$ aptitude show apache2
Package: apache2
State: installed
Automatically installed: no
Version: 2.2.14-5ubuntu8.6
Priority: optional
Section: httpd
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 36.9k
Depends: apache2-mpm-worker (= 2.2.14-5ubuntu8.6) | apache2-mpm-prefork (= 2.2.14-5ubuntu8.6) | apache2-mpm-event (= 2.2.14-5ubuntu8.6) | apache2-mpm-itk (= 2.2.14-5ubuntu8.6),
         apache2.2-common (= 2.2.14-5ubuntu8.6)
Provided by: apache2-mpm-event, apache2-mpm-itk, apache2-mpm-prefork, apache2-mpm-worker
Description: Apache HTTP Server metapackage
 The Apache Software Foundation's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the
 number one web server on the Internet. 

 It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy scripting and database integration, request/response filtering, many flexible authentication schemes, and
 more.
Homepage: http://httpd.apache.org/

มีที่เก็บของบุคคลที่สามที่มีความสัมพันธ์กับใบอนุญาตกับแต่ละแพ็คเกจหรือไม่?

ฟังดูเจ็บปวดที่จะดาวน์โหลดทุกแพ็คเกจต้นทางและตรวจสอบเพื่อดูข้อมูลสิทธิ์ใช้งาน แต่อาจเป็นวิธีที่ดีที่สุด


เรื่องนี้ดูไม่สำคัญเลยในตอนนี้ สำเนาซ้ำได้ของaskubuntu.com/questions/88403/… ดูเพิ่มเติมได้ที่: serverfault.com/questions/334189/…
Kevin Bowen

ดูเพิ่มเติมตอนนี้stackoverflow.com/questions/35044841/…
tripleee

คำตอบ:


14

นี่คือสิ่งที่ฉันทำ (ผลลัพธ์~/licenses.txtด้วยสิทธิ์ใช้งานทั้งหมดที่มีอยู่/usr/share/doc)

$ packages=`dpkg --get-selections | awk '{ print $1 }'`
$ for package in $packages; do echo "$package: "; cat /usr/share/doc/$package/copyright; echo ""; echo ""; done > ~/licenses.txt

3
นี่คือวงเวียนมาก เพียงแค่grep '^' /usr/share/doc/*/copyrightคุณจะได้รับมากข้อมูลเดียวกันหรือtail -n 10000 /usr/share/doc/*/copyrightถ้าคุณไม่ต้องการคำนำหน้าชื่อไฟล์ในทุกบรรทัด
tripleee

12

ในปี 2012 Debian ได้เปิดตัวเดเบียน / ลิขสิทธิ์ที่เครื่องอ่านได้ซึ่งจะทำให้สิทธิ์การใช้งานสามารถอ่านได้ในอนาคต ขณะนี้ไม่ใช่แพ็คเกจทั้งหมดที่ใช้รูปแบบนี้ คำสั่ง

grep -h '^License:' /usr/share/doc/*/copyright | sort -i | uniq -ic | sort -n

ยังคงส่งคืนขยะจำนวนมาก เพื่อผลลัพธ์ที่ดีกว่าคุณอาจต้องใช้เครื่องมือที่แยกวิเคราะห์แต่ละไฟล์ขึ้นอยู่กับFormat:ค่าฟิลด์

วิธีที่แตกต่างอย่างสิ้นเชิงคือโครงสร้างไฟล์ใน/usr/share/common-licenses/(ขอบคุณถึง/programming/1884753/license-info-of-a-deb-package#1884785 ) จะแสดงใบอนุญาตหลักที่ใช้ในการแจกแจงแบบเดเบียน (และมีข้อความลิขสิทธิ์ของพวกเขา) รายการนี้จัดทำโดยแพ็คเกจbase-filesและไม่ได้เชื่อมโยงกับรายการแพคเกจที่ติดตั้ง แต่อาจเป็นข้อมูลที่เพียงพอสำหรับเจ้านาย / ลูกค้าโดยเฉลี่ย

ls /usr/share/common-licenses/
Apache-2.0  BSD   GFDL-1.2  GPL    GPL-2  LGPL    LGPL-2.1
Artistic    GFDL  GFDL-1.3  GPL-1  GPL-3  LGPL-2  LGPL-3

อัปเดต ฉันเพิ่งเผยแพร่โซลูชันบรรทัดคำสั่งง่ายๆซึ่งดึงข้อมูลใบอนุญาตจากไฟล์ลิขสิทธิ์ที่มีการวิเคราะห์พฤติกรรมจำนวนมาก https://github.com/daald/dpkg-licenses รู้สึกอิสระที่จะลอง ข้อเสนอแนะใด ๆ ยินดีต้อนรับ


4

ฉันสะดุด dpkg-license ( https://github.com/daald/dpkg-licenses )

เพียงเลียนแบบ repo

git clone https://github.com/daald/dpkg-licenses.git

แล้วก็

./dpkg-licenses> license.txt

และคุณมีสิ่งที่ดีที่สุดของวันนี้ติดตั้งซอฟต์แวร์รุ่นและรายการใบอนุญาตตารางคุณสามารถฝัน ...


@ Daniel Alder แล้วเรียกว่าการเชื่อมโยงที่เหมือนกันในคำตอบอื่นaskubuntu.com/a/620069/24203และเขาน่าจะเป็นผู้เขียนของเครื่องมือ :)
ไอแซ็ก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.