반응형

PyCharm 사용환경 : Ubuntu 20.04 / PyCharm Community Edition 2023.2

 

pycharm의 프로젝트 창에서 pkl파일을 다른 확장자로 열었다가 파일이 제대로 인식되지 않아 코드가 아예 안돌아가는 문제가 있었다.

느낌상 이건 pycharm 자체에서 파일을 불러올 때 문제가 있는 것 같았다.

pycharm 자체의 환경설정만 초기화 해주면 될 것 같아서 공식 홈페이지의 방법을 따라 IDE설정을 초기화해줬더니 다시 제대로 pkl파일을 불러와서 코드가 돌아갔다.

해결방법은 아래와 같다.

 

PyCharm의 File > Manage IDE Settings > Restore Default Settings > Restore and Restart

 

[References]

https://www.jetbrains.com/help/pycharm/configuring-project-and-ide-settings.html#f45b6f4f

 

Configuring PyCharm settings | PyCharm

 

www.jetbrains.com

 

반응형
반응형

1. Normalization

'정규화'라고 하며 데이터의 범위를 0에서 1사이의 값으로 조정하는 것이다.

\( x_{new} = \frac{x - x_{min}}{x_{max} - x_{min}} \)

 

 

2. Norm

Normalization과 혼동될 수 있는 용어이나 Norm이란 벡터의 크기 또는 길이를 측정하는 방법을 말한다.

측정된 벡터의 크기는 원점에서 벡터 좌표까지의 거리 또는 Magnitude라고 한다.

\( L_p = (\sum_{i}^{n} |x_i|^p)^\frac{1}{p} \)

  • p = Norm의 차수, p = 1 = L1 Norm, p = 2 = L2 Norm
  • n = 벡터의 요소 개수

 

 

3.  L0 Norm

0이 아닌 벡터의 개수를 말한다.

ex) v(0,0) = 0개, v(0,1) = 1개, v(1,2) = 2개

 

 

4.  L1 Norm

'Manhatten Norm' 또는 'Texicab Norm'으로도 불린다.

이는 벡터 구성 요소에 절댓값을 취하여 모두 합한 값이다.

\( L_p = (\sum_{i}^{n} |x_i|) = |x_1| + |x_2| + ... + |x_n| \)

<사용 영역>

  • L1 regularization, computer vision

 

 

5. L2 Norm

'Euclidean Norm'로도 불리며 한 지점에서 다른 지점으로 갈 때 최단 거리를 계산한다.

이는 벡터 구성 요소에 제곱을 한 후 모두 더하여 root를 씌운 값이다.

\( L_2 = \sqrt{\sum_{i}^{n} x_i^2} = \sqrt{x_1^2 + x_2^2 + ... + x_n^2} \)

<사용 영역>

  • L2 regularization, KNN algorithm, kmean algorithm

 

 

6. L-Infinity Norm

벡터의 요소를 절댓값을 취했을 때 가장 큰 값을 선택하는 방법이다. ML, DL 데이터 분석 영역에선 사용하지 않는다.

ex) X = [-10, 2, 7] = [|-10|, |2|, |7|] = [10, 2, 7] = 10

<사용 영역>

  • 천체나 우주물리학에서 활용

 

 

[Reference]

https://hongjong.tistory.com/24

 

이 놈은 무엇인가? What is a Norm? L0 Norm, L1 Norm, L2 Norm?

Norm은 무엇인가? 놈(놂, 노름, 노음), 처음에는 Normalization의 약어인줄 알았다. Norm은 공간상에서 벡터(Vector)의 총 길이를 나타낸다 Norm을 측정하는데는 여러 방법이 있는데 가장 일반적인 것이, L0

dev.lifehack.kr

http://taewan.kim/post/norm/

 

딥러닝을 위한 Norm, 노름

Norm의 정의와 특징을 정리합니다.

taewan.kim

https://seolwonkoo.tistory.com/15

 

[선형대수] Norm이란? (L0, L1, L2 Norm)

