安装用户应用程序时,“最佳做法”建议将其放置在哪里?


210

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

什么位置(/usr//usr/local//opt//home/是由安装的用户应用程序的“最佳实践”的建议,等等)?


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


1
上的区别大讨论/opt/usr/localunix.stackexchange.com/q/11544/11917
blong

Answers:


184

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

据我了解,/usr/local/它的层次结构类似于/usr/。但是,像/usr/bin//usr/lib/这样的目录通常保留用于通过安装的软件包apt。因此,期望“安装”到某个程序的程序/usr/应在中正常运行/usr/local/

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


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

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

1
~/.local/share呢 @Marco
ultimatex

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

1
在/ home / ubuntu / myapp下安装从tar解压缩的应用程序是否错误-与/ opt / myapp相比有什么区别?
JARC

116

最好记住,/usr它并不代表用户,而是unix系统资源

因此,我倾向于认为任何发行版都有权践踏全部内容,/usr,而我对系统的特定添加内容则是in /usr/local,我在升级之前将其保留下来。

同时,应用程序和其他事物进入/opt

有些人放心地放东西/home,尽管我很少遵循那种约定。

综上所述,我让分发程序包管理器按照自己的方式进行操作,然后在手动滚动时执行上述操作。


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

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

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

5
/ usr是User。那是因为linux用户是开发人员。首先,它开始面向开发人员和用户,/home因此引入了dir。然后有人有想法,说这意味着Unix System Resources,它并没有真正有意义的,因为我们有Unix system Resources/dev
信息屏幕

2
正确,/ usr是一个反义词。自从1969
。– Walt Stoneburner

34

在/ 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

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


26

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中的软件。


1
似乎与/ 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

6

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

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


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

1

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.