精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我的一些 nix 學習經驗:安裝和打包

系統
我一直在努力以最簡潔的方式掌握使用 nix,避開復雜的配置文件管理和新編程語言學習。

最近,我首次嘗試了 Mac。直至現在,我注意到的最大缺點是其軟件包管理比 Linux 差很多。一段時間以來,我對于 homebrew 感到相當不滿,因為每次我安裝新的軟件包時,它大部分時間都花在了升級上。于是,我萌生了試試 nix 包管理器的想法!

公認的,nix 的使用存在一定困惑性(甚至它有自己單獨的編程語言!),因此,我一直在努力以最簡潔的方式掌握使用 nix,避開復雜的配置文件管理和新編程語言學習。以下是我至今為止學習到的內容, 敬請期待如何進行:

  • 使用 nix 安裝軟件包
  • 為一個名為 paperjam 的 C++ 程序構建一個自定義的 nix 包
  • 用 nix 安裝五年前的 hugo 版本

如同以往,由于我對 nix 的了解還停留在入門階段,本篇文章可能存在一些表述不準確的地方。甚至我自己也對于我是否真的喜歡上 nix 感到模棱兩可 —— 它的使用真的讓人相當困惑!但是,它幫我成功編譯了一些以前總是難以編譯的軟件,并且通常來說,它比 homebrew 的安裝速度要快。

nix 為何引人關注?

