โปรแกรมที่ติดตั้งผ่าน snap ไม่แสดงใน Launcher


37

เพิ่งอัพเดตเป็น Ubuntu 16.04 และลองใช้แพ็คเกจ snap เป็นครั้งแรก

ดังนั้นฉันต้องการ meshlab เพื่อดูไฟล์ stl พบปัญหาในการล็อกอิน pitn พบว่าการติดตั้งบรรทัดคำสั่งของแพ็คเกจ snap ไม่จำเป็นต้องมีการล็อกอิน:

sudo snap install meshlab

และ hey presto meshlap ที่ติดตั้งไม่มีการล็อกอิน pitn ทำงานได้ดีจากบรรทัดคำสั่ง อย่างไรก็ตามโปรแกรมจะไม่แสดงในตัวเรียกใช้งาน ทำไมนี้ แพ็คเกจ snap ไม่แสดงในตัวเรียกใช้งานหรือไม่? ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


40

หากคุณใช้ zsh ไดเร็กทอรี snap ไบนารีและเดสก์ท็อปจะไม่ถูกเพิ่มเข้ากับตัวแปรสภาวะแวดล้อมของคุณโดยอัตโนมัติ เพื่อแก้ปัญหานี้ฉันเพิ่มบรรทัดต่อไปนี้ใน / etc / zsh / zprofile (นำมาจาก Arch):

emulate sh -c 'source /etc/profile'

สิ่งนี้จะประมวลผลไฟล์ / etc / profile ของคุณด้วยการจำลอง bash ซึ่งจะเปิดไฟล์ /etc/profile.d/* และตั้งค่า PATH ที่เหมาะสม ฯลฯ

ในการเพิ่มเฉพาะไดเรกทอรี snap ไปยังเส้นทางของคุณโดยไม่รวมส่วนที่เหลือทั้งหมดของโปรไฟล์ทุบตีเริ่มต้น:

emulate sh -c 'source /etc/profile.d/apps-bin-path.sh'

1
ขอบคุณ! ทำงานได้ดีในวันที่ 17.10 เช่นกัน การเปลี่ยนมาใช้ zsh ทำให้เกิดปัญหานี้ขึ้นสำหรับฉันเช่นกัน
danwit

2
พวกเขาควรแก้ไขปัญหานี้ในกระบวนการติดตั้งหรือเพิ่มคำถามที่พบบ่อย / ขั้นตอนการแก้ไขปัญหาสำหรับ snap
BradErzwh

1
ขอบคุณทำงานให้ฉันในวันที่ 18.10 หวังว่าสิ่งนี้จะได้รับการแก้ไขในอนาคต
Pavel Davydov

1
ยอดเยี่ยมน่าเสียดายที่มันยังคงเป็นปัญหาในวันที่ 19.04
jhole89

11

มันสร้างไว้ในระบบ snap แต่คุณต้องเพิ่มลิงค์ไปยังขีดของคุณ เพื่อเริ่มประเภทโปรแกรม

snap run meshlab

เมื่อมันเริ่มทำงานแล้วให้คลิกขวาที่ไอคอนและคลิกที่ "add to dash"


7

สำหรับฉันดูเหมือนว่าจะเกี่ยวข้องกับการรวมกันของ Wayland / ZSH ภายใต้ Ubuntu 18.04 - แม้ว่าจะ/var/lib/snapd/desktopมีการระบุไว้ในXDG_DATA_DIRSตัวแปร (สิ่งนี้กระทำโดย/etc/profile.d/apps-bin-path.sh) ตัวเรียกใช้งานไม่รู้จักแอพจากโฟลเดอร์นั้น

วิธีแก้ปัญหาอย่างรวดเร็วคือ sym-link ไฟล์เดสก์ท็อปที่ต้องการเช่น:

ln -s /var/lib/snapd/desktop/applications/rubymine_rubymine.desktop .local/share/applications

5

แพ็คเกจ snap ไม่แสดงในตัวเรียกใช้งานหรือไม่?

พวกเขาทำตราบใดที่สแน็ปจัดส่งไฟล์ .desktop ที่เหมาะสม มีเพียง Meshlab's เท่านั้นที่meshlabserverมีไฟล์เดสก์ท็อปที่เหมาะสม meshlabไฟล์เดสก์ทอป แต่เป็นความพยายามที่จะ exec เมื่อมันก็ควรจะใช้meshlab.meshlab meshlabเป็นผลให้มันไม่ปรากฏขึ้น

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

หากคุณเรียกใช้snap info meshlabคุณจะเห็นข้อมูลติดต่อของผู้จัดพิมพ์ ฉันแนะนำให้คุณรายงานข้อผิดพลาดให้พวกเขา คุณสามารถเรียกใช้meshlabจาก CLI ได้ตลอดเวลาหรือสร้างไฟล์ .desktop ของคุณเอง


5

ใช้ Kubuntu 18.04 ทางออกสำหรับฉันเป็นการเพิ่ม

export XDG_DATA_DIRS="$XDG_DATA_DIRS:/var/lib/snapd/desktop/"

ไปยังไฟล์ที่กำหนดเองเช่นในsnap-apps.sh ~/.config/plasma-workspace/envแต่นั่นใช้ได้เฉพาะกับ Plasma 5 และอาจได้รับการแก้ไขใน Ubuntu 18.10 แล้ว

ในฐานะที่เป็น dsager ได้กล่าวถึงแล้วในคำตอบของเขา/etc/profile.d/apps-bin-path.shดูเหมือนจะไม่ทำงาน


2
สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบ - ผู้ใช้ Kubuntu
จอห์น

ขอบคุณ! แก้ไขปัญหาให้ฉันด้วย Kubuntu
ДмитрийПолянин

3

คุณต้องเรียกใช้snap run meshlabจากเทอร์มินัลแล้วหยุดมันจากนั้นคุณจะเห็นMeshlabในรายการแอปพลิเคชันของคุณ


3

ฉันไม่สามารถแสดงความคิดเห็นในโพสต์ของคนอื่น อย่างไรก็ตามนี่คือการเพิ่มคำตอบของ dsager ซึ่งช่วยฉันใน Fedora 28 (ซึ่งเท่าที่ฉันสามารถบอกได้ใช้ Wayland)

ฉันเพิ่ม snip ต่อไปนี้ใน ~ / .bash_profile เพื่อลิงก์ในการล็อกอินแต่ละไฟล์ใน / var / lib / snapd / desktop / applications ในทำนองเดียวกันสิ่งนี้สามารถแก้ไขได้เพื่อลบลิงก์สำหรับแอปที่ไม่มีอยู่อีกต่อไปโดยการเปลี่ยนเส้นทางในสำหรับบรรทัดและถ้าบรรทัดจากนั้นแทนที่ ln ด้วย rm

for i in /var/lib/snapd/desktop/applications/*.desktop; do
    if [ ! -f ~/.local/share/applications/${i##*/} ];then
            ln -s /var/lib/snapd/desktop/applications/${i##*/} ~/.local/share/applications/${i##*/};
    fi;
done

อาจมีวิธีที่แตกต่างกันจำนวนหนึ่งในการทำสิ่งนี้ให้สำเร็จ แต่ก็ใช้งานได้


1
lsการใช้งานที่ไร้ประโยชน์ของ ใช้for in /var/lib/snapd/desktop/applications/*.desktop; do i="${i##*/}"; ...แทน ln -st ~/.local/share/applications /var/lib/snapd/desktop/applications/*.desktop 2>/dev/nullวิธีที่สั้นลงเพื่อให้บรรลุนี้จะเป็น
David Foerster