Norm? 백터에서의 길이 혹은 크기를 측정하는 방법이다. norm이 측정한 벡터의 크기는 원점에서 벡터 좌표까지의 거리라고 한다. 이 공식에서 P는 norm의 차수를 의미하며, p가 1이면 L1 norm이고, p가 2

seolwonkoo.tistory.com

https://hwanii-with.tistory.com/58

 

[이론 및 파이썬] L1 Norm과 L2 Norm

글을 시작하며.. 글의 순서 Norm 이란? L1 Norm L2 Norm L1 Norm과 L2 Norm의 차이 Norm이란? Norm은 크기의 일반화로 벡터의 크기(혹은 길이)를 측정하는 방법입니다. 두 벡터 사이의 거리를 측정하는 방법이

hwanii-with.tistory.com

https://koreapy.tistory.com/530

 

L0 Norm, L1 Norm, L2 Norm-L-infinity Norm에 대한 이해와 유클리디안 공간에 대한 이해

montjoile.medium.com/l0-norm-l1-norm-l2-norm-l-infinity-norm-7a7d18a4f40c L0 Norm, L1 Norm, L2 Norm & L-Infinity Norm First of all, what is a Norm? In Linear Algebra, a Norm refers to the total length of all the vectors in a space. montjoile.medium.com Sum

koreapy.tistory.com

 

반응형
반응형

모델을 학습할 때엔 오류를 최소화해야 한다.

이를 위한 함수는 3가지 명칭이 존재하는데 Loss function, Cost function, Objective function이 있다.

논문마다 서로 다른 명칭을 사용해서 혼란을 느꼈고, 차이점이 있을 거라는 생각이 들어서 찾아보고 정리해 봤더니 각 함수에 대한 정의는 다음과 같았다.

 

1. Loss function

하나의 input data에 대한 예측값과 실제값 사이의 오차를 계산하는 함수를 말한다.

 

<대표적 함수>

Squared error : \( (y - \hat{y})^2 \)

Absolute Error : |\(y-\hat{y}\)|

 

 

2. Cost function

entire data에 대한 예측값과 실제값 사이의 오차를 계산하는 함수를 말한다.

즉, 모든 input data에 대해 계산한 Loss function의 평균값을 의미한다.

 

<대표적 함수>

Mean Squared Error (MSE) : \( \frac{1}{N} \sum_{i=1}^{N} (y_i - \hat{y_i})^2 \)

Mean Absolute Error (MAE) : \( \frac{1}{N} \sum_{i=1}^{N} |y_i - \hat{y_i}| \) 

 

 

3. Objective function

모델에 대해 우리가 일반적으로 사용하는 용어로 최솟값과 최댓값을 구하는 함수를 말한다. 즉, 학습에서 경사 하강법을 사용하여 최적화하는 것을 의미한다. 

 

<대표적 함수>

Maximum Likelihood Estimate (MLE)

 

 

[정리]

위 함수들을 다시 정리해보자면 Loss function  <=  Cost function  <=  Objective function 가 된다.

Objective function 안에 Cost function이 포함되고, Cost function안에 Loss function이 포함되는 개념이라고 할 수 있다.

 

 

 

 

[Reference]

https://ok-lab.tistory.com/171

 

Object Function, Cost Function, Loss Fuction

우리가 딥러닝(Deep Learning)을 다루다 보면 목적 함수(Object Function), 비용 함수(Cost Function), 손실 함수(Loss Function)이라는 단어를 많이 접하게 될 것이다. 일반적으로 언급한 세 가지의 함수가 동일하

ok-lab.tistory.com

https://blog.naver.com/PostView.naver?blogId=qbxlvnf11&logNo=221386278997 

 

머신러닝 - Loss Function, Cost Function, Objective Function의 차이

모델을 학습할 때는 비용(cost) 즉, 오류를 최소화하는 방향으로 진행이 됩니다. 비용이 최소화되는 곳이 ...

blog.naver.com

https://ganghee-lee.tistory.com/28

 

Objective Function, Loss Function, Cost Function의 차이