通常,人們把 nix 定義為一種“聲明式的包管理”。盡管我對此并不太感興趣,但以下是我對 nix 的兩個主要欣賞之處:

  • 它提供了二進制包(托管在 https://cache.nixos.org/ 上),你可以迅速下載并安裝
  • 對于那些沒有二進制包的軟件,nix 使編譯它們變得更容易

我認為 nix 之所以擅長于編譯軟件,主要有以下兩個原因:

  • 在你的系統中,可以安裝同一庫或程序的多個版本(例如,你可能有兩個不同版本的 libc)。舉個例子,我當前的計算機上就存在兩個版本的 node,一個位于 /nix/store/4ykq0lpvmskdlhrvz1j3kwslgc6c7pnv-nodejs-16.17.1,另一個位于 /nix/store/5y4bd2r99zhdbir95w5pf51bwfg37bwa-nodejs-18.9.1
  • 除此之外,nix 在構建包時是在隔離的環境下進行的,只使用你明確聲明的依賴項的特定版本。因此,你無需擔心這個包可能依賴于你的系統里的其它你并不了解的包,再也不用與 LD_LIBRARY_PATH 戰斗了!許多人投入了大量工作,來列出所有包的依賴項。

在本文后面,我將給出兩個例子,展示 nix 如何使我在編譯軟件時遇到了更小的困難。

我是如何開始使用 nix 的

下面是我開始使用 nix 的步驟:

  • 安裝 nix。我忘記了我當時是如何做到這一點,但看起來有一個官方安裝程序 和一個來自 zero-to-nix.com 的 非官方安裝程序。在 MacOS 上使用標準的多用戶安裝卸載 nix 的 教程 有點復雜,所以選擇一個卸載教程更為簡單的安裝方法可能值得。
  • 把 ~/.nix-profile/bin 添加到我的 PATH
  • 用 nix-env -iA nixpkgs.NAME 命令安裝包
  • 就是這樣。

基本上,是把 nix-env -iA 當作 brew install 或者 apt-get install

例如,如果我想安裝 fish,我可以這樣做:

nix-env -iA nixpkgs.fish

這看起來就像是從 https://cache.nixos.org 下載一些二進制文件 - 非常簡單。

有些人使用 nix 來安裝他們的 Node 和 Python 和 Ruby 包,但我并沒有那樣做 —— 我仍然像我以前一樣使用 npm install 和 pip install

一些我沒有使用的 nix 功能

有一些 nix 功能/工具我并沒有使用,但我要提及一下。我最初認為你必須使用這些功能才能使用 nix,因為我讀過的大部分 nix 教程都討論了它們。但事實證明,你并不一定要使用它們。

我不去深入討論它們,因為我并沒真正使用過它們,而且網上已經有很多詳解。

安裝軟件包

nix 包在哪里定義的?

我認為 nix 包主倉庫中的包是定義在 https://github.com/NixOS/nixpkgs/

你可以在 https://search.nixos.org/packages 查找包。似乎有兩種官方推薦的查找包的方式:

  • nix-env -qaP NAME,但這非常緩慢,并且我并沒有得到期望的結果
  • nix --extra-experimental-features 'nix-command flakes' search nixpkgs NAME,這倒是管用,但顯得有點兒冗長。并且,無論何種原因,它輸出的所有包都以 legacyPackages 開頭

我找到了一種我更喜歡的從命令行搜索 nix 包的方式:

  • 運行 nix-env -qa '*' > nix-packages.txt 獲取 Nix 倉庫中所有包的列表
  • 編寫一個簡潔的 nix-search 腳本,僅在 packages.txt 中進行 grep 操作(cat ~/bin/nix-packages.txt | awk '{print $1}' | rg "$1"

所有的東西都是通過符號鏈接來安裝的

nix 的一個主要設計是,沒有一個單一的 bin 文件夾來存放所有的包,而是使用了符號鏈接。有許多層的符號鏈接。比如,以下就是一些符號鏈接的例子:

  • 我機器上的 ~/.nix-profile 最終是一個到 /nix/var/nix/profiles/per-user/bork/profile-111-link/ 的鏈接
  • ~/.nix-profile/bin/fish 是到 /nix/store/afkwn6k8p8g97jiqgx9nd26503s35mgi-fish-3.5.1/bin/fish 的鏈接

當我安裝某樣東西的時候,它會創建一個新的 profile-112-link 目錄并建立新的鏈接,并且更新我的 ~/.nix-profile 使其指向那個目錄。

我認為,這意味著如果我安裝了新版本的 fish 但我并不滿意,我可以很容易地退回先前的版本,只需運行 nix-env --rollback,這樣就可以讓我回到之前的配置文件目錄了。

卸載包并不意味著刪除它們

如果我像這樣卸載 nix 包,實際上并不會釋放任何硬盤空間,而僅僅是移除了符號鏈接:

$ nix-env --uninstall oil

我尚不清楚如何徹底刪除包 - 我試著運行了如下的垃圾收集命令,這似乎刪除了一些項目:

$ nix-collect-garbage
...
85 store paths deleted, 74.90 MiB freed

然而,我系統上仍然存在 oil 包,在 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0

nix-collect-garbage 有一個更具攻擊性的版本,它也會刪除你配置文件的舊版本(這樣你就不能回滾了)。

$ nix-collect-garbage -d --delete-old

盡管如此,上述命令仍無法刪除 /nix/store/8pjnk6jr54z77jiq5g2dbx8887dnxbda-oil-0.14.0,我不明白原因。

升級過程

你可以通過以下的方式升級 nix 包:

nix-channel --update
nix-env --upgrade

(這與 apt-get update && apt-get upgrade 類似。)

我還沒真正嘗試升級任何東西。我推測,如果升級過程中出現任何問題,我可以通過以下方式輕松地回滾(因為在 nix 中,所有事物都是不可變的!):

nix-env --rollback

有人向我推薦了 Ian Henry 的 這篇文章,該文章討論了 nix-env --upgrade 的一些令人困惑的問題 - 也許它并不總是如我們所料?因此,我會對升級保持警惕。

下一個目標:創建名為 paperjam 的自定義包

經過幾個月使用現有的 nix 包后,我開始考慮制作自定義包,對象是一個名為 paperjam 的程序,它還沒有被打包封裝。

實際上,因為我系統上的 libiconv 版本不正確,我甚至在沒有 nix 的情況下也遇到了編譯 paperjam 的困難。我認為,盡管我還不懂如何制作 nix 包,但使用 nix 來編譯它可能會更為簡單。結果證明我的想法是對的!

然而,理清如何實現這個目標的過程相當復雜,因此我在這里寫下了一些我實現它的方式和步驟。

構建示例包的步驟

在我著手制作 paperjam 自定義包之前,我想先試手構建一個已存在的示例包,以便確保我已經理解了構建包的整個流程。這個任務曾令我頭痛不已,但在我在 Discord 提問之后,有人向我闡述了如何從 https://github.com/NixOS/nixpkgs/ 獲取一個可執行的包并進行構建。以下是操作步驟:

步驟 1: 從 GitHub 的 nixpkgs 下載任意一個包,以 dash 包為例:

wget https://raw.githubusercontent.com/NixOS/nixpkgs/47993510dcb7713a29591517cb6ce682cc40f0ca/pkgs/shells/dash/default.nix -O dash.nix

步驟 2: 用 with import <nixpkgs> {}; 替換開頭的聲明({ lib , stdenv , buildPackages , autoreconfHook , pkg-config , fetchurl , fetchpatch , libedit , runCommand , dash }:)。我不清楚為何需要這樣做,但事實證明這么做是有效的。

步驟 3: 運行 nix-build dash.nix

這將開始編譯該包。

步驟 4: 運行 nix-env -i -f dash.nix

這會將該包安裝到我的 ~/.nix-profile 目錄下。

就這么簡單!一旦我完成了這些步驟,我便感覺自己能夠逐步修改 dash 包,進一步創建屬于我自己的包了。

制作自定義包的過程

因為 paperjam 依賴于 libpaper,而 libpaper 還沒有打包,所以我首先需要構建 libpaper 包。

以下是 libpaper.nix,我基本上是從 nixpkgs 倉庫中其他包的源碼中復制粘貼得到的。我猜測這里的原理是,nix 對如何編譯 C 包有一些默認規則,例如 “運行 make install”,所以 make install 實際上是默認執行的,并且我并不需要明確地去配置它。

with import <nixpkgs> {};
stdenv.mkDerivation rec {
  pname = "libpaper";
  version = "0.1";
  src = fetchFromGitHub {
    owner = "naota";
    repo = "libpaper";
    rev = "51ca11ec543f2828672d15e4e77b92619b497ccd";
    hash = "sha256-S1pzVQ/ceNsx0vGmzdDWw2TjPVLiRgzR4edFblWsekY=";
  };
  buildInputs = [ ];
  meta = with lib; {
    homepage = "https://github.com/naota/libpaper";
    description = "libpaper";
    platforms = platforms.unix;
    license = with licenses; [ bsd3 gpl2 ];
  };
}

這個腳本基本上告訴 nix 如何從 GitHub 下載源代碼。

我通過運行 nix-build libpaper.nix 來構建它。

接下來,我需要編譯 paperjam。我制作的 nix 包 的鏈接在這里。除了告訴它從哪里下載源碼外,我需要做的主要事情有:

  • 添加一些額外的構建依賴項(像 asciidoc
  • 在安裝過程中設置一些環境變量(installFlags = [ "PREFIX=$(out)" ];),這樣它就會被安裝在正確的目錄,而不是 /usr/local/bin

我首先從散列值為空開始,然后運行 nix-build 以獲取一個關于散列值不匹配的錯誤信息。然后我從錯誤信息中復制出正確的散列值。

我只是在 nixpkgs 倉庫中運行 rg PREFIX 來找出如何設置 installFlags 的 —— 我認為設置 PREFIX 應該是很常見的操作,可能之前已經有人做過了,事實證明我的想法是對的。所以我只是從其他包中復制粘貼了那部分代碼。

然后我執行了:

nix-build paperjam.nix
nix-env -i -f paperjam.nix

然后所有的東西都開始工作了,我成功地安裝了 paperjam!耶!

下一個目標:安裝一個五年前的 Hugo 版本

當前,我使用的是 2018 年的 Hugo 0.40 版本來構建我的博客。由于我并不需要任何的新功能,因此我并沒有感到有升級的必要。對于在 Linux 上操作,這個過程非常簡單:Hugo 的發行版本是靜態二進制文件,這意味著我可以直接從 發布頁面 下載五年前的二進制文件并運行。真的很方便!

但在我的 Mac 電腦上,我遇到了一些復雜的情況。過去五年中,Mac 的硬件已經發生了一些變化,因此我下載的 Mac 版 Hugo 二進制文件并不能運行。同時,我嘗試使用 go build 從源代碼編譯,但由于在過去的五年內 Go 的構建規則也有所改變,因此沒有成功。

我曾試圖通過在 Linux docker 容器中運行 Hugo 來解決這個問題,但我并不太喜歡這個方法:盡管可以工作,但它運行得有些慢,而且我個人感覺這樣做有些多余。畢竟,編譯一個 Go 程序不應該那么麻煩!

幸好,Nix 來救援!接下來,我將介紹我是如何使用 nix 來安裝舊版本的 Hugo。

使用 nix 安裝 Hugo 0.40 版本

我的目標是安裝 Hugo 0.40,并將其添加到我的 PATH 中,以 hugo-0.40 作為命名。以下是我實現此目標的步驟。盡管我采取了一種相對特殊的方式進行操作,但是效果不錯(可以參考 搜索和安裝舊版本的 Nix 包 來找到可能更常規的方法)。

步驟 1: 在 nixpkgs 倉庫中搜索找到 Hugo 0.40。

我在此鏈接中找到了相應的 .nix 文件 https://github.com/NixOS/nixpkgs/blob/17b2ef2/pkgs/applications/misc/hugo/default.nix

步驟 2: 下載該文件并進行構建。

我下載了帶有 .nix 擴展名的文件(以及同一目錄下的另一個名為 deps.nix 的文件),將文件的首行替換為 with import <nixpkgs> {};,然后使用 nix-build hugo.nix 進行構建。

雖然這個過程幾乎無需進行修改就能成功運行,但我仍然做了兩處小調整:

  • 把 with stdenv.lib 替換為 with lib
  • 為避免與我已安裝的其他版本的 hugo 沖突,我把包名改為了 hugo040

步驟 3: 將 hugo 重命名為 hugo-0.40

我編寫了一個簡短的后安裝腳本,用以重命名 Hugo 二進制文件。

postInstall = ''
    mv $out/bin/hugo $out/bin/hugo-0.40
  '';

我是通過在 nixpkgs 倉庫中運行 rg 'mv ' 命令,然后復制和修改一條看似相關的代碼片段來找到如何實施此步驟。

步驟 4: 安裝。

我通過運行 nix-env -i -f hugo.nix 命令,將 Hugo 安裝到了 ~/.nix-profile/bin 目錄中。

所有的步驟都順利運行了!我把最終的 .nix 文件存放到了我自己的 nixpkgs 倉庫 中,這樣我以后如果需要,就能再次使用它了。

可重復的構建過程并非神秘,其實它們極其復雜

我覺得值得一提的是,這個 hugo.nix 文件并不是什么魔法——我之所以能在今天輕易地編譯 Hugo 0.40,完全歸功于許多人長期以來的付出,他們讓 Hugo 的這個版本得以以可重復的方式打包。

總結

安裝 paperjam 和這個五年前的 Hugo 版本過程驚人地順利,實際上比沒有 nix 來編譯它們更簡單。這是因為 nix 極大地方便了我使用正確的 libiconv 版本來編譯 paperjam 包,而且五年前就已經有人辛苦地列出了 Hugo 的確切依賴關系。

我并無計劃詳細深入地使用 nix(真的,我很可能對它感到困擾,然后最后選擇回歸使用 homebrew!),但我們將拭目以待!我發現,簡單入手然后按需逐步掌握更多功能,遠比一開始就全面接觸一堆復雜功能更容易掌握。

我可能不會在 Linux 上使用 nix —— 我一直都對 Debian 基礎發行版的 apt 和 Arch 基礎發行版的 pacman 感到滿意,它們策略明晰且少有混淆。而在 Mac 上,使用 nix 似乎會有所得。不過,誰知道呢!也許三個月后,我可能會對 nix 感到不滿然后再次選擇回歸使用 homebrew。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2018-01-03 10:32:21

面試經驗套路

2017-10-23 12:22:58

Android編程基礎總結

2010-05-10 18:18:46

Unix系統

2019-04-19 12:46:18

面試丁校招簡歷

2022-04-14 10:22:44

故事卡業務

2015-12-04 10:04:53

2025-05-09 09:10:00

2024-11-21 08:09:51

2010-02-03 17:10:49

2010-06-13 15:18:02

UML實踐

2013-08-20 13:40:04

獨立游戲開發者移動應用PR經驗移動應用營銷推廣

2014-07-31 09:33:05

開發者獨立開發者

2021-09-22 13:17:39

AI 數據人工智能

2017-07-18 16:14:06

FileProvideAndroidStrictMode

2014-03-17 10:10:58

CC++編程書籍

2009-06-04 09:14:32

struts學習struts常用屬性

2019-08-01 12:56:00

Python代碼記錄

2009-07-21 09:29:27

iBATIS使用

2013-12-24 14:50:39

Ember.js框架

2017-05-10 14:49:52

Kotlin語言Java
點贊
收藏

51CTO技術棧公眾號

精品综合久久久| 国产一区二区三区四区二区| 中文字幕av亚洲精品一部二部| 亚洲欧美日韩中文播放 | 一区在线免费观看| 色丁香久综合在线久综合在线观看| 91亚洲国产精品| 娇妻被老王脔到高潮失禁视频| 朝桐光av在线一区二区三区| 亚洲人成网亚洲欧洲无码| 亚洲蜜桃精久久久久久久| 国产精品吊钟奶在线| 无码国产69精品久久久久网站| 精精国产xxxx视频在线| 亚洲第一福利社区| 91成人免费在线| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 天天操天天干视频| 国产美女视频一区二区| 久久综合五月天婷婷伊人| 久久91亚洲人成电影网站| 九色91popny| 韩国中文免费在线视频| 午夜一区不卡| 亚洲精品理论电影| 国产手机免费视频| 国产免费福利视频| 97视频精品| 欧美三级午夜理伦三级中视频| 欧美日本韩国一区二区三区| 91av在线免费视频| 一区二区小说| 日韩女优电影在线观看| 国产肉体ⅹxxx137大胆| 国产1区在线观看| 女同性一区二区三区人了人一| 欧美一区二区三区在线电影| 99精品一区二区三区的区别| 99精品在线视频观看| 久久久水蜜桃av免费网站| 欧美一区二区三区人| 国产精品亚洲二区在线观看| 五月婷婷六月丁香| 国产精品呻吟| 亚洲人成绝费网站色www| 天天摸天天碰天天添| 国自产拍在线网站网址视频| 丁香五精品蜜臀久久久久99网站 | 亚洲激情综合| 日韩禁在线播放| 最新国产精品自拍| 国模精品视频| 久久久久青草大香线综合精品| 国产精品白嫩美女在线观看| 日本视频免费在线| 亚洲福利国产| 国产最新精品视频| 亚洲精品国产熟女久久久| 国产成人福利夜色影视| 亚洲视频香蕉人妖| 一本久久a久久精品vr综合 | 老司机福利在线观看| 久久麻豆视频| 亚洲一级在线观看| 欧美日韩亚洲在线| 色天堂在线视频| 精品一区二区三区不卡| 午夜精品一区二区三区在线播放| 欧美性猛交xxxx乱| 亚洲黄色录像| 国产亚洲欧洲在线| 古装做爰无遮挡三级聊斋艳谭| 国产激情在线播放| 精品久久久国产精品999| 五月婷婷综合色| 欧美熟妇另类久久久久久不卡| 久久久久久久波多野高潮日日| 91av中文字幕| 久草福利资源在线观看| 国产真实有声精品录音| 综合激情国产一区| 亚洲av无码成人精品国产| 在线播放成人| 在线这里只有精品| 特级丰满少妇一级| а√在线中文网新版地址在线| 一二三四区精品视频| 日本在线观看一区二区三区| 亚洲精品国产片| 喷白浆一区二区| 欧美成人全部免费| 老头老太做爰xxx视频| 欧美第十八页| 欧美黑人性猛交| 欧美肥妇bbwbbw| 精品久久精品| 亚洲毛片在线免费观看| 亚洲av无码专区在线播放中文| 国产精品videossex| 欧美精品色综合| 国产 porn| 精品久久久久久久久久岛国gif| 色婷婷久久99综合精品jk白丝| 潘金莲一级淫片aaaaaa播放1| 狂野欧美激情性xxxx欧美| 专区另类欧美日韩| 亚洲高清视频一区| 精品999视频| 亚洲人成伊人成综合网小说| 欧美视频免费看欧美视频| 性欧美video高清bbw| 亚洲天堂精品在线观看| 欧美a v在线播放| 高h视频在线播放| 亚洲图片欧美综合| 污片在线免费看| 精品久久ai电影| 亚洲激情免费观看| 中文字幕影片免费在线观看| 成人高潮视频| 日韩成人在线播放| 91精品一区二区三区蜜桃| 婷婷中文字幕一区| 欧美成人免费大片| 伊人久久中文字幕| 另类欧美日韩国产在线| 成人黄色片在线| 国产一区二区小视频| 精品一区二区三区免费| 久久影院理伦片| 激情小视频在线观看| 亚洲第一av色| 免费看的黄色大片| 天堂精品在线视频| 亚洲第一精品电影| 88久久精品无码一区二区毛片| 精品国产一区探花在线观看| 国模极品一区二区三区| 国产xxxx孕妇| 不卡高清视频专区| 日本高清一区| 国产三区在线观看| 欧美亚洲高清一区| 精品国产鲁一鲁一区二区三区| 一区二区三区四区高清视频| 亚洲国产精品网站| 91香蕉视频在线播放| 另类人妖一区二区av| 视频一区视频二区视频| 日韩a**中文字幕| 在线观看91精品国产麻豆| 亚洲色成人网站www永久四虎| 日韩香蕉视频| 国产乱人伦真实精品视频| 亚洲AV无码成人片在线观看| 亚洲色图第一区| 韩国一区二区在线播放| 四虎国产精品免费观看| 国产精品一区二区三区免费视频| av在线电影播放| 亚洲一区在线观看免费观看电影高清| 91小视频在线播放| 欧美亚洲tv| 久久精品视频中文字幕| 伊人久久综合视频| 91视频在线看| 欧美美女黄色网| 日韩视频网站在线观看| 国产一区二区三区18| 在线免费一级片| fc2成人免费人成在线观看播放| 日韩免费av一区二区三区| 欧美日韩美女| 精品国产一区二区三区久久久蜜月 | 久久大胆人体| 日韩av在线免费看| 无码人妻丰满熟妇区五十路| 九九九久久久精品| 蜜臀在线免费观看| 久久久久久毛片免费看| 日本一区二区在线播放| 精品国产999久久久免费| 亚洲一区二区四区蜜桃| 成人免费无码大片a毛片| 久久久久一区| 在线不卡日本| 成人av色网站| 欧美成人午夜激情在线| 午夜性色福利影院| 欧美在线观看你懂的| 日本黄色免费片| kk眼镜猥琐国模调教系列一区二区| 欧美激情国产精品日韩| 黑丝美女一区二区| 91传媒免费看| 黄色大片在线播放| 亚洲国产欧美一区二区丝袜黑人 | 国产人妻一区二区| 美国毛片一区二区| 日韩精品视频在线观看视频| 精品国产乱码久久久久久果冻传媒 | 黄色激情视频在线观看| 精品在线视频一区| 日韩国产一级片| 欧美freesextv| 国产日韩欧美综合精品| 俄罗斯一级**毛片在线播放| 亚洲欧美日韩区| 99精品免费观看| 在线国产亚洲欧美| 国产性70yerg老太| 成人午夜视频网站| 在线免费视频一区| 国产精品普通话对白| 超碰在线免费观看97| 国产精品久久久久久久久久齐齐| 欧美激情xxxx| 嫩草香蕉在线91一二三区| 欧美系列日韩一区| 亚洲男人第一av| 一区二区三区在线视频观看58| 在线免费黄色网| 国产精品综合色区在线观看| 黄色a级在线观看| 精品欧美激情在线观看| 激情久久av| 97精品久久| 91在线观看免费| av成人在线播放| 日本中文字幕不卡免费| 川上优av中文字幕一区二区| 草民午夜欧美限制a级福利片| 国产日韩欧美一区二区东京热| 精品美女久久久久久免费| 免看一级a毛片一片成人不卡| 国产精品久久久久久久久免费桃花| gai在线观看免费高清| 91国语精品自产拍| 91成人伦理在线电影| 国产成人福利夜色影视| 国产精品99一区| 麻豆免费在线观看| 中文字幕日韩免费视频| 欧美午夜黄色| 色婷婷综合久久久久中文一区二区 | …久久精品99久久香蕉国产| 黑人精品视频| 久久久久久亚洲精品| 日韩精品系列| 精品国产一区二区三区久久影院 | 国产成人啪免费观看软件| 久久99中文字幕| 在线 亚洲欧美在线综合一区| 三上悠亚免费在线观看| 亚洲天天综合| 久久福利一区二区| 精品在线91| 亚洲va电影大全| 成人免费看黄| 久久国产精品视频| 超碰caoporn久久| 亚洲片国产一区一级在线观看| 亚洲欧美一区二区三| 日韩精品中文字幕在线观看| 精品国产www| 亚洲午夜私人影院| 国产一级做a爰片在线看免费| 中文字幕不卡在线观看| 中文在线字幕观看| 日韩国产欧美在线视频| 日本中文字幕一级片| 午夜精品亚洲| 精品无码国模私拍视频| 91久久国产| 999久久欧美人妻一区二区| 亚洲无线视频| 中文字幕一区二区三区四区五区| 99精品电影| 久久av综合网| 性感少妇一区| 激情黄色小视频| 成人三级在线视频| 精品成人av一区二区三区| **网站欧美大片在线观看| 久久久一二三区| 色av成人天堂桃色av| 国产视频一二三四区| 精品99久久久久久| 丁香婷婷在线观看| 日韩久久免费电影| av在线免费一区| 久久久久久噜噜噜久久久精品| 不卡福利视频| 91影院未满十八岁禁止入内| 欧亚精品一区| 国产欧美综合一区| 亚洲欧美日韩国产综合精品二区| 国产三级三级看三级| 久久久久久亚洲精品杨幂换脸| 男生操女生视频在线观看| 不卡欧美aaaaa| 久久久久人妻一区精品色| 久久久久久99精品| 日本黄色片免费观看| 欧美日韩一区二区免费在线观看| 伊人国产在线观看| 欧美影院一区二区| 可以免费看毛片的网站| 中文字幕亚洲专区| 成人黄色动漫| 亚洲aaa激情| 精品久久影视| 黄色成人在线看| 国产在线观看免费一区| 一区二区三区四区毛片| 91免费看`日韩一区二区| 久久免费看少妇高潮v片特黄| 国产精品久久久久一区| 国产又粗又黄又猛| 国产精品电影院| 国产剧情在线视频| 日本乱人伦aⅴ精品| 亚洲精品18p| 久久精品久久久久电影| 欧美国产日韩电影| 成人春色激情网| blacked蜜桃精品一区| 欧美色图色综合| 成人av免费在线播放| www.99re7| 91麻豆精品国产91久久久更新时间| 中文字幕精品在线观看| 91精品久久久久久久91蜜桃| 黄色美女网站在线观看| 97av视频在线| 色天天色综合| 亚洲精品国产精品国自产观看| 国产精品日本| 网站免费在线观看| 午夜精品久久久久久不卡8050| www.国产毛片| 日韩电影中文字幕| 春色校园综合激情亚洲| 国产成人免费观看| 国产成人精品999在线观看| 久在线观看视频| 91免费国产视频网站| 国产精品日日夜夜| 亚洲成人黄色网| 1234区中文字幕在线观看| 国产ts人妖一区二区三区| 日韩深夜影院| 久久久久久久久久久久久久国产| 97精品久久久午夜一区二区三区 | 最新久久zyz资源站| 亚洲天堂手机版| 久久天天躁狠狠躁夜夜av| 99久热在线精品视频观看| 久久视频免费在线| 成人污视频在线观看| 国产午夜福利片| 精品亚洲va在线va天堂资源站| 是的av在线| 91亚洲国产成人精品性色| 综合色一区二区| 国产成人av免费观看| 亚洲国产日韩在线一区模特| 免费国产黄色片| 人妖精品videosex性欧美| 国产999精品在线观看| 99亚洲国产精品| 成人国产精品免费网站| 日本一区二区三区精品| 91精品国产欧美一区二区18| av免费看在线| 国产精品视频久久久久| 日韩精品丝袜美腿| 日韩手机在线观看视频| 国产精品毛片久久久久久久| 一区二区三区黄色片| 欧美精品成人在线| 国产成人精品一区二区免费看京| jizzzz日本| 亚洲一区二区在线免费观看视频 | 日韩深夜福利网站| 久久婷婷开心| 亚洲一级二级| 欧美色图亚洲激情| 欧美日韩国产综合草草| 九色网友自拍视频手机在线| 国产精品免费视频xxxx| 欧美日韩国产亚洲一区| 日韩 国产 一区| 亚洲成av人片在线观看| www.在线视频.com| 国产精品久久久久久久久婷婷| 亚洲激情中文| 中文字幕在线永久| 亚洲一卡二卡三卡四卡| 国产精品一区二区婷婷|