ฉันรู้ว่ามีวิธีในการดำเนินการตัวอย่างแรกของคุณ แต่ฉันจำไม่ได้ว่าส่วน $ {i ## * /} เมื่อฉันเขียนตอนนี้ ฉันจะแก้ไขโพสต์ของฉันเพื่อรวมตัวแปรนั้น อย่างไรก็ตามคำแนะนำหลังของคุณไม่ได้ตรวจสอบว่ามีลิงก์อยู่แล้วดังนั้นจึงไม่สามารถเรียกใช้คำสั่ง ln ได้อีกครั้ง ในความเป็นจริงฉันต้องการค้นหาวิธีที่จะหลีกเลี่ยง grep และลดจำนวนของกระบวนการที่ปั่นในขณะดำเนินการ ขอบคุณสำหรับความคิดเห็นของคุณ
Eric Niconovich

ข้อเสนอแนะที่สองของฉันจะตรวจสอบว่าไฟล์เป้าหมายมีอยู่แล้วและหากเป็นกรณีนี้ให้พิมพ์ข้อความแสดงข้อผิดพลาด (เปลี่ยนเส้นทางไปยัง/dev/nullและถูกระงับ) มันไม่ได้ทำอะไรที่“ ไร้ประโยชน์”: มันใช้เวลา & & exec ของครั้งเดียวและทำให้ระบบหนึ่งเรียกไปยังsymlink(2)หรือsymlinkat(2)สำหรับแต่ละไฟล์ที่ตรงกัน หากคุณใช้การวนซ้ำเพื่อตรวจสอบประเภทของไฟล์ ( stat(2)) จากนั้น (ตามเงื่อนไข) ทางแยก & exec ln(1)ที่เรียกใช้งานsymlink*(2)นั้นจะ“ ไร้ประโยชน์” มากกว่า
David Foerster

1

สิ่งเดียวกันกับเครื่องปั่น

snap run blender

ใช้งานได้ แต่ไม่ได้แก้ปัญหา

ฉันต้องคัดลอกblender.desktopจาก/snap/blender/current/blender.desktopไปยัง/usr/share/applications(ด้วยsudo) จากนั้นทั้งหมดได้รับการแก้ไข: เครื่องปั่นแสดงในเมนูคำพังเพยและ nautilus เชื่อมโยงกับ.blendไฟล์

ดูเหมือนว่ารอยแตกระหว่าง snaps และ gnomes กับฉัน บางทีสิ่งที่เราต้องการก็คือคำพังไว (หรือว่าเป็นคำพังเพย; ^)


1
สวัสดีฉันทำตามที่คุณบอก แต่ตอนนี้ฉันมีสองไอคอนสำหรับทุกโปรแกรมที่ฉันทำสิ่งนี้ ... ดูi.imgur.com/aamlQJZ.pngสิ่งนี้เกิดขึ้นกับคุณหรือไม่
Cirelli94

1

คัดลอกทางลัดแอปพลิเคชันจาก/var/lib/snapd/desktop/applications/ไปยัง/usr/share/applications/

ตัวอย่าง: sudo cp /var/lib/snapd/desktop/applications/brave_brave.desktop /usr/share/applications/

ฉันต้องทำเช่นนี้กับ GalliumOS 3.0 (ใช้ Xubuntu)


0

ฉันพบปัญหาเดียวกันบน Ubuntu 18.04 ดูเหมือนว่าจะมีปัญหากับ Wayland ทางออกสำหรับฉันคือเปลี่ยนกลับจาก Wayland เป็น Xorg

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