有时,我手动安装应用程序,而不是使用apt或其他软件包管理器。

“最佳做法”建议用户安装应用程序的位置(/usr//usr/local//opt//home/等)在什么位置?

评论

我喜欢经常从源代码安装东西,所以我写了一个小工具来完成它,它可以对您的Shell启动文件进行单独更改(如果需要,还可以修改库前缀,以供依赖共享库的程序使用) )。功能不是很丰富,但是99%的时间都可以工作。

相关文章:askubuntu.com/q/138547/62483

关于/ opt和/ usr / local之间区别的精彩讨论:unix.stackexchange.com/q/11544/11917

另请参见文件系统层次结构标准中的“目的”小节。

#1 楼

这确实取决于。如果应用程序具有makefile,或者例如对于python应用程序,如果该应用程序使用distutils(例如,具有setup.py文件)或类似的构建/安装系统,则应将其安装到/usr/local/中。这通常是默认行为。

据我了解,/usr/local/的层次结构类似于/usr/。但是,诸如/usr/bin//usr/lib/之类的目录通常保留给通过apt安装的软件包。因此,期望“安装”到/usr/中的程序应该可以在/usr/local/中正常工作。

如果只需要提取压缩包并直接运行(例如Firefox),则将其放入/opt/中即可。一个程序只需要一个目录,并且会获取与该目录相关的所有文件/库,则可以在/opt/中为其自身获取一个目录。

评论


似乎有很多人忘记了opt /-在我看来,您已经达到目的了。

– Marco Ceppi♦
2010年8月5日在15:23

从/ usr / bin建立符号链接,或将其添加到〜/ .bashrc中的PATH中

– Alex
2014年6月25日在2:24

那〜/ .local / share呢? @马可

– Lakindu Akash
19年2月9日在15:43



您可以在〜(您的主目录)中安装东西,但这将使应用程序只能由一个用户访问。系统上的其他用户将必须安装并维护自己的软件安装。至于安装应用程序的最佳实践,请安装主目录,我相信这里没有那么强的指导原则,因为您不会干扰系统软件包。

– Umang
19年2月10日在16:43

@JARC,仅适用于系统上的一个用户(在您的情况下为“ ubuntu”用户)。

– Umang
19年7月2日在20:36

#2 楼

谨记/usr并不代表用户,而是unix系统资源。

因此,我倾向于认为任何发行版都有权在/usr,的所有内容上脚,并且我的特定该系统的附加内容放入/usr/local中,我在进行升级之前将其保留。

同时,应用程序和其他内容也包含在/opt中。

有些人会觉得放心地将它们放入/home ,尽管我很少遵循该约定。

所有这些,我让分发程序包管理器首先按其方式进行操作,然后在手动滚动时进行上述操作。

评论


值得记住的是,“ unix系统资源”是在添加“ / home”之后执行的重命名。在古老的年代(Unix版本6等)中,您会看到/ usr / jimmy,/ usr / siobhan,/ usr / ahmed等目录,因为“用户”目录存储在/ usr中。

– Mark Leighton Fisher
2012年11月20日18:52

好吧,我咬一口:opt代表什么?

–赛斯
2015年5月12日在2:17

@Seth我认为它是“可选”的-最初用于不属于默认安装的软件。

–卡尔H
2015年6月13日14:53

/ usr是用户。那是因为linux用户是开发人员。首先,它开始面向开发人员和用户,因此引入了/ home目录。然后有人想到说这意味着Unix系统资源,这实际上没有意义,因为我们在/ dev中拥有Unix系统资源。

–信息屏幕
16 Dec 17 '14:47

正确,/ usr是一个反义词。自从1969年Unix在PDP-7上运行以来,目的就改变了。

–瓦尔特·石炉
17年12月28日在17:57

#3 楼

在/ home / user / opt /中安装不稳定的程序(例如firefox devel)使其更容易删除,并且对于其他用户应该使用的版本也没有任何困惑。因此,如果不是全球通用的程序,请安装

永远不要将程序安装在/ usr /中,否则可能会造成混乱,安装在/ usr /中的内容仅用于分发软件包。 / usr / local /用于本地编译的软件包。而且该结构的工作方式完全相同! / usr / local /中的文件将优先于/ usr /

/ opt /中的文件,该文件应用于安装预编译的(二进制)软件包(Thunderbird,Eclipse,Netbeans,IBM NetSphere,等)等。但是,如果它们仅用于单个用户,则应将它们放在您的主目录中。

如果您希望能够运行安装在“怪异”位置(例如/ home / user / opt / firefox /),而无需键入将其添加到$ PATH变量中所需的完整路径,您可以在/home/user/.profile

export PATH=/home/user/opt/firefox:$PATH


文件夹名称应该是您需要运行的可执行文件所在的位置。

#4 楼

Linux文件系统层次结构标准指示/usr/local

来自http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html:


'/ usr / local'背后的原始想法是在'/ usr'之外的每台机器上都有一个单独的('local')
'/ usr'目录,该目录可能只是
挂载为-只能从其他地方来。它复制
'/ usr'的结构。如今,“ / usr / local”在
中被广泛认为是保存自编译或第三方程序的好地方。 / usr / local
层次结构供系统管理员在本地安装
软件时使用。更新
系统软件时,必须确保它不会被覆盖。它可用于在一组主机之间可共享但在/ usr中找不到的程序和数据。本地安装的软件必须放置在/ usr / local而不是/ usr
中,除非要安装该软件来替换或升级/ usr中的软件。


评论


似乎与/ usr / local的内容与opt页面上的信息相矛盾:tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html“”该目录保留给所有以下软件和附加软件包不属于默认安装。例如,通常在此处找到StarSuite,Kylix,Netscape Communicator和WordPerfect软件包。为了符合FSSTND,所有第三方应用程序都应安装在此目录中。“ ...”(类似于Windows将新软件安装到其自己的目录树C:\ Windows \ Progam Files \“ Program Name的方式“)”

– Pod
16年8月4日,11:15



#5 楼

我通常在家里有一个名为“程序”的文件夹,用于安装这些程序,这很奇怪(或不奇怪),它们现在都是Java东西。

对我来说,这是我的一大优势重新安装或更改他们随我家其他地方移动的计算机。它有一个明显的缺点,即这些应用仅对我的用户可用。

评论


如何重新安装Ubuntu 16.04,而又不会丢失主文件夹中的数据?我尝试仅通过formate /目录执行操作,然后键入相同的旧用户名和密码,但是我发现Ubuntu创建了另一个主文件夹。

–易卜拉欣·迪索基(Ibrahim Disouki)
17年12月30日14:56



#6 楼

使用“ checkinstall”将您的外来软件包转换为deb,以便可以使用软件包管理器将其卸载。

请注意,配置文件通常不会被当作配置文件处理(可能被忽略,或者可能被视为应用程序的一部分),并且安装前和安装后脚本有时会变得混乱通常会在您认为Deb的安装前或安装后脚本错误时警告您。