도커 파일을 빌드할 때 패키지 관리자와 interative하게 제어할 수 없다..
yum을 사용할 때는 어떠한 interative 입력을 받지 않도록 -y를 사용하는 반면,
apt-get은 interactive 입력을 받지 않도록 다음과 같이 사용해야 한다.
DEBIAN_FRONTEND=noninteractive
예)
FROM ubuntu:18.04
RUN apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy mysql-client
Posted by 김용환 '김용환'
centOS 리눅스에서 pip를 설치할 때 단순하게 다음과 같이 실행하면 된다고 하나..
$ yum update
$ yum install epel-release
$ sudo yum install python-pip
내 환경에서는 계속 에러가 난다.
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
그래서 epel과 관련된 인증 이슈인데.. 다음과 같이 실행하면 잘 동작한다.
$ yum clean all
$ yum --disablerepo=“epel” update nss
$ yum remove epel-release --disablerepo=epel
$ yum -y upgrade ca-certificates
$ yum -y upgrade ca-certificates --disablerepo=epel
이제 가상환경과 패키지 설치를 동시에 지원하는 pipenv를 설치한다.
$ sudo -H pip install pipenv --proxy="proxy.google.io:3128"
pip 중요 참고 내용..
sudo pip install pipenv 을 실행할 때 다음과 같은 에러가 발생할 수 있다.
Starting new HTTPS connection (1): pypi.python.org
Incremented Retry for (url='/simple/pip/'): Retry(total=4, connect=None, read=None, redirect=None)
Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe8adb61310>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/pip/
이럴 때는 환경변수와 proxy 환경 변수에 영향을 받을 수 있으니..아래와 같이 사용하길 바란다.
$ sudo -H pip install pipenv --proxy="proxy.google.io:3128"
Posted by 김용환 '김용환'
늘 자주 사용하긴 하지만
kafka-01.internal.google.com에서 kafka-20.internal.google.com까지의 ip 주소를 얻고 싶다면
number=0; for i in $(seq 1 20); do if [ $i -le 9 ]; then number=0$i ; else number=$i ; fi ; ping -c1 -t 1 kafka-$number.internal.google.com ; done
결과는 나오지만 지저분하게 나오려면 다음처럼 awk를 써서 처음 라인의 호스트와 ip만 나오게 한다.
number=0; for i in $(seq 1 20); do if [ $i -le 9 ]; then number=0$i ; else number=$i ;fi ; ping -c1 -t 1 kafkatest-$numberr.internal.google.com | awk 'NR==1{print $2$3 ; exit}' ; done
kafkatest-17.internal.google.com(1.1.1.1
...
Posted by 김용환 '김용환'
스크립트에서 현대 디렉토리를 지정하기 위해 다음과 같은 스크립트를 많이 사용한다.
my_root=$(cd $(dirname $(readlink $0 || echo $0))/../;/bin/pwd)
그런데 맥에서 이런 에러가 발생했다.
dirname: illegal option -- b
bash에서 $0이 스크립트 경로를 알려주는 것이라 알고 있긴 하지만... 사실 보장하지 않는다.
완벽히 보장하는 bash script를 개발하려면 BASH_SOURCE를 사용하길 바란다.
SCRIPT_PATH=${BASH_SOURCE[0]}
my_root=$(cd $(dirname $(readlink ${SCRIPT_PATH} || echo ${SCRIPT_PATH}))/../;/bin/pwd)
Posted by 김용환 '김용환'
디스크 볼륨을 추가한 뒤
재부팅되더라도 계속 디바이스에 잘 연결되도록 하려면.. /etc/fstab을 사용해야 한다.
먼저 특정 디바이스를 xfs로 파일 시스템을 구축하고 mount 한다. 그리고 잘 붙는지 확인한다.
$ mkfs.xfs -f /dev/sdc
$ mount -t xfs /dev/sdc /home/file3
$ df
/dev/sdc 2928835792 32944 2928802848 1% /home/file3
block id를 구한다.
$ sudo blkid -pi /dev/sdc
DEVNAME=/dev/sdc
UUID=df556bd3-da08-4642-a2cd-179f34c603a6
TYPE=xfs
USAGE=filesystem
MINIMUM_IO_SIZE=512
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512
재부팅되더라도 df 커맨드를 사용하면 항상 운영체제와 연결될 수 있도록 /etc/fstab에 추가한다.
UUID=df556bd3-da08-4642-a2cd-179f34c603a6 / xfs errors=remount-ro 0 1
만약 아래와 같이 uuid가 나오지 않는 다면 디스크 볼륨이 없거나 문제가 있는 것이다.
# sudo blkid -ip /dev/sdc
DEVNAME=/dev/sdc
MINIMUM_IO_SIZE=512
PHYSICAL_SECTOR_SIZE=512
LOGICAL_SECTOR_SIZE=512
참고
http://faq.hostway.co.kr/Linux_ETC/7437
http://nan1004au.tistory.com/entry/Linux-%EB%94%94%EC%8A%A4%ED%81%AC%EC%9D%98-UUID%EB%A5%BC-%EC%95%8C%EC%95%84%EC%98%A4%EA%B8%B0-ntfs-ext3-%EB%A7%88%EC%9A%B4%ED%8A%B8
Posted by 김용환 '김용환'
ssh tunning하고 rsync를 하다가 아래와 같은 에러를 보게 되었다. (필요하다면 strace를 보면 된다)
channel 1: open failed: administratively prohibited: open failed
/etc/ssh/sshd_config 파일에 포워딩 기본 설정이 no로 되어 있다. yes로 바꾸면 동작한다.
AllowTcpForwarding no
->
AllowTcpForwarding yes
Posted by 김용환 '김용환'
리눅스 패치시 cpu 타입 확인하기
예를 들어 보안 취약점 공개로 문제가 발생했을 때. cpu가 i386인지, x86_64인지 모를 수 있다
https://access.redhat.com/errata/RHSA-2017:1100
이 때는 uname -a 또는 uname -m으로 cpu계열을 확인할 수 있다.
Posted by 김용환 '김용환'
shell script에서 간단하게 한 줄로 표현하고 싶은 line이 있을 수 있다.
$ echo xxx: ; printf "mm"
xxx:
mm
echo 매개 변수에 -n을 추가하면 원하는 대로 한 줄로 표현할 수 있다.
$ echo -n xxx: ; printf "mm"
xxx:mm
Posted by 김용환 '김용환'
맥 OS에서는 zcat을 사용하면 파일이 없다는 에러가 나온다.
$ zcat ../$dump
zcat: can't stat: ../file.json.gz (../files.gz.Z): No such file or directory
zcat 대신 gzcat을 사용하면 잘 동작한다.
Posted by 김용환 '김용환'
리뉵스에서 netstat -o 또는 netstat --timers 명령을 사용하는 경우, keepalive 사용 여부와, 상태를 볼 수 있다.
ESTABLISHED off (0.00/0/0)
ESTABLISHED keepalive (239.12/0/0)
Posted by 김용환 '김용환'
댓글을 달아 주세요