Melpa+Cask 환경에서 개인 레시피를 사용하고 싶습니다.

5490 단어 멜파caskEmacs

소개



Emacs의 패키지를 만들면 MELPA에 등록하여 전세계에 공개하는 것이 좋네요. 다만 그렇게 말해도, 우선 적당히 만들어 Github에 등록해 버리면, MELPA에는 등록하지 않고 부족해 버리는 것도 현실입니다.

그래서 이번에는 로컬에 Melpa 리포지토리를 만들어 레시피를 등록하는 방법을 정리해 둡니다.

참고) htps : // 기주 b. 코 m / 메 l 파 / 메 l 파 / 우 키 / 쿠 s와 메 메 l 파 아 r ゔ

절차


  • 아무 곳이나 melpa 복제
  • cd ~/hoge
    git clone --depth 1 https://github.com/milkypostman/melpa.git myrepo
    
  • 새로운 브랜치를 준비하고 기존 레시피를 모두 삭제
  • cd myrepo
    git checkout -b myrepo
    git rm recipes/*
    git commit -am 'removed all recipes'
    mkdir recipes
    
  • recipes 아래에 개인 레시피 추가

  • 원하는대로 ( '-') b
  • make 한다
  • make packages packages/archive-contents
    
    $which emacs에서 이전 Emacs가 돌아 오면 Makefile의 EMACS_COMMAND 값에주의하십시오.
  • Cask 파일에 새 소스 추가

  • Cask
    (source "myrepo" "~/hoge/myrepo/packages")
    

    또한, Cask 파일에는 등록한 개인용 레시피를 depends-on로 통상대로 지정해 둡니다.

  • M-x list-packages에서 레시피 패키지를 선택하여 설치



  • 결론



    사실, 이런 일을하지 않고 Cask 파일의 depends-on 옵션 지정을 사용하면 좋은 이야기입니다.
    (depends-on "hoge" :git "https://github.com/hoge/hoge.git")
    

    다만 내 환경이라면, 여러가지 손을 넣고 있는 탓인지, 위의 옵션 지정에서는 에러가 나오게 되었기 때문에, 이번의 회피책을 취했다고 하는 오치였습니다.

    (주의 사항) Cask 오류는 cask 명령이 오류를 발생하기 시작하면 방법으로 해결할 수 있습니다.



    만든 리포지토리를 웹에 게시하여 Cask 파일의 소스를 전역으로 옮길 수 있습니다. 변경점은 이하.

    (전제) htps : // 푹신 푹신. 오 rg / me lpa에서 공개하고 싶다.
  • (변경점 1) html/index.html L.45 라헨

  • html/index.html
       <footer class="container">
         <small>
    -      <a href="https://github.com/melpa/melpa/blob/master/html/js/melpa.js">Source code for this page &rarr;</a>
    +      <a href="https://github.com/xx/melpa/blob/myrepo/html/js/melpa.js">Source code for this page &rarr;</a>
           <br/>
           <a href="jslicense.html" data-jslicense="1">JavaScript license information</a>
         </small>
       </footer>
    
  • (변경점 2) html/js/melpa.js의 L.102, L.148, L.488 등

  • html/js/melpa.js
       melpa.packageList = m.sync([
    -    m.request({method: 'GET', url: "/recipes.json"}),
    -    m.request({method: 'GET', url: "/archive.json"}),
    -    m.request({method: 'GET', url: "/download_counts.json"})
    +    m.request({method: 'GET', url: "/melpa/recipes.json"}),
    +    m.request({method: 'GET', url: "/melpa/archive.json"}),
    +    m.request({method: 'GET', url: "/melpa/download_counts.json"})
    

    html/js/melpa.js
             fetcher: recipe.fetcher,
    -        recipeURL: "https://github.com/melpa/melpa/blob/master/recipes/" + name,
    +        recipeURL: "https://github.com/xx/melpa/blob/myrepo/recipes/" + name,
             packageURL: "packages/" + name + "-" + version + "." + (built.type == "single" ? "el" : "tar"),
    

    html/js/melpa.js
         this.running = function() { return !this.completed(); }.bind(this);
    
    -    m.request({method: 'GET', url: "/build-status.json", background: true})
    +    m.request({method: 'GET', url: "/melpa/build-status.json", background: true})
           .then(function(status){
    
  • 데이터베이스를 업데이트하여 서버에 동기화
  • cd ~/hoge
    make -j1
    rsync -avh ./html/ myserver:/path/to/htsdocs/melpa/
    rsync -avh ./packages/ myserver:/path/to/htsdocs/packages/
    
  • Cask 파일의 소스 재 작성

  • Cask
    ;; (source "myrepo" "~/devel/git/melpa/packages")
    (source "myrepo" "https://hogehoge/melpa/packages/")
    

    좋은 웹페이지 즐겨찾기