반응형

그 동안은 git add / commit / log / status 를 주로 사용하였는데 이번에는 작업 되돌리는 restore 를 써보려고한다.

나는 주로 작업 트리에서 백업을 해놓고 수정을 항상 하였기 때문에 restore 은 써보질 않았다...

 

스테이징을 하기 전에 (git add 를 하기 전) 수정하고 싶다면 

사용하는 명령은 아래와 같다.

 git restore <파일명>
 # ex) git restore test.txt

 

 

스테이징이 되어있는 상태를 스테이징 전으로 되돌리려면 

명령은 아래와 같다.

git restore --staged <파일명>
# ex) git restore --staged test.txt

 

 

커밋이 된 상태를 되돌리려면 

명령은 아래와 같다.

git reset HEAD^

이 명령어는 가장 최신의 커밋된 상태로 돌리는 것이다.

커밋도 취소되고 스테이지에서도 내려간다.

 

HEAD^ 는 최신 버전으로 이동한다.

최신이 아니라 특정 버전의 hash 값을 HEAD^ 대신 넣으면 된다.

git reset dfkjaldfieiruieruieradfj0000dfdf

이런 식으로 말이다.

 

하지만 reset 은 이전 기록을 전부 다 삭제하는 것이기 때문에 조심해서 사용해야 한다.

이전 기록을 남기는 revert 를 사용하면 기록을 남길 수 있어 reset 보다는 조금 더 사용이 많을 것 같다.

# 1. log 에서 원하는 버전의 해시를 가져온다.
git log
commit 8aaebc0f4f499e9710da31a282e0092be208dda3

# 2. git revert 명령을 통해 커밋을 취소한다.
git revert 8aaebc0f4f499e9710da31a282e0092be208dda3

 

반응형

'Git > Git 기초 다지기' 카테고리의 다른 글

[Git] 1. 저장소 (Repository)  (0) 2024.12.09
반응형

그 동안 대충 사용하던 Git 을 깊이 있게 공부하려 한다.

하루 왠종일 공부할 것은 아니고 빈 시간에 조금씩 해보려 한다.

책은 "Do it! 5일 만에 끝내는 깃&깃허브" 입문 을 ebook 으로 구매하였다.

 

일단 Git Bash 를 설치하였다. 

설치 방법은 단순하게 Git Page 에서 받아서 거의 Next 만 눌렀다. 

https://git-scm.com/downloads/win

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.47.1) 64-bit version of Git for Windows. This is the most recent maintained build. It was released on 2024-11-25. Other Git for Windows downloads Standalone Installer 32-bit Git for Windows Setup. 6

git-scm.com

 

저 Click here to download 를 클릭해서 다운 받았고 그 외에는 책의 가이드대로 설치하였는데, 

거의 Next 만 눌렀기 때문에 글로 적진 않겠다. (설치보다는 개념을 이해하려고 쓴 글이기 때문에....)

 

저장소 (repository) 를 만드는 방법은 저장소로 만들고 싶은 디렉토리를 생성한다. 

# test 디렉토리 생성
mkdir test;
# test 디렉토리로 이동
cd test;
# 저장소 생성
git init

git init 으로 저장소를 생성한다. 

저장소가 성공적으로 생성이 된 것을 확인하려면 위의 경우 test 디렉토리 안에서 ls -al 명령어로 .git 파일이 있는 지 확인하면 된다.

이 .git 파일이 어떤 것인지 지금부터 기록한다.

 

Git 의 장점 중에 버전 관리가 있는데 이 .git 파일 안에 생긴 것들이 버전 관리를 하게 된다.

버전 관리는 위의 세가지 요소들이 하게 된다.

작업 공간은 실제로 우리가 작업하는 공간이다.

스테이지는 버전으로 만들 파일들이 대기하는 장소이다.

저장소는 대기하던 파일들을 버전으로 만들어 저장하는 곳이다.

 

