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

相关文章

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Linux samba共享慢的原因及解决方案

《Linuxsamba共享慢的原因及解决方案》:本文主要介绍Linuxsamba共享慢的原因及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux samba共享慢原因及解决问题表现原因解决办法总结Linandroidux samba共享慢原因及解决

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc