Linux离线Python源码编译及python版本升级
配置环境
初始化干净的centos7.8镜像,并搭建本地镜像源,详情可参考Linux 镜像源临时挂载+永久挂载+yum本地源制作 - 蜡笔小新的文章 - 知乎。
下载Python源码,版本选用Python-3.9..tar.xz。
编译Python
因高版本Python编译需高版本GCC,c语言识别源码系统默认GCC版本为4.8.5,需先升级GCC。
执行Centos离线源码编译高版本GCC并升级教程:Linux Centos7.8.系统离线GCC源码编译升级 - 蜡笔小新的文章 - 知乎。
由于未安装make编译工具和依赖,需先执行yum -y install automake autoconf libtool make以完成安装。
编译Python源码至/opt/python3.9.,过程未出现错误。op320源码
升级Python版本
编译安装后,已将新版本安装至指定目录,但未升级原有Python版本。
通过ll /usr/bin/python查看,当前Python版本软链接指向/usr/bin/python2.7。
删除或备份当前Python软链接,避免影响yum工具。
修改yum工具文件路径,将“#!/usr/bin/python”更改为“#!/usr/bin/python2.7”。
最后,创建新编译Python3.9.的软链接及pip3软链接。
成功在Centos7.8上升级Python3.9.版本,个股期权+源码下载同时确保原有yum工具可使用Python2.7版本。
Ubuntu升级内核
要对Ubuntu系统进行内核升级,首先确保基础依赖环境已安装。使用以下命令行安装:
sudo apt install -y wget build-essential gcc make bison pkg-config libncurses5-dev openssl libssl-dev libc6-dev libelf-dev zlibc minizip libidn-dev libidn flex
接下来,从cdn.kernel.org下载最新的内核源码到指定目录:
wget cdn.kernel.org/pub/linu...
解压下载的源码包:
tar -xvf linux-5.9.1.tar.xz
进入新解压的源码目录,复制当前内核配置到新内核源码中:
cp /boot/config-`uname -r` .config
进入配置阶段,使用`make menuconfig`命令,根据需要修改内核选项,配置完成后记得保存并退出。
接着,开始编译内核,使用多线程加速:
make -j8
编译成功后,delphi+源码之家安装内核模块:
make modules_install
然后将新内核安装到系统:
make install
为了确保系统引导正确,更新引导程序GRUB:
Update-grub2
最后,通过以下命令验证新内核已安装:
Uname -a 和 Uname -r
linux 安装python
linux如何安装python呢?不知道的小伙伴来看看小编今天的分享吧!
1、安装构建 Python 所需的开发包:
在Debian上:
在Fedora上:
2、下载最新的稳定版本的Python3:
访问官方Python网站并下载最新版本的Python 3。下载完成后,你会有一个.tar.xz归档文件(“tarball”),其中包含Python的源代码。
3、解压tarball:
下载完成后,使用解压程序或Linux的tar命令解压压缩包,例如:
4、wap+源码查看配置脚本:
解压Python压缩包后,进入configure脚本所在目录并在Linux终端中使用以下命令执行该脚本:
注意:配置可能需要一些时间。等待直到成功完成,然后再继续。
5、开始构建过程:
如果你的系统上已经安装了某个版本的Python,并且希望同时安装新版本的Python,请使用以下命令:
构建过程可能需要一些时间。
如果要使用此版本替换当前版本的Python,那么应使用包管理器(例如apt或dnf)卸载当前的Python包,然后安装:
6、验证安装即可。
如果你没有遇到任何错误,那么现在你的Linux系统上已安装了最新的Python。要进行验证,请在终端中输入以下命令之一:
或者
如果输出显示 Python 3.x,那么说明 Python 3 已成功安装。
知名压缩软件xz被发现有后门,影响有多大?如何应对?
知名压缩软件xz被发现存在后门,这一问题的揭露是由Andres Freund发现sshd进程的CPU占用率异常后进行的深入调查所促成的。
对比分析有后门的m4脚本与原版,很难发现其中存在的问题。然而,通过执行命令`grep -aErls "#{ 4}[[:alnum:]]{ 5}#{ 4}$" ./`在源码根目录下,发现执行结果指向了`./tests/files/bad-3-corrupt_lzma2.xz`文件。这个步骤揭示了文件名虽不直接明文出现在构建脚本中,但通过`grep`命令间接匹配并确认了恶意文件的存在。
进一步分析表明,`gl_[$1]_prefix=echo $gl_am_configmake | sed "s/.*\.//g"`这一行代码提取了恶意文件的扩展名`xz`,实际上对应于`xz`命令行工具的名称。这暗示了解压过程需要先安装`xz-utils`包。整个解压命令的执行环境主要针对Linux系统,而非非Linux系统。
该脚本通过寻找并读取`config.status`文件来获取源码的根目录,这一过程考虑到许多发行版在编译时会单独建立`build`目录,因此`srcdir`变量保存了源码的位置。然后通过`export`命令随机读取内容,最终执行了一系列命令,其中包含多个行为,揭示了即使在非Debian或RPM系发行版中,尝试在`make`后再次执行`configure`时,也会通过其他途径执行感染。
对于Debian或RPM系发行版,恶意代码通过将上述恶意脚本注入到`Makefile`中实现,这个过程依赖于源码编译完成后才能进行。而真正感染部分在于将原本应编译自特定源文件的`liblzma_la-crc_fast.o`和`liblzma_la-crc_fast.o`目标文件链接为恶意对象文件,同时替换指令集扩展检测函数。正确的`get_cpuid`原型被故意修改,其中`__builtin_frame_address`旨在获取函数返回地址,这可能在`x_`Linux上用于在寄存器中留下特定地址。
值得注意的是,发布带有后门的作者Jia Tan曾在两个月前与Sam James讨论过与GCC相关的bug导致`ifunc`函数符号覆盖功能不正确的问题,最终确认了这是一个GCC的bug。
提交代码时的实名要求对项目维护具有重要意义,尤其是当代码引发法律问题时。在Linux等重要项目中,有提交权限的人通常被强制要求实名。通过“签核”程序,开发者需在补丁说明末尾添加证明其身份的一行,确保贡献的合法性和追踪性。
项目中采用的签署选项有助于确定提交者和审查者的身份。在更严格的场合,代码提交可能需要使用GPG签名,而线下会议可能举办Key signing party来交换GPG公钥,确保线上身份与现实一致,并获得其他人的承认。实名制是维护代码质量和法律责任的关键,虚拟人物或匿名用户无法承担相应的法律责任。
linuxå®è£ nodejsï¼
linuxå®è£ nodejsï¼
linuxå®è£ nodejs赫æ¯ç¹ç§ä½çç¥å¥æ¡ååä½æ¯èµä¸ä¸äºæ»ä¼å«æèå¨å¹´åæ²åºæ£®åä¸ç½å®¾ä¸ç´æ¯è¾å¤å²çº½å¡æ¯å°éçæºä¼å°±çä½ çé¡¿æ¶ä½æ¬å°ä¸è½å°ç«è æ é伸äºå¤´èä¸çå¿ è¦å¨å·¥ä½çèè¿ä¹ä»äº²èªä¸»ç½
Node.jsæä¹å®è£å¨linuxä¸å®è£ nodejsæ¹æ³å¦ä¸ï¼
1ãå»å®ç½ä¸è½½åèªå·±ç³»ç»å¹é çæ件ï¼
éè¿?uname-a?å½ä»¤æ¥çå°æçLinuxç³»ç»ä½æ°æ¯ä½ï¼å¤æ³¨ï¼x_表示ä½ç³»ç»ï¼ii表示ä½ç³»ç»ï¼ï¼å¦å¾
æ ä¸è½½ä¸ä¸çº¢è²æ¡ä¸æ件ï¼çæ¬ä¸ºv6..0
2ãä¸è½½ä¸æ¥çtaræ件ä¸ä¼ å°æå¡å¨å¹¶ä¸è§£åï¼ç¶åéè¿å»ºç«è½¯è¿æ¥åä¸ºå ¨å±ï¼
1ï¼ä¸ä¼ æå¡å¨å¯ä»¥æ¯èªå·±ä»»æè·¯å¾ï¼ç®åæçæ¾ç½®è·¯å¾ä¸º?cd/app/software/
2ï¼è§£åä¸ä¼ ï¼è§£ååçæ件æè¿è¾¹å°ååæ¹ä¸ºäºnodejsï¼è¿ä¸ªå°æ¹èªå·±éæï¼åªè¦å¨å»ºç«è½¯è¿æ¥çæ¶ååæ£ç¡®å°±å¯ä»¥ï¼
â tar-xvf?node-v6..0-linux-x.tar.xz
â¡mv?node-v6..0-linux-x?nodejs
â¢ç¡®è®¤è°ä¸¾ä¸ä¸nodejsä¸binç®å½æ¯è¿ å å¦ænodeånpmæ件ï¼å¦æææ§è¡è½¯è¿æ¥ï¼å¦å«æ碧æ没æéæ°ä¸è½½æ§è¡ä¸è¾¹æ¥éª¤ï¼
3ï¼å»ºç«è½¯è¿æ¥ï¼åä¸ºå ¨å±
â ln-s/app/software/nodejs/bin/npm/usr/local/bin/
â¡ln-s/app/software/nodejs/bin/node/usr/local/bin/
4ï¼æåä¸æ¥æ£éªnodejsæ¯å¦å·²åä¸ºå ¨å±
å¨Linuxå½ä»¤è¡node-vå½ä»¤ä¼æ¾ç¤ºnodejsçæ¬ï¼è¯´æå®è£ æå
linuxä¸nodejså®è£ 以åå¦ä½æ´æ°å°ææ°ççæ¬
é¦å å°ç½ä¸è½½ææ°çå®è£ æ件node-v0..-linux-x.tar.gzã
ç¨secureCRTå°æºç å ä¸ä¼ å°linuxç/opt/softï¼å¨å½ä»¤è¡è¾å ¥ï¼tar-xvfnode-v0..-linux-x.tar.gzè¿è¡è§£åã
ç¼è¾æ件vi/etc/profile
æ件æ«æ·»æç§å å¦ä¸
exportNODE_HOME=/opt/soft/åªå¯å node-v0..-linux-x
exportPATH=$PATH:$NODE_HOME/binexportNODE_PATH=$NODE_HOME/lib/node_modules
å¨å½ä»¤è¡è¾å ¥ï¼source/etc/æå¡profileï¼è®©é ç½®æ件çæã
å¨å½ä»¤è¡è¾å ¥ï¼node-vï¼æ¥çnode.jsççæ¬ãå¦æåºç°çæ¬å·åè¯æå®è£ æåã
linuxæä¹å®è£ nodejsï¼ä¸ï¼ç¼è¯å¥½çæ件
ç®å段æ¥è¯´å°±æ¯è§£ååï¼å¨binæ件夹ä¸å·²ç»åå¨node以ånpmï¼å¦æä½ è¿å ¥å°å¯¹åºæ件çä¸æ§è¡å½ä»¤è¡ä¸ç¹é®é¢é½æ²¡æï¼ä¸è¿ä¸é纤æ¯å ¨å±çï¼æ以å°è¿ä¸ªè®¾ç½®ä¸ºå ¨å±å°±å¥½äºã
cdnode-v0..-linux-x/bin
ls
ã/node-v
è¿å°±å¦¥å¦¥çäºï¼nodeæä»¶å¤¹å ·ä½æ¾å¨åªï¼å«ä»ä¹ååéä½ æä¹å®ãç¶åè®¾ç½®å ¨å±ï¼
ln-s/home/kun/mysofltware/node-v0..-linux-x/bin/node/usr/local/bin/node
ln-s/home/kun/mysofltware/node-v0..-linux-x/bin/npm/usr/local/bin/npm
è¿é/home/kun/mysofltware/è¿ä¸ªè·¯å¾æ¯ä½ èªå·±æ¾çï¼ä½ å°nodeæ件解åå°åªéå°±æ¯åªéã
ï¼äºï¼éè¿æºç ç¼è¯
è¿ç§æ¹å¼ä½ ä¸è½½çæ件æ¯Sourcecodeï¼è¾ä¸ºéº»ç¦ã
#tarxvfnode-v0...tar.gz
#cdnode-v0..
#ã/configure
#make
#makeinstall
#cp/usr/local/bin/node/usr/sbin/
æ¥çå½åå®è£ çNodeççæ¬
#node-v
v0..
ï¼ä¸ï¼apt-get
è¿æä¸ç§å°±æ¯shellæ示çapt-getæ¹å¼ï¼å¼ºçæ¡å²èä¸æ¨èã
sudoapt-getinstallnodejs
sudoapt-getinstallnpm
å ³äºæ´å¤Linuxçå¦ä¹ ï¼è¯·æ¥é 书ç±ãlinux就该è¿ä¹å¦ãã
linuxä¸nodejså®è£ 以åå¦ä½æ´æ°å°ææ°ççnodejså®ç½ä¸è½½å®è£ çæºç æ件ï¼æè¿è¾¹ä¸è½½çæ¯node-v4.5.0-linux-x.tar.xz
å¨linuxå½ä»¤è¡è´¥é¥¥ç¾¡éè¾å ¥ï¼
tar-xvfnode-v4.5.0-linux-x.tar.xz
ç¶åè¾å ¥vi/etc/profile
å¨æåè¢éä¸è¡æ·»å ï¼è®¾ç½®ç¯å¢åéï¼
exportNODE_HOME=/mnt/software/node-v4.5.0-linux-x
exportPATH=$PATH:$NODE_HOME/bin
exportNODE_PATH=$NODE_HOME/lib/node_modules
è¾å ¥source/etc/profile使设置çæ
åè¾å ¥node-væ¥ççæ¬å·
å¦æè¦å级nodejsçè¯å¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤ï¼
npminstall-gn
nlatest
å®è£ å®æå¯æåå°±æ¯ææ°çæ¬äº
2024-12-28 16:53
2024-12-28 16:24
2024-12-28 15:26
2024-12-28 15:01
2024-12-28 14:46