미디어위키/미디어위키 익스텐션

미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Replace Text 설치와 활용

씨실과 날실 2020. 4. 29. 12:00

[익스텐션 목록]

기본 익스텐션

2019/10/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Interwiki 설치와 활용

2020/04/28 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Nuke 설치와 활용

2020/04/28 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Renameuser 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CiteThisPage 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Replace Text 설치와 활용

2020/04/29 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) WikiEditor 설치와 활용

2020/04/30 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CodeEditor 설치와 활용

2020/04/30 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) CategoryTree 설치와 활용

2020/05/01 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Cite 설치와 활용

2020/05/01 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ImageMap 설치와 활용

2020/05/02 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) InputBox 설치와 활용

2020/05/02 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ParserFunctions 설치와 활용

2020/05/03 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Poem 설치와 활용

2020/05/03 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) SyntaxHighlight 설치와 활용

2020/05/04 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) PDF Handler 설치와 활용

2020/05/04 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) ConfirmEdit 설치와 활용

2020/05/05 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) SpamBlacklist 설치와 활용

2020/05/05 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) TitleBlacklist 설치와 활용

2020/05/06 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) Gadgets 설치와 활용

2020/05/06 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) LocalisationUpdate 설치와 활용

2020/05/07 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) MultimediaViewer 설치와 활용

2020/05/07 - [미디어위키/미디어위키 익스텐션] - 미디어위키(Mediawiki) 기본 제공 익스텐션(Extension) OATHAuth 설치와 활용




[Replace Text 익스텐션 관련 정보]

익스텐션 공식 안내 페이지

https://www.mediawiki.org/wiki/Extension:Replace_Text

다운로드

미디어위키 내 배포 페이지

https://www.mediawiki.org/wiki/Special:ExtensionDistributor/ReplaceText

github 페이지

https://github.com/wikimedia/mediawiki-extensions-ReplaceText


 Replace Text 익스텐션 기능

위키 관리자가 위키 컨텐츠 페이지의 내용과 제목의 텍스트 모두에서 문자열 찾기 및 바꾸기를 수행 할 수 있는 특수 문서와 명령줄 스크립트 기능을 제공하는 익스텐션입니다.




익스텐션 다운로드 및 설치

다운로드 안내

익스텐션 다운로드 및 설치 방법은 아래 링크를 참고하시기 바랍니다.


사용 중인 미디어위키의 버전에 맞는 배포 익스텐션 압축 파일을 다운로드받습니다.

익스텐션 공식 배포처

미디어위키 내 배포 페이지

https://www.mediawiki.org/wiki/Special:ExtensionDistributor/ReplaceText

github 페이지

https://github.com/wikimedia/mediawiki-extensions-ReplaceText




미디어위키 버전별 익스텐션 다운로드 주소

1.34

https://extdist.wmflabs.org/dist/extensions/ReplaceText-REL1_34-bd08cbd.tar.gz

1.33

https://extdist.wmflabs.org/dist/extensions/ReplaceText-REL1_33-b96bede.tar.gz

1.32

https://extdist.wmflabs.org/dist/extensions/ReplaceText-REL1_32-a5dc24d.tar.gz

1.31

https://extdist.wmflabs.org/dist/extensions/ReplaceText-REL1_31-a027ec9.tar.gz

위 주소는 코드 수정으로 바뀔 수 있으므로 다운이 받아지지 않는다면 위 공식 루트를 통해 다운받으시기 바라비니다.

다운로드 받은 압축 파일을 서버 안 미디어위키 설치 폴더 내에 있는  extensions폴더 안에 풀어줍니다.

리눅스 서버의 경우

$ sudo tar -xzf ReplaceText-REL1_34-bd08cbd.tar.gz -C /미디어위키 설치 경로/extensions


예시 - Ubuntu

$ sudo tar -xzf ReplaceText-REL1_34-bd08cbd.tar.gz -C /var/www/html/w/extensions

위 명령은 제 블로그를 그대로 따라오신 분의 경우 적용되는 예시입니다.


윈도 서버의 경우

탐색기로 압축 파일을 해당 위치에 풀어주시면 됩니다.


호스팅을 받는 경우

파일질라, 알FTP 등 FTP 프로그램을 이용해 미리 풀어 놓은 익스텐션 폴더(ReplaceText)를 통째로 해당 위치에 전송해줍니다.




익스텐션 필수 설정

미디어위키의 환경 설정 파일인 LocalSettings.php 파일에 다음과 같은 코드를 추가해줍니다.

wfLoadExtension( 'ReplaceText' );


... 전략 ...

