การสร้างไบนารีที่แจกจ่ายได้ใน Unix


0

ความตั้งใจของฉันคือการสร้างไบนารีที่แจกจ่ายได้ - ฉันกำลังทำ. / กำหนดค่า - สร้าง - ติดตั้งในเครื่องสร้างของฉันและฉันเก็บเนื้อหาของไดเรกทอรีการติดตั้ง (คนที่ฉันให้คำนำหน้าไปในขณะที่ทำ. ) และย้ายไปยังเครื่องอื่นภายใต้ผู้ใช้รายอื่นเพื่อทำการทดสอบ จากการทดสอบฉันเห็นว่าไฟล์ที่คัดลอกยังคงพยายามเข้าถึงไฟล์บางอย่างที่พา ธ ซึ่งเป็นเครื่องสร้างของฉัน - และด้วยเหตุนี้ฉันจึงได้รับpermissions deniedข้อผิดพลาด ก่อนหน้านี้ฉันคิดว่ามันอาจเป็นtarปัญหาในขณะที่คลายบีบอัด แต่ต้องขอบคุณDaniel Beckที่ช่วยให้ฉันรู้ว่ามันไม่มีส่วนเกี่ยวข้องกับกระบวนการเก็บถาวร

ฉันไม่มีสิทธิ์รูท / sudo crux คือ - ฉันจะสร้างเครื่องอย่างไรและใช้ไฟล์ติดตั้งในเครื่องอื่น ๆ โดยไม่ต้องเจอปัญหาเกี่ยวกับสิทธิ์อนุญาต? กฎในการสร้าง tarballs ที่สามารถแจกจ่ายได้ในระดับสากลมีอะไรบ้าง

ขอบคุณ


Sghosh เป็นชื่อผู้ใช้ มันคือ user_01 หรือ user_02?
Daniel Beck

ขออภัยความผิดพลาดของฉันใช่คุณพูดถูกฉันต้องการย้ายไฟล์จากพื้นที่ผู้ใช้ของฉันไปยังอีก .. แก้ไขแล้ว
Sayan

ตกลง - และคืออะไรls -lและls -lnผลผลิตหลังจากแยกบนโฮสต์ปลายทางหรือไม่
Daniel Beck

นี่คือls -lnผลลัพธ์ - drwxr-xr-x 2 10036 501 4096 Nov 11 04:52 binและls -lให้drwxr-xr-x 2 user_02 staff 4096 Nov 11 04:52 bin
Sayan

นี่เป็นเอาต์พุตสำหรับไฟล์ (หรือโฟลเดอร์) ที่user_02ถูกปฏิเสธการเข้าถึงหรือไม่?
Daniel Beck

คำตอบ:


1

ปัญหาคือว่าโปรแกรม Unix จำนวนมากไม่สามารถเปลี่ยนตำแหน่งได้ พวกเขามักจะค้นหาไฟล์ในเส้นทางที่คุณให้การกำหนดค่า (ไม่สัมพันธ์กับตำแหน่งของตัวเอง) หากคุณต้องการให้สามารถย้ายตำแหน่งได้ดังนั้นจึงสามารถติดตั้งในไดเรกทอรีผู้ใช้ (หรือที่อื่น ๆ ) และยังคงพบว่าเป็นไฟล์โดยที่ไม่มีวิธีอื่นนอกจากการปรับเปลี่ยนโปรแกรมให้ทำงานในลักษณะนั้น

ไม่มีกฎทั่วไปสำหรับการสร้าง tarballs ที่สามารถแจกจ่ายได้ทั่วไปโดยเฉพาะอย่างยิ่งสำหรับโปรแกรมที่ติดตั้งจากแหล่ง การกระจาย Unix ส่วนใหญ่มีระบบแพ็กเกจพิเศษบางชนิดสำหรับการกระจายไบนารี สิ่งที่ดีที่สุดคือการใช้สิ่งนั้น แอปพลิเคชันเชิงพาณิชย์ส่วนใหญ่ที่จัดส่งเป็นไบนารีใน tarballs ใช้ตัวแปรสภาพแวดล้อมเพื่อค้นหาไฟล์และใช้เชลล์สคริปต์ตัวแรปเปอร์ที่ตั้งค่าตัวแปรนี้ (โดยการค้นหาไฟล์ที่สัมพันธ์กับเส้นทางของมันเอง) จากนั้นอีกครั้งคุณอาจต้องแก้ไขโปรแกรมเพื่อให้ทำงานในลักษณะนี้


0

ใช้tar --no-same-owner(สำหรับรุ่น GNU) เมื่อแกะกล่อง tarball ออก --no-same-permissionsอาจมีประโยชน์


ฉันยังคงได้รับข้อผิดพลาดเดียวกัน
Sayan

@Sanan ใครเป็นเจ้าของไฟล์เหล่านี้? ผู้ใช้ที่แยกควรเป็นเจ้าของหากได้รับตัวเลือกนี้ คุณใช้ gnu tar ซึ่งมีตัวเลือกนี้หรืออย่างอื่นหรือไม่?
Daniel Beck

อืมโปรดช่วยฉันเข้าใจ - ฉันปล่อยกลุ่มไฟล์ให้ + x ตัวเลือก ... จากนั้นฉันอัปโหลดไปยังเว็บไซต์ที่ผู้ใช้สามารถดาวน์โหลดและใช้งานได้ ดังนั้นฉันจะตั้งค่าความเป็นเจ้าของ / สิทธิ์สำหรับผู้ใช้ที่ดาวน์โหลด tarball ได้อย่างไร? ใช่ฉันใช้ gnu tar
Sayan

1
@Sayan คุณทำไม่ได้ ในขณะที่คุณสามารถตั้งค่าการchmodอนุญาตสำหรับไฟล์ที่รวมไว้โดยใช้--modeอาร์กิวเมนต์เป็น GNU tarแต่เป็นความรับผิดชอบของผู้ใช้ที่แยกไฟล์เพื่อทิ้งความเป็นเจ้าของดั้งเดิมของไฟล์ในลูก tar ตัวอย่างเช่นฉันดาวน์โหลดซอร์สโค้ด OpenSSH วันนี้ tar tzvf filename.tar.gzแสดงรายการไฟล์ที่ผู้ใช้ "snap" เป็นเจ้าของtar tzvf --numeric-owner filename.tar.gzแสดงว่าเป็น ID ผู้ใช้ที่เป็นตัวเลข 1018 ในระบบของฉันไม่มีผู้ใช้ดังกล่าว ฉันเป็นผู้ใช้แยกเก็บจะต้องดูแลการระบุหรือ--no-same-owner --owner MyUserName
Daniel Beck

@Sayan สิ่งนี้จะเกิดขึ้นเฉพาะเมื่อคุณแยกเป็น root เนื่องจากผู้ใช้รายอื่นไม่สามารถสร้างไฟล์ที่เป็นของผู้ใช้คนอื่นได้ มันจะช่วยถ้าคุณอธิบายรายละเอียดวิธีสร้างและแยกไฟล์เก็บถาวร tar และรวมรายชื่อ (บางส่วน) tar tvแสดงสิทธิ์และผู้ใช้ / กลุ่มภายในลูก tar
Daniel Beck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.