학습을 통해 최적화시키려는 함수이다. 딥러닝에서는 일반적으로 학습을 통해 Cost를 최소화시키는 optimize작업을 수행을 하고 이때 Cost function을 Objective function이라 볼 수 있다. 하지만 Objective func

ganghee-lee.tistory.com

https://velog.io/@regista/%EB%B9%84%EC%9A%A9%ED%95%A8%EC%88%98Cost-Function-%EC%86%90%EC%8B%A4%ED%95%A8%EC%88%98Loss-function-%EB%AA%A9%EC%A0%81%ED%95%A8%EC%88%98Objective-Function-Ai-tech

 

비용함수(Cost Function), 손실함수(Loss function), 목적함수(Objective Function) | Ai-tech

해당 포스트의 내용을 이해기 위해서는 머신러닝/딥러닝의 구현 원리의 기본은 이해하고 있어야합니다.비용함수, 손실함수, 목적함수에 대한 정의를 계속해서 잊게된다.머신러닝과 딥러닝 알

velog.io

 

반응형
반응형

Jupyter Notebook 사용환경 : Window 10

 

Jupyter notebook  실행 중에 갑자기 커널이 죽었다는 메시지가 뜨길래 다른 블로그들을 참고하여 버퍼 크기를 늘려보았으나 문제가 해결되지 않았다.

사실 너무 오랜만에 Jupyter Notebook을 실행한거라 pip 자체의 업데이트도 실행해줬는데도 문제가 해결되지 않았었다.

 pip library들도 너무 오랫동안 업데이트 해주지 않았던건가 싶어서 아래의 블로그에서 본 라이브러리 전체 업데이트 명령어를 통해 커널이 죽는 문제를 해결할 수 있었다.

https://seong6496.tistory.com/152

 

[Python] pip 패키지 설치제거, 버전 업그레이드

cmd에서 pip 패키지 설치와 버전 업그레이드 방법입니다. cmd를 관리자 모드로 실행시켜서 수행합니다. 설치 설치는 cmd에서 다음을 입력합니다. pip install "패키지이름" 버전을 지정하고 싶다면 == "

seong6496.tistory.com

 

pip library를 전체 업데이트 하는 방법은 command에서 하거나 windows shell을 통해서 할 수 있지만,  command로 했을 때 일일이 수정해주기 귀찮아서 windows powershell을 사용했다.

Windows powershell관리자모드로 실행해주고 아래의 명령어를 쳐서 pip 라이브러리들을 전체 업데이트 해줬더니 더이상 커널이 죽지 않고 잘 돌아간다.

pip freeze | %{$_.split('==')[0]} | %{pip install --upgrade $_}

 

 

 

반응형
반응형

Jupyter Notebook 사용환경 : Window 10

 

command창에서  jupyter notebook --generate-config 명령어를 실행하면 jupyter notebook의 실행경로를 변경할 수 있는 jupyter_notebook_config.py 파일이 생성된다.

 

하지만 본인의 경우 cmd에서 위 명령어가 먹히지 않아 우선은 주피터 노트북에서 임시로 python3 파일을 생성한 후, 똑같은 명령어를 써주되 앞에 !를 붙여주고 실행했더니 jupyter_notebook_config.py파일이 만들어진 경로가 떴다.

임시로 python3 파일 하나 생성
기존의 명령어 앞에 !를 붙여서 실행해준다. 그럼 밑에 파일이 생긴 경로가 생성된다.

 

하이라이트 된 경로를 찾아서 들어가보면 파일이 생성된 것을 확인할 수 있다. 이 파일을 sublime text와 같은 텍스트 편집기 프로그램으로 열어준다.

 

파일 내에서 c.NotebookApp.notebook_dir 키워드를 찾아보면 # c.NotebookApp.notebook_dir = '' 라고 적혀있고 주석처리가 된 것을 볼 수 있다.

