微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何devise与Windows相关的Linux软件?

我有一个应用程序,我已经写了Windows,我正在移植到Linux(Ubuntu具体)。 问题是我一直使用Linux,从来没有真正开发过它。 更具体地说,我不了解系统的基本布局。 例如,我应该在哪里安装我的软件? 我希望它是所有用户都可以访问的,但我需要写入该区域的权限来编辑我的数据文件。 此外,我怎样才能以程序化的方式确定软件的安装位置(而不是简单地从哪里调用)? 在Windows中,我使用registry来查找具有所有相关信息的configuration文件,但在Linux中没有registry。 谢谢!

ARM开发板问题

什么是摆脱“警告C4267可能的数据丢失”的最佳策略?

任何方式来反编译古代编译器构build的二进制资源文件

为什么malloc有时不工作?

Linux的Windows到C + +端口

文件系统层次结构标准 (错误 – 不是标准)对你很有帮助; 它清楚地描述了管理员对数据存储位置的偏好。

既然你是第一次打包你的软件,我想建议做的很少 。 Debian,Ubuntu,Red Hat,SuSE,Mandriva,Arch,Annvix,Openwall,PLD等,都有自己的特点,关于如何最好地打包软件。

建造

你最好的办法是提供一个代码压缩包,并且希望那些发布版本的用户或者打包者能够为你打包。 用户可能会下载tarball,解包,编译和安装。

为了构建你的软件, make(1)是通常的标准。 其他工具存在,但是这个在任何地方都是可用的,而且非常合理。 (即使语法是胡思乱想的 。)用户将期望能够运行: make ; make install make ; make install或者./configure ; make ; make install ./configure ; make ; make install ./configure ; make ; make install以建立并安装你的软件到/usr/local认。 ( ./configure是autotools工具链的一部分,特别是提供./configure --prefix=/opt/foo ,允许用户一个命令行参数改变安装软件的位置。我试图避免autotools尽可能地,但在某些时候,用便携式软件编写便携式软件要比没有便携式软件更容易。)

打包

如果您确实想要提供一站式打包服务,那么Debian Policy Manual将提供如何打包软件的规范规则。 “ Debian新维护者指南”将为Debian和Debian派生系统的软件包提供一个更加亲切,温和的步骤。

Ubuntu的打包指南可能有特定于Ubuntu的细节。 (我还没看过。)

组态

当涉及到应用程序的配置文件时,通常一个文件存储在/etc/<foo> ,其中<foo>表示程序/软件包。 有关名称解析的详细信息,请参阅/etc/resolv.conf ;有关包含文件系统的设备列表的/etc/fstab ,以及sudo(8)配置的/etc/sudoers , /etc/apt/ apt(8)包管理系统等

有时应用程序也提供每个用户的配置; 这些配置文件通常存储在~/.foorc或~/.foo/ ,以防整个目录比文件更有用。 (请参阅~/.vim/ , ~/.mozilla/ , ~/.profile等)

如果您还想提供一个-c <filename>命令行选项来告诉您的程序使用非标准的配置文件,那么这有时候非常方便。 (特别是如果你的用户可以运行foo -c /dev/null来启动完全认的配置。)

数据文件

用户将他们的数据存储在他们的主目录中。 你不需要做任何事情; 只需确保使用getenv("HOME")启动目录导航框或通过sprintf(config_dir,"%s/%s/config",getenv("HOME"),".application");加载配置文件sprintf(config_dir,".application"); 或类似的东西。 (他们将无权写入除主目录和/tmp/大多数站点之外的任何地方。)

有时候所有的数据都可以存储在一个隐藏的文件或目录中; 例如, ssh(1)将其所有数据保存在~/.ssh/ 。 通常,用户需要ssh-keygen(1)的认kry名称,以便ssh-agent(1)能够以最少的麻烦找到密钥。 (认使用~/.ssh/id_rsa 。) shotwell(1)照片管理器提供了一个托管体验,类似于Apple的iPhoto.app 。 它可以让用户选择一个起始目录,但在其他方面组织文件和目录。

如果你的应用程序是一个通用的程序,你可能会让你的用户选择自己的文件名。 如果他们希望将数据直接存储到安装在/dev或/media的记忆棒或挂载到/automount/blah的远程文件系统,则它们的主目录,在机器上服务的内容的/srv/目录或/tmp/让他们。 用户需要为其数据选择合理的文件名和目录。 用户已经拥有适当的权限了 。 (不要试图提供用户没有权限的位置写入的机制。)

应用程序文件安装和所有权

在Linux系统上安装应用程序有两种常用的方法

管理员为每个人安装一次。 这是平常的。 这些程序由root或bin或adm或类似的帐户拥有。 这些程序以用户执行的方式运行 ,因此他们可以获得用户创建和读取文件的权限。 如果使用分发打包文件打包,则可执行文件通常位于/usr/bin/ , /usr/lib/库中,而非对象文件(图像,模式等)将位于/usr/share/ 。 ( /bin/和/lib/用于在早期启动或救援环境中需要的应用程序/usr对于网络中的所有机器可能是共同的,在启动过程中,只读安装)。细节。)

如果程序是未封装的,那么/usr/local/将成为起点: /usr/local/bin/ , /usr/local/lib/ , /usr/local/share/等。 。

用户将应用程序安装到其主目录中。 这是不太常见的,但是许多用户将有一个~/bin/目录,在那里他们存储shell脚本或程序,或者从~/Local/<foo>/目录中链接程序。 (这个名字没有什么魔力,这只是我几年前的第一个想法,其他人选择了其他的名字。)这就是./configure --prefix=~/Local/blah自己付出的代价。

在Linux中,一切都是文本,即ASCII。

配置存储在通常具有.conf扩展名的配置文件中,并存储在/ etc文件夹中。

您的应用程序的可执行文件通常驻留在/usr/bin文件夹中。 您的应用程序的数据文件可以到/usr/lib或/usr/文件夹中的文件夹。

考虑使用哪种语言编写应用程序非常重要。在C / C ++中,使用自定义makefile进行安装,将这些文件复制到相应的文件夹中。 通过跟踪.conf文件并在使用bash脚本生成时存储位置,可以跟踪安装的位置。

你应该真的知道bash脚本为了自动化这一切。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