반응형

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 시에도 에러가 나지 않으며 정상화 되었다...

반응형
반응형

OS Version : Rocky Linux release 9.3 (Blue Onyx)

 

해당 Error 원인 : 

libnsl.so.1 이 없다. 

dnf install -y libnsl

 

조치 후 정상적이다.

 

 

반응형
반응형
bb.c:(.text+0x0): multiple definition of `test'
/tmp/ccoyicve.o:aa.c:(.text+0x0): first defined here

 

 

첫번째 줄 해석 그대로 중복된 정의라는 얘기이다.

 

아래와 같이 해당 함수가 중복으로 선언이 되었다는 것을 알 수 있다. 

 

두번째 줄의 경우 첫번째로 선언되어 있는 곳을 알려준다. 

 

따라서 중복되는 함수를 유의 깊게 보면 된다.

 

위의 경우 test 라는 함수가 중복이 되었고, bb.c 파일과 aa.c 파일에 중복 선언이 되어있는 test 함수를 체크한다.

 

반응형
반응형

 

아예 ls, mv, cp 모든 기본명령어가 안먹혔다....

 

google에 검색하여 구세주같은 글을 보았다.

 

https://sh-safer.tistory.com/249

 

libc.so.6 심볼릭 링크 삭제시 복구 방법

원인 및 현상 무슨 정신으로 unlink libc.so.6 를 진행하여 shared library 심볼릭링크를 끊어 버렸다 shared library를 찾지 못한다는 내용. libc.so.6 cannot open shared object file no such file or directory 터미널까지 나

sh-safer.tistory.com

 

위 블로그에 있는 마지막 명령어가 먹어서 다행히도 잘 해결했다.

ldconfig -l -v /lib64/libc-2.24.so

 

 

 

반응형
반응형

glibc 를 설치하기 위하여 빌드를 하는 과정에서 생긴 오류이다.

bison 이 없거나 지나치게 오래되었다라는 건데... 

bison을 설치하여보자!!

 

참고 : https://stackoverflow.com/questions/53735137/glibc-configure-error-yacc-bison-missing

 

glibc configure error: yacc/bison missing

I'm following the instructions from LFS but with a twist: I'm only following parts of Section 5 - Constructing a Temporary System to the extent that I can build my own GCC, reason being that this i...

stackoverflow.com

 

역시나 stackoverflow 에는 없는 질문이 없다...

위와 같이 해결해보았다.

 

wget https://ftp.gnu.org/gnu/bison/bison-3.2.tar.gz
tar xf bison-3.2.tar.gz
cd bison-3.2
./configure --prefix=$HOME/install
make
make install

 

3.2 버전을 설치를 하는것이 해결이 될지는 모른다...

맨 위의 에러메세지에서 없거나 아주 오래되었다는거니까, 만약에 이 버전도 오래되었다면 최신버전을 설치해야겠다.

 

나와있는대로 조치하니 잘해결되었다!!~~ 

오늘도 무사히 셋팅을 하였다.

반응형
반응형

esxi 에서 서버의 디스크를 증설하였고, 그 마지막 단계에서 xfs_grow 에서 error 가 났다.

디스크 증설 도중에 아래와 같은 에러가 났다.

$ xfs_growfs /dev/mapper/centos-home
xfs_growfs: /dev/mapper/centos-home is not a mounted XFS filesystem

 

/dev/mapper/centos-home 이 XFS 파일시스템으로 마운트되지 않았다는 얘기였다...

cat /etc/fstab 으로 확인해보니 /dev/mapper/centos-root 가 XFS로 되어있었다. 정확한 mount 포인트가 아니였다.

정확한 mount 포인트를 설정해주어야 가능했다. centos-home 의 경우에는 마운트포인트가 '/' 였기 때문에 그 전과정까지는 centos-root 에 할당이 잘 되었던것같다. (lsblk 명령어 수행시 정상적으로 보인 이유) 

xfs_growfs /

위와 같이 명령어 수행시 정상적으로 수행되었다. 

 

*) 추측이 맞다면 xfs_growfs /dev/mapper/centos-root 로도 정상적으로 작동 될것같다. 안된다면 디스크 증설작업에서 lvextend 명령어에서도 /dev/mapper/centos-home 으로 설정이 되어서 그랬을것 같다... 다시 초기화하고 설정해야할듯싶다.

반응형
반응형

컴파일 시 warning

아래와 같은 warning 이 발생하였다.

warning: ‘%s’ directive writing up to 255 bytes into a region of size between 192 and 255 [-Wformat-overflow=]

해당 warning은 버퍼오버 플로우를 방지하라는 warning 이다.

이유는 담을 변수의 사이즈가 더 작거나 같거나 할때 나타는 warning 이다.

예시로는 아래와 같은 상황이다.

ex) 
char buf[5];
long a = 10000000;
sprintf( buf, "%d", a )

결국엔 buf의 사이즈보다 더 큰 상황이 올 것이고, 버퍼오버플로우가 날 것이다.

이 부분을 방지하는 것이다.

 

참고 : https://stackoverflow.com/questions/51697753/how-to-suppress-sprintf-warning-directive-writing-between-1-and-11-bytes-into

반응형
반응형

재부팅 시 자동 마운트를 등록하는 /etc/fstab에서 에러를 잡아내었다. 

참고 : studyheon.tistory.com/7

그 이후 생각해보니 재부팅 시 자동 마운트 말고도 해야할 작업들이 있었다. 

따라서 해야할 목록들을 실행시키는 스크립트를 만들고, 그 스크립트를 자동으로 실행시키기 위하여 어디에 등록해놔야하는 지 알아보았다. 

 

부팅 시 정해진 서비스/스크립트 실행

기존 : init 이라는 프로그램이 담당

현재 : systemd 가 담당

CentOS 7버전 부터 systemd가 담당하고 있다고 한다. 그리고 이 systemd가 rc.local을 실행시켜준다. 따라서 rc.local에 등록을 해주면 부팅 시 실행을 시켜준다. 

그렇다면~ 그냥 등록만 하면 되는가?? 아니였다.. 당연히 설정이 필요하다. 굳이 실행할 서비스가 없다면 켜져있을 필요가 없으니 처음에는 꺼져있을 것이다. 

systemctl status rc-local.service 명령어로 확인해본다. 

q 누르면 종료

한번도 설정하지 않았다면 inactive라고 나와있을 것이고, fail 로 나와있을 수도 있다. 

얘가 켜져있어야 rc.local 파일을 읽어서 실행시킬 수 있다. 따라서 활성화 시켜줘야한다. 

 

설정방법

1. chmod +x /etc/rc.d/rc.local 

-> 이것은 rc.local이 이 파일의 소유자든, 같은 그룹의 사람이든, 다른 사람이든 실행시킬수 있게 만드는 것이다. 

 

2. systemctl start rc-local.service

-> rc-local.service를 실행시킨다. 

 

3. sytstemctl status rc-local.service

-> 여기서 상태를 확인한다. 

 

이와 같이 나왔다면 아주 잘 성공한 것이다~

하지만... 

Active : fail이라고 나온다면 아주 절망적일텐데 소중한 경험을 할 수 있겠다~ 라고 생각해야한다 ^^ 

(늘 내 뜻대로 잘 안되지...)

 

여기까지 하고 만약 Active가 떴다면 /etc/rc.d/rc.local에 실행할 스크립트를 적어도 리부팅한 결과 아주 잘 작동한다. 

그러나 다음 부분이 있어서 찾아보니 이 다음 부분은 서비스에 해당하는 부분인 것 같다. 

Active가 아니라 fail이라고 떴어도 다음 부분은 서비스 실행이니 따라하도록 한다.

(급하면 밑에 fail 이후 조치를 보시길... )

 

4. vi /usr/lib/systemd/system/rc-local.service

한 뒤 마지막 라인에

[install]

WantedBy=multi-user.target

부분을 추가한다.  

 

5. systemctl enable rc-local.servcie

재부팅 시에도 활성화 되도록 enable 시켜준다. 

 

6. systemctl list-unit-files | grep rc.local

설정되었는 지 확인한다. 

 

자! 이제 위에서 systemctl status rc-local.service 에서 fail 이라고 나오고 밑 쪽에 

 rc-local.service: control process exited, code=exited status=127

이와 같은 에러가 발생하였다면 참고해주시기 바랍니다.

저는 위와같이 status=127 에러를 발생하였고,

열심히 구글링 해봤지만 이와같은 127번 에러는 찾을 수 없었습니다. 

그러나~ 계속 쳐다보다보니 

rc-local.service: control process exited, code=exited status=127

이 부분 위에 보면 어디가 실행이 안되었다. 혹은 어디에서 에러가 났다고 보여집니다.

확인해보니... /etc/rc.d/rc.local 에서 오타가 났음을 확인하였습니다...

따라서 127에러는 /etc/rc.d/rc.local 에서 오타가 났음을 알려주는 코드였습니다....

제 실력을 너무 믿었군요.. 

혹은 오타가 아니더라도 실행할 파일이 해당 위치에 없다던지 이런 오류이니

/etc/rc.d/rc.local을 잘 확인해보시기 바랍니다. 

 

참고 : conory.com/blog/42241  

 

systemd에서 부팅시 실행할 서비스 관리하기 (CentOS 7)

원래 부팅시 정해진 서비스 또는 스크립트를 실행시키는 건 init (System V Init)라는 프로그램의 몫이였습니다. 유닉스가 처음 생길때부터 그래왔고, 지금도 그렇습니다.(하지만 지금은 다른 아이로

conory.com

참고 : keviny.tistory.com/1

 

CentOS7 에서 Systemd로 서비스 등록하기 (+ systemctl vs. service)

CentOS 7부터는 이전에 사용하던 SysV(init system) 대신하여, systemd 을 system & service manager 로 사용합니다. Systemd is a system and service manager for Linux operating systems. It is designed to..

keviny.tistory.com

실행순서 참고 : coding-chobo.tistory.com/68 

 

부팅시 rc.local 활성화 (부팅시 스크립트 자동 실행)

1. "rc.local" 파일의 실행 권항을 부여하기 위해 아래의 명령어를 입력합니다. # chmod +x /etc/rc.d/rc.local 2. 아래의 명령어로 "rc-local.service"의 상태를 확인합니다. # systemctl status rc-local.servi..

coding-chobo.tistory.com

 

 

반응형

+ Recent posts