여기서 자신이 실행시키고 싶은 경로를 c.NotebookApp.notebook_dir = '실행할경로작성'에 넣고 앞에 있는 주석처리인 #을 없애서 저장해준 뒤 jupyter notebook을 실행시키면 본인이 작성한 폴더경로에서 실행되는 것을 확인할 수 있다.

※ 참고로 폴더 경로를 작성할 때 \ 대신 / 를 써서 작성해줘야 한다.

경로를 설정하고 주석표시인 #을 삭제한 후 저장해준다.
jupyter notebook을 실행시키면 본인이 지정한 경로에서 실행되는 것을 확인할 수 있다.

 

반응형
반응형

https://leetcode.com/problems/most-common-word/

 

Most Common Word - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

<문제 조건>

  1. 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력해야 한다.
  2. 대소문자 구분을 하지 않고, 구두점(마침표, 쉼표 등) 또한 무시한다.
  • 입력받은 문자열에서 구두점을 제거해주기 위해 re.sub함수를 사용해준다.
    • re.sub(찾을 패턴, 찾은 패턴을 변경할 내용, 원본)
      • [ ] : 검색할 문자 ex) [abc] : a나 b나 c
        • : 문자 범위 사이에 속하는 문자 중 하나 ex) 0-9 : 0에서 9에 속하는 숫자들 중 하나
      • ^ : 맨 앞에 사용될 경우에만 해당 문자 패턴이 아닌 것과 매칭 ex)[^a-c] : a,b,c가 아닌 문자열
      • \W == [^a-zA-Z0-9] : \W는 모든 numbers, letters 를 뺀 나머지 문자들을 의미
      • 문자열 앞에 붙는 r : 해당 문자열이 구성된 그대로 문자열을 반환
      • 참고 링크 : https://velog.io/@ednadev/파이썬-정규표현식과-re모듈
print('abc\n')
print(r'abc\n')

"""
<출력 결과>
abc
abc\n
"""
  • 이후 대소문자 구분을 없애주기 위해 lower()함수를 써주고, 각 단어들을 얻기위해 공백을 기준으로 문자열을 분리해준다.
  • 분리된 단어들이 금지된 단어인지 확인하여 허용된 단어만 리스트에 저장해준다.
  • collections.Counter를 사용하여 각 단어별 등장횟수를 구한 딕셔너리를 생성한다.
  • 가장 많이 등장한 단어와 횟수는 인덱스 0번째에 하나의 쌍으로 오고, 해당 단어는 그 안에 인덱스 0번째에 존재하므로 most_common함수를 사용하여 [0][0]으로 접근해준다.
import collections, re

class Solution:
    def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
        words = re.sub(r'\W+', ' ', paragraph).lower().split()
        words_list = [word for word in words if word not in banned] # 금지된 단어는 제외
        words_count = collections.Counter(words_list)   # 단어별 등장횟수
        most_count_word = words_count.most_common()[0][0]   # 등장횟수가 가장 많은 단어 추출
        
        return most_count_word

"""
Input: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", 
       banned = ["hit"]
Output: "ball"
"""
반응형
반응형

https://leetcode.com/problems/reorder-data-in-log-files/

 

Reorder Data in Log Files - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

<문제 조건>

  1. 로그의 가장 앞 부분은 식별자다.
  2. 문자로 구성된 로그가 숫자 로그보다 앞에 온다.
  3. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다.
  4. 숫자 로그는 입력 순서대로 한다.
  • 각 리스트에 주어진 문자열에서 맨 처음에 오는 단어는 식별자이다. 식별자를 제외하고 뒤에 오는 단어들을 기준으로 정렬해줘야 한다.
  • 문제 조건으로 문자로 구성된 로그가 숫자보다 먼저 온다고 하였으므로, 문자열로 구성된 로그와 숫자로 구성된 로그를 각각 구분하여 리스트에 저장해준다.
  • 숫자 로그는 입력 순서대로 한다고 하였으므로, 따로 정렬해주지 않는다. 하지만 문자열 로그는 단어 순서대로 정렬해줘야 하므로 리스트의 sort()함수에 key값을 줘서 어떤 것을 기준으로 정렬할 것인지 알려줘야 한다.
  • 먼저 split()함수를 사용하여 공백을 기준으로 문자열을 각 단위별로 구분해준다. 식별자 뒤에 등장하는 단어들을 기준으로 정렬해야 하므로 단어들이 위치한 인덱스인 [1:]을 써준다. 그리고 만약 "let1 art can","let3 art zero" 혹은 "let1 art can","let1 art zero" 처럼 art가 겹치는 경우에는 맨 앞에 있는 식별자를 기준으로 구분해줘야 하므로 식별자가 위치한 인덱스 [0]을 써준다. 이렇게 2개의 기준을 한 쌍으로 정렬하게 해야 하므로 겉에 ()를 써서 감싸준다.
class Solution:
    def reorderLogFiles(self, logs: List[str]) -> List[str]:
        digit_list = []     # 숫자 로그 리스트
        string_list = []    # 문자열 로그 리스트
        
        for log in logs:
            if log.split()[1].isdigit():    # 맨 앞의 식별자를 빼고 난 다음에 오는 로그가 문자열인지 숫자인지 판단하여 각각의 리스트에 저장
                digit_list.append(log)
            else:
                string_list.append(log)    
        
        string_list.sort(key = lambda stlist : (stlist.split()[1:], stlist.split()[0])) 
        # 공백을 기준으로 문자열 로그를 word단위로 각각 구분해준다.
        # 로그의 식별자를 제외하고 등장하는 문자열들을 비교하여 순차적으로 나열 & 식별자를 기준으로 순차적으로 나열
        # 위 2개의 기준을 한쌍으로 넘겨 문자열 로그를 정렬한다.

        sorted_logs = string_list + digit_list  # 정렬된 문자열 로그와 숫자 로그 리스트를 합친 로그 생성
        return sorted_logs


"""
Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"]
Output: ["let1 art can","let3 art zero","let2 own kit dig","dig1 8 1 5 1","dig2 3 6"]
"""
반응형
반응형

https://leetcode.com/problems/reverse-string/

 

Reverse String - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

<문제 조건>

  1. 문자열을 뒤집는 함수를 작성하라.
  2. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라.
  • list의 reverse()함수를 사용하면 빠르게 문자열을 뒤집을 수 있다.
class Solution:
    def reverseString(self, s: List[str]) -> None:
        s.reverse()
        return s

"""
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]

Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
"""
반응형
반응형

https://leetcode.com/problems/valid-palindrome/

 

Valid Palindrome - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

<문제 조건>

  1. 주어진 문자열이 팰린드롬인지 확인하라.
  2. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다.
  • 공백제거를 해준 문자열을 각각 문자로 쪼개서 리스트에 저장한다.
  • 입력받은 문자가 영문자와 숫자인 경우에만 소문자로 바꿔주고 그 외에 문자들은 제거한다.
  • 리스트의 문자들을 복사한 후, 역순으로 뒤집는다.
  • 역순으로 뒤집힌 문자들과 하나씩 비교하면서 동일한지 확인한다.
class Solution:
    def isPalindrome(self, s: str) -> bool:        
        # 공백제거를 해준 문자열을 한 문자씩 쪼개서 리스트에 저장
        input_list = list(s.replace(" ", ""))
        # replace("기존 문자", "바꿀 문자")
        
        # 입력받은 문자가 영문자와 숫자인 경우에만 소문자로 바꿔주고 그 외에 문자들은 제거        
        lower_input_list = [input_element.lower() for input_element in input_list if input_element.isalnum()]
        # isalpha() : 문자열인지 판별해주는 함수
        # isalnum() : 숫자와 문자열인지 판별해주는 함수
		
        # 리스트의 문자들을 복사한 후, 역순으로 뒤집는다.
        reverse_input_list = lower_input_list.copy()
        reverse_input_list.reverse()
        
        result = True
        # 역순으로 뒤집힌 문자들과 하나씩 비교하면서 동일한지 확인한다.
        for i in range(len(lower_input_list)):
            if lower_input_list[i] != reverse_input_list[i]:
                result = False
                break
        
        return result

