linux
为何linux安装程序会很麻烦?
一、为何linux安装程序会很麻烦?
同意老司机 @徐辰 。
我来解释一下为什么。
Linux下安装软件其实可以和Windows一样简便(其实是远比Windows简便);但安装软件的方式不止一种:和Windows下一样,你可以用正规的msi包自动安装;也可以从别人的机器把PS/CS/SC之类软件拷贝过来、甚至是直接拷源码自己编译。
不同之处在于,Windows下,msi/*install.exe这种标准方式,有程序员专门写了全套的安装配置程序,所以你一点就能装、装完能在开始菜单/桌面/系统控制面板的软件列表中看到它;但直接拷贝过来的,你得自己建立快捷方式、自己处理它在注册表和/或其他地方的注册/配置信息(否则可能压根无法运行)、稍有不匹配就无法运行——总之极为繁琐,而且往往“集成”不到控制面板。
Linux下也一样。
不过,Linux下,软件的维护较为简单,不像Windows那样“曲折隐晦”;因此如果你懂的话,也可以做到“手工安装”。
因此,网上就有了很多很多一知半解的劣质教程,热衷于教人从源码安装、从非正规来源强行安装——然后还可能和系统原有的软件产生冲突,产生种种棘手问题。
这种垃圾信息,中文互联网上尤其多——或者说,中文互联网反而极少正规的安装教程,越发凸显了这类不走正规路线的教程之多。
Linux下的软件安装,实质上有如下四种,“正规”程度依次递减:
1、使用标准的yum/apt/yast包管理程序安装
2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装
3、直接解压软件开发者的tar.gz包
4、自源码编译
其中:
1、使用标准的yum/apt/yast包管理程序安装
这种安装方式相当于苹果/安卓平台上的“应用商店”安装,是最安全可靠的安装模式。
通过这种方式安装的软件,不仅完全契合你的操作系统本身,而且可以保证和系统其他软件包的相容性,一般来说是不可能遇到冲突的。
Linux有很多发行版;其中一些面对服务器的版本会非常保守,里面的每一个软件都会经过连续多年的测试,稳定度极高。但相应的,这里面的软件就会老旧一些。典型如Redhat/CentOS/Debian(stable版)等。用这类版本就很容易遇到“急需的软件找不到”问题——因此,不建议你在桌面使用它们。
fedora、Ubuntu、Debian(testing)等版本内容相对较新,稳定度也还不错,建议用它们当桌面使用。这可以尽量减少你“找不到较新软件”的困扰。
2、使用标准rpm/deb或厂商自己的安装包(比如nVidia的显卡驱动用的bin包)安装
这种方式相当于Windows下的安装包安装,安全性/稳定度都还不错;但可能会因为你用了过新/过旧的安装包而和系统其他部分产生相容性问题——比如系统用python2.4你到网上拖了个python3或python1.5、又强行把它装上去还附加到路径最前,那么很可能就会造成其他依赖python的软件出现混乱。
另一个典型案例就是你装了nVidia的bin包之后,经常在系统更新(尤其是更新内核之后)无法进入图形界面。这就是因为nVidia的显卡驱动并没有被Linux软件仓库自动管理,因此出现了内核-驱动之间的不匹配问题。
所以,重复一遍:建议优先使用yum/apt/yast等命令,通过系统软件仓库安装应用。不建议自己下软件包安装。
哪怕是在Redhat系上安装其他地方下载的标准rpm包,都是不建议的。
3、直接解压软件开发者的tar.gz包
这种类似于Windows的“免安装绿色版”软件。
你可以把它解压到你自己的用户目录,然后在自己的bash.rc之类配置文件中,用export把它加入path——这样你才可以直接在shell中敲它提供的新命令。
这种方式适用于试用新软件、或者仅为自己使用而下载软件;不建议把它加入系统路径——也就是不建议用su取得超级用户权限、把它安装到系统目录。
因为这种东西和系统的相容性未经测试,后果完全不可预料。
4、自源码编译
这个方式和3类似,也不建议安装到系统目录。
因为它比3更不可靠:编译后的库文件、应用可能散落在诸多目录,一不小心就弄得到处都是垃圾、甚至可能覆盖掉系统本身自带的关键库,引起系统崩溃。
这种东西和3一样,未经系统包管理器“把关”,无法保证它不和系统组件相互覆盖。
除非你完全明白Linux里里外外都是怎么回事,否则不建议使用3/4安装方式。
当然,编译,然后放自己用户目录使用,这样还是安全的——换句话说,只要不动用root权限,随你怎么折腾。
5、其他特殊情况
python有个pip包管理器,可以自动安装各种python软件包,比如Django之类东西。
pip可以把软件安装到用户目录,也可以通过root权限安装到系统目录;但强烈不建议你动用root权限。
事实上,大多数Linux发行版的包管理器本身就可以通过系统软件仓库安装Django;你应该优先使用它而不是pip。因为前者可以保证不出现相容性问题。
当然,很多时候,Linux本身的软件仓库可能稍微“老旧”一些,让你得不到最新版的Django或者其他软件包;甚至有时候,它压根就没有某个流行python包。
这时候你可能不得不使用pip;那么,记住不要用su提升权限,让pip把软件包装给你自己用就行——如果的确需要多个账户一起用,那么可以把它安装到opt/var之类目录,但尽量不要让它直接进系统目录,以免造成混乱。
总结起来其实就一句话:如果你有丝毫含糊,请用系统软件仓库(yum/apt/yast),不要碰你不懂的东西!
——换句话说:对初学者来说,一个能解决你几乎所有需求的软件仓库才是最实惠的;因此请寻找软件仓库最新最全的Linux发行版(fedora/Ubuntu等),千万不要听所谓的“老鸟”瞎忽悠。
——同样的,如果你要寻找某个软件的安装/配置教程,请寻找和你使用的系统相同的、直接通过标准软件仓库(yum/apt/yast)安装的那种。除非是极不常见的小众软件、或者为了尝鲜某个软件最新版的某个新特性,凡让你绕开系统软件仓库的教程都是垃圾。
二、linux如何查看程序的运行参数?
如果是现在运行的程序你可以使用:ps aux|grep 程序名如果系统自带的命令,直接看man手册就很方便man ls
三、linux查看文件被哪个程序调用?
Linux 系统可以使用lsof(list open files)指令来查看某个文件被哪些程序调用。例如,可以使用下面的命令查看文件/var/lib/mysql/mysql.sock被哪些程序调用:
lsof -p /var/lib/mysql/mysql.sock
输入上述命令后,输出信息中,第一列是COMMAND,表示该文件被哪个程序调用,第二列是PID,表示调用程序的进程ID号,第三列是USER,表示调用程序的用户名。
四、linux最小安装如何查看?
要查看Linux的最小安装,可以使用以下方法之一:
1. 查看Linux发行版的官方文档或官方网站,通常会提供有关最小安装的详细信息。这些文档通常包含有关最小安装所需的最低硬件要求、安装选项和可用软件包的列表。
2. 在安装过程中选择最小安装选项。在大多数Linux发行版的安装程序中,您可以选择不同的安装选项,包括最小安装。选择最小安装选项将只安装操作系统的基本组件和最少的软件包。
3. 查看Linux发行版的软件包管理工具。大多数Linux发行版都提供了软件包管理工具,如apt、yum或dnf。您可以使用这些工具来查看已安装的软件包列表,并确定哪些软件包是最小安装所需的。
无论您选择哪种方法,了解Linux的最小安装对于了解系统的基本组件和资源要求非常重要,这对于优化性能和满足特定需求非常有帮助。
五、如何查看软件安装目录linux?
1. which
which命令查找出相关命令是否已经在搜索路径中,例子如下:
$which gcc //显示出GNC的C编译器安装在哪个目录
返回结果为:
/usr/bin/gcc
注意:如果which没有找到要找的命令,可以试试whereis,该命令搜索更大的范围的系统目录。有些系统上的which命令不显示用户没有执行权限的文件。例如
$which ipppd
/usr/bin/which :no ipppd in (/bin: /usr/bin: /sbin:/usr/sbin)
$whereis ipppd
ipppd: /usr/sbin/ipppd
$ls -l /usr/sbin/ipppd
-rwx------ 1 root root 124924 Feb 3 2000 /usr/sbin/ipppd
2. locate
locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。
即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在 /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可。
$locate signal.h
/usr/include/asm/signal.h
/usr/include/linux/signal.h
/usr/include/signal.h
/usr/include/sys/signal.h
3. rpm
如果用户知道自己要查找到软件包的名字,可以直接使用下面的命令。这个命令只在支持rpm的linux版本上有效,如redhat,centos,fedora和suse等。
$ rpm -q python //查找检查系统是否安装了python</p> <p>python-1.5.2-27
或者:$rpm -qa| grep python //这是两个命令的结合
rpm的其他用法:
rpm -qa (列出所有安装了的包)
rpm -e package (删除某个包)
rpm -qi package (查询某个包)
rpm -qf command (根据程序查询包的名字)
rpm -ql package (查询某个包所有的安装文件)
4.yum
yum的参数很多,以下是用于查找软件包的命令。但是也只支持特定的发型版本,centos下最常用的命令
$yum list //列出所指定的软件包,后可以加上你想查找的软件包的名字
$yum list installed //列出所有已安装的软件包
$yum info installed //列出所有已安裝的软件包信息
5.whereis
whereis是查找文件或者命令的所在目录
#whereis pwd //查找pwd命令所在的目录
6. find
这个命令可用来查找系统是否安装了指定的软件包,更重要的是也可以查找自己对软件包名称记忆不是很清晰的软件包。而且我想是这是所有linux和unix都支持的。find的查找范围很广,功能强大,再搭配用正则表达,效果很好,不过建议尽量缩小搜索范围,减少系统压力,毕竟,当系统文件多了,搜索耗费时间和资源的。
$find / -name "python" //从根目录开始查找包含”python“这个字符的文件和文件夹。
find的详细使用有如下例子:
# find . -maxdepth 1 -name *.jpg -print -exec convert 在当前目录下查找,查找深度为一,查找以.jpg结尾文件,并将其转化
# find / -name *.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限
# find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录
# find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
# find / -user user1 搜索属于用户 'user1' 的文件和目录
# find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备
# find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents 从一个目录查找并复制所有以 '.txt' 结尾的文件到另一个目录
# find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件
# find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件
# find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件
# find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 查找所有以 '.log' 结尾的文件并做成一个bzip包
六、linux怎么查看mysql安装路径?
方法如下:
一、查看文件安装路径
在终端输入:
whereis mysql
回车,如果你安装好了mysql,就会显示文件安装的地址,例如我的显示(安装地址可能会不同)
root@ubuntu :/# whereis mysql
mysql: /usr/bin/mysql /usr/bin/X11/mysql /usr/local/mysql
二、查询运行文件所在路径(文件夹地址)
如果你只要查询文件的运行文件所在地址,直接用下面的命令就可以了(还是以mysql为例):
which mysql
终端显示:
root@ubuntu :/# which mysql
/usr/bin/mysql
七、Linux如何安装驱动程序?
要在Linux上安装驱动程序,首先需要确定所需驱动程序的来源。通常,驱动程序可以从Linux发行版的软件仓库中获取,或者从硬件制造商的官方网站下载。
如果驱动程序在软件仓库中可用,可以使用包管理器(如apt、yum或zypper)来安装它。只需运行适当的命令,例如"sudo apt install <驱动程序名称>",系统将自动下载和安装驱动程序。
如果驱动程序需要从制造商的网站下载,通常会提供一个压缩文件(通常是.tar.gz或.zip格式)。下载并解压缩文件后,进入解压缩后的目录,并按照附带的说明文件进行安装。这可能涉及运行一些命令或脚本来编译和安装驱动程序。
在某些情况下,驱动程序可能需要内核模块的编译。为此,需要安装适当的内核头文件和开发工具。然后,按照驱动程序的说明进行编译和安装。
安装驱动程序后,可能需要重新启动系统才能使其生效。完成后,可以使用适当的命令或配置工具来验证驱动程序是否正确安装并正在使用。
请注意,安装驱动程序可能需要管理员权限(使用sudo命令)和一些基本的Linux命令行知识。确保在安装驱动程序之前备份重要数据,并仔细阅读驱动程序的文档和说明。
八、linux查看是否安装sqlplus?
一般情况下,安装了oracle数据库后,都会安装sqlplus的,ps -ef oa 来确认是否安装,在命令行下输入sqlplus,如果执行成功就表明已经安装了
九、Linux怎么查看软件安装路径查看mysql安装在哪?
不同的linux版本查看mysql安装路径的方法略有不同,这里以debian系列的linux发行版和redhat系列的linux发行版为例,简要说明其查询方法,仅供参考。
一、redhat系列的查询方法
1、查询mysql服务端安装的路径。
rpm -ql mariadb-server或者rpm -ql mysql-server说明:mysql被oracle收购了,现在开源版本为mariadb,rpm是redhat系列linux发行版本的包管理程序,-ql是其参数,-q是查询,-l是列出安装文件。后面接的是mysql的服务端。2、查询mysql客户端的路径
rpm -ql mariadb或者rpm -ql mysql说明:mysql被oracle收购了,现在开源版本为mariadb,rpm是redhat系列linux发行版本的包管理程序,-ql是其参数,-q是查询,-l是列出安装文件。后面接的是mysql的客户端。二、debian系列查询方法
1、查询服务端的安装路径
dpkg -L mysql-server或者dpkg -L mariadb-server说明:dpkg是deiban系列的包管理程序,-L是列出安装路径,后面是要查询的包的名称。2、查询客户端的安装路径
dpkg -L mysql-client或者dpkg -L mariadb-client说明:dpkg是deiban系列的包管理程序,-L是列出安装路径,后面是要查询的包的名称。十、linux什么命令查看程序运行状态?
查看系统所有正在运行的进程,可以用ps aux命令(它的-a参数表示,不与终端有关的进程也显示出来)。还有一个和ps命令相似的命令是pstree,pstree命令用于列出正在运行的进程的进程树,所谓进程树就是显示有关系的进程的相关性,也就是显示父子进程之间的关系。pstree命令的常见用法是:pstree -Aup
-A参数表示:显示出来的进程树连接,用ASCII字符来显示
-u参数表示:列出进程的所属用户
-p参数表示:列出每个进程的PID
ps命令和pstree命令是选取一个时间点的进程状态,还有一个top命令可以持续检测进程运行状态,它显示的是动态的信息,有点像Windows的任务管理器(不过top命令是命令行),使用方法:
top -d 数字
-d参数后面接一个数字表示几秒更新一次显示,一般可以设置成2,表示2秒一更新。
热点信息
-
在Python中,要查看函数的用法,可以使用以下方法: 1. 使用内置函数help():在Python交互式环境中,可以直接输入help(函数名)来获取函数的帮助文档。例如,...
-
一、java 连接数据库 在当今信息时代,Java 是一种广泛应用的编程语言,尤其在与数据库进行交互的过程中发挥着重要作用。无论是在企业级应用开发还是...
-
一、idea连接mysql数据库 php connect_error) { die("连接失败: " . $conn->connect_error);}echo "成功连接到MySQL数据库!";// 关闭连接$conn->close();?> 二、idea连接mysql数据库连...
-
要在Python中安装modbus-tk库,您可以按照以下步骤进行操作: 1. 确保您已经安装了Python解释器。您可以从Python官方网站(https://www.python.org)下载和安装最新版本...