작업공간에서 git add 명령어를 사용하면 스테이지로 올라간다.

그리고 그 스테이지에서 git commit 명령어를 사용하면 저장소로 옮겨지는 것이였다.

내가 아무생각 없이 commit 하던 내용들이 이런 의미를 내포하고 있었다.

그래서 결국 commit 은 버전을 만드는 것이다.

반응형

'Git > Git 기초 다지기' 카테고리의 다른 글

[Git] 2. 작업 되돌리는 방법 (git restore)  (0) 2024.12.10
반응형

OS 정보 : CentOS 7.9 Version

발생 에러 : yum 으로 설치 시 발생하였음...

에러명 : Errno 256 No more mirrors to try

 

ChatGPT 에 물어봤을 때 나오는 결과

"[Errno 256] No more mirrors to try"는 패키지 관리자가 설치할 수 있는 미러 서버를 모두 시도했지만, 원하는 패키지를 다운로드할 수 없을 때 발생하는 오류입니다. 이 오류는 보통 미러 서버의 문제, 패키지의 경로가 잘못되었거나, 패키지가 서버에서 제거되었을 때 발생합니다. 해결책으로는 레포지토리 설정을 확인하고, 다른 미러 사이트를 사용하거나, 사전 유효성을 확인하는 것이 있습니다. 중요한 정보는 다시 확인하시기 바랍니다.

 

보통은 yum 캐시가 손상되는데, 필자는 그래도 동일한 에러가 나타났다.

네트워크 문제는 아니고 아마 미러 서버가 사라진 듯 하다.

 

cd /etc/yum.repos.d

 

yum repository 의 위치가 /etc/yum.repos.d 에 있다. 

해당 디렉토리에 기존 파일들을 백업 후에 CentOS-Base.repo 파일을 수정해주었다. 

 

# 1. backup 작업
mkdir backup
mv CentOS-* ./backup

# 2. Repo 생성
vi CentOS-Base.repo

# 3. 아래 내용 붙혀넣기
[base]
name=CentOS-$releasever - Base
# original
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
# new
baseurl=http://centos.mirror.cdnetworks.com/7/os/x86_64
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
# original
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
# new
baseurl=http://centos.mirror.cdnetworks.com/7/updates/x86_64
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# original
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
# new
baseurl=http://centos.mirror.cdnetworks.com/7/extras/x86_64
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
# original
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
# new
baseurl=http://centos.mirror.cdnetworks.com/7/centosplus/x86_64
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

그래도 동일한 에러가 나타났다. 

failure: repodata/repomd.xml from pgdg-common: [Errno 256] No more mirrors to try.

오류를 보니 pgdg 라는 것이 문제인 것 같았다.

pgdg는 처음보는 단어라 ChatGPT에 물어보았더니 아래와 같이 대답하였다.

 

pgdg는 PostgreSQL Global Development Group의 약자로, PostgreSQL 데이터베이스 시스템의 개발 및 배포를 담당하는 조직입니다. 주로 다양한 플랫폼에 PostgreSQL을 설치하기 위해 PPA(Personal Package Archive)를 제공하며, 이를 통해 사용자는 Ubuntu와 같은 리눅스 배포판에 PostgreSQL을 쉽게 설치할 수 있습니다.

 

검색해봐도 잘 모르겠다.

뭔가 조금 다른 설명인거 같기도 해서 pgdg-redhat-all.repo 파일에 대해서 물어봤다.

 

pgdg-redhat-all.repo 파일은 PostgreSQL의 Yum 리포지토리를 관리하기 위한 설정 파일로, PostgreSQL 패키지를 Red Hat 계열의 운영 체제에서 설치하고 업데이트할 수 있게 해줍니다. 이 파일을 통해 PostgreSQL을 간편하게 설치할 수 있으며, OS 버전과 관련된 correctly 설정이 필요합니다. 이와 관련하여 GPG 서명 오류와 같은 문제가 발생할 수 있으니 유의해야 합니다.

 

