2310月问题描述


apt包管理


修改apt目录,不存在apt.conf文件,但是存在apt.conf.d目录,如何修改apt的安装目录

apt-get 命令是 Ubuntu 系统中的包管理工具,可以用来安装、卸载包,也可以用来升级包,还可以用来把系统升级到新的版本。

  • 语法格式:
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文件被下载的地方),这是可以做到的。

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

 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

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文件(当前用户安装):

export PATH=$PATH:/usr/local/go/bin
source ~/.profile

通过打印 Go 版本号,验证安装过程。

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等项目)

    sudo 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

    cd llvm-project
    #cmake -S llvm -B build -G  [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

方法一:永久增加交换空间
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地址

你可能感兴趣的:(折腾日记,linux,ubuntu,os)