我对 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
现在,我运行这些命令的目录中有很多文件。这是我的 Sphinx 安装还是安装在其他地方?
在 Windows 中,如果您在任何地方运行安装程序(.exe 文件),该程序仍会安装在您的 中C:\\Program Files directory
。Linux 是否也有类似的情况,所有程序都安装在一个中心位置,或者您可以在系统的任何位置安装程序?
我希望将所有已安装的程序保存在一个地方,那么从最佳实践的角度来看,哪里是正确的地方呢?换句话说,Linux 的等价物是什么C:\\Program Files
?
并且如何始终在此位置进行安装,是否仅需放置 tarball 并从此位置运行安装命令?
如果我使用它sudo apt-get
来安装包怎么办?我怎样才能指向此位置以告诉apt-get
它始终安装在那里?
答案1
类似的事情是否适用于 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
来查看软件包安装的所有文件以及它们的安装位置。
答案2
通常程序安装在同一个目录下的几个目录中顶部目录,称为字首. 使用哪个顶级目录取决于谁在安装、出于什么目的以及谁将管理该软件。
前缀/usr
是你的发行版所打包的软件。你应该不是在那里安装任何其他软件,因为它将要在安装和升级发行版打包的软件时混淆该发行版。
对于商业软件,使用前缀/opt
。它保留给它们以尽量减少对发行版和本地系统管理员的干扰。
对于系统管理员为所有用户安装的软件,/usr/local
使用前缀。
如果你是普通用户,可以自己安装软件,使用主目录作为前缀,方法是使用带前缀目录“ ”或 的--prefix
选项。我当学生时经常用这个。:-)configure
~/
$HOME/
通常,当您使用具有正确值的configure
选项执行时,软件会做正确的事。--prefix
make; make install
在任何这些前缀下,您通常可以在标准安装中找到这些目录。
bin
- 可执行程序,二进制文件。sbin
- 系统二进制文件,通常不应由普通用户执行。man
- 程序、库和配置文件等的手册页。etc
- 具有软件默认值的配置文件。lib
- 依赖于计算机架构(如 CPU)的程序库和数据文件。share
- 数据文件在不同的架构上没有差异,并且可以在不同的计算机之间共享。var
- 包含在程序执行期间发生变化的数据的目录,如日志文件等。
大多数目录都可以与写保护文件系统一起使用,以提高安全性。用户唯一需要写入的是目录var/
。
当软件更新时,这些目录需要具有写入权限。通常不需要执行任何操作,但如果需要,可以在安装期间使用写入权限重新挂载,然后在安装后使用只读权限重新挂载。但这是高级操作,我仅将其作为高级软件包管理的一个例子。
还有一些直接位于(根目录)下的目录不/
存在于任何其他前缀下,例如/dev
、/tmp
和(用于服务器数据目录,但它们通常位于或和类似的目录下,因此您需要更改配置才能使用此目录。我建议您在运行服务器时这样做。仅用于测试标准安装)。/proc
/srv
/var/lib
/var/www
/var/
不同的程序有不同的安装方法。--prefix
对于使用 的程序很有用configure
。了解的最佳方法可能是阅读README.txt
文件或类似的东西,它可能在 tar 档案中提供。
tar 存档可以解压到任何地方,比如您的主目录。安装步骤完成后,如果存储空间不足,您可以删除解压的 tar 存档。但最好保留该目录,因为您经常会使用它来卸载。
随发行版一起安装的程序apt-get
或aptitude
始终安装在发行版的正确位置。您无法更改该位置。
答案3
当您使用常规安装从存储库安装程序时,它将安装到正确的位置,在正确的位置创建配置文件(功能类似于 Windows 注册表),并自动创建菜单项。
当您下载文件时(非首选,但当应用程序不在存储库中时通常是必要的),您要做的第一件事就是运行 tar,相当于 Windows 上的 unzip。这会创建您最有可能看到的文件。
然后,当您运行 make install 时,通常会将结果放在正确的位置,可能会创建菜单,但不会删除未压缩的文件。您很可能可以这样做,但您可能希望暂时保存它们以防万一。
这是一篇有趣的文章Debian 目录结构。