"""
Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.

Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.

Input: s = " "
Output: true
Explanation: s is an empty string "" after removing non-alphanumeric characters.
Since an empty string reads the same forward and backward, it is a palindrome.
"""

 

반응형
반응형

LaTeX를 사용하기 위해선 TeXLive를 설치해줘야 한다.

가장 먼저 아래의 url에 들어가서 설치 파일을 다운받자.

 

https://www.tug.org/texlive/

 

TeX Live - TeX Users Group

TeX Live TeX Live is intended to be a straightforward way to get up and running with the TeX document production system. It provides a comprehensive TeX system with binaries for most flavors of Unix, including GNU/Linux and macOS, and also Windows. It incl

www.tug.org

 

자신이 사용하고 있는 운영체제에 따라 설치를 해야한다.

현재 쓰고 있는 글은 윈도우 기반으로 작성하고 있으므로 Windows를 클릭해주자.

 

인터넷을 통해 설치하고 있는 경우 .exe파일을 다운받아 실행하는 것을 추천하고 있다.

위 이미지처럼 install-tl-windows.exe를 누르면 다운로드가 시작된다.

 

다운로드가 완료되면 실행파일이 다운된 폴더로 들어가 install-tl-windows.exe를 오른쪽 버튼으로 클릭한 후, 관리자 권한으로 실행시킨다.

 

TeX Live를 새로 설치하는 것이므로 Install을 선택한 후, Next 버튼을 눌러준다.

 

Install 버튼을 누르면 알아서 설치가 진행되다가 아래의 이미지와 같은 install-tl-gui라는 새로운 창이 하나 더 뜬다.

 

이때 재빠르게 Specific mirror 버튼을 누르면 특정 mirror파일을 선택할 수 있다. 해당 메뉴에서 Korea를 선택하면 TeX Live를 다운받을 서버를 선택할 수 있다.

맨 처음에 있는 ftp.ktug.org/tex-archive/systems/texlive/tlnet은 느리다고 하니 적절히 다른 것을 선택해주자.

 

그럼 위와 같은 창이 다시 뜨게 되는데 내가 원하는 설정을 위해 advanced를 눌러주자.

 

Selections > Scheme > change 를 눌러 살펴보면 TeX Live의 모든 것을 다 설치할지 혹은 기본적인 것들만 설치하고 나머지 패키지나 언어들은 조금만 받을건지 등 다양한 선택지를 선택할 수 있다.

모든 언어들을 설치할 필요가 없고, 용량이 적은 상태여서 small scheme를 선택한 후, OK 버튼을 눌러줬다. 

 

다음으로 한국어 지원을 위해 바로 아래에 있는 Customize 버튼을 누른다.

Languages 영역에서 스크롤을 내려 Korean을 클릭한 후 OK버튼을 눌러준다.

 

이제 설정이 다 끝났으면 install 버튼을 눌러 설치를 마저 진행해주자.

 

개개인의 컴퓨터마다 다르겠지만 본인의 경우 대략 6분 가량의 시간이 흐른 후 설치가 완료됐다. 가끔 설치하다 오류가 나는 경우가 있으니 살펴봐 주는 것이 좋다.

설치가 정상적으로 완료되면 위 사진처럼 Welcome to TeX Live! 라는 문구가 뜬다.

 

<설치오류>

사실 아래의 2개 오류를 거치고서 위와 같이 TeX Live 설치를 완료했다.

가끔 본인처럼 mirror 또는 MinGW 때문에 설치에 실패한 경우라면 아래와 같이 따라해보면 된다.

 

1) mirror 오류

