如何正确运行/opt 中的AppImage和其他程序?

如何正确运行/opt 中的AppImage和其他程序?

我认为安装应用程序来/opt

因此,每当我下载程序时,我都会将其放在 中/opt。但是,其中一些是 AppImage,一些是文件夹。

但是,现在要运行其中一个应用程序,我必须/opt/pathtoapp/从终端提示符运行 - 并且通常是sudo由于应用程序位于 中opt

有没有一种简单的方法来制作桌面图标,将其添加到我的系统并使该应用程序被识别为本机应用程序(就像打开其他文件一样)并且在位于时无需 sudo 权限运行/opt

答案1

appimaged是一个可选的守护进程,它监视 AppImages 的某些位置,如果检测到某些位置,则将它们注册到系统中,以便它们显示在菜单中、显示其图标、关联 MIME 类型等。如果 AppImages 被删除,它还​​会从系统中再次取消注册它们。

appimaged将从以下位置向你的系统注册 AppImages:

  • $HOME/DownloadsG_USER_DIRECTORY_DOWNLOAD(或其本地化等价物,由glib决定 )
  • $HOME/.local/bin
  • $HOME/bin
  • $HOME/Applications
  • /Applications
  • [any mounted partition]/Applications
  • /opt
  • /usr/local/bin

https://github.com/AppImage/appimaged#monitored-directories

答案2

您需要做的事情很少外部安装的应用程序以便将其“集成”到您的系统中。但首先让我们明确安装目录:


安装目录

/opt是一个文件夹全系统存储和安装外部安装的应用程序。

~/.local/是一组文件夹仅限你的用户存储和安装相同的应用程序。

注意:~表示$HOMEvar,通常是/home/your_username- 您的主文件夹


Sudo 问题

sudo除非应用程序本身需要 root 权限,否则应用程序不应该需要保存在任何地方。请检查以下内容:

  1. 如果应用程序文件的文件权限没有问题:

    您可以在互联网上了解 Linux 的权限系统。这里有一个教程:https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions

    该文件应该具有(当ls -l [filename])这些权限:

    775 =rwxrwxr-x

    注意:更改权限可能很危险。

    如果不是,则:chmod 775 filename

  2. 如果全部包含此应用程序文件的文件夹具有正确的权限:

    775 =rwxrwxr-x

    如果没有,只需chmod 775 folder

  3. 如果应用程序不尝试访问具有不匹配权限的任何文件:

    这可能更难检查,但通常情况下,您只需使用(例如)-v选项在应用程序上启用调试模式(因应用程序而异 - 您有时可以通过--help手册或信息页面找到)然后查看应用程序打印出的错误。

    注意:您可以在论坛(如这里)询问导致问题的应用程序。请记得提供:

    1. 问题是什么
    2. 应用程序是什么
    3. 日志 -真的很重要。这些可以帮助人们了解问题的原因。

    警告:对于这个问题,你没有告诉我们你使用sudo这些应用程序的原因!如果这些方法都不起作用,那肯定是因为我们不知道你的电脑里发生了什么!)


DE“一体化”

DE = 桌面环境

应用程序启动器保存在文件中(就像 Linux 上的所有内容一样)。

获取有关文件的更多信息AppName.desktophttps://developer.gnome.org/integration-guide/stable/desktop-files.html.enhttps://wiki.archlinux.org/index.php/Desktop_entries

在大多数 Linux 发行版(包括 Ubuntu)中,AppName.desktop都会使用文件。如果您使用的应用程序不提供这些,您可以自己创建一个(不仅适用于应用程序)。

只需将其放入名为AnyNameYouWantHere.desktopfile: 的文件中即可。

[Desktop Entry]
Type=Application
Name=Total Legit App Name
Comment=Lorem ipsum Comment Magic
Icon=/path/to/icon.png
Exec=/home/your_username/.local/share/AppName/AppImage
Terminal=false
Categories=game

注意:exec 不必是 AppImage,只要是可执行文件即可。请检查您的应用。此外,请按照上一章所述检查权限 (775)。

然后运行:

xdg-desktop-menu install --novendor AnyNameYouWantHere.desktop

您也可以提供--mode选项:(根据 xdg-desktop-menu 的手册页)

--mode mode

mode可以是用户或系统。在用户模式下,文件仅为当前用户安装(卸载)。在系统模式下,文件为系统上的所有用户安装(卸载)。通常,只有 root 才允许在系统模式下安装。

默认情况下,当由 root 调用时使用系统模式,当由 user 调用时使用用户模式

您现在可以删除该文件 -xdg-desktop-menu已将其复制到其自己的位置。


笔记:管理默认使用的应用程序应该在系统选项中。


Shell 集成

要从 shell 运行应用程序而不需要提供其整个位置,您必须将其添加到您的 PATH 中。

您可能会问,什么是 PATH......

$PATH 是 shell 中的一个变量,它告诉bashdashzsh或任何其他 shell 应用程序保存在哪里。在大多数系统中,它里面会有类似这样的内容:

$PATH=/bin:/usr/bin

注意:PATH 在大多数系统中都可用。甚至 MS Windows 也有一个等效的版本。

这会告诉你的 shell,当你在其中输入应用程序名称时,它应该在这些位置寻找它。

那么将应用程序保存在哪里呢?

如果它是全系统已安装:

只需将其链接到/usr/bin目录中:

ln -s /opt/amazingapp/AppImage /usr/bin/

注意:您应该以符​​号和绝对方式链接它,而不是相对方式。(这取决于使用类型。)有关链接的更多信息,请参见此处:https://en.wikipedia.org/wiki/Ln_(Unix)和这里:https://en.wikipedia.org/wiki/Symbolic_link

如果它是用户已安装:

再次像上面一样链接它,但这次链接到/home/your_username/.local/bin,然后添加/home/your_username/.local/bin到您的 PATH 中(如果它尚未添加到其中)。(大部分信息在此处:https://unix.stackexchange.com/a/26059/316299)您可以在链接程序后,通过关闭并再次打开 shell,然后尝试应用程序的全名来测试。

相关内容