สนับสนุน Apport สำหรับแพ็คเกจที่ไม่ใช่ Ubuntu


13

ฉันได้อ่านเกี่ยวกับ apport และการใช้งานเป็นเวลาหนึ่งสัปดาห์แล้ว แต่ไม่เข้าใจสิ่งต่าง ๆ ด้านล่าง

สถานการณ์:

ฉันได้พัฒนาแอปพลิเคชันและจัดทำมัน MyApp.debและชื่อของมันคือ ชื่อแพคเกจไบนารีแอพลิเคชันได้โดยเริ่มต้นมีการติดตั้งในเส้นทางMyApp/opt/myapplication/bin/MyApp

ต้องการ:

  1. เมื่อแอปพลิเคชันของฉันขัดข้องฉันต้องการรวบรวมคอร์ดัมพ์
  2. ในแต่ละความผิดพลาดที่ตามมาจะต้องสร้างความผิดพลาดใหม่ แต่ไม่ได้เขียนทับความผิดพลาดที่มีอยู่ บางอย่างเช่นการเปลี่ยนชื่ออัตโนมัติพร้อมการประทับเวลาปัจจุบัน ฯลฯ จะช่วยฉันได้
  3. เมื่อฉันติดตั้งแอปพลิเคชันของฉันบนเครื่องลูกค้าโปรแกรมติดตั้งของฉันจะต้องไม่แก้ไขพารามิเตอร์ทั้งระบบของเขา พูดเช่นฉันจะต้องไม่เปลี่ยนรูปแบบการสร้างไฟล์หลักของเขาเพราะผู้ใช้ / ลูกค้าอาจเกลียดแอปพลิเคชันของฉันเพราะฉันจะเปลี่ยนพารามิเตอร์ระบบของเขาโดยไม่ได้รับความยินยอมจากเขา
  4. ฉันตกลงกับเส้นทางของการสร้างไฟล์หลัก อาจเป็นไดเรกทอรีปัจจุบันหรือ/var/crash

สิ่งที่ฉันได้สำรวจมาจนถึงตอนนี้:

Apport เป็นยูทิลิตี้ที่ดีซึ่งทำให้สามารถสร้างไฟล์หลักได้ ใช้/proc/sys/kernel/core_patternฉันสามารถจัดรูปแบบไฟล์หลัก สิ่งนี้ให้ความยืดหยุ่นในการเปลี่ยนเส้นทางไฟล์หลักไปยังไดเรกทอรีที่กำหนดไว้ล่วงหน้าชื่อไฟล์แกนที่มี pid, รูปแบบเส้นทางของไฟล์ที่ผนวกเข้าหรือจบลงไปเป็นต้นสำหรับแพ็คเกจที่ไม่ใช่ Ubuntu ฉันต้องเขียน hooks เพื่อสร้าง core ทิ้ง (รายงาน) . เชื่อมโยงหลังจากรวบรวมรายงานที่จะอัปโหลด

สิ่งที่ฉันไม่เข้าใจ:

  1. เป็น Apport ที่ฉันต้องดูใช่ไหม? ฉันหมายความว่ามันเพียงพอต่อความต้องการของฉันหรือไม่? หรือฉันควรจะมองอย่างอื่น
  2. แอปพลิเคชันของฉันอยู่ในประเภทใด ฉันเรียกมันว่าไม่ใช่อูบุนตูหรือไม่? ส่วนที่ 3 มันคืออะไร? ฉันเห็นคำศัพท์ต่าง ๆ ในเอกสารหรือไม่
  3. ดังที่ฉันได้กล่าวแล้วให้MyAppเรียกใช้จาก/opt/myapplication/bin/MyAppดังนั้นไฟล์หลักจะถูกสร้างขึ้นที่ใด ปัจจุบัน dir หรือ/var/crash? Apport ตรวจพบการล่มของ trigerred /optหรือไม่? มันตีความมันได้หรือไม่
  4. คำถามสำคัญ: ถ้าฉันพัฒนาแอพพลิเคชั่นแล้วและถ้า Apport อัปโหลดรายงานไปยังที่เก็บ Ubuntu มันไม่สมเหตุสมผล ดังนั้นฉันจะบอก Apport ให้ส่งรายงานให้ฉันได้อย่างไร
  5. ฉันได้รับข้อผิดพลาดนี้: executable does not belong to a package, ignoring. แล้วฉันกำลังทำอะไรผิด
  6. เพื่อให้ apport รู้จักแพ็คเกจของฉันฉันต้องทำให้มันเป็นแพ็กเกจต้นทางหรือไม่ จำเป็นหรือไม่ ฉันต้องการสร้างแพ็คเกจไบนารีหรือไม่
  7. ฉันยังเห็นบางแห่งในเอกสารที่ Apport รู้จัก:
    1. แพ็คเกจ Ubuntu หรือ
    2. แอปพลิเคชัน Launchpad แต่แอปพลิเคชันของฉันไม่ได้อยู่ในรายการเหล่านี้ ดังนั้น Apport ช่วยฉันในสถานการณ์ปัจจุบันอย่างไร

