如何告诉Ubuntu在哪里安装程序以及如何判断现有程序的安装位置?
我是Ubuntu / Linux的新手,目前使用的是Ubuntu Server。 只想弄清楚一些基本的东西。
你怎么知道你在哪里安装程序。 例如,我刚安装了Sphinx搜索引擎,将我从他们网站下载的tarball放到我的:
/home/sphinx
目录。 我创建了sphinx目录来放置tarball。然后我运行了这些命令:
tar xvzf sphinx-0.9.8.1.tar.gz cd sphinx-0.9.8.1/ ./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql
然后这些:
make sudo make install
现在我有很多文件位于我运行这些命令的目录中。 这是我的Spynx安装还是安装在其他地方?
在Windows中,如果您在程序仍将安装在C:\ Program Files目录中的任何位置运行安装程序(.exe文件)。 类似的东西适用于所有程序都安装在中央位置的linux,或者你可以在系统的任何地方安装程序。
问题
-
我希望将所有已安装的程序保存在一个位置,以便在最佳实践方面适合这样做。 换句话说,什么是Linux相当于C:\ Program Files?
-
如何总是在这个位置安装,只是放置tarball并从这个位置运行安装命令?
-
如果我使用sudo apt-get来安装软件包呢? 我如何指向这个位置告诉apt-get始终安装在那里?
类似的东西适用于所有程序都安装在中心位置的linux
在Linux中大致相当于Windows安装目录
-
\Windows
=/bin
-
\Windows\System32
=/lib
和/sbin
-
\Program Files
=/usr/bin
和/usr/lib
我希望将所有已安装的程序保存在一个位置,以便在最佳实践方面适合这样做。 换句话说,什么是Linux相当于C:\ Program Files?
那将是/usr
下的目录,特别是/usr/bin
和/usr/lib
。
如何总是在这个位置安装,只是放置tarball并从这个位置运行安装命令?
-
不,您在运行安装命令时的位置几乎不重要。
-
您通过
apt-get
(或aptitude
)安装的程序几乎总是在/usr
正确结束。 但是你从源代码编译的程序和make install
会经常会出现在/usr/local/bin
,/usr/local/lib
等中,你可能会遇到问题,因为Debian / Ubuntu中用户安装的路径是/usr
而不是/usr/local
。 -
从源代码编译时,将此开关添加到configure:
./configure --prefix=/usr
。 这样,当您make install
,文件将最终出现在正确的目录中 -
另请
checkinstall
程序,该程序跟踪从源安装程序编译的程序包的文件,生成deb文件,并允许轻松卸载/重新安装。
如果我使用sudo apt-get来安装软件包呢? 我如何指向这个位置告诉apt-get始终安装在那里?
apt-get
/ dpkg
自动处理这个问题。 您可以使用dpkg -L name-of-package
查看程序包安装的所有文件及其安装位置。
通常程序安装在一个顶级目录下的几个目录中,称为前缀 。 使用哪个顶级目录取决于谁正在安装,为了女巫目的以及谁将管理软件。
前缀/usr
是由您的发行版打包使用的软件。 您不应该在那里安装任何其他软件,因为在安装和升级分发包装的软件时,它会混淆分发。 所以请不要在那里安装自己编译的软件。 这不是一个好主意,除非你真的知道你做了什么。 除非您是Debian或Ubunut开发人员,否则通常不会。 反正我也不会这样做。
对于商业软件,使用前缀/opt
。 它保留给他们干扰最少的发行版和本地系统管理员。
对于系统管理员为所有用户安装的软件,使用前缀/usr/local
。 从商业或分销安装中解脱出来并且不会干扰它们。 因此,作为系统管理员,您可以使用它(如果您具有root权限,则您是系统管理员)。
如果您是普通用户自己安装软件,可以使用主目录作为前缀,使用--prefix
选项configure
前缀目录“ ~/
”或$HOME/
。 当我还是学生时,我经常使用它。 🙂
当你使用带有正确值的选项--prefix
执行configure
然后make; make install
时,软件通常做正确的事情make; make install
make; make install
。
在任何这些前缀下,您通常会在标准安装中找到这些目录。
-
bin
– 可执行程序,二进制文件。 -
sbin
– 系统二进制文件,通常不应由普通用户执行。 -
man
– 程序,库和配置文件等的手册页。 -
etc
– 配置文件,包含软件的默认值。 -
lib
– 依赖于计算机中的体系结构(如CPU)的程序库和数据文件。 -
share
– 在不同体系结构上没有不同的数据文件,可以在不同的计算机之间共享。 -
var
– 在程序执行期间更改数据的目录。 像记录文件等
这些目录中的大多数可以与写保护文件系统一起使用以提高安全性。 用户需要写入的唯一一个是var/
目录。 当软件更新时,这些目录显然(?)需要具有写入权限。 这可以通过在安装期间具有写权限的重新装入来完成,然后在安装后以只读方式重新装入。 但这是先进的,我只是将它作为高级包管理的一个例子。
在/
(根目录)下也有一些目录在任何其他前缀下都不存在,例如/dev
, /tmp
, /proc
和/srv
(对于服务器数据目录,但它们通常位于/var/lib
或/var/www
和这样的目录,因此您需要更改配置以使用此目录。我建议您在运行服务器时执行此操作。仅使用/var/
来测试标准安装)。
- Linux不是MS Windows。 您可以安装许多程序放置程序。 这取决于谁安装和谁。 在我的post中阅读它。 注意。 RedHat使用
/usr
作为Debian / Ubuntu使用/usr/local
。 了解您的发行版。 - 不同的程序有不同的安装方法。
--prefix
对于使用configure
程序很有用。 最好的方法是阅读README.txt
文件或类似的东西,你可能会在tar存档中提供它。 tar存档可以在任何地方提取,例如您的主目录。 完成安装步骤后,如果存储空间不足,则可以删除提取的tar存档。 但是,除非您已正确测试安装,否则不要提前做到这一点。 - 使用
apt-get
或aptitude
安装的程序始终安装在适当的分发位置。 你不能改变那个地方。
使用正常安装从存储库安装程序时,它将安装到正确的位置,在正确的位置创建配置文件(function类似于Windows注册表),并自动创建菜单项。
当您下载文件时(非首选,但在应用程序不在存储库中时通常是必需的),那么您所做的第一件事就是运行tar,相当于在Windows上解压缩。 这会创建您最有可能看到的文件。
然后,当你运行make install时,通常会将结果放在正确的位置,也许会创建菜单,但它不会删除未经编译的文件。 你最有可能这样做,但你可能想暂时保存它们以防万一。
这是一篇关于Debian目录结构的有趣文章。
- Ubuntu 12.04 GPG错误:http://archive.ubuntu.com精确发布:以下签名无效:NODATA 1 NODATA 2
- 更新时出现“哈希和不匹配”错误
- 如何在ubuntu 15.10上安装或卸载半安装的mysql-client-5.6?
- Apt安装挂起/冻结尝试运行更新没有错误17.10
- Apt sources.list问题,找不到包?
- 我清除了TZData,现在Lubuntu无法启动! 救命!
- 如何为dpkg设置默认选项–configure -a?
- E:某些索引文件无法下载。 它们已被忽略,或者在apt-get update之后使用旧的
- “/etc/grub.d/README:6:语法错误:”(升级grub包时出现“意外”)