yum 리포지토리 관리 설정파일이다.

아무튼 설정파일 자체에 문제가 있는거 같았다.

아직까지도 추측이나(현재는 해당 현상 해결) PostgreSQL 11버전이 EOS 가 되면서 에러가 나오지 않았을 까 생각한다.

아무튼 이 문제를 해결하기는 어려웠다... 여러 삽질을 했지만 해결이 되지 않았고 아래 블로그에서 기존 pgdg를 삭제하는 방법을 알게되어 그대로 적용해보았다.

https://aegonggang.tistory.com/34

 

CentOS7- Postgresql 14 + postgis 설치하기

postgresql 14 버전을 선 설치 후geometry 타입을 사용하기 위해 postgis 설치가 필요했다. postgis.x86_64 를 설치해서yum list | grep postgis 명령어를 통해 확인했으나, 설치에 문제는 없어 보였다. psql -U postgre

aegonggang.tistory.com

 

1. 기존 사용중인 pgdg 삭제

yum remove pgdg-redhat-repo

 

2. postgresql 14용 pgdg 저장소 설치 

yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

 

3. 저장소 캐시 비우기

yum clean all
yum makecache

 

위와 같이 하였더니 재설치 되면서 에러가 사라졌다.

이제 yum update 시에도 에러가 나지 않으며 정상화 되었다...

반응형
반응형

kubernetes 설치를 해보았다.

 

총 3가지 방법이 있다.

  1. kubeadm

  2. kubespray

  3. kops

 

3가지의 차이

https://github.com/kubernetes-sigs/kubespray/blob/master/docs/comparisons.md

 

kubespray/docs/comparisons.md at master · kubernetes-sigs/kubespray

Deploy a Production Ready Kubernetes Cluster. Contribute to kubernetes-sigs/kubespray development by creating an account on GitHub.

github.com

 

이전에는 kubeadm 으로 설치를 많이 해왔다.

그러나 최근에 flannel 이 이상하게 계속 죽는현상이 나타나서 원인을 못찾아서 OS 재설치와 함께 새로운 클러스터를 구성하는김에 새로운 방식으로 해보려고한다. 

 

참고한 블로그는 다음과 같다.

https://hackerpark.tistory.com/entry/Kubernetes-kubespary-%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-k8s-%EC%84%A4%EC%B9%98-Rocky9

 

[Kubernetes] kubespray 를 사용한 k8s 설치

[시스템 구성] 1. 방화벽 해제 + swapoff (모든 Node에서 수행) systemctl stop firewalld systemctl disable firewalld swapoff -a 2. SSH Key 생성 및 복사 ssh 생성 ( ※ Master Node 에서만 root 계정으로 진행 ! ) ssh-keygen -t rsa M

hackerpark.tistory.com

 

우선 방화벽을 전부 해제하였고

systemctl stop firewalld
systemctl disable firewalld
swapoff -a

 

이후 SSH Key 생성과 복사를 하였다. 

# ssh key 생성 (Master 노드에서만 진행)
ssh-keygen -t rsa

# Key 복사
cat ~/.ssh/id_rsa.pub

# 위 결과를 복사한 후 아래 "" 안에 삽입 (이 명령어는 master / worker 노드 모두 수행)
echo "" > ~/.ssh/authorized_keys

 

kubespray 설치

# git 설치
yum install -y git

# python 설치
yum install -y python3 python3-pip

# kubespray 설치
# kubespray 의 버전에 따라 잘 설치해야한다.
# 필자는 Rocky 8.9 버전에 python 이 호환되는 버전이라 그런지 2.22 버전으로 설치하여서 성공했다.
git clone -b v2.22.0 https://github.com/kubernetes-sigs/kubespray.git

 

필수 Package 들 설치