หนึ่งในข้อ จำกัด ของ Apport ในขณะนี้ - ต้องเป็นแพคเกจในที่เก็บ Ubuntu หรืออย่างน้อยโครงการบน Launchpad ตัวเลือกหลังสำหรับคุณหรือไม่
jokerdino

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

แอปพลิเคชันเขียนด้วยภาษาใด นอกจากนี้ยังชำระเงินระดับดำเนินการสำหรับการเขียน Apport แพคเกจตะขอ
jokerdino

แอปเขียนใน C ++ บรรทัดต่อไปนี้จากลิงก์ทำให้ฉันสับสน "<openweek4> คำถาม: apport hooks จะทำงานกับแอปพลิเคชันบุคคลที่สามหรือไม่ openweek4: จริงๆแล้วฉันไม่แน่ใจเกี่ยวกับคำถามนั้นถ้าคุณดูที่ ubuntuone-client hook - รายงานข้อผิดพลาด เพื่อ Launchpad แต่เกี่ยวกับโครงการ ubuntuone ดังนั้นมันอาจเป็นไปได้มากอย่างไรก็ตาม apport จะต้องสามารถสื่อสารกับระบบติดตามบั๊กที่เหมาะสมได้ "
Sandeep

ผู้เขียนกล่าวว่าอาจเป็นไปได้ที่แอปพลิเคชันบุคคลที่สามจะใช้ประโยชน์จาก apport เพื่อรับรายงานตราบใดที่มีการสื่อสารระหว่าง apport และระบบติดตามบั๊กของแอปพลิเคชันที่ 3 สิ่งนี้จะสำเร็จได้อย่างไร หากสามารถทำได้ฉันไม่จำเป็นต้องรอให้แอปพลิเคชันของฉันลงทะเบียนด้วย ubuntu repo หรือ launchpad
Sandeep

คำตอบ:


2
  1. ดูเหมือนใกล้ แต่อาจไม่ใช่สิ่งที่คุณต้องการ เชื่อมโยงการเปลี่ยนแปลงโดยอัตโนมัติ / proc / sys / kernel / core_pattern ดังนั้นหากไม่สามารถเปลี่ยนแปลงได้คุณก็โชคไม่ดีนัก ในทางตรงกันข้ามภาคผนวกอยู่ในการติดตั้งเริ่มต้นของ Ubuntu ตอนนี้ดังนั้นทุกคนที่ใช้ Ubuntu ก็มีการเปลี่ยนแปลงพารามิเตอร์นั้นแล้ว ฉันยังไม่ทราบวิธีที่จะบอกให้ Apport เก็บมากกว่าความผิดพลาดล่าสุดจากแอพหนึ่ง ๆ แต่ตราบใดที่อัปโหลดความผิดพลาดแต่ละครั้งนั่นไม่ใช่ปัญหา
  2. ฉันหมายถึงมันเป็นบุคคลที่สาม
  3. Apport รองรับไฟล์ปฏิบัติการที่ติดตั้งใน / opt คุณจะต้องระบุ hook ใน / opt / path / to / your / app / share / apport / package-hooks
  4. คุณสามารถตั้งค่าฐานข้อมูลความผิดพลาดที่กำหนดเองใน package-hook สำหรับแพ็คเกจของคุณ แต่ถ้าฐานข้อมูลความผิดพลาดของคุณไม่ทำงานเหมือนกับ debbugs หรือ launchpad คุณจะต้องสร้างการใช้งานตัวเชื่อมต่อฐานข้อมูลความผิดพลาดแบบกำหนดเองซึ่งดูเหมือนจะไม่สามารถทำได้โดยไม่ต้องติดตั้งไฟล์ไพ ธ อนนอก / opt
  5. ไฟล์ปฏิบัติการต้องติดตั้งโดย dpkg ซึ่งหมายความว่าคุณต้องจัดแพคเกจไฟล์ในไฟล์. deb
  6. คุณต้องสร้างซอร์สแพ็กเกจเพื่อสร้างไบนารีแพ็กเกจเนื่องจากแพ็กเกจไบนารีถูกสร้างจากแพ็กเกจซอร์ส คุณไม่จำเป็นต้องแจกจ่ายแพ็คเกจต้นทาง
  7. Apport ใช้งานได้กับทุกสิ่งที่บรรจุเป็นไฟล์. deb

ดูเหมือนว่ามันอาจเป็นคำตอบที่มีประโยชน์มาก แต่ก็ทำให้มีช่องว่างหลายคำในการอธิบาย: "มอบเบ็ด" นำมาซึ่งอะไร? "การกระทำเช่น debbugs หรือ launchpad" หมายความว่าอย่างไร ตัวชี้ไปยัง refs โปรด?
BobDoolittle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.