Retrying to install: hologo [570k]
TeXLive::TLUtils::check_file_and_remove: checksums differ for C:\TEMP\tqbzDMXJJP\AJG7AZ6mtQ/hologo.source.tar.xz:
TeXLive::TLUtils::check_file_and_remove:   tlchecksum=c9a8e2a3b4f35dc2da6339f9f2ba8e612398c7fe92455f021b5c006db34ce6e7e7a7a3cba08e5407516b8c171deccb742ecde1de0ba4e341392ded663ca280e2, arg=0fa9111eb2d1dd0ce076cb831466219be1f18b87e9520aafa15bdfea7636df836e77611e393909b6c410f6bd1aee76b76aa4779317fb4159353098aa95921ed4
TeXLive::TLUtils::check_file_and_remove: backtrace:
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/tlpkg/TeXLive/TLUtils.pm:2399: TeXLive::TLUtils::check_file_and_remove
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/tlpkg/TeXLive/TLPDB.pm:1978: TeXLive::TLUtils::unpack
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/tlpkg/TeXLive/TLPDB.pm:1838: TeXLive::TLPDB::_install_data
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/tlpkg/TeXLive/TLPDB.pm:1729: TeXLive::TLPDB::not_virtual_install_package
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/tlpkg/TeXLive/TLUtils.pm:1633: TeXLive::TLPDB::install_package
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl:2135: TeXLive::TLUtils::install_packages
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl:946: main::do_install_packages
 -> C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl:700: main::do_installation
TeXLive::TLUtils::check_file_and_remove:   removing C:\TEMP\tqbzDMXJJP\AJG7AZ6mtQ/hologo.source.tar.xz, but saving copy in C:\TEMP\_VIkABV93X
TLPDB::_install_data: downloading did not succeed (check_file_and_remove failed) for https://mirror.kakao.com/CTAN/systems/texlive/tlnet/archive/hologo.source.tar.xz
Installation failed.
Rerunning the installer will try to restart the installation.
Or you can restart by running the installer with:
  install-tl-windows.bat --profile installation.profile [YOUR-EXTRA-ARGS]
or
  install-tl-advanced.bat --profile installation.profile [YOUR-EXTRA-ARGS]
C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl: Writing log in current directory: C:/TEMP/nsl816B.tmp/install-tl.log
Wide character in print at C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 329.
Wide character in print at C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 329.
Wide character in print at C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 329.
Wide character in print at C:/Temp/nsl816B.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 329.

로그를 살펴봤더니 TLPDB::_install_data: downloading did not succeed 라면서 다운로드를 실패했다고 한다.

install-tl-gui라는 새로운 창을 살펴봤더니 기본적으로 kakao.com의 mirror를 불러오고 있으므로 이런 경우엔 Specific mirror 버튼을 눌러 특정 mirror파일을 바꾸면 해결할 수 있다.

 

2) MinGW 오류

Installing to: C:/texlive/2021
Installing [001/337, time/total: ??:??/??:??]: texlive.infra [430k]
xz: (stdin): Compressed data is corrupt
TLPDB::_install_data: Decompressing C:\TEMP\JgMlF2LsYl\TpXju1uud7/texlive.infra.tar.xz failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/texlive.infra.tar.xz
TLUtils::install_packages: Failed to install texlive.infra
                           texlive.infra will be retried later.
Installing [002/337, time/total: ??:??/??:??]: texlive.infra.win32 [2722k]
xz: (stdin): Compressed data is corrupt
TLPDB::_install_data: Decompressing C:\TEMP\JgMlF2LsYl\Q5nck6sukY/texlive.infra.win32.tar.xz failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/texlive.infra.win32.tar.xz
TLUtils::install_packages: Failed to install texlive.infra.win32
                           texlive.infra.win32 will be retried later.
Installing [003/337, time/total: ??:??/??:??]: tlperl.win32 [7010k]
xz: (stdin): Compressed data is corrupt
TLPDB::_install_data: Decompressing C:\TEMP\JgMlF2LsYl\zx1uF2ojiu/tlperl.win32.tar.xz failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/tlperl.win32.tar.xz
TLUtils::install_packages: Failed to install tlperl.win32
                           tlperl.win32 will be retried later.