# git clone 으로 생성된 kubespray 경로에 접속하여 실행
cd kubespray; pip3 install -r requirements.txt

 

설치 도중에 나온 에러

버전이 없다는 에러가 나온다. 

# requirements 의 버전을 낮춰주었다.
cd kubespray; rm requirements.txt
ln -s requirements-2.11.txt requirements.txt

수행해도 버전이 안맞아서 안되었다.

그럴경우 아래처럼 수정하면 된다.

#1. 파일 열기
cd kubespray; vi requirements.txt

#2. 아래와 같이 붙혀넣기
ansible==4.10.0
ansible-core==2.11.11
cryptography==3.4.8
jinja2==3.0.3
jmespath==0.10.0
MarkupSafe==2.0.1
netaddr==0.8.0
pbr==5.11.1
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.7

필자처럼 했음에도 버전이 없을경우 있는 버전으로 맞춰주면된다.

 

inventory 설정 변경

# Copy ``inventory/sample`` as ``inventory/mycluster``
cd kubespray; cp -rfp inventory/sample inventory/mycluster

# inventory.ini 설정
vi inventory/mycluster/inventory.ini


# ## Configure 'ip' variable to bind kubernetes services on a
# ## different ip than the default iface
# ## We should set etcd_member_name for etcd cluster. The node that is not a etcd member do not need to set the value, or can set the empty string value.
[all]
master1 ansible_host=192.168.13.10 #ip=192.168.13.10 etcd_member_name=etcd1
worker1 ansible_host=192.168.13.11
worker2 ansible_host=192.168.13.12
worker3 ansible_host=192.168.13.13

# ## configure a bastion host if your nodes are not directly reachable
# [bastion]
# bastion ansible_host=x.x.x.x ansible_user=some_user

[kube_control_plane]
master1

[etcd]
master1

[kube_node]
worker1
worker2
worker3

[calico_rr]

[k8s_cluster:children]
kube_control_plane
kube_node
calico_rr

마스터가 될 서버의 ip 정보

그리고 워커노드가 될 서버의 ip 정보를 잘 기입하여준다.

 

이후 Ansible playbook 으로 kubernetes 를 설치한다.

ansible-playbook -i inventory/mycluster/inventory.ini -become --become-user=root cluster.yml

 

한참 걸린다.

 

이후 kubernetes 설치 확인을 하면 끝난다.

# API Server 통신을 위한 인증파일 복사
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# k8s node 확인
kubectl get nodes

# k8s 모든 리소스 확인 
kubectl get all --all-namespaces

 

설치는 참고 블로그와 동일하다.

kubeadm 보다는 kubespray 가 훨씬 편하다는 것을 알았다...

반응형
반응형

아래와 같이 길게 에러가 나왔다.

185 줄, 45 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 185, 열 45에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#define __glibc_fortify(f, __l, __s, __osz, ...) \
............................................1
PCC-S-02014, 심볼 "..."를 만났습니다 다음 중 하나가 기대될 때:
   an identifier, define, elif, else, endif, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef, exec,
   sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, create,
   function, package, procedure, trigger, or, replace,

187 줄, 9 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 187, 열 9에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
   ? __ ## f ## _alias (__VA_ARGS__)                                          \
........1
PCC-S-02014, 심볼 "##"를 만났습니다 다음 중 하나가 기대될 때:
   ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %=
   += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- ->
   ... .. <> ** => an identifier, a string, a numeric constant,
   a sql string, misc. punctuation, newline, define, elif, else,
   endif, error, if, ifdef, ifndef, include, include_next, line,
   pragma, undef, exec, sql, begin, end, var, type, oracle,
   an immediate preprocessor command, a C token, exec sql,
   exec sql include, exec sql var, exec sql begin, exec sql end,
   end-exec, exec sql type, exec oracle, exec oracle else,
   exec oracle endif, exec oracle begin, a sql hint, create,
   function, package, procedure, trigger, or, replace,
   a C++ token,

