ฉันกำลังสร้างแอปพลิเคชันบรรทัดคำสั่งและฉันต้องการบันทึกข้อมูลชั่วคราวลงในไฟล์ ฉันไม่ทราบว่าการประชุมสำหรับแอปพลิเคชันจะเก็บแคชไว้ในระบบที่ใช้ระบบปฏิบัติการยูนิกซ์ (ในกรณีนี้คือ Ubuntu 12.0.4)?
ฉันกำลังสร้างแอปพลิเคชันบรรทัดคำสั่งและฉันต้องการบันทึกข้อมูลชั่วคราวลงในไฟล์ ฉันไม่ทราบว่าการประชุมสำหรับแอปพลิเคชันจะเก็บแคชไว้ในระบบที่ใช้ระบบปฏิบัติการยูนิกซ์ (ในกรณีนี้คือ Ubuntu 12.0.4)?
คำตอบ:
"ระบบที่ใช้ Unix" เป็นหมวดหมู่ที่กว้างเกินไปที่จะทำการตัดสินใจประเภทใดก็ได้ที่สามารถนำไปใช้ได้กับระบบที่ใช้ Unix ทั้งหมด ปัญหาคือโครงสร้างของระบบไฟล์ (และสถานที่ "เหมาะสม" / "ธรรมดา" ที่จะนำสิ่งต่าง ๆ ) นั้นแตกต่างกันอย่างมากระหว่างรสชาติที่แตกต่างของ "Unix" (ถ้าคุณสามารถเรียกมันได้) ว่าคุณต้องจัดการกับมัน เป็นกรณี ๆ ไป
ตัวอย่างบางส่วน:
คำตอบก็คือว่ายอมรับได้รับการยอมรับทางสังคมดีแบบบูรณาการประชุมสำหรับการที่จะเก็บอะไรกับระบบปฏิบัติการใด ๆ ไม่ว่าจะเป็น distro ของ Linux, BSD, Solaris, HP-UX ฯลฯขึ้นอยู่กับสถานการณ์ที่แท้จริง โดยเฉพาะ:
apt-get
หรือyum
ติดตั้งโดยตรงโดยไม่ต้องดาวน์โหลดตัวติดตั้งออกจากเว็บไซต์ไม่มีคำตอบตรงนี้โดยไม่คำนึงถึงปัจจัยทั้งหมด อย่างไรก็ตามสำหรับUbuntu 12.04 โดยเฉพาะถ้าคุณกำลังสร้างแพคเกจของคุณให้เป็น.deb
ไฟล์ที่จะกระจายใน PPA หรือส่งไปยังอูบุนตูของ repositores แพคเกจของตัวเอง ( main
หรือuniverse
) /var/cache
ผมอยากจะแนะนำว่าแคชควรเก็บไว้ใน แต่นั่นเป็นเพียงสำหรับ Ubuntuและคุณไม่ควรใช้สมมติฐานอย่างแน่นอนว่าทุกระบบปฏิบัติการ distro หรือ Unix จะพิจารณาว่าเป็นที่ยอมรับได้
นอกจากนี้หากไม่มีข้อได้เปรียบในการบันทึกข้อมูลแคชข้ามบูทของระบบฉันคิดว่ามันอาจเป็นของ / tmp
โปรดทราบว่าคุณจะพบกับปัญหาการประชุมที่มีการกำหนดเส้นทางเหล่านี้สำหรับไฟล์ทุกประเภทที่โปรแกรมของคุณใช้: ข้อมูลที่แชร์ไฟล์ที่ปฏิบัติการได้ห้องสมุดไฟล์ช่วยเหลือภาพเสียงเสียงหน้าเว็บและอื่น ๆ ดังนั้นฉันต้องสงสัยว่าถ้าคุณถามเกี่ยวกับไฟล์แคชว่าคุณวางแผนที่จะจัดการกับไฟล์ประเภทอื่นอย่างไร คุณแค่ทำตัวไร้เดียงสาและหวังว่าจะไม่มีใครไม่เห็นด้วยกับคุณ? หากคุณยังไม่ได้อ่านเอกสารหรือมาตรฐานของ Ubuntu ใด ๆ ที่แนะนำสถานที่ที่จะนำพวกเขาไปมันเป็นความคิดที่ไม่ดีเลยที่จะสมมติแค่เรื่องใดเรื่องหนึ่ง ตัวอย่างเช่นการผสานไลบรารีใน / usr / lib อาจเป็นความผิดพลาดได้ขึ้นอยู่กับสถานการณ์ที่อาจเป็นของที่อื่น
นอกจากนี้ในฐานะนักพัฒนาซอฟต์แวร์ฉันคิดว่าสิ่งที่ต้องรับผิดชอบมากที่สุดคืออนุญาตให้ผู้ใช้ปลายทางตัดสินใจว่าจะวางไฟล์ไว้ที่ใด คุณสามารถตั้งค่าเริ่มต้น แต่ผู้ใช้ (และผู้จัดจำหน่าย) สามารถและจะกำหนดโครงสร้างเพื่อให้เหมาะกับ distro ของพวกเขา
วิธีที่ง่ายที่สุดที่จะทำคือการสร้างโปรแกรมของคุณโดยใช้GNU Autoconf Autoconf เป็นระบบบิลด์ที่ผู้ใช้สามารถส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งไปยังบิลด์สคริปต์เพื่อเปลี่ยนพา ธ ของ "ไดเรกทอรีประเภท" ต่างๆออกจากค่าเริ่มต้น การกระจายเกือบทุกครั้งจะมีบิลด์สคริปต์สำหรับแพ็คเกจ Autoconf ทั้งหมดที่ตั้งค่าไดเรกทอรีทั่วไปที่เหมาะสมสำหรับแต่ละประเภท พวกเขายังมีเฉพาะประเภทไดเรกทอรีสำหรับแคช: sharedstatedir
gem
เครื่องมือ อย่างไรก็ตามมันอาจจะไม่เหมาะสมในการสร้างไฟล์ที่รันไทม์ภายในไดเรกทอรีเดียวกันซึ่งอัญมณีของแอปพลิเคชันของคุณดาวน์โหลด ในทางกลับกันหากคุณใช้แอพในฐานะผู้ใช้คุณต้องมีไดเรกทอรีที่อ่าน - เขียนสำหรับผู้ใช้และนั่นหมายถึงการเปลี่ยนการอนุญาต (ซึ่งต้องใช้การรวมระบบมากขึ้นในเวลาติดตั้งเช่นการสร้างกลุ่ม ฯลฯ ) หรือใช้ไดเรกทอรีอ่าน - เขียนทั่วโลกเช่น / tmp
/usr
, /lib
หรือ/bin
จากโปรแกรมของคุณ
/tmp
โฟลเดอร์ คำตอบสำหรับคำถามของคุณคือ (ดาวน์โหลด, ไม่, ไม่, ไม่, ไม่, ไม่, ไม่) อาจดูเหมือนเป็นเรื่องปกติสำหรับคนส่วนใหญ่ที่จะสรุปว่าเป็น/tmp
แต่ฉันใหม่สำหรับระบบยูนิกซ์และการประชุมแบบใช้อูบุนตูที่ไม่คุ้นเคยกับฉัน สิ่งนี้จะเปิดแนวคิดที่น่าสนใจสำหรับ gem เพื่ออนุญาตการใช้แคชกับผู้ไม่เชื่อเรื่องพระเจ้า (ผู้ไม่เชื่อเรื่องพระเจ้า) ขอบคุณ +1 จากฉัน