Installing [004/337, time/total: ??:??/??:??]: adobemapping [2120k]
xz: (stdin): Compressed data is corrupt
TLPDB::_install_data: Decompressing C:\TEMP\JgMlF2LsYl\TYiY8P33AH/adobemapping.tar.xz failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/adobemapping.tar.xz
TLUtils::install_packages: Failed to install adobemapping
                           adobemapping will be retried later.
                           
                                            .
                                            .
                                            .
Installing [336/337, time/total: 05:10/3440:28:08]: zitie [347k]
tar: Skipping to next file header
TLUtils::untar: C:\Temp\nsoE1FC.tmp\install-tl-20211115\tlpkg\installer\tar.exe xmf C:\TEMP\JgMlF2LsYl\Y_i2eM4wA4/zitie.tar failed (in C:/texlive/2021/texmf-dist)
TLPDB::_install_data: untar failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/zitie.tar.xz
TLUtils::install_packages: Failed to install zitie
                           zitie will be retried later.
Installing [337/337, time/total: 05:11/3451:34:02]: zxjafont [181k]
tar: Skipping to next file header
TLUtils::untar: C:\Temp\nsoE1FC.tmp\install-tl-20211115\tlpkg\installer\tar.exe xmf C:\TEMP\JgMlF2LsYl\B1Gx_lGbK9/zxjafont.tar failed (in C:/texlive/2021/texmf-dist)
TLPDB::_install_data: untar failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/zxjafont.tar.xz
TLUtils::install_packages: Failed to install zxjafont
                           zxjafont will be retried later.
Retrying to install: texlive.infra [430k]
xz: (stdin): Compressed data is corrupt
TLPDB::_install_data: Decompressing C:\TEMP\JgMlF2LsYl\JjPQ1WCNTg/texlive.infra.tar.xz failed for https://ftp.kaist.ac.kr/tex-archive/systems/texlive/tlnet/archive/texlive.infra.tar.xz
Installation failed.
Rerunning the installer will try to restart the installation.
Or you can restart by running the installer with:
  install-tl-windows.bat --profile installation.profile [YOUR-EXTRA-ARGS]
or
  install-tl-advanced.bat --profile installation.profile [YOUR-EXTRA-ARGS]
C:/Temp/nsoE1FC.tmp/install-tl-20211115/install-tl: Writing log in current directory: C:/TEMP/nsoE1FC.tmp/install-tl.log
Wide character in print at C:/Temp/nsoE1FC.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 327.
Wide character in print at C:/Temp/nsoE1FC.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 327.
Wide character in print at C:/Temp/nsoE1FC.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 327.
Wide character in print at C:/Temp/nsoE1FC.tmp/install-tl-20211115/install-tl line 2479, <STDIN> line 327.

처음에 설치할 때부터 난리가 나버린다.

언제 설치했는지 지금은 기억도 나지 않는 MinGW 때문인데 로그를 보면 untar 또는 설치할 수 없다고 337개 모두 적혀있다. 이런 경우엔 시스템 환경변수 설정에서 MinGW의 경로를 잠시 빼줘야 한다.

 

윈도우 시작 버튼을 눌러 시스템 환경 변수 편집을 검색하여 클릭해주자.

 

시스템 속성 > 고급 탭에서 환경변수 버튼을 누르면 창이 하나 뜬다.

아래 쪽에 있는 시스템 변수 영역에서 스크롤해서 내리다 보면 Path라는 부분이 있는데 이를 누른 후 편집 버튼을 누른다.

 

그럼 환경변수 편집 창이 새로 뜬다. 여기서 MinGW가 포함돼 있는 경로를 찾아 복사하여 혹시 모르니 메모장에 저장해주도록 하자.

이후 환경변수 편집 창에서 MinGW 경로를 선택하여 삭제 버튼을 누른 후 확인 버튼을 누른다.

환경 변수 창에서 확인 버튼을 누르면 창이 닫힌다. 마찬가지로 시스템 속성 창에서도 확인 버튼을 눌러 주도록 하자.

이제 다시 처음부터 TeX Live 설치를 동일하게 수행해주면 제대로 설치가 된다.

반응형

+ Recent posts