Linux-centos/Linux-centos__폐쇄망

폐쇄망 centos7에 python, 라이브러리 기타 등등 설치하기

말하는감자 2020. 8. 12. 18:29

작업순서

  1. 인터넷 망에서 필요한 파일 다운로드, repository 작성
  2. 폐쇄망으로 파일 복사
  3. 폐쇄망에서 설치

인터넷망 작업

다운로드와 createrepo를 설치해서 repository를 작성합니다.

  • 다운로드를 위한 다운로더 설치

    yum -y install yum-plugin-downloadonly
  • creatererepo 설치

    sudo yum install yum-utils createrepo

설치할 디렉토리 생성

  • 이때 packages-ins는 임시 설치 디렉토리이기 때문에 원격 서버로 가져가지 않아도 됩니다.

    cd /home/off-repo
    mkdir packages packages-ins

레파지토리 파일 다운

yum install --downloadonly --installroot=/home/off-repo/packages-ins --releasever=7 --downloaddir=/home/off-repo/packages python35u python35u-debug python35u-devel python35u-libs python35u-lxml python35u-tools python35u-setuptools python35u-pip gcc mariadb-devel nginx

createrepo로 레포 생성

createrepo --database /home/off-repo/packages

설치 폴더 삭제

rm -rf /home/off-repo/packages-ins

설치 패키지 repo 작성

vim /etc/yum.repos.d/off-packages.repo

[off-packages]
name=CentOS-$releasever - off-packages
baseurl=file:///home/off-repo/packages
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

repo가 정상적으로 생성되었는지 검증

repoclosure --repoid=off-packages

설치할 폐쇄망 서버로 파일 복사

  • 여러번 반복해서 레파지토리를 추가 / 제거하게 된다면 off-packages.repo는 최초 작성후에 수정해주지 않아도 괜찮습니다.

    scp -r /home/off-repo/packages root@원격서버ip:/home/off-repo/packages
    scp /etc/yum.repos.d/off-packages.repo root@원격서버ip:/etc/yum.repos.d/off-packages.repo

폐쇄망 작업

패키지 설치

yum install --disablerepo=\* --enablerepo=off-packages 설치할패키지이름
  • 파이썬 설치 후에 원하는 버전으로 설치가 되었는지 확인해보는것이 좋습니다.

  • python3.5 등으로 심볼릭 링크가 걸려있다면 which python3.5 로 위치를 찾아서 python3로 심볼릭 링크를 걸어주는 것이 편리합니다.

    which python3.5
    /usr/bin/python3.5
    cd /usr/bin
    ln -s python3.5 python3

pip 설치, 라이브러리 설치


인터넷 망 작업

설치할 디렉토리 생성

cd /home/off-repo
mkdir pip-lib wget-packages

pip 다운받기

cd /home/off-repos/wget-packages
wget https://files.pythonhosted.org/packages/68/1a/8cfcf3a8cba0dd0f125927c986b1502f2eed284c63fdfd6797ea74300ae4/pip-20.2.1.tar.gz
tar xvfz pip-20.2.1.tar.gz

mysqlclient 다운받기

  • 설치 도중 오류가 잘 나는 라이브러리이기 때문에 따로 파일을 받아서 처리해줍니다
cd /home/off-repos/wget-packages
wget https://pypi.python.org/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/mysqlclient-1.3.12.tar.gz#md5=dbf1716e2c01966afec0198d75ce7e69
tar xvfz mysqlclient-1.3.12.tar.gz

pip 설치

python3 get-pip.py install
  • pip 설치 후에 pip -V로 버젼을 확인해서 설치한 pip가 설치한 python3를 바라보고 있는지 확인해야합니다.

requirements.txt 작성

  • 설치가 필요한 모든 라이브러리를 이 안에서 작성해줍니다.

    bs4==0.0.1
  • 만약 기존의 서버에서 가져와야 한다면 아래의 명령어로 작업해줍니다.

    pip freeze > requirements.txt

requirements.txt에 작성한 라이브러리 다운로드

  • 위에서 작성한 requirements.txt 안의 라이브러리들을 다운받아 줍니다.

    pip download -r requirements.txt

파일 복사

scp -r /home/off-repo/pip-lib root@원격서버ip:/home/off-repo/pip-lib
scp -r /home/off-repo/wget-packages root@원격서버ip:/home/off-repo/wget-packages

폐쇄망 작업

설치

  • 단독 설치

    pip install --no-index --find-links=. 패키지이름
  • requirements.txt안의 라이브러리 모두 설치

    pip install --no-index --find-links=. -r requirements.txt

mysqlclient 설치

  • 해당 작업시 mariadb-devel과 gcc가 설치된 상태여야 합니다.

  • 위에서 사용한 명령어를 이용해서 myqlclient를 설치해도 괜찮지만, 저의 경우에는 보통은 설치 실패한 경우가 많아서 별도로 설치해주었습니다.

    cd /home/off-repo/wget-packages/mysqlclient-1.3.12
    python3 setup.py clean
    python3 setup.py build
    python3 setup.py install

부록

  • mysqlclient 설치 테스트

  • vim으로 아무 파일이나 생성하고 아래의 내용을 입력해줍니다.

    import MySQLdb
  • python3 생성한파일이름.py로 실행시켰을때 오류가 발생하지 않는다면 정상적으로 설치된 것입니다.