201 줄, 2 열, /usr/include/sys/cdefs.h 파일에 구문 오류입니다:라인 201, 열 2에 /usr/include/sys/cdefs.h 파일에서 오류가 생겼습니다
#endif
.1
PCC-S-02014, 심볼 "endif"를 만났습니다 다음 중 하나가 기대될 때:
   a numeric constant, newline, define, error, if, ifdef,
   ifndef, include, include_next, line, pragma, undef,
   an immediate preprocessor command, a C token,

라인 33, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 36, 열 10에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#include <stdarg.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
31 줄, 1 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 31, 열 1에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef unsigned char __u_char;
1
PCC-S-02201, 심볼 "typedef"를 만났습니다 다음 중 하나가 기대될 때:
   ; , = ( [
심볼이 ";" 계속하기 위하여 "typedef"로 치환되었습니다
52 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 52, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int8_t __int_least8_t;
........1
PCC-S-02201, 심볼 "__int8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int8_t"로 치환되었습니다
53 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 53, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint8_t __uint_least8_t;
........1
PCC-S-02201, 심볼 "__uint8_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint8_t"로 치환되었습니다
54 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 54, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int16_t __int_least16_t;
........1
PCC-S-02201, 심볼 "__int16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int16_t"로 치환되었습니다
55 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 55, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint16_t __uint_least16_t;
........1
PCC-S-02201, 심볼 "__uint16_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint16_t"로 치환되었습니다
56 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 56, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __int32_t __int_least32_t;
........1
PCC-S-02201, 심볼 "__int32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__int32_t"로 치환되었습니다
57 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 57, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint32_t __uint_least32_t;
........1
PCC-S-02201, 심볼 "__uint32_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint32_t"로 치환되었습니다
59 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 59, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __uint64_t __uint_least64_t;
........1
PCC-S-02201, 심볼 "__uint64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__uint64_t"로 치환되었습니다
203 줄, 9 열, /usr/include/bits/types.h 파일에 구문 오류입니다:라인 203, 열 9에 /usr/include/bits/types.h 파일에서 오류가 생겼습니다
typedef __off64_t __loff_t;     /* Type of file sizes and offsets (LFS).  */
........1
PCC-S-02201, 심볼 "__off64_t"를 만났습니다 다음 중 하나가 기대될 때:
   auto, char, const, double, enum, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   union, unsigned, utext, uvarchar, varchar, void, volatile,
   a typedef name,
심볼이 "enum," 계속하기 위하여 "__off64_t"로 치환되었습니다
12 줄, 3 열, /usr/include/bits/types/__fpos_t.h 파일에 구문 오류입니다:라인 12, 열 3에 /usr/include/bits/types/__fpos_t.h 파일에서 오류가 생겼습니다
  __off_t __pos;
..1
PCC-S-02201, 심볼 "__off_t"를 만났습니다 다음 중 하나가 기대될 때:
   char, const, double, enum, float, int, long, ulong_varchar,
   OCIBFileLocator OCIBlobLocator, OCIClobLocator, OCIDateTime,
   OCIExtProcContext, OCIInterval, OCIRowid, OCIDate, OCINumber,
   OCIRaw, OCIString, short, signed, sql_context, sql_cursor,
   struct, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name,

라인 56, 열 12에 /usr/include/stdio.h 파일에서 오류가 생겼습니다
#  include <stdarg.h>
...........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 33, 열 10에 /usr/include/string.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
라인 23, 열 10에 /usr/include/strings.h 파일에서 오류가 생겼습니다
#include <stddef.h>
.........1
PCC-S-02015, 포함하고 있는 파일을 열 수 없습니다
0 줄, 0 열, test.pc 파일에 구문 오류입니다:라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-S-02201, 심볼 "<eof>"를 만났습니다 다음 중 하나가 기대될 때:
   ; : an identifier, end-exec, random_terminal

라인 0, 열 0에 test.pc 파일에서 오류가 생겼습니다
PCC-F-02102, C 선행 처리 동안 치명적 오류 발생
make: *** [makefile:9: test] Error 1

 

다른거를 다 차처하고 stdio.h , string.h , strings.h 의 파일을 열수 없다면 보면 된다.

결국 위 헤더들을 찾을 수 없는 것이다.

Pro*C 에서 빌드할때 환경파일인 pcscfg.cfg 파일에 include 하는 무언가가 있는것같았다.

파일을 열어보았다. 

sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include)
ltype=short
define=__x86_64__

위와 같이 나와있었다.

sys_include 부분에서 빌드를 할 때 필요한 include 들이 있는 것 같았다.

자세히 들여다보니 gcc의 4.1.2 버전에 해당하는 include 들이여서 못찾는 것 같았다.

필자의 gcc 버전을 확인했다

[abc@test ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-host-pie --enable-host-bind-now --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --enable-plugin --enable-initfini-array --without-isl --enable-multilib --with-linker-hash-style=gnu --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64 --build=x86_64-redhat-linux --with-build-config=bootstrap-lto --enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.1 20230605 (Red Hat 11.4.1-2) (GCC)

아무래도 rocky 9 버전이다보니 gcc가 11.4.1 버전이였다.

위에 해당하는 include를 잡아주어야해서 sys_include 의 맨 뒷부분에 11버전의 gcc의 include 경로를 잡아주었다.

#pcscfg.cfg 파일
#맨 끝 부분 /usr/lib/gcc/x86_64-redhat-linux/11/include 추가
sys_include=($ORACLE_HOME/sdk/include,/usr/include,/usr/lib/gcc/x86_64-redhat-linux/4.1.2/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include,/usr/lib/gcc/x86_64-redhat-linux/4.4.4/include,/usr/lib64/gcc/x86_64-suse-linux/4.8/include,/usr/lib/gcc/x86_64-redhat-linux/11/include)

이후 pro*c 를 빌드를 하였더니 정상적으로 작동하였다.

(필자의 경우 다른 에러가 발생... ㅠㅠ)

 

위와 같이 gcc 버전을 주의해서 Pro*c 환경을 셋팅을 해야겠다.

 

참고 : https://smok95.tistory.com/141

 

Pro*C 컴파일오류 : PCC-S-02015, unable to open include file ( stddef.h, stdarg.h )

redhat linux 엔터프라이즈 4 버전에서 proc를 컴파일 하는 과정에서 아래와 비슷한 내용의 에러가 발생했습니다. ---------------------------------------------------------------------------------- make -f /opt/oracle/product/

smok95.tistory.com

 

반응형

'에러 > Oracle' 카테고리의 다른 글

[sqlplus] -bash : event not found  (0) 2024.02.22
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

오늘은 ncurses 를 해보려고 한다.

 

환경은 아래와 같다.

OS : Rocky Linux release 9.3 (Blue Onyx)

 

우선 ncurses 패키지에 대해 검색해보았다.

[abc@abc demo]$ dnf search ncurses
Rocky Linux 9 - BaseOS                                                                          2.7 MB/s | 2.2 MB     00:00    
Rocky Linux 9 - AppStream                                                                       5.4 MB/s | 7.4 MB     00:01    
Rocky Linux 9 - Extras                                                                           23 kB/s |  14 kB     00:00    
=============================================== Name & Summary Matched: ncurses ================================================
ncurses.x86_64 : Ncurses support utilities
ncurses-c++-libs.x86_64 : Ncurses C++ bindings
ncurses-c++-libs.i686 : Ncurses C++ bindings
ncurses-devel.x86_64 : Development files for the ncurses library
ncurses-devel.i686 : Development files for the ncurses library
ncurses-libs.x86_64 : Ncurses libraries
ncurses-libs.i686 : Ncurses libraries
==================================================== Name Matched: ncurses =====================================================
ncurses-base.noarch : Descriptions of common terminals
ncurses-term.noarch : Terminal descriptions

 

CentOS 나 Redhat 은 yum 명령어를 dnf 명령어를 대체해서 사용하면 된다.

(yum search ncurses)

 

찾은 ncurses-devel.x86_64 를 설치하면 된다.

# Rocky linux
sudo dnf install -y ncurses-devel.x86_64

# CentOS / Redhat
sudo yum install -y ncurses-devel.x86_64

 

 

반응형
반응형

sqlplus 사용시에 아래와 같은 에러가 났다.

[abc@hostname src]$ sqlplus abc/abc123!@TESTDB
-bash: !@TESTDB: event not found

 

해당 에러는 느낌표 '!' 때문에 일어난다.

bash 쉘에서는 '!' 가 이전에 실행한 히스토리를 실행하는 명령어의 히스토리를 참조하는 역할을 한다.

따라서 해당 에러를 없애기 위해서는 ! 가 문자열이라는 것을 알려줄 필요가 있다.

 

해결방법은 두가지이다.

# 1번 방법
[abc@hostname src]$ sqlplus 'abc/abc123!@TESTDB'

# 2번 방법
[abc@hostname src]$ sqlplus abc/abc123\!@TESTDB

 

그러면 해결이 될것이다.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] Error 6 initializing SQL*Plus  (0) 2024.02.22
반응형

OS version : Rocky Linux release 9.3 (Blue Onyx)

 

sqlplus 를 사용하는 도중 나온 에러이다.

[abc@hostname instantclient_12_2]$ ./sqlplus 
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

[abc@hostname instantclient_12_2]$ ./sqlplus 
Segmentation fault (core dumped)

 

원인 : ORACLE_HOME 을 못찾는다.

 

그래서 ORACLE_HOME 을 보았다.

[abc@hostname ~]$ echo $ORACLE_HOME
/home/abc/oracle_client/instantclient_12_2

ORACLE_HOME을 .bash_profile 에 잘 설정해 놓았다.

그런데 왜 안될까를 확인해보았다.

 

본인의 환경에 따라 다를꺼같다.

필자는 아래 파일을 $ORACLE_HOME에다가 풀었다.

  • instantclient-basic-linux.x64-12.2.0.1.0.zip

그리고 .bash_profile 이다.

export ORACLE_HOME=/home/abc/oracle_client/instantclient_12_2
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$ORACLE_HOME/bin:$PATH
export NLS_LANG=KOREAN_KOREA.AL32UTF8
export TNS_ADMIN=/home/abc/oracle_client

필자는 LD_LIBRARY_PATH 에 lib 로 설정을 해놓았다.

LD_LIBRARY_PATH 에 .so 파일을 참조하는데 이 .so 파일은

oracle client 를 설치할 때 instantclient-basic-linux.x64-12.2.0.1.0.zip 이 파일에 있다.

 

이 파일을 $ORACLE_HOME/lib 디렉토리 밑에다가 풀던지

아니면 LD_LIBRARY_PATH에 $ORACLE_HOME을 추가하던지 하면 된다.

이후 sqlplus 를 실행하면 잘 작동할 것이다.

 

밑에 stackoverflow 를 참고하였다.

https://stackoverflow.com/questions/6013508/error-6-initializing-sqlplus

 

Error 6 Initializing SQL*Plus

When i open sqlplus it shows Error 6 Initializing SQL*Plus Message file sp1<Lang>.msb not found SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

stackoverflow.com

 

요약 :  *.so 파일들이 LD_LIBRARY_PATH 에 있는지 확인해라.

반응형

'에러 > Oracle' 카테고리의 다른 글

[Oracle Pro*C Error] build error  (0) 2024.03.04
[sqlplus] -bash : event not found  (0) 2024.02.22

+ Recent posts