Linux编程环境常见坑及解决方案

2023-12-25 04:48

本文主要是介绍Linux编程环境常见坑及解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、PIP 踩坑 

Ubuntu 中pip 10 更新后常常出现执行错误,通过下面方式可修复并升级到最新版本:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py

二、Docker 踩坑 -- Docker常见问题及解决方法

1.kernel:unregister_netdevice:...

kernel:unregister_netdevice: waiting for lo to become free. Usage count = 1
这是个从 2014 年就出现了的老 BUG,不管是 RHEL、CentOS、Ubuntu 还是 Debian 都会碰到。这实际上是 Linux 内核的一个 BUG,目前仍未彻底解决,尽量升级最新的 Linux 内核吧。

2. Failed to get D-Bus connection:...

Failed to get D-Bus connection: Operation not permitted
在 Docker 中执行 systemctl 命令时触发这个错误,常见于使用 Systemd 的 Linux 发行版,比如 CentOS 7 全系列。

# systemctl start vsftpdFailed to get D-Bus connection: Operation not permitted

2.1 解决方案

方案1. 官方解决方案

官方解决方案 是创建一个中间镜像,然后在这个镜像基础上构建你的镜像。

方案2. 避免使用 systemctl 命令

比如直接通过 /usr/sbin/sshd & (& 表示后台运行程序)来执行命令。

方案3. 开启特权模式

可以在创建容器时通过 --privileged=true 开启特权模式。

创建容器:

# docker run -d --name centos7 --privileged=true centos7:last /usr/sbin/init

进入容器:

# docker exec -it centos7 /bin/bash

这样可以使用 systemctl 启动服务了。

2.2 根本原因

Docker 的设计理念是将每个容器作为宿主机上一个独立的主进程运行,在容器内部不运行后台服务。容器的生命周期是围绕一个主进程存在,所以正确的使用容器方法是将里面的服务运行在前台。

systemd 是主流 Linux 发行版默认的服务管理程序,取代了传统的 SystemV 风格服务管理。systemd 维护系统服务程序,需要特权才能会访问 Linux 内核。而容器并不是一个完整的操作系统,只有一个文件系统,而且启动时默认使用普通用户权限访问 Linux 内核,自然用不了 systemd!

因此,请遵守容器设计原则,一个容器里运行一个前台服务!

3. 当遇到不能解决的问题时,记得用命令
docker stop $(docker ps -aq)
docker rm -f $(docker ps -aq)
docker network prune
清理你的Docker网络。这将会清除你之前的网络并且给你一个全新的环境:

三、防火墙

    查看:service iptables status 或/etc/init.d/iptables status
    开启:service iptables start
    关闭:service iptables stop
四、翻墙

1、安装python

linux下的shadowsocks是采用python开发,因此需要先安装python,如已经安装可以跳过此步骤。

使用以下命令安装python :

sudo apt-get install python 
安装python的包管理器pip:

sudo apt-get install python-pip 
2、安装shadowsocks客户端

安装python-pip后,能通过pip直接安装客户端

sudo pip install shadowsocks 
3、配置shadowsocks客户端配置

新建一个配置文件shawdowsocks.json,根据你的shadowsocks服务提供的参数,配置以下相应的参数: 

“server”: “111.111.111.111”, 
“server_port”: 443, 
“local_port”: 1080, 
“password”: “111111”, 
“timeout”: 600, 
“method”: “rc4-md5” 

4、启动shadowsocks客户端服务

通过以下命令:

sudo sslocal -c shawdowsocks.json -d start

5.但在linux下并不能直接通过上述设置翻墙,因为shawdowsocks是socks 5代理,需要客户端配合才能翻墙。

apt-get install privoxy

6.配置privoxy 
vi /etc/privoxy/config

1336 forward-socks5t / 127.0.0.1:1080 .

监听接口默认开启的 localhost:8118

7.启动privoxy 
//开启privoxy 服务就行 
sudo service privoxy start 
// 设置http 和 https 全局代理 
export http_proxy=’http://localhost:8118’ 
export https_proxy=’https://localhost:8118’ 
test : 
wget www.google.com 
如果把返回200 ,并且把google的首页下载下来了,那就是成功了


这篇关于Linux编程环境常见坑及解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534303

相关文章

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Linux中shell解析脚本的通配符、元字符、转义符说明

《Linux中shell解析脚本的通配符、元字符、转义符说明》:本文主要介绍shell通配符、元字符、转义符以及shell解析脚本的过程,通配符用于路径扩展,元字符用于多命令分割,转义符用于将特殊... 目录一、linux shell通配符(wildcard)二、shell元字符(特殊字符 Meta)三、s

Linux之软件包管理器yum详解

《Linux之软件包管理器yum详解》文章介绍了现代类Unix操作系统中软件包管理和包存储库的工作原理,以及如何使用包管理器如yum来安装、更新和卸载软件,文章还介绍了如何配置yum源,更新系统软件包... 目录软件包yumyum语法yum常用命令yum源配置文件介绍更新yum源查看已经安装软件的方法总结软

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Linux:alias如何设置永久生效

《Linux:alias如何设置永久生效》在Linux中设置别名永久生效的步骤包括:在/root/.bashrc文件中配置别名,保存并退出,然后使用source命令(或点命令)使配置立即生效,这样,别... 目录linux:alias设置永久生效步骤保存退出后功能总结Linux:alias设置永久生效步骤

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存