apt包管理
修改apt目录,不存在apt.conf文件,但是存在apt.conf.d目录,如何修改apt的安装目录
apt-get 命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载包,也可以用来升级包,还可以用来把系统升级到新的版本。
- 语法格式:
text
apt-get [options] command
- 配置文件:
早期 apt-get 默认的配置文件为 /etc/apt/apt.conf,但是当前的 Ubuntu 系统中默认没有这个文件。
如果 /etc/apt/apt.conf 文件存在,apt-get 仍然会读取它。但现在的设计思路是把配置文件分隔后放置在 /etc/apt/apt.conf.d 目录下,这样更容易管理。
- 查看系统的更新记录
日志文件 /var/log/apt/history.log 记录了系统的更新历史记录。通过它可以查看所有通过 apt 命令执行的安装、升级、删除记录:
-
官方文档:https://debian-handbook.info/browse/zh-CN/stable/sect.apt-get.html
-
如果你想改变APT的安装目录(也就是改变软件包被解压和安装的地方)
需要明白APT默认会安装软件到系统目录,例如
/usr/
、/lib/
等。要更改这些设置是相当复杂的,因为它会影响系统的核心部分。然而,如果你只是想改变APT的缓存目录(也就是.deb
文件被下载的地方),这是可以做到的。
shell
dell@dell-Precision-3630-Tower mkdir /nvme/apt-archives-deb
dell@dell-Precision-3630-Tower /etc/apt/apt.conf.d sudo vim ./99custom
Dir::Cache::Archives "/nvme/apt-archives-deb/";
扩展\ .deb
文件的缓存
APT 在/var/cache/apt/archives/
目录中保存每个下载的 .deb
文件的副本。在频繁更新的情况下,该目录下每个软件包的数个版本可能会占用大量磁盘空间;您应当经常整理它们。可以使用如下两个命令:apt-get clean
完全清空整个目录;apt-get autoclean
仅移除不会再下载的软件包(因为它们已从 Debian 镜像中消失)和明显无用的软件包(配置参数APT::Clean-Installed
可以阻止移除安装中的.deb
文件)。
linux根目录空间太小需要重装并保留原有数据和环境
参考链接:https://blog.csdn.net/qq_43289711/article/details/116159418
根据别人所说,好像可以保留数据,环境,软件和编译环境
感觉重点都在与备份/home/dell,/etc,/nvme,/usr,/opt
利用g进行golang多版本管理
参考链接:
https://ytool.cloud/golang/g.html
shell
dell@dell-Precision-3630-Tower ~ unset GOROOT
dell@dell-Precision-3630-Tower ~ unset GOBIN
dell@dell-Precision-3630-Tower ~ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/dell/.cache/go-build"
GOENV="/home/dell/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/nvme/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build837690482=/tmp/go-build -gno-record-gcc-switches"
Go 环境变量如下:
GOROOT
=/usr/local/go
: 指明 Go 的安装路径。GOPATH
=/nvme/go
: 指明你的 Go 项目/工作路径。GOBIN
是空的:不单独设置二进制文件路径,将使用GOPATH/bin
。GOPROXY
=https://goproxy.cn,direct
: 你使用的 Go module 代理。
无法切换golang版本的原因的是因为/etc/profile中写明了export PATH=$PATH:/usr/local/go/bin
安装golang
参考链接
https://cloud.tencent.com/developer/article/1623121
shell
wget -c https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz -O - | sudo tar -xz -C /usr/local
通过将 Go 目录添加到$PATH
环境变量,系统将会知道在哪里可以找到 Go 可执行文件。
这个可以通过添加下面的行到/etc/profile
文件(系统范围内安装)或者$HOME/.profile
文件(当前用户安装):
shell
export PATH=$PATH:/usr/local/go/bin
source ~/.profile
通过打印 Go 版本号,验证安装过程。
shell
go version
ubuntu环境配置文件
参考链接:
https://www.jianshu.com/p/b16f9fe441b2
用户级别配置文件
-
.bashrc
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。
-
.bash_profile
-
.zshrc
-
~/.profile
在登录时用到的第三个文件 是.profile文件,每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
系统级别配置文件
-
/etc/environment
在登录时操作系统使用的第二个文件, 系统在读取你自己的profile前,设置环境文件的环境变量。
-
/etc/profile
在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
-
/etc/bash.bashrc
-
/etc/zsh/zshrc
1. 用户主目录下的.profile或.bashrc文件(推荐)
登录到你的用户(非root),在终端输入:
$ sudo gedit ~/.profile(or .bashrc)
可以在此文件末尾加入PATH的设置如下:
export PATH="$PATH:your path1:your path2 ..."
保存文件,注销再登录,变量生效。
该方式添加的变量只对当前用户有效。
2. 系统目录下的profile文件(谨慎)
在系统的etc目录下,有一个profile文件,编辑该文件:
$ sudo gedit /etc/profile
在最后加入PATH的设置如下:
export PATH="$PATH:your path1:your path2 ..."
该文件编辑保存后,重启系统,变量生效。
该方式添加的变量对所有的用户都有效。
3. 系统目录下的 environment 文件(谨慎)
在系统的etc目录下,有一个environment文件,编辑该文件:
$ sudo gedit /etc/environment
找到以下的 PATH 变量:
PATH="<......>"
修改该 PATH 变量,在其中加入自己的path即可,例如:
PATH="<......>:your path1:your path2 ..."
各个path之间用冒号分割。该文件也是重启生效,影响所有用户。
注意这里不是添加export PATH=... 。
llvm编译安装
-
查看llvm(包括clang等项目)
shellsudo apt-get install ninja-build dell@dell-Precision-3630-Tower /nvme/llvm-project main dpkg -l | grep build-essential ii build-essential 12.8ubuntu1.1 amd64 Informational list of build-essential packages git clone --depth 1 https://github.com/llvm/llvm-project.git
-
编译和构建llvm和clang
shellcd llvm-project #cmake -S llvm -B build -G <generator> [options] dell@dell-Precision-3630-Tower /nvme/llvm-project main cmake -S llvm -B build -G Ninja -DCMAKE_BUILD_TYPE="Debug" -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DCMAKE_INSTALL_PREFIX="/nvme/compile-local" #-S llvm源代码路径 #-B build制定了构建目录的路径,在这个目录下 CMake 将生成所有的构建文件。如果这个目录不存在,CMake 将尝试创建它。 -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- The ASM compiler identification is GNU -- Found assembler: /usr/bin/cc -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- bolt project is disabled -- clang project is enabled -- clang-tools-extra project is disabled -- compiler-rt project is disabled -- cross-project-tests project is disabled -- libc project is disabled -- libclc project is disabled -- lld project is disabled -- lldb project is disabled -- mlir project is disabled -- openmp project is disabled -- polly project is disabled -- pstl project is disabled -- flang project is disabled -- Found Python3: /usr/bin/python3.8 (found suitable version "3.8.10", minimum required is "3.6") found components: Interpreter -- Looking for dlfcn.h ...... ...... -- Performing Test HAVE_STEADY_CLOCK -- Performing Test HAVE_STEADY_CLOCK -- Performing Test HAVE_STEADY_CLOCK -- success -- Configuring done -- Generating done -- Build files have been written to: /nvme/llvm-project/build #error [4398/4889] Linking CXX executable bin/clang-scan-deps FAILED: bin/clang-scan-deps : && /usr/bin/c++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -fno-common -Woverloaded-virtual -fno-strict-aliasing -g -Wl,-rpath-link,/nvme/llvm-project/build/./lib tools/clang/tools/clang-scan-deps/CMakeFiles/clang-scan-deps.dir/ClangScanDeps.cpp.o tools/clang/tools/clang-scan-deps/CMakeFiles/clang-scan-deps.dir/clang-scan-deps-driver.cpp.o -o bin/clang-scan-deps -Wl,-rpath,"\$ORIGIN/../lib:" lib/libLLVMCore.a lib/libLLVMOption.a lib/libLLVMSupport.a lib/libLLVMTargetParser.a -lpthread lib/libclangAST.a lib/libclangBasic.a lib/libclangDependencyScanning.a lib/libclangDriver.a lib/libclangFrontend.a lib/libclangLex.a lib/libclangSerialization.a lib/libclangTooling.a lib/libclangFormat.a lib/libclangToolingInclusions.a lib/libclangToolingCore.a lib/libclangRewrite.a lib/libclangCodeGen.a lib/libclangFrontend.a lib/libclangDriver.a lib/libLLVMWindowsDriver.a lib/libLLVMOption.a lib/libclangParse.a lib/libclangSerialization.a lib/libclangSema.a lib/libclangEdit.a lib/libclangSupport.a lib/libclangAnalysis.a lib/libclangASTMatchers.a lib/libclangAST.a lib/libclangLex.a lib/libclangBasic.a lib/libLLVMCoverage.a lib/libLLVMFrontendHLSL.a lib/libLLVMLTO.a lib/libLLVMExtensions.a lib/libLLVMAArch64CodeGen.a lib/libLLVMAArch64AsmParser.a lib/libLLVMAArch64Disassembler.a lib/libLLVMAArch64Desc.a lib/libLLVMAArch64Info.a lib/libLLVMAArch64Utils.a lib/libLLVMAMDGPUCodeGen.a lib/libLLVMPasses.a lib/libLLVMCoroutines.a lib/libLLVMIRPrinter.a lib/libLLVMMIRParser.a lib/libLLVMAMDGPUAsmParser.a lib/libLLVMAMDGPUDisassembler.a lib/libLLVMAMDGPUDesc.a lib/libLLVMAMDGPUInfo.a lib/libLLVMAMDGPUUtils.a lib/libLLVMARMCodeGen.a lib/libLLVMARMAsmParser.a lib/libLLVMARMDisassembler.a lib/libLLVMARMDesc.a lib/libLLVMARMInfo.a lib/libLLVMARMUtils.a lib/libLLVMAVRCodeGen.a lib/libLLVMAVRAsmParser.a lib/libLLVMAVRDesc.a lib/libLLVMAVRDisassembler.a lib/libLLVMAVRInfo.a lib/libLLVMBPFCodeGen.a lib/libLLVMBPFAsmParser.a lib/libLLVMBPFDesc.a lib/libLLVMBPFDisassembler.a lib/libLLVMBPFInfo.a lib/libLLVMHexagonCodeGen.a lib/libLLVMHexagonAsmParser.a lib/libLLVMHexagonDisassembler.a lib/libLLVMHexagonDesc.a lib/libLLVMHexagonInfo.a lib/libLLVMLanaiCodeGen.a lib/libLLVMLanaiAsmParser.a lib/libLLVMLanaiDisassembler.a lib/libLLVMLanaiDesc.a lib/libLLVMLanaiInfo.a lib/libLLVMLoongArchCodeGen.a lib/libLLVMLoongArchAsmParser.a lib/libLLVMLoongArchDisassembler.a lib/libLLVMLoongArchDesc.a lib/libLLVMLoongArchInfo.a lib/libLLVMMipsCodeGen.a lib/libLLVMMipsAsmParser.a lib/libLLVMMipsDesc.a lib/libLLVMMipsDisassembler.a lib/libLLVMMipsInfo.a lib/libLLVMMSP430CodeGen.a lib/libLLVMMSP430AsmParser.a lib/libLLVMMSP430Desc.a lib/libLLVMMSP430Disassembler.a lib/libLLVMMSP430Info.a lib/libLLVMNVPTXCodeGen.a lib/libLLVMNVPTXDesc.a lib/libLLVMNVPTXInfo.a lib/libLLVMPowerPCCodeGen.a lib/libLLVMPowerPCAsmParser.a lib/libLLVMPowerPCDesc.a lib/libLLVMPowerPCDisassembler.a lib/libLLVMPowerPCInfo.a lib/libLLVMRISCVCodeGen.a lib/libLLVMipo.a lib/libLLVMFrontendOpenMP.a lib/libLLVMLinker.a lib/libLLVMVectorize.a lib/libLLVMRISCVAsmParser.a lib/libLLVMRISCVDisassembler.a lib/libLLVMRISCVDesc.a lib/libLLVMRISCVInfo.a lib/libLLVMSparcCodeGen.a lib/libLLVMSparcAsmParser.a lib/libLLVMSparcDesc.a lib/libLLVMSparcDisassembler.a lib/libLLVMSparcInfo.a lib/libLLVMSystemZCodeGen.a lib/libLLVMSystemZAsmParser.a lib/libLLVMSystemZDisassembler.a lib/libLLVMSystemZDesc.a lib/libLLVMSystemZInfo.a lib/libLLVMVECodeGen.a lib/libLLVMVEAsmParser.a lib/libLLVMVEDesc.a lib/libLLVMVEDisassembler.a lib/libLLVMVEInfo.a lib/libLLVMWebAssemblyCodeGen.a lib/libLLVMWebAssemblyAsmParser.a lib/libLLVMWebAssemblyDisassembler.a lib/libLLVMWebAssemblyUtils.a lib/libLLVMWebAssemblyDesc.a lib/libLLVMWebAssemblyInfo.a lib/libLLVMX86CodeGen.a lib/libLLVMInstrumentation.a lib/libLLVMCFGuard.a lib/libLLVMGlobalISel.a lib/libLLVMX86AsmParser.a lib/libLLVMX86Desc.a lib/libLLVMX86Disassembler.a lib/libLLVMX86Info.a lib/libLLVMXCoreCodeGen.a lib/libLLVMAsmPrinter.a lib/libLLVMSelectionDAG.a lib/libLLVMCodeGen.a lib/libLLVMScalarOpts.a lib/libLLVMAggressiveInstCombine.a lib/libLLVMInstCombine.a lib/libLLVMBitWriter.a lib/libLLVMObjCARCOpts.a lib/libLLVMTransformUtils.a lib/libLLVMTarget.a lib/libLLVMAnalysis.a lib/libLLVMProfileData.a lib/libLLVMSymbolize.a lib/libLLVMDebugInfoPDB.a lib/libLLVMDebugInfoMSF.a lib/libLLVMDebugInfoBTF.a lib/libLLVMDebugInfoDWARF.a lib/libLLVMObject.a lib/libLLVMIRReader.a lib/libLLVMBitReader.a lib/libLLVMAsmParser.a lib/libLLVMCore.a lib/libLLVMRemarks.a lib/libLLVMBitstreamReader.a lib/libLLVMMCParser.a lib/libLLVMTextAPI.a lib/libLLVMXCoreDesc.a lib/libLLVMXCoreDisassembler.a lib/libLLVMCodeGenTypes.a lib/libLLVMMCDisassembler.a lib/libLLVMXCoreInfo.a lib/libLLVMMC.a lib/libLLVMBinaryFormat.a lib/libLLVMTargetParser.a lib/libLLVMDebugInfoCodeView.a lib/libLLVMSupport.a lib/libLLVMDemangle.a -lrt -ldl -lpthread -lm /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/x86_64-linux-gnu/libtinfo.so && : collect2: fatal error: ld terminated with signal 9 [已杀死] compilation terminated. [4407/4889] Linking CXX shared module lib/SampleAnalyzerPlugin.so ninja: build stopped: subcommand failed. 因为内存不够,所以改为编译release #默认安装路径是/usr/local,clang的路径是/usr/local/bin #本次安装路径是/nvme/compile-local/bin dell@dell-Precision-3630-Tower /nvme/compile-local/bin ./clang -v clang version 18.0.0 (https://github.com/llvm/llvm-project.git 1482106c9960300e729b1a58e5e25b6ac1c150ba) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /nvme/compile-local/bin/. Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8 Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9 Candidate multilib: .;@m64 Selected multilib: .;@m64 Found CUDA installation: /usr/local/cuda, version 11.8 dell@dell-Precision-3630-Tower /nvme/compile-local/bin ./llvm-as --version LLVM (http://llvm.org/): LLVM version 18.0.0git Optimized build. dell@dell-Precision-3630-Tower /nvme/compile-local/bin sudo vim ~/.zshrc [sudo] dell 的密码: 对不起,请重试。 [sudo] dell 的密码: export PATH=$PATH:/nvme/compile-local/bin dell@dell-Precision-3630-Tower /nvme/compile-local/bin source ~/.zshrc
增加swap空间(2GB-20GB)
参考链接:
https://blog.csdn.net/Vin_tt/article/details/110421022
shell
方法一:永久增加交换空间
sudo mkdir /nvme/swapfile
cd /nvme/swapfile
#使用dd创建一个20GB的交换文件:
#注意:1GB = 1,048,576KB。因此,20GB = 20 * 1,048,576KB = 20,971,520KB。
sudo dd if=/dev/zero of=swap bs=1024 count=20971520
#格式化为交换分区:
sudo mkswap -f swap
#启用交换文件:
sudo swapon swap
#使交换文件在启动时自动挂载:
echo '/nvme/swapfile/swap none swap sw 0 0' | sudo tee -a /etc/fstab
#如果/目录(根目录)下已经存在一个swapfile,并且你还希望使用/nvme/swapfile/swap,你可以同时启用两个交换文件。操作系统会管理多个交换空间,并根据需要在它们之间分配页面。
#要同时使用两个交换文件
#确保/etc/fstab中有以下两行内容(每个交换文件一行):
/swapfile none swap sw 0 0
/nvme/swapfile/swap none swap sw 0 0
#可选:调整交换空间的优先级:
/swapfile none swap sw,pri=10 0 0
/nvme/swapfile/swap none swap sw,pri=20 0 0
#上述设置中,/nvme/swapfile/swap的优先级为20,而根目录下的swapfile的优先级为10。因此,/nvme/swapfile/swap会更优先地被使用。
#方法二:临时增加
#你可以在编译时创建并启用交换空间。如果你的系统在编译大型项目(例如LLVM、Linux内核等)时因内存不足而遇到问题,临时增加交换空间可能会帮助解决这个问题
#创建交换文件
sudo dd if=/dev/zero of=/swapfile_temp bs=1M count=4096 status=progress
#上述命令将创建一个大小为4GB的交换文件。你可以根据需要调整count值来更改交换文件的大小。
#设置文件权限:
sudo chmod 600 /swapfile_temp
#初始化交换文件:
sudo mkswap /swapfile_temp
#启用交换文件:
sudo swapon /swapfile_temp
#执行编译任务:
#在此时,你可以开始你的编译任务。
#完成编译后,禁用并删除交换文件:
#一旦编译任务完成,为了回收磁盘空间和系统资源,你应该禁用并删除临时的交换文件:
sudo swapoff /swapfile_temp
sudo rm /swapfile_temp
#通过这种方法,你可以根据需要临时增加交换空间来帮助编译任务,然后在任务完成后回收资源。不过,如果你经常需要额外的交换空间,考虑创建一个持久的交换空间可能更为合适。
GOPATH管理
GO有关目录
/usr/lib/go-1.19.bak/bin/go
/usr/local/go/bin/go
/home/dell/go
/nvme/go
内网和外网ip
#内网
✘ dell@dell-Precision-3630-Tower /nvme/baum/git-project/milvus_compose ifconfig
外网
百度ip地址