# Enabled extensions. Most of the extensions are enabled by adding
# wfLoadExtensions('ExtensionName');
# to LocalSettings.php. Check specific extension documentation for more details.
# The following extensions were automatically enabled:
wfLoadExtension( 'CategoryTree' );
wfLoadExtension( 'Cite' );
wfLoadExtension( 'CiteThisPage' );
wfLoadExtension( 'CodeEditor' );
wfLoadExtension( 'ConfirmEdit' );
wfLoadExtension( 'Gadgets' );
wfLoadExtension( 'ImageMap' );
wfLoadExtension( 'InputBox' );
wfLoadExtension( 'Interwiki' );
wfLoadExtension( 'LocalisationUpdate' );
wfLoadExtension( 'MultimediaViewer' );
wfLoadExtension( 'Nuke' );
wfLoadExtension( 'OATHAuth' );
wfLoadExtension( 'ParserFunctions' );
wfLoadExtension( 'PdfHandler' );
wfLoadExtension( 'Poem' );
wfLoadExtension( 'Renameuser' );
wfLoadExtension( 'ReplaceText' );
wfLoadExtension( 'SpamBlacklist' );
wfLoadExtension( 'SyntaxHighlight_GeSHi' );
wfLoadExtension( 'TitleBlacklist' );
wfLoadExtension( 'WikiEditor' );

# End of automatically generated settings.
# Add more configuration options below.

... 후략 ...

미디어위키 설치시 기본 제공 익스텐션을 함께 설치하도록 설정한다면 코드는 보통 위 예시와 같은 위치에 추가됩니다.


기본적으로 'sysop'사용자 그룹의 구성원들만 텍스트 교체 기능을 사용할 수 있습니다.

LocalSettings.php에서 $wgGroupPermissions 배열을 수정하여 허용 된 사용자 세트를 추가하거나 수정할 수 있습니다. 예를 들어 '관료'또는 '봇'사용자에 대한 권한을 추가하려면 다음을 추가하십시오.

$wgGroupPermissions['bureaucrat']['replacetext'] = true;


설치 확인

미디어위키의 특수:버전(= Special:Version) 문서를 확인하면 위 익스텐션이 추가된 것을 확인할 수 있습니다.




Replace Text 익스텐션 추가 구성 설정

사용자에게 Replace Text 권한 할당하기

기본적으로 모든 문자열 치환 작업는 문서 역사 기록에 치환 작업을 한 사용자의 이름과 함께 기록됩니다.

그러나 LocalSettings.php에 다음과 같은 줄을 추가하여 봇 계정과 같은 사전 설정된 사용자에게 Replace Text 권한 부여를 할 수 있습니다.

$wgReplaceTextUser = "MyReplaceTextBot";

지정된 사용자 이름은 이미 위키의 계정이어야 합니다.  해당 계정은 등록 또는 로그인할 수 없는 MediaWiki의 사용자 이름 배열에 추가됩니다.



Replace Text 익스텐션 사용법

Replace Text는 '특수:찾아바꾸기(Special:ReplaceText)'에서 전역 검색 및 교체를 처리하는 특수 페이지를 말합니다. 또한 명령줄에서 동일한 작업을 수행하는 replaceAll.php 스크립트를 말하기도 합니다. 여기서는 먼저 명령줄 스크립트를 다룬 다음 특수 페이지 다루도록 하겠습니다.


명령 줄 스크립트 : replaceAll.php

Replace Text는 replaceAll.php 스크립트를 제공합니다. replaceAll.php는 명령행에서 실행할 수 있으며 Special:ReplaceText 페이지와 동일한 대체를 수행합니다.

이 스크립트의 처음 두 인수는 검색 텍스트와 대체 텍스트이어야야 합니다. 이 스크립트를 다음과 같이 간단하게 호출 할 수 있습니다.

$ php replaceAll.php "Leningrad" "St. Petersburg"


이 스크립트에 사용할 수있는 다른 인수 / 플래그는 다음과 같습니다.

    --dry-run

실제 교체없이 검색 텍스트만 찾습니다.

    --regex

정규식을 사용합니다 (기본값은 false).

    --user

대체 권한을 부여할 사용자 (기본값은 ID가 1 인 사용자)

    --yes

"yes"라고 가정된 모든 프롬프트를 건너 뜁니다.

    --summary

교체 편집에 대한 사용자 정의 편집 요약을 설정합니다.

    --no-announce

Special:RecentChanges 또는 관심 목록에 대한 편집 내용을 표시하지 않습니다.

    --ns

검색할 네임 스페이스 목록을 쉼표로 구분하여 설정합니다.

    --nsall

모든 네임 스페이스를 검색합니다. "--ns"에 설정된 값을 덮어 씁니다.

    --replacements

탭으로 구분된 대체 목록을 보유한 파일 이름

    --debug

대체할 내용을 표시합니다.

또한 특정 텍스트 대체와 관련이 없는 유용한 정보를 엄격하게 인쇄하는 두 개의 플래그가 있습니다.

    --show-file-format

--replacements 와 함께 사용할 파일 형식에 대한 설명을 표시합니다.

    --listns

이 위키의 모든 네임 스페이스 목록을 보여줍니다.


"php replaceAll.php --help"를 호출하여 이러한 옵션을 모두 볼 수도 있습니다.


실행 예시

study@study-VirtualBox:/var/www/html/w/extensions/ReplaceText$ php replaceAll.php "익스텐션" "확장기능"
#!/usr/bin/php
익스텐션 사용 예제
Replace instances on these pages? (Y/N) y
Attribute changes to the user '관리자'? (Y/N) y
Replacing on 익스텐션 사용 예제... done.
study@study-VirtualBox:/var/www/html/w/extensions/ReplaceText$ 



특수:찾아바꾸기(Special:ReplaceText) 페이지


정규식을 이용한 문자열 교체는 아래 링크를 참고하시기 바랍니다.


예를 들어 위 그림의 A B C D 문자열을 다른 것으로 바꾼다고 생각해봅시다.


관리자 계정으로 로그인 후 특수:특수문서 페이지에 가면 테이터와 도구 파트에서 문자열 찾아 바꾸기 링크가 있습니다.



특수:찾아바꾸기

Special:ReplaceText


아니면 로그인한 후 검색상자에서 '특수:찾아바꾸기'를 입력하면 위 그림과 같이 문자열 찾아 바꾸기 페이지에 들어갈 수 있습니다.

특수:찾아바꾸기(Special:ReplaceText) 페이지에는 처음에 관리자가 검색과 교체에 필요한 세부 정보를 입력할 수 있는 양식이 표시됩니다.

관리자는 페이지 내용, 페이지 제목 또는 둘 다에서 텍스트를 바꿀지 여부를 선택하고, 검색 문자열과 그 대체 문자열, 검색할 네임 스페이스들을 입력합니다.

덧붙여 관리자는 두 추가적인 필터를  추가할 수 있는데 그것은 문서가 속해 있는 카테고리 이름과 문서 이름의 시작 문자열입니다.

검색 문자열이 페이지에 여러 번 포함된 경우 모든 해당 문자열이 교체됩니다. 모든 페이지의 대체는 사소한 편집으로 표시되며, 텍스트를 편집한 사용자로 텍스트 교체를 수행한 관리자와 "텍스트 대체 : ' 검색 문자열 '에서 ' 대체 문자열 '" 과 같은 편집 요약이 표시 됩니다.

페이지의 제목은 이미 위키에 존재하는 제목이나 여러 줄의 제목으로 이동할 수 없습니다. 이동할 수없는 페이지는 "선택"페이지에 확인란이 없는 상태로 나타나 이동할 수 없는 것으로 표시됩니다.

검색은 대소 문자를 구분합니다.


양식을 제출하면 해당 검색 문자열이 포함된 모든 페이지나 제목에 검색 문자열이 포함된 모든 페이지 또는 그 둘 다의 목록이 표시됩니다.

여기서는 A B C D 문자열이 사용된 위키문서가 익스텐션 사용 예제 하나뿐이어서 해당 문서만 표시된 것입니다.

각 페이지 이름 옆에는 각각의 확인란이 있으므로 교체하지 않을 페이지를 선택하여 교체 취소를 할 수 있습니다. 그런 다음 사용자는 "바꾸기"를 눌러 실제 교체를 수행할 수 있습니다.


텍스트 교체가 완료되면 바로 실행 취소할 수는 없습니다. 새 문자열을 원래 문자열로 역교체해야 합니다.

따라서 대체 문자열이 비어 있거나 위키에 이미 존재하는 문자열인 경우 사용자에게 경고 메시지가 표시됩니다.


해당 위키 문서를 들어가보면 문자열이 정상적으로 바뀐 것을 확인할 수 있습니다.


알아야 할 사항

ReplaceText는 한 번에 992 페이지까지만 처리합니다. 이것은 소스 코드로 하드 ​​코딩되지는 않지만 PHP의 max_input_vars 제한을 받습니다.

모든 교체는 작업 대기열에 배치됩니다. 따라서 예를 들어 4000 페이지를 처리해야 하는 경우 ReplaceText를 실행한 다음 RunJobs.php를 실행해야합니다. 이 과정은 4000개의 모든 기사를 교체하기 위해 5번 